ポート 22 以外で SSH サーバーを Discovery する方法Issue <!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } この記事では、デフォルトの 22 番ポート以外で待機している SSH サーバーを Discovery で検出するための 2 つの設定方法について説明します。 注: この KB 全体では、例としてポート 22000 を使用します。ただし、このポートは環境に最適なポート(SSH デバイスが待機しているポート)に変更できます。そのため、「22000」と記載されている箇所は、使用したいポート番号に置き換えてください。 Release<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } すべて Resolution<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } IP Service を追加する 1.「Discovery Definition > IP Services」に移動し、以下の情報で新しいエントリを追加します。 Name: SSH on 22000Service name: Secure Shell Service on 22000Port: 22000Protocol: TCPCreates: None 2.「Discovery Definition > Port Probes」に移動し、「ssh」エントリを編集します。 「Triggered by services」フィールドのロックを解除します。「SSH on 22000」を追加します。Discovery Port Probe を保存します。 次回 Discovery を実行すると、デフォルトでポート 22 と 22000 の両方がスキャンされます。応答したポートが、その後の Discovery でトリガーされる SSHCommand Probe に使用されるポートになります。 唯一の欠点は、各スキャン時にポート 22 と 22000 の両方がスキャンされることです。 非常に特殊な状況として、22 と 22000 の両方で SSH サーバーが利用可能であり、22000 側を使用したい場合があります。これらの欠点は Behaviors を使用することで回避できます。 Behaviors を使用する 1.「Discovery Definition > IP Services」に移動し、以下の情報で新しいエントリを追加します。 Name: SSH on 22000Service name: Secure Shell Service on 22000Port: 22000Protocol: TCPCreates: None 2.「Discovery Definition > Port Probes」に移動し、新しいエントリを追加します(これは "ssh" のほぼコピーです)。 Name: SSH on 22000Description: Secure Shell on 22000 LoginScanner: Generic TCP with BannerTriggered by services: SSH on 22000Triggers probe: UNIX - ClassifyUse classification: UNIX ClassificationClassification priority: 2Active: trueCIs: trueIPs: true Discovery が Discovery プロセスを開始すると、デフォルトで Functionality Definition 「All」に定義された Port Probe を含む Shazzam Probe を送信します。 Functionality Definition 「All」には、デフォルトで以下が含まれています。 wmisnmpsshhttpwinsdnsprinterosxip_phoneslpwbem 22000 で待機しているデバイスのみを Discovery したいことが分かっている場合は、「SSH on 22000」(または「ssh」と「SSH on 22000」の両方)だけを含む Functionality Definition を作成できます。その後、その Functionality を使用する Behavior を作成し、Discovery Schedule 実行時にその Behavior を使用するよう指定します。 Discovery Schedule は、その Behavior / Functionality に含まれるデバイスのみを Discovery します。 3.「Discovery Definition > Functionality Definition」に移動し、新しいエントリを追加します。 22 と 22000 の両方を対象とする場合、この Functionality Definition を「SSH MyName」などの任意の名前にし、「ssh」と「ssh on 22000」の両方の Port Probe を含めることができます。 Name: SSH on 22000Port probes: SSH on 22000 4.「Discovery Definition > Behavior」に移動し、新しいエントリを追加します。 Name: Ssh IpsosSaveエントリを開き、関連リスト「Discovery Functionality」に新しいエントリを追加します。 Phase: 0Functionality definition: SSH on 2000(手順 3 で使用した名前)MID servers: この Functionality を実行する MID Server を追加します(1 台以上)。 5. Discovery Schedules で、Behavior フィールドを「SSH MyName」に設定します。 これにより、スケジュール開始時に送信される Shazzam Probe は、手順 3 で説明した Functionality Definition に含まれる Port Probe に対応するポートのみをスキャンするようになります。 注: Discovery Schedule の「MID server」フィールドは表示されなくなります。これは、このスケジュールを処理する MID Server が既に指定されているためです。 これらの設定には非常に高い柔軟性があります。また、特に MID Server がロードバランシングクラスターとして構成されている場合は、さらに考慮すべき事項があります。 Patterns Discovery 対象のデバイスが Patterns を使用している場合は、MID Server プロパティ mid.sa.ssh.port も追加してください。 ecc_agent_property テーブルへ移動します。New をクリックします。Name を mid.sa.ssh.port に設定します。Value をカンマ区切りのポート一覧に設定します。すべての MID Server に適用する場合は MID Server フィールドを空白にし、特定の MID Server のみの場合は指定します。 注: 環境がハイブリッドで、22 または 22000 の両方で待機しているデバイスが存在する場合は、プロパティ値を 22,22000 に設定します。 Sensor によってトリガーされる Probe 一部の Sensor は追加の Probe をトリガーしますが、「port」パラメーターを渡しません。この場合、トリガーされた Probe はデフォルトでポート 22 を使用します。そのような場合は、Sensor のコードを更新して、「port」Probe パラメーターを渡す必要があります。 Out-of-box では、以下の Probe がこの問題の影響を受けます。 <instance>.service-now.com/discovery_sensor_list.do?sysparm_query=scriptLIKETriggerProbe%5Ereacts_to_probe.ecc_queue_topic%3DSSHCommand デバイスが代替ポートで正常に Discovery され、システムプロパティ glide.discovery.ip_service_affinity = true の場合、使用されたポートを示すレコードが ip_service_affinity テーブルに作成されます。 これを利用して、Sensor 内からトリガーされた Probe にポートを追加できます。 追加するコード例: var ip = this.getSource();var sa = new GlideRecord('ip_service_affinity');sa.addQuery('ip_address',ip);sa.query();// If we find an affinity, get the port and add to the probe as a parameterif(sa.next()){ // Check that ip_service and ip_service_port are not empty, to avoid any potential nullpointers if(!gs.nill(sa.ip_service) && !gs.nill(sa.ip_service.port)){ // Now that we have the port, lets add it to the probe probe.addParameter("port", sa.ip_service.port); }} この KB には、OOB Sensor に必要な変更を含む添付 Update Set があります。Update Set の使用を決定した場合は、まず非本番環境でテストしてください。 Related Links<!-- /*NS Branding Styles*/ --> .ns-kb-css-body-editor-container { p { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } span { font-size: 12pt; font-family: Lato; color: var(--now-color--text-primary, #000000); } h2 { font-size: 24pt; font-family: Lato; color: var(--now-color--text-primary, black); } h3 { font-size: 18pt; font-family: Lato; color: var(--now-color--text-primary, black); } h4 { font-size: 14pt; font-family: Lato; color: var(--now-color--text-primary, black); } a { font-size: 12pt; font-family: Lato; color: var(--now-color--link-primary, #00718F); } a:hover { font-size: 12pt; color: var(--now-color--link-primary, #024F69); } a:target { font-size: 12pt; color: var(--now-color--link-primary, #032D42); } a:visited { font-size: 12pt; color: var(--now-color--link-primary, #00718f); } ul { font-size: 12pt; font-family: Lato; } li { font-size: 12pt; font-family: Lato; } img { display: ; max-width: ; width: ; height: ; } } ポート 22 上のデバイスを Discovery する MID Server、ポート 22000 上のデバイスを Discovery する別の MID Server、さらに WMI 用の別の MID Server を使用する Behavior を定義することもできます。 異なる Functionality を含む Behavior を作成するだけです。そのようにすると、その Behavior を使用して Schedule が実行された際に、Discovery は検出された各デバイスに対して適切な MID Server を選択します。 詳細については、ドキュメントサイトの Discovery Behaviors を参照してください。