問題提起:見えない脆弱性、現実の脅威
インターネットは絶え間ない戦場のように感じられ、私たちのシステムは常に攻撃にさらされています。脅威は、巧妙な国家支援のアクターから、弱点を執拗に探る自動ボットまで多岐にわたります。私は、ある夜遅くに自身の個人サーバーがSSHブルートフォース攻撃を受けたとき、その現実を痛感しました。その身の毛もよだつような経験は、単なる警告ではなく、セキュリティを最初から優先するという私の信念を強固なものにしました。インシデントの発生を待つことは、単に問題を引き起こすようなものです。
あらゆるシステムを安全に保つための重要なステップは、攻撃者が悪用する前にその弱点を理解することです。サーバー、アプリケーション、ネットワークデバイスには、しばしば隠れた脆弱性が含まれています。これらは侵入者にとって開いたドアとなる可能性があります。
現代のIT環境は信じられないほど複雑であり、手動での脆弱性発見は不可能な作業です。これらのセキュリティ上の欠陥を継続的に特定、評価、管理するためには、体系的で自動化された方法が必要です。本当の課題は、それらを見つけることだけでなく、包括的かつ効率的に行うことです。
コアコンセプト:OpenVAS/Greenboneの解明
プロアクティブなサイバーセキュリティは、潜在的な攻撃経路を明確に可視化することにかかっています。まさにここで、脆弱性スキャナーが不可欠なツールとなります。脆弱性スキャナーは、システム、ネットワーク、アプリケーションなど、あなたのインフラストラクチャを検査し、既知のセキュリティ上の弱点、一般的な誤設定、および古いソフトウェアを検出するために設計された自動化システムです。それはデジタル探偵のように、あなたのデジタル防御の弱点を積極的に探します。
これがOpenVASとGreenboneにつながります。OpenVAS (Open Vulnerability Assessment System) は、脆弱性スキャンと管理のための包括的なフレームワークを作成することを目的としたオープンソースイニシアチブとして始まりました。それ以来、それは大きく進化しました。現在、Greenbone Networksは、コアとなるGreenbone Vulnerability Management (GVM) フレームワークを維持しています。多くの人が依然として非公式に「OpenVAS」を使用していますが、基盤となるオープンソース技術は、より広範なGVMエコシステムの主要なコンポーネントです。
Greenboneは、いくつかの強力なコンポーネントを含むGVMフレームワークを提供します。Greenbone Security Assistant (GSA) は直感的なWebインターフェースとして機能します。Greenbone Vulnerability Scanner (GVMd) はコアとなるスキャンエンジンです。
それは、Network Vulnerability Tests (NVTs) の広大で継続的に更新されるデータベースによって支えられています。これらのNVTは、スキャナーが数万の既知の脆弱性を検出するために使用する、本質的に特殊な署名です。OpenVAS/Greenboneを使用することで、脆弱性管理に対する包括的なアプローチが提供されます。これにより、問題が特定されるだけでなく、その修正を追跡するのにも役立ち、システムが時間の経過とともに安全に保たれることを保証します。
実践演習:OpenVAS/Greenboneのセットアップとスキャン
OpenVAS/Greenboneの利用開始は、その多数のコンポーネントのために気が遠くなるかもしれません。幸いなことに、Dockerのおかげでデプロイがはるかに容易になりました。このチュートリアルでは、Docker Composeのセットアップを使用します。このアプローチは、様々なGreenboneサービスをオーケストレーションし、比較的隔離された簡単なインストールプロセスを提供します。
まず、LinuxマシンにDockerとDocker Composeがインストールされていることを確認してください。インストールされていない場合は、Ubuntuへのインストール方法を以下に示します。
# パッケージリストを更新し、前提条件をインストール
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
# Dockerの公式GPGキーを追加
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 安定版Dockerリポジトリを設定
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Docker Engineコンポーネントをインストール
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io
# sudoなしでDockerコマンドを実行するためにユーザーを「docker」グループに追加
sudo usermod -aG docker $USER
# この変更を有効にするには、ログアウトして再度ログインするか、「newgrp docker」を実行する必要があります。
newgrp docker
# Docker Composeをインストール(必要に応じてGitHubで常に最新バージョンを確認してください)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
次に、docker-compose.ymlという名前のファイルを作成します。以下の内容でそれを記述してください。この構成は、必要なすべてのGreenboneコンポーネント(Greenbone Vulnerability Manager Daemon (GVMd)、Greenbone Security Assistant (GSA – Web UI)、OpenVASスキャナー、PostgreSQLデータベース、Redis)をセットアップします。
# docker-compose.yml
version: "3.8"
services:
gvmd:
image: greenbone/gvmd:stable
volumes:
- gvmd_data:/var/lib/gvm
environment:
# !!重要:「your_admin_password」を強力で一意なパスワードに置き換えてください!!
- GVM_PASSWORD=your_admin_password
restart: unless-stopped
depends_on:
- postgres
- ospd-openvas
gsa:
image: greenbone/gsa:stable
ports:
# ホストのHTTPSポート443をコンテナ内のHTTPポート80にマッピングします
# Web UIには https://localhost または https://your_server_ip 経由でアクセスします
- "443:80"
restart: unless-stopped
depends_on:
- gvmd
ospd-openvas:
image: greenbone/ospd-openvas:stable
restart: unless-stopped
volumes:
- openvas_plugins:/var/lib/openvas/plugins
- openvas_gnupg:/etc/openvas/gnupg
depends_on:
- redis
postgres:
image: postgres:13
environment:
- POSTGRES_DB=gvmd
- POSTGRES_USER=gvm
# !!重要:「your_postgres_password」を強力で一意なパスワードに置き換えてください!!
- POSTGRES_PASSWORD=your_postgres_password
volumes:
- postgres_data:/var/lib/postgresql/data
restart: unless-stopped
redis:
image: redis:6-alpine
restart: unless-stopped
volumes:
gvmd_data:
openvas_plugins:
openvas_gnupg:
postgres_data:
セキュリティに関する重要な注意:続行する前に、your_admin_passwordとyour_postgres_passwordの両方を、本当に強力で一意な認証情報に置き換えることを忘れないでください。デフォルトパスワードや弱いパスワードを使用しないでください。
次に、デタッチモードでDocker Composeを実行してGreenboneをデプロイします。
docker compose up -d
このコマンドは必要なDockerイメージをダウンロードし、すべてのGreenboneコンポーネントを起動します。しばらくお待ちください。最初のセットアップ、特にNetwork Vulnerability Tests (NVTs)とセキュリティフィードの同期には、インターネット接続とシステムリソースにもよりますが、数時間かかることがよくあります。gvmdサービスのログを確認することで、進行状況を監視できます。
docker logs -f gvmd
フィードが完全に更新され、スキャナーが準備完了になったことを示すメッセージが表示されるのを待ちます。
すべてのサービスが実行され同期されたら、Greenbone Security Assistant (GSA) Webインターフェースにアクセスできます。
Webブラウザを開き、https://localhost(ローカルマシンで実行している場合)またはhttps://your_server_ip(リモートサーバーの場合)に移動します。接続に自己署名証明書が使用されているため、証明書警告が表示される可能性があります。ローカル環境の場合、この警告を安全に通過して続行できます。
GSAに、ユーザー名adminとdocker-compose.ymlファイルで指定したGVM_PASSWORDを使用してログインします。
最初のスキャンの実行:ステップバイステップガイド
- ターゲットの定義:: GSAインターフェース内で、
Configuration→Targetsに移動します。「星」アイコンをクリックして新しいターゲットを作成します。- ターゲットにわかりやすい名前(例:「MyLocalServer」または「WebFrontend」)を付けます。
- スキャンするシステムのIPアドレスまたはホスト名を入力します。例えば、
127.0.0.1を使用してDockerホスト自体をスキャンしたり、ローカルネットワーク上の別のIPを指定したりできます。 - ターゲットが到達可能であることを確認するために、「ARP Ping」や「TCP-ACK Ping」などの「Alive Test」方法を選択します。
- 最後に、新しいターゲットを保存します。
- タスクの作成:: 次に、
Scans→Tasksに移動します。「星」アイコンをクリックして新しいタスクを開始します。- タスクに名前(例:「WeeklyServerAudit」)を割り当てます。
- ニーズに適した「Scan Config」を選択します。より迅速な概要には「Full and fast」、より徹底的な分析には「Full and deep」などのオプションがあります。
- ドロップダウンメニューから、作成したばかりの「Target」を選択します。
- 定期的なスキャンのスケジュールを設定するか、または即時スキャンのために「Run Once」のままにすることができます。
- 「Create」をクリックしてタスクを確定します。
- スキャンの開始:: タスクが作成されたら、リスト内でそのタスクを見つけて、名前の横にある「再生」アイコンをクリックしてスキャンを開始します。タスクは「Requested」、「Queued」、「Running」といういくつかの状態を経て、最終的に「Done」になります。包括的なスキャンにはかなりの時間がかかる場合があることに注意してください。
結果の解釈:注目すべき点
スキャンステータスが「Done」と表示されたら、Scans → Tasksリスト内のタスク名をクリックして、詳細レポートを表示します。
レポートには、発見された脆弱性の優先順位付けされたリストが、以下の必須詳細とともに提供されます。
- 深刻度:: 脆弱性の潜在的な影響を示す、通常0から10までの数値スコア。
- 脆弱性名:: 特定された各問題に対する明確で記述的なタイトル。
- 解決策:: 脆弱性を修正する方法に関する具体的な推奨事項。
- 影響を受けるホスト:: 脆弱性が見つかった特定のIPアドレスまたはホスト名。
常に深刻度の高い脆弱性から優先的に対処してください。各発見について、提供された解決策を注意深く読み、推奨されるパッチ、設定変更、またはソフトウェアアップデートを実装してください。
修正を適用した後、フォローアップスキャンを実行することがベストプラクティスとされています。これにより、脆弱性が実際に解決され、新たな問題が導入されていないことが検証されます。このスキャン、修復、検証の継続的なサイクルが、効果的な脆弱性管理の基盤を形成します。
結論:プロアクティブなセキュリティの導入
システムの脆弱性を無視することは、賑やかな街で玄関のドアを大きく開け放したままにするようなものです。誰かがそれを見つけるかどうかではなく、いつ見つけるかの問題です。OpenVAS/Greenboneは、その堅牢なスキャン機能と広範なNVTデータベースにより、強力なオープンソースソリューションを提供します。これは、悪意のあるアクターによって悪用されるずっと前に、これらの重大な弱点を特定するのに役立ちます。
OpenVAS/Greenboneをセキュリティワークフローに統合することで、システムの全体的なセキュリティ体制に関する貴重な洞察を得ることができます。このツールは、インシデント発生後に常に侵害を修復するリアクティブな姿勢から、防御を積極的に強化するプロアクティブな姿勢へと移行する力を与えます。サイバーセキュリティは一度きりのセットアップではなく、継続的な取り組みであることを忘れないでください。定期的なスキャンと勤勉な修復は、安全で回復力のあるIT環境を維持するための基本的な実践です。

