SSH で Linux サーバーとアプライアンスをインベントリする
一般アカウントと SSH で Linux サーバーを読み取る: システム、カーネル、CPU、メモリ、インストール済みパッケージ、ホスト キーの確認。
Linux サーバー、ハイパーバイザーのホスト、多くのアプライアンスは Windows 管理を話しませんが、SSH は話します。一般アカウントが 1 つあれば、NetBlade はログインして、マシンが何であり、どのパッケージを実行しているかを読み取り、サーバーの識別情報を記憶します。これにより、すり替えられたマシンが知らないうちにパスワードを収集することはできません。この記事では、何が読み取られるか、作成するアカウント、そして理解しておくべき唯一の安全機構を説明します。
始める前に
- スキャン後に「デバイス」に表示され、ポート 22 が開いている Linux マシン (ポート スキャナーまたは「識別」で確認できます)。
- アカウントを作成するための、各サーバーへの管理者アクセス。
- ポート 22 で待ち受けているサーバーの SSH デーモン。NetBlade が接続するのはこのポートです。
1. NetBlade が SSH で読み取るものを知る
Linux サーバーやアプライアンスから、NetBlade は次のものを読み取ります:
- ホスト名
/etc/os-releaseから得るオペレーティング システム。このファイルがない場合はカーネル名- カーネルのバージョン
- プロセッサのモデルとコア数
- メモリの総量
dpkg(Debian、Ubuntu とその派生) またはrpm(Red Hat、Rocky、AlmaLinux、SUSE とその派生) から得るインストール済みパッケージ- サーバーの ホスト キー (記憶されます)
SSH では、ディスク、ユーザー、防御については何も返ってきません。これは NetBlade がこのプロトコルで尋ねる内容の限界であり、デバイスの限界ではありません。カードにもそう表示されます:「SSH で読み取りました。Linux ホストやアプライアンスは名前、カーネル、パッケージを返しますが、ディスク、ユーザー、防御については何も返しません。」
2. sudo なしの一般アカウントを作成する
NetBlade が実行するコマンドはすべて、どのユーザーでも読み取れるファイルやツールを読むだけです: hostname、/etc/os-release、uname、/proc/cpuinfo、nproc、/proc/meminfo、そして dpkg-query または rpm -qa によるパッケージ一覧。sudo は決して使わず、root も必要ありません。それ以上のことができないアカウントを与えてください。
一般的な Linux サーバーでは、root として、または sudo で次のように実行します (一般的な Linux 管理の手順です。ディストリビューションに合わせて調整してください):
sudo useradd -m -s /bin/bash netblade
sudo passwd netblade
このユーザーを sudo、wheel、その他の管理グループに追加しないでください。
注: NetBlade は SSH で パスワード 認証を行います。鍵によるログインには対応していません。サーバーが鍵しか受け付けない場合は、SSH デーモンの設定で、このアカウントに限ってパスワード ログインを許可する必要があります。これを自社のポリシーと照らし合わせて検討し、長く固有のパスワードを使い、自社の基準に従ってアカウントを制限してください。
3. SSH の資格情報を登録する
- 「資格情報」を開き、「追加…」を押します。
- 「プロトコル」を「Linux / SSH」にします。
- ユーザーとパスワードを入力します。
- 「適用範囲」で「1 つのサイト」を選びます。サーバーが「この範囲を保存」で保存した範囲にある場合は「これらのスキャン範囲」を選びます。
- 「オフィス A - Linux 読み取り専用」のようなラベルを付け、「登録」を押します。
- 「試すマシン」にサーバーのアドレスを入力し、「テスト」を押します。「最終テスト」に「成功」と表示されるはずです。
SSH の資格情報は、ポート 22 が開いているのを確認できた場所 (またはまだポートが何もわかっていない場所) で、適用される Windows と SNMP の資格情報のあとに試されます。
4. サーバーを読み取る
- 「デバイス」を開いて「詳細インベントリ」を押すか、サーバーのカードを開いて「詳細スキャン」を押します。
- 読み取り状態に「… に … で読み取り」と表示されます。
- 「ソフトウェア」タブに、インストール済みのパッケージがバージョンとともに一覧表示されます。
- 「インベントリ」の「ソフトウェア」にも、Windows のプログラムと並んでこれらのパッケージが含まれるようになり、「このバージョンをまだ使っているのは誰か?」を両方にまたがって調べられます。
ヒント: パッケージが脆弱性チェックの対象になるのは、NetBlade の辞書がその名前を識別できる場合だけです。ソフトウェア ページの「辞書で識別できるものだけ」で、どれが該当するかがわかります。辞書が識別できないプログラムには、アプリのどこにも脆弱性の判定が付きません。何も表示されないことは、安全であることを意味しません。
5. ホスト キーの確認を理解する
NetBlade はサーバーに初めて接続したとき、サーバーのホスト キーの SHA-256 フィンガープリントを記憶します。以降の接続でキーが異なっていれば、NetBlade は パスワードを送る前に停止し、次のように表示します:
「ホスト キーが、このデバイスが前回示したものと異なります。何も送信していません: このマシンが再インストールされたか、そのアドレスで別の何かが応答しています。」
これにより、誤ってネットワークにつながれたものであれ、意図的に置かれたものであれ、サーバーのアドレスを乗っ取ったデバイスから資格情報が守られます。
この表示が出たら:
- 理由を突き止めます。サーバーが再インストールされたのか、交換されたのか、アドレスが別のマシンに割り当てられたのか。
- 説明がつかない場合は、不具合ではなくセキュリティ インシデントとして扱ってください。
- 正当な変更であれば、新しいキーを受け入れられるように古い読み取り結果をクリアします。このバージョンでは、デバイスを削除するのがその方法です。「デバイス」で「選択」を押し、対象にチェックを入れて「削除」を押します。デバイスは、読み取った内容と履歴ごとカタログから外れ、次のスキャンで新しいデバイスとして戻ってきます。そのあと、もう一度読み取ってください。
6. 独自のシェルを持つアプライアンス
多くのアプライアンス (ファイアウォール、一部のスイッチ、NAS のメニュー) は SSH ログインを受け付けますが、Linux シェルではなく独自のコマンドライン インターフェイスで応答します。NetBlade はすべてのコマンドにタイムアウトを設けているため読み取りが止まることはありませんが、返ってくるものはほとんどないか、まったくありません。こうしたデバイスには SNMP のほうが適したプロトコルです: SNMP を参照してください。
うまくいったか確認する
- サーバーのカードに「… に … で読み取り」と表示され、システム、カーネル、プロセッサ、コア数、メモリが表示されています。
- 「ソフトウェア」タブにパッケージが一覧表示されています。
- ダッシュボードの「読み取り済みのマシン」にサーバーが含まれています。
うまくいかないときは
- 「SSH が接続または資格情報を拒否しました」。 ユーザーまたはパスワードが間違っている、アカウントがロックされている、あるいはサーバーがそのアカウントのパスワード ログインを受け付けていません。どれなのかを知るには、ターミナルから同じログインを試してください。
- パッケージが一覧に表示されない。 NetBlade が読み取るのは
dpkgとrpmだけです。ほかのパッケージ マネージャーを使うディストリビューションでは、システムの詳細は得られますがパッケージ一覧は得られません。 - サーバーが 22 以外のポートで待ち受けている。 NetBlade はポート 22 にしか接続しません。
- 計画的な再インストールのあとにホスト キーのメッセージが表示される。 想定どおりです。手順 5 に従ってください。
- ディスクやユーザーについて何も表示されない。 設計上、SSH では読み取りません。
次へ
PC、ネットワーク機器、サーバーを読み取ったら、それらの配線を描きましょう: ネットワーク マップを作成する。