この記事では、Kali Linuxの公式パッケージを使って、OpenVASによる脆弱性診断を始める流れを説明します。検査対象は、自分が管理している環境か、管理者から明示的に許可を得た環境だけにしてください。対象のIPアドレス、検査範囲、実施時間を事前に確認し、最初は検証用の1台から始めましょう。
手順はKaliとGreenboneの公式資料に基づいて見直しています。Kali Linux上でのインストール、画面操作、スキャン実行は未検証です。環境やパッケージの更新で表示が変わる場合は、リンク先の公式資料と実際の出力を確認してください。
OpenVASとは
OpenVASは、ネットワークやシステムの脆弱性を検出するためのオープンソースのスキャナーです。脆弱性とは、システムのセキュリティホールのことで、攻撃者に悪用されるリスクがあります。このリスクを軽減するために、定期的な脆弱性診断が重要です。
現在は、検査を行う OpenVAS Scanner、タスクや結果を管理する gvmd、Web画面の Greenbone Security Assistant(GSA) などを組み合わせて使います。このソフトウェア群がGreenbone Vulnerability Management(GVM)です。Kaliでは、必要なパッケージと管理スクリプトをまとめた gvm を導入します。
詳しい構成はGreenbone公式のアーキテクチャ説明で確認できます。GVMを通じてOpenVASを使うと、以下の機能を利用できます:
- 無料で利用可能
- Webインターフェースを使用した直感的な操作
- 定期的に更新される脆弱性データベース(NVTデータベース)
例えば、自宅の鍵が壊れていることを知らずに放置するのと同じように、脆弱性を放置することはセキュリティ事故の原因となります。OpenVASを使って、定期的な診断を行いましょう。
OpenVASの役割
OpenVASは、ネットワークやシステムの脆弱性をスキャンして検出するツールです。その目的は、攻撃者に悪用される前に脆弱性を特定し、修正することです。
他のツールとの違い
-
Webアプリケーションスキャンツール(例:OWASP ZAP、Burp Suite)
- WebサイトやAPIに特化して脆弱性を検出するツール。
- SQLインジェクションやクロスサイトスクリプティング(XSS)といったWeb特有の攻撃に焦点を当てます。
違い: OpenVASはネットワーク全体やサーバーの脆弱性をスキャンするツールで、Webアプリケーションスキャンは主にWeb関連の脆弱性に特化しています。
-
ネットワークスキャンツール(例:Nmap)
- ネットワーク上のホストをスキャンし、オープンポートや利用可能なサービスを検出します。
- 脆弱性診断よりもネットワークの可視化や構造把握に適しています。
違い: OpenVASはネットワーク上のホストに存在するセキュリティ脆弱性を評価する機能を持ちます。一方、Nmapはホストやサービスの調査が中心で、NSEスクリプトによる脆弱性チェックも可能です。
-
エンドポイント保護ツール(例:アンチウイルスソフトやEDR)
- エンドポイント(PCやサーバー)におけるリアルタイム保護や侵入防止を行うツール。
- 現在進行中の攻撃や既知のマルウェアを防御するのが主な役割。
違い: OpenVASは攻撃の防御ではなく、システムの脆弱性を検出し、その修正を促すための診断ツールです。
OpenVASが得意とする領域
- ネットワーク全体の診断: サーバー、ネットワーク機器(ルータ、スイッチ)、IoTデバイスなどのセキュリティホールをチェックします。
- 幅広い脆弱性スキャン: OpenVASは最新の脆弱性データ(NVT: Network Vulnerability Tests)を活用し、既知の脆弱性を幅広くスキャンします。
- 統合的なレポート機能: スキャン結果をレポート化し、どのような修正が必要か具体的に提示します。
具体的な使用例
- ネットワークスキャン:
- 社内LAN内のサーバーやネットワーク機器のセキュリティホールをチェック。
- 外部アクセススキャン:
- インターネットからアクセス可能なサーバーが攻撃者にとって危険な状態にないか確認。
- 継続的な脆弱性管理:
- 定期的にスキャンを実施し、新たに発見された脆弱性に対応。
Kali Linuxへのインストール
必要な事前準備
この手順は、通常のKali Linux環境で公式リポジトリのパッケージを導入する場合を対象にしています。macOSのターミナルで直接実行する手順ではありません。仮想マシンを使う場合も、コマンドとWeb画面はKaliの中で操作します。
sudoを使えるユーザーと、サービスを管理できる環境を用意します。- パッケージとフィード(検査に使う脆弱性データ)を取得できるネットワーク接続が必要です。
- 検査対象へKaliから通信できるよう、仮想マシンのネットワーク設定も確認してください。
- フィードやデータベースを保存する空き容量と、十分なメモリを確保します。参考としてGreenboneのコンテナ版要件は最低2コア・RAM 4GB・空き容量20GB、推奨4コア・RAM 8GB・空き容量60GBです。これはKaliパッケージ版の動作保証ではなく、環境を用意する際の目安です。
既存環境を更新する場合は、重要なファイルやPostgreSQLのデータを先にバックアップしてください。以下は新規導入の流れです。既存GVMの更新やデータベース移行には、そのまま当てはめないでください。
インストール手順
-
パッケージ情報を更新します。
sudo apt update sudo apt upgrade更新対象を確認してから進めます。GreenboneのKali導入ガイドでは、必要なPostgreSQLを使えるよう、導入前のパッケージ更新も勧めています。
-
GVMをインストールします。
sudo apt install gvm現行のKali公式ツールページに合わせ、パッケージ名は
gvmとしています。GreenboneのKali導入ガイドではsudo apt install openvas -yも同じ導入として案内されています。旧コマンド自体が誤りというわけではありませんが、この記事ではスキャナーと管理画面を含む全体を区別し、初期設定とフィード確認まで説明します。
GVMの初期セットアップと起動
セットアップスクリプトの実行
インストール後、次のコマンドで初期設定を行います。
sudo gvm-setup
このスクリプトは、証明書やPostgreSQLのデータベース、管理ユーザー、フィードの設定などを行います。初回のダウンロードとデータの取り込みには時間がかかるため、途中の出力を確認しながら待ちます。
新規に作成された admin ユーザーのパスワードが出力されたら、安全な場所に保管してください。出力形式はバージョンや既存ユーザーの有無で変わるため、固定の表示を前提にしないでください。パスワードを含むログやスクリーンショットは公開しないようにしましょう。
設定の確認とサービスの起動
まず、インストール状態を確認します。
sudo gvm-check-setup
エラーがあれば、表示された FIX の内容を読み、原因を解消してから再確認します。データベースの移行や削除を伴う操作は、バックアップと対象を確認せずに実行しないでください。
確認が通ったら、サービスを起動します。
sudo gvm-start
Kaliの中のブラウザで、起動時に案内されるURLを開きます。Kali公式資料のURLは次のとおりです。
https://127.0.0.1:9392
127.0.0.1 は、そのブラウザを動かしている端末自身を指します。Mac側のブラウザから開いても、Kali仮想マシンにはつながりません。標準設定はローカルからのアクセスを前提にしているため、ここではKali内のブラウザを使います。
証明書の警告が出た場合は、接続先が自分で構築したKaliであることと、セットアップ時に作成された証明書を確認してください。知らない接続先の警告を無条件に無視しないでください。
ログイン後にフィードの準備を確認する
GSAに admin とセットアップ時のパスワードでログインします。ログインできただけでは、スキャンの準備が完了したとは限りません。
「Administration」→「Feed Status」で、フィードの取得と取り込みの状態を確認してください。GreenboneのKali導入ガイドでは、初回の取り込みは環境によって数分から数時間かかると説明されています。同期・取り込みが進行中なら完了を待ち、エラーがあれば先に解消します。
検査設定(Scan Configs)やポートリストが利用できることも確認してから、タスクを作成しましょう。利用後にサービスを停止する場合は、次のコマンドを使います。
sudo gvm-stop
スキャンタスクの作成と実行
画面の名称や配置はバージョンで変わる場合があります。以下はGSAでターゲットとタスクを作る基本的な流れです。
スキャン対象ホストの登録
- GSAの「Configuration」→「Targets」を開き、新規ターゲットを作成します。
- 名前と、許可を得た検証用ホストのIPアドレスまたはホスト名を入力します。
- 対象に合うポートリストを選び、保存します。最初から広いネットワーク範囲を指定せず、1台で確認してください。
スキャンタスクの作成
- 「Scans」→「Tasks」を開き、新規タスクを作成します。
- 名前、作成したターゲット、利用可能なスキャナー、検査設定を選択します。
- 例えば標準の「Full and fast」が利用できる場合も、対象と検査内容に合うか確認してから保存します。設定が見つからない場合は、先にフィードの取り込み状態を確認してください。
操作の詳細はGreenboneのスキャン管理マニュアルも参考になります。Enterprise版の説明を含むため、KaliのGSAと表示や機能が一致しない箇所があります。
スキャンの実行と結果の確認
タスクを開始し、進行状況を確認します。検査中は対象に負荷がかかることがあるため、影響が出たら停止し、範囲や設定を見直します。
完了後はタスクのレポート、または「Scans」→「Reports」から結果を開きます。重大度だけで判断せず、検出内容や根拠、対象のソフトウェアのバージョンを確認しましょう。検出がない場合も、安全が保証されたわけではありません。到達できたホストや検査範囲を確認し、修正後は同じ条件で再検査します。
ローカル環境を検査する場合
同じLANや仮想ネットワーク内のホストも、GSAでターゲットとタスクを作成して検査します。対象のIPアドレスには、Kaliから到達できるアドレスを指定してください。Macや別の仮想マシンを検査したい場合、127.0.0.1 を指定するとKali自身が対象になります。
NASLスクリプトを直接実行する方法は、GVMでタスクを作成する通常の検査とは別です。単発のNASL実行で一式の診断やGSAへのレポート保存ができると誤解しないよう、この記事ではGSAでの操作に統一しています。
トラブルシューティング
セットアップの確認が通らない
最初に sudo gvm-check-setup のエラーと FIX を確認します。PostgreSQLのバージョン、ポート、pg-gvm 拡張に関するエラーは、GreenboneのKali向けトラブルシューティングを参照してください。資料中のバージョン番号は例なので、手元の出力と照合する必要があります。
既存のデータベースを使っている場合は、復旧のためにクラスタを削除するコマンドをそのままコピーしないでください。
Web画面が開かない
Kali内のブラウザを使っているか、sudo gvm-start がエラーなく終わったかを確認します。サービスの状態は次のコマンドで確認できます。
sudo systemctl status gsad gvmd ospd-openvas --no-pager
エラーがあるサービスのログを確認してから対処します。管理画面を外部へ公開する設定変更は、接続確認のための最初の対処にはしないでください。
スキャンが進まない・検査設定が見つからない
- 「Feed Status」で同期・取り込みが終わっているかを確認します。
sudo gvm-check-setupでサービスや設定の不足を確認します。- Kaliから対象へ到達できるか、対象IPや仮想マシンのネットワーク設定を確認します。
- タスクやレポートのエラーを読み、対象が検出されない場合は生存確認(Alive Test)の方法と、対象側のファイアウォール設定も確認します。
0%表示だけでは原因を特定できません。フィードの準備不足、サービスの停止、対象への通信の問題を分けて確認しましょう。
ログの確認
Kaliパッケージ版のログは /var/log/gvm にあります。まずファイル名を確認し、例えばスキャナーとの通信を担当する ospd-openvas のログを読みます。
sudo ls /var/log/gvm
sudo tail -n 50 /var/log/gvm/ospd-openvas.log
ファイル名や保存先が異なる場合は、実際のサービス設定を確認してください。Kaliのパッケージと gvm-* スクリプトはKali・Debian側で管理されています。パッケージ固有の問題はKaliのバグ報告先も確認するとよいです。
定期的な脆弱性診断の重要性
脆弱性を放置すると、次のようなリスクがあります:
- 個人情報の流出
- サーバーの不正利用
対策として、以下を実践しましょう:
- 定期的にスキャンを実行
- スキャン結果を基に迅速に対応
- システム更新を怠らない
まとめ
Kali Linuxでは gvm を導入し、初期設定、サービスの起動、フィードの確認を済ませてからOpenVASで検査します。許可を得た検証用ホストで手順を確認し、結果を修正と再検査につなげましょう。