こんにちは、虎の穴ラボの山田です。 今回はNessusという脆弱性診断ツールを使用した、簡単な脆弱性診断方法を紹介したいと思います。実は以前にも「Nessusで行う簡単な脆弱性診断」と言う記事を書いているのですが、その時には無かったDocker版が現在は提供されています。内容の更新も兼ねて、今回はこちらのDockerコンテナを利用したNessusによる診断方法を紹介します。
はじめに
NessusはTenable社が提供する脆弱性診断ツールです。
エディションにより診断内容も異なるのですが、今回は無償で利用できるNessus Essentialsを使用します。Nessus Essentialsは主にネットワーク機器やマシンのネットワーク関連の脆弱性を検出するものです。いくつかの制限があり、Webアプリの診断などは行えませんが、脆弱性診断を試してみるにはとても便利なエディションだと思います。
(他のエディションの中にはWebアプリの診断なども行えるものもあるようです)
目次
- はじめに
- 目次
- 1. アクティベーションコードの取得
- 2. Dockerイメージの取得とコンテナの起動
- 3. Nessus Essentialsの設定
- 4. Nessusによる脆弱性診断
- おわりに
- Fantia開発採用情報
1. アクティベーションコードの取得
まずは設定時に必要となるアクティベーションコードを取得します。公式サイトにアクセスを行い、Nessus Essentialsの「今すぐ登録」をクリックしてください。

Nessus Essentialsの紹介ページに移動するので、Nessus Essentialsの制限事項などを確認し、名前とメールアドレスを記入し「送信して試用を開始する」をクリックします。

記入したメールアドレスに「Tenable Nessus Essentials Activation Code」という件名でアクティベーションコードが書かれたメールが送信されるので、これを確認してアクティベーションコードを取得しておきます。

2. Dockerイメージの取得とコンテナの起動
次にNessusのDockerイメージを取得して起動します。NessusのDockerイメージはDocker Hub上で公式に公開されています。
https://hub.docker.com/r/tenable/nessus

Docker版のNessusには、UbuntuベースとOracle Linuxベースの2種類があります。今回は手元のPCがarm64版のMacBook Proのため、arm64版が提供されているOracle Linuxベースのものを使用します。(Oracle Linuxベースのものはamd64版も提供されているため、同じ手順により大抵の環境で動作するものと思われます)また今回は現時点でOracle Linuxベースの最新版であるバージョン10.8.3を指定して取得します。
まずはDockerイメージを取得します。
docker pull tenable/nessus:10.8.3-oracle
取得が完了できたら、以下のコマンドで取得できたことを確認します。
docker image ls
実行例
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE tenable/nessus 10.8.3-oracle 1711977b23cb 39 hours ago 1.03GB
Dockerイメージの取得が確認できたら、Dockerコンテナを起動します。
docker run -d --name nessus-essentials -p 8834:8834 tenable/nessus:10.8.3-oracle
コンテナの起動が完了できたら、以下のコマンドで起動できたことを確認します。
docker container ls
実行例
$ docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 26689d50e53e tenable/nessus:10.8.3-oracle "/bin/bash -c 'cat /…" 8 seconds ago Up 8 seconds 127.0.0.1:8834->8834/tcp nessus-essentials
3. Nessus Essentialsの設定
まずはブラウザから以下にアクセスを行い、ローカルPCのDocker環境で動作するNessusにアクセスします。
アクセスを行うとWelcomeページが表示されます。
プロキシなどの設定が必要な場合は「Settings」をクリックして設定を行います。今回は必要ないため「Continue」をクリックして次に進みます。
Nessusの登録方法を選択する画面が表示されます。
今回はNessus Essentialsを使用するため「Register for Nessus Essentials」を選択して「Continue」をクリックします。
Nessusのアクティベーションコードを取得するための画面が表示されます。
すでに用意しているため、ここでは「Skip」をクリックします。
Nessusの登録画面が表示されます。
Activation Code入力欄に先ほどメールで受信したアクティベーションコードを入力し「Continue」をクリックします。
アクティベーションコードの確認画面が表示されます。
アクティベーションコードを確認して「Continue」をクリックします。
管理者ユーザーアカウントの作成画面が表示されます。
作成するユーザーのユーザー名とパスワードを入力してください。ここでは一旦ユーザー名をnessus、パスワードを任意で入力しています。
入力後は「Submit」ボタンをクリックします。
「Submit」ボタンをクリックするとNessusの初期化が始まります。
初期化が完了すると、先ほど作成したユーザーによりログインされた状態でNessus画面が表示されます。

4. Nessusによる脆弱性診断
まずは画面右上の「New Scan」をクリックし、スキャンポリシーの作成を開始します。

Scan Templatesの選択画面が表示されるので、実施したい脆弱性診断のテンプレートを選択します。
ここでは「Basic Network Scan」をクリックして選択します。
次に選択したテンプレートの設定画面が表示されます。
ここでは「Name」欄にスキャンポリシーの名前を入力し、「Targets」に診断対象となるマシンのIPアドレスを入力して「Save」ボタンをクリックします。
スキャンポリシーの登録が完了すると「My Scans」の一覧画面に移動します。
一覧画面には登録されたスキャンポリシーが表示されているので、対象右側の実行ボタンをクリックして診断を開始します。
診断が開始されるとアイコンが変わります。
診断が完了するとアイコンがチェックマークに変わります。

完了状態となったスキャンポリシーの名前などをクリックすると診断結果が表示されます。
画面上側のタブをクリックすることで、検出された内容なども確認できます。

ここでは「Basic Network Scan」を試しましたが、他にも「Advanced Scan」などの脆弱性診断が行えます。いろいろと試してみることをお勧めします。
おわりに
以前の記事ではローカルPCのVirtualBox上に環境構築を行いNessusを実行していました。今回の記事ではDockerを使うことで、より簡単にNessusが試せるようになっていると思います。 脆弱性診断にはいろいろな種類がありますが、まずは簡単にはじめてみるのはどうでしょうか。
Fantia開発採用情報
虎の穴ラボでは現在、一緒にFantiaを開発していく仲間を積極募集中です!
多くのユーザーに使っていただけるtoCサービスの開発をやってみたい方は、ぜひ弊社の採用情報をご覧ください。
toranoana-lab.co.jp