安全なWebアプリケーションの作り方 第2版 サポートサイト にはVirtualBox用のOpenVASが
あるが、Docker版を使いたい。
/*************************************************************************************/
OpenVASをLinuxで実行したいが、Docker版はあるか? (->DeepSeek)
はい、OpenVASにはDockerイメージが存在し、Linuxでコンテナとして実行することが可能です。OVAファイルを使う方法よりも、より軽量で手軽に環境を構築できます。
### 主なOpenVAS Dockerイメージ 検索結果から、主に以下の2つのDockerイメージが使われていることがわかります。 | イメージ名 | 主な特徴 | タグ / バージョン | Web UIポート | デフォルト認証情報 (ユーザー/パスワード) | | ------------------ | ------------------------------------ | ------------- | -------------- | -------------- | | mikesplain/openvas | 最も広く使われているイメージの一つ。 | latest or 9 | 443 (HTTPS) | admin / admin | | | OpenVAS 9をベースにしており、導入が | | | | | | 簡単。 | | | | | immauss/openvas | 別のユーザーによって提供されているイ | 不明 | 9392 (デフォル | 不明 (ドキュメ | | | メージ。ARM64アーキテクチャ (例:App | | ト) | ント要確認) | | | le M4チップ)での動作実績あり。 | | | | | | | | | |
### Dockerでの実行手順
ここでは、最も一般的な `mikesplain/openvas` イメージを使った実行手順を説明します。
1. Dockerのインストール
まず、Linux環境にDockerがインストールされていることを確認します。インストールされていない場合は、以下のコマンドなどでインストールしてください(Ubuntu/Debian系の例)。
$ sudo apt update
$ sudo apt install docker.io -y
$ sudo systemctl start docker
$ sudo systemctl enable docker
2. OpenVASコンテナの実行
以下の `docker run` コマンド一つで、イメージのダウンロードとコンテナの起動を同時に行えます。
$ sudo docker run -d -p 443:443 –name openvas mikesplain/openvas
`-d`: コンテナをバックグラウンドで実行します。
`-p 443:443`: ホストのポート443をコンテナのポート443にマッピングします。これにより、ホストのWebブラウザからOpenVASのWebインターフェース(Greenbone Security Assistant)にアクセスできるようになります。
`–name openvas`: コンテナに「openvas」という名前を付けます。
3. 起動の確認
コンテナが正しく起動したか確認します。
$ sudo docker ps
このコマンドで `openvas` という名前のコンテナが `Up` 状態で表示されれば成功です。
4. Webインターフェースへのアクセス
コンテナの起動後、OpenVASが完全に初期化されるまで数分待ちます(NVTのスキャンやデータベースの再構築が行われるため)。
その後、Webブラウザで `https://` にアクセスしてください。デフォルトのユーザー名とパスワードはともに `admin` です。
### 注意点と補足情報
起動時間: 初回起動時は、脆弱性テストデータ(NVT)などの読み込みに数分から10分程度かかることがあります。ログを確認するには `sudo docker logs openvas` を実行してください。
リソース制限: OpenVASはスキャン実行時に多くのCPUとメモリを消費する可能性があります。必要に応じて、Dockerコンテナのリソース制限を検討してください。
公式性: `mikesplain/openvas` や `immauss/openvas` は、Greenbone Networks(OpenVASの開発元)が公式に提供しているイメージではありません。コミュニティによってメンテナンスされています。より公式に近い形でコンテナを利用したい場合は、Greenboneの公式ドキュメントで提供されている `docker-compose` ファイルを利用する方法もあります。
脆弱性データの更新: コンテナ内の脆弱性データは古くなる可能性があります。定期的にコンテナ内でデータを更新するか、イメージの更新を確認することをお勧めします。更新方法はイメージのドキュメントを参照してください。
### まとめ
LinuxでOpenVASを実行する場合、Docker版を利用することで、OVAファイルをインポートする方法に比べて、システムへの影響を抑えつつ、より迅速に導入・テストを行うことが可能です。用途や好みに合わせて、OVA版とDocker版を使い分けると良いでしょう。
/*************************************************************************************/
$ docker ps
(省略)
上のDocker環境に、OpenVASを追加して動作させたいができるか? (->DeepSeek)
はい、可能です。あなたのDocker環境(wasbook関連コンテナ)にOpenVASを追加して動作させることは十分にできます。
## 基本的な考え方
OpenVASは**独立したコンテナ**として追加するのがベストプラクティスです。既存のwasbookコンテナ群と同じDockerホスト上で、別コンテナとして並行動作させます。

## 推奨するOpenVAS導入方法
### 方法1:シンプルな単一コンテナ(おすすめ)
最も簡単なのは、人気のある`mikesplain/openvas`イメージを使う方法です。
# OpenVASコンテナの実行
$ docker run -d \
–name openvas \
-p 443:443 \
-p 9392:9392 \
-e PUBLIC_HOSTNAME=$(hostname -I | awk ‘{print $1}’) \
-e OV_PASSWORD=your_secure_password \
–restart unless-stopped \
mikesplain/openvas:9
**オプションの説明**:
– `-p 443:443`:HTTPSでWeb UIにアクセス
– `-p 9392:9392`:マネージャー用ポート
– `PUBLIC_HOSTNAME`:ホストのIPを指定(これでLANからアクセス可能に)
– `OV_PASSWORD`:adminパスワードを安全なものに変更
### 方法2:最新のGreenbone Community Edition(本格的)
より新しいバージョンを使うなら、公式のDocker Compose構成がおすすめです。
# 専用ディレクトリ作成
$ mkdir ~/greenbone-community && cd ~/greenbone-community
# 公式Composeファイル取得
$ curl -f -L https://greenbone.github.io/docs/latest/_static/docker-compose-22.4.yml -o docker-compose.yml
# 起動
$ docker-compose up -d
## 既存環境との共存における注意点 ### 1. ポート競合の確認 あなたの環境で既に使われているポート: | ポート | 使用コンテナ | OpenVAS側 | |--------|--------------|--------------------| | 80 | Nginx | 競合する可能性あり | | 443 | 未使用? | OpenVASが使用 | | 8080 | Tomcat | 競合なし | | 3306 | MySQL | 競合なし | | 9392 | 未使用 | OpenVAS管理UI |
もしホストの443ポートが空いていれば、そのまま使えます。空いていない場合は以下のように変更:
# 例:ホストの8443をOpenVASの443にマッピング
$ docker run -d -p 8443:443 –name openvas mikesplain/openvas:9
### 2. リソース要件の確認
OpenVASはリソースを消費します:
– **最低要件**:CPU 2コア、RAM 4GB
– **推奨**:CPU 4コア、RAM 8GB
既存のwasbook環境が動作している状態で追加する場合、**ホスト全体でこれらのリソースに余裕があるか**確認してください。
### 3. コンテナ間ネットワーク
OpenVASから既存のwasbookコンテ群を**スキャン対象**として指定できます:
# 既存コンテナと同じネットワークに参加させる場合
$ docker run -d \
–name openvas \
–network wasbook_default \ # wasbookのネットワーク名に合わせる
-p 443:443 \
mikesplain/openvas:9
これにより、OpenVASからコンテナ名で他コンテナを指定可能に:
– http://wasbook-docker-nginx-1
– http://wasbook-docker-apache-1
– http://wasbook-docker-tomcat-1:8080
## セットアップ手順(概要)
1. **既存環境のバックアップ**(念のため)
$ docker ps # 現在の状態確認
2. **OpenVASコンテナの実行**(上記いずれかの方法)
3. **起動確認と初期化待機**
# ログで初期化進捗を確認(4-5分かかる)
$ docker logs -f openvas
起動完了の目安:`It seems like your OpenVAS-9 installation is OK` が表示される
4. **Web UIへのアクセス**
https://
ユーザー名: admin
パスワード: (指定したもの、またはデフォルトadmin)
5. **スキャン対象の設定**
– 既存コンテナのIPアドレス(`docker inspect`で確認)をターゲットに追加
– または、同じネットワークに参加させた場合はコンテナ名で指定
## トラブルシューティング
– **Web UIにアクセスできない**:ファイアウォール確認、`PUBLIC_HOSTNAME`設定確認
– **スキャンが遅い/失敗する**:リソース不足の可能性、メモリ割り当て増加
– **NVT更新の問題**:コンテナ内で手動更新可能
**結論**:OpenVASは独立コンテナとして追加することで、既存のWAS-Book学習環境と完全に共存できます。セキュリティテストの学習範囲を脆弱性診断まで広げられる良い構成だと思います。
/*************************************************************************************/
参考情報: