立ち話

興味があることを書いてます。正確な内容は公式ドキュメントや参考文献を確認してください。ブログに示された意見はすべて個人の見解であり、所属する組織の公式見解ではありません。

KVM 上の Ubuntu20.04 に Nessus Essentials を入れて色々試す

1. はじめに

前の記事で仮想環境を構築した1。今回はこの仮想環境に対してNessusを適用するために、仮想環境上のUbuntu20.04に nessus essentials をインストールする。nessus essentials は、スキャンできるIPが16個までという制限があるが、基本的に商用版と同じ機能を使うことができるらしい。 使う前に、nessus essentials について生じた疑問点を挙げる。

  1. Nessusのインストール後、インストール前に作成したスナップショットに戻って再度 nessus をインストールするときに、最初のインストールで使用した activation code は2回目のインストールで使用できるのか?
  2. Nessus のスキャン後に同一のMACアドレスの機器にIPアドレスを振り直して再度スキャンすると、登録されたホスト (IPアドレス) の個数はどのように変化するのか?
  3. 同じメールアドレスでアクティベーションコードを取得し直すと、登録されたホスト (IPアドレス) の個数はどのように変化するのか?
  4. 登録されたIPアドレスの数を0に戻す方法はあるのか?

この記事では、以上4つの疑問点を解消するために色々試していく。

2. 準備

2.1 アクティベーションコードの入手方法

tenableのサイト で名前とメールアドレスを入力して送信すると、入力したメールアドレス宛にアクティベーションコードが送られてくる。

Activation code

2.2 ダウンロード方法

ダウンロードサイト から、自分のOSに合うものをダウンロードする。今回 nessus essentials をインストールする仮想マシンの OS は Ubuntu 20.04 なので、Nessus-10.1.2-ubuntu1110_amd64.deb をダウンロードする。

nessus のダウンロード

この時点のスナップショットを作成しておく。

スナップショット (nessus のインストール前)

3. nessus essentials に対する疑問点の解消

3.1 スナップショットを使用したときのアクティベーションコードの扱い

送られてくるアクティベーションコードの説明には、

This is a one-time code. If you uninstall and then reinstall you will need to register the scanner again and receive another activation code.

とあった。これは、スナップショットを使ったときも同様なのか、ということが気になったので、インストールしながら試したいと思う。

3.1.1 インストール

インストール方法について、日本語でまとめてくださっている記事があるので、この記事を参考にしながらインストールをする2apt を使ってインストールする。

sudo apt install ./Nessus-10.1.2-ubuntu1110_amd64.deb 

インストール後、以下のように出力される。

Created symlink /etc/systemd/system/nessusd.service → /lib/systemd/system/nessus
d.service.
Created symlink /etc/systemd/system/multi-user.target.wants/nessusd.service → /l
ib/systemd/system/nessusd.service.

 - You can start Nessus Scanner by typing /bin/systemctl start nessusd.service
 - Then go to https://vm-ubuntu:8834/ to configure your scanner

次に、nessusd.service を起動する。

sudo systemctl start nessusd

そして、ブラウザから https://localhost:8834/ にアクセスする。

localhost へのアクセス

このように警告が出されるが、Advanced をクリックし、Accept the Risk and Continue とすると、以下のようなセットアップ画面になる。

nessus のセットアップ

アクティベーションの登録をスキップすると、アクティベーションコードの登録画面が出てくる。そこに、先程入手したアクティベーションを入力する。

Activation code

ユーザアカウントを作成するために、ユーザ名とパスワードを入力する。

ユーザアカウントの作成

プラグインの初期化画面に遷移する (仮想マシンの設定によってはかなり時間がかかる。私の環境では30分以上かかった)。

プラグインの初期化

これでインストールが完了する。

Nessus のインストールの完了

この状態でスナップショットを作成する。

スナップショット (nessus のインストール後)

3.1.2 スナップショットを使う

スナップショットを使ってインストール前に戻った際に、同じアクティベーションコードを使ってインストールを進めることができるかどうかを実験する。インストール終了後にスナップショットを作成し、仮想マシンをシャットダウンする。そして、インストール前のスナップショットに戻り、同じアクティベーションコードを入力してインストールを進めてみる。

スナップショットを使う

スナップショットを使ってみたところ、同じアクティベーションコードを使ってインストールを進めることができた。

結果: Nessusのインストール後、インストール前に作成したスナップショットに戻って再度 nessus をインストールするときに、最初のインストールで使用した activation code は2回目のインストールでも使用できる。

3.2 スキャン後に同一のMACアドレスの機器にIPアドレスを振り直す

実際にスキャンをしてみる。1台もスキャンしない状態では、nessus に登録されているホストの数は0である。

nessus のスキャン前の状態

3.2.1 脆弱性スキャンの実施

ここでは、Basic Network Scan を metasploitable に対して実施する。

metasploitable2 の仮想マシンを起動し、ubuntu20 から metasploitable に対してスキャンを行う。

スキャン名と target の IPアドレスを以下のように設定する。

nessus のスキャン設定

次に、Credentials でホストに対して ssh のログイン情報を追加する。今回は、IDおよびパスワードが公開されているので、それを用いる。

nessus のスキャン設定 (2)

このように設定した上で、スキャンを実行する。

スキャンの実行

スキャンの実行後、レポートを出力し、スナップショットを取得する。

スキャン結果

また、この時点でホスト数は1になっていることが分かる。

スキャン後のホスト数

3.2.2 IPアドレスを変更して再度スキャンする

IPアドレス192.168.100.161 から 192.168.100.162 に変更してスキャンを行う。

IP アドレスの変更

(ここはもっと良い方法があるかもしれない)

virsh net-update [network name] delete ip-dhcp-host '<host mac=[mac address] ip=[ip address]/>' --live --config

を root 権限で実行し、一度固定した IPの設定を解除する。その上で、

virsh net-update [network name] add ip-dhcp-host '<host mac=[mac address] ip=[new ip address]/>' --live --config

として、新しく固定するIPを加える。そして、

virsh domif-setlink [guestname] [mac address] down
sleep 10
virsh domif-setlink [guestname] [mac address] up

として、自分のマシンに反映させる。これでうまくいかなかった場合 (私はうまくいかなかった) は、ホストOS自体を再起動する3

スキャン

IPアドレス192.168.100.162 にした上で再度スキャンを行う。

nessus スキャンの際に IPアドレスを変更する

スキャン後にアカウントを見てみると、IPアドレスが追加されていることがわかる。

IPアドレス変更後にスキャン

結果: Nessus のスキャン後に同一のMACアドレスの機器にIPアドレスを振り直して再度スキャンすると、登録されたホスト (IPアドレス) の個数は増加する。

3.3 同じメールアドレスでアクティベーションコードを取得し直す

nessus essentials にログインした際の画面を見ると、Activation code を編集できるようになっている。この activation code を変更すると、Licensed Hosts の数はどのように変化するのか確かめたい。

次の2つの場合を試してみる。

  1. nessus essentials をアンインストールせずに、activation code のみを変更する。
  2. nessus essentials をアンインストールし、再度 deb からインストールした上で、activation code を変更する。

3.3.1 nessus essentials をアンインストールしない場合

nessus essentials をアンインストールせずに、Activation code のみを変更する。

Activation code を入れ直す

Activation code の変更後、ログインすると、Licensed Hosts の数は変化していないことがわかる。

Activation code の変更のみをしてログインした場合

3.3.2 nessus essentials をアンインストールする場合

nessus essentials のアンインストールについては、tenable Documentation 参照4

sudo systemctl stop nessusd

nessusd.service を停止し、

sudo apt remove nessus

でアンインストールする。アンインストール後は、https://localhost:8834/ でアクセスしても何も立ち上がらない。

Nessus のアンインストール後のブラウザ

アンインストール後にスナップショットを作成し、再度 deb からインストールする。

sudo apt install ./Nessus-10.1.2-ubuntu1110_amd64.deb
sudo systemctl start nessusd

再インストール後、セットアップ画面にはならず、Username と Password を入れる画面になった。ログインすると先程と同様、ホスト数は2だった。

再インストール後の状況

この状態で、同じメールアドレスで新しく activation code を取得したものを入力してもホスト数は変わらなかった。

結果: Nessus をアンインストールしてもしなくても、同じメールアドレスで新しく activation code を取得した場合は登録されたホスト数は変わらない。

3.4 登録された IP アドレスを0に戻す方法

ここでは、思いつく限りの方法で登録された IP アドレスの個数を 0 にしようとする。

  1. メールアドレスを変えて activation code を取得する
  2. スナップショットの活用
  3. 新しい仮想マシンの作成

3.4.1 メールアドレスの変更

メールアドレスを変更して新しい activation code を取得し、入力するとどうなるかということを試す。

メールアドレスを変えて activation code を入手した場合

ここまでの展開で予想はできたが、メールアドレスを変更して新しい activation code を入手しても、ホスト数は変わらなかった。

3.4.2 スナップショットの活用

インストール直後に作成したスナップショットの時点まで戻れば、IPアドレスの個数は0であるだろう。

スナップショットでインストールした時点に戻った場合

実際、この時点に戻ると、登録されているホスト数は0であった。

スナップショットを利用すると、面白いことができてしまう。

  1. インストール後にスナップショットを作成し、スキャンを行う。
  2. スキャン後に、結果 (nessus) を出力 (export) し、スナップショットを作成する。
  3. 仮想マシンにある結果をホストOSに送る。
  4. インストール直後のスナップショットに戻り、ホストOSから結果を仮想マシンに送る。
  5. 結果をインポートする。

インポートすると、Nessus 側では実施したスキャン結果を見ることができる。

インポートしたスキャン結果

このとき、ホスト数は0のままである。

スキャン結果をインポートした後のホスト数

つまり、スナップショットを使うことによって、ホスト数を気にせずにスキャンを行うことができる。

3.4.3 新しい仮想マシンの作成

スナップショットを活用しないまま進めてしまい、登録できるホスト数で詰まってしまうこともあるかもしれない。そんなときは、思い切って新しい仮想マシンを作成する、ということを考える。流石に新しい仮想マシンまでは IP アドレスの制限はなされないだろう。ここではメールアドレスは同じものを用いた場合で試してみる。

新しい仮想マシンで nessus をインストールし、https://localhost:8834/ にアクセスすると、(当然だが) 初めてインストールしたときのようにアクティベーションの入力、ユーザ名とパスワードの登録の画面が出てきて、初期化の画面に遷移した。

新しい仮想マシンに nessus を入れた場合

しばらく待ってから確認すると、ホスト数は0だった。

新しい仮想マシンに nessus を入れた場合のホスト数

4. まとめ

今回の検証で分かったことを示す。

  • Nessusのインストール後、インストール前に作成したスナップショットに戻って再度 nessus をインストールするときに、最初のインストールで使用した activation code は2回目のインストールでも使用できる。
  • Nessus のスキャン後に同一のMACアドレスの機器にIPアドレスを振り直して再度スキャンすると、登録されたホスト (IPアドレス) の個数は増加する。
  • Nessus をアンインストールしてもしなくても、同じメールアドレスで新しく activation code を取得した場合は登録されたホスト数は変わらない。
  • メールアドレスを変更して新しい activation code を入手しても、ホスト数は変わらない。
  • スナップショットの活用が有効。
  • 新しい仮想マシンを作成し、登録済みのメールアドレスに activation code を送り、そのアクティベーションコードを利用してインストールすると、新しくインストールされた nessus のホスト数は0である。

ホスト数に関しては、以下の表のようにまとめられる。

行動 ホスト数
同一機器のIPアドレスの変更 増加
新規アクティベーションコード (essentials) への変更 変化なし
新規仮想マシンへのインストール 0になる

そのため、nessus essentials を使用するときは、使用前のスナップショットを作成し、使用する度に使用前のスナップショットに戻って新しくスキャンするといった操作をすると良いだろう。


  1. Nessusを適用するための仮想環境の構築

  2. 参考: Nessusインストールと、基本的な使用方法

  3. 私の場合はこれでうまくいったが、うまくいかない場合もあるかもしれない。もっと良い方法を募集したい。

  4. 参考: Uninstall Nessus on Linux