虎の穴開発室ブログ

虎の穴ラボ株式会社所属のエンジニアが書く技術ブログです

MENU

Nessusで行う簡単な脆弱性診断

こんにちは、虎の穴ラボのTYです。

今回は、脆弱性診断を行う Nessus というツールを使用して、自宅での簡単な脆弱性診断を試してみましたので、その手順をご紹介します。

Nessusとは

Tenable Network Security社が提供する包括的な脆弱性検知スキャナです。20年からの歴史があり、現在までに約10万件以上のプラグインと呼ばれる脆弱性チェックの為のスクリプトが追加されています。 本来は有償の製品ですが、個人の家庭内環境での使用で且つ、一度の診断が最大16IPアドレスという制限で使用できる「Nessus Home」という無償のエディションが提供されていますので、今回はそれを使用します。

Nessus Professional™ Vulnerability Scanner

事前に用意するもの

  • mac (今回使用したマシンとなりますが、主にVagrantコマンドを使用しているため、Windowsでもあまり変わりは無いと思います。)
  • Oracle VM VirtualBox
  • Vagrant

Oracle VM VirtualBox と Vagrant は事前にダウンロードとインストールを行い、使用できる状態としておきます。

Oracle VM VirtualBox

Vagrant by HashiCorp

全体の手順

  1. Nessusのダウンロード
  2. Nessus Homeのアクティベーションコードの取得
  3. Nessusをインストールする仮想マシンの準備
  4. Nessusのインストール
  5. Nessusの初期設定
  6. スキャンポリシーの作成
  7. 脆弱性診断
  8. 診断後

1. Nessusのダウンロード

以下のダウンロードページからNessusのインストール対象とするOSに対応したファイルを取得しておきます。 今回は対象のOSをCentOS7としましたので、CentOS7用のファイルである Nessus-8.1.0-es7.x86_64.rpm をダウンロードしました。

Nessusのダウンロードページ

2. Nessus Homeのアクティベーションコードの取得

以下のNessus Homeのページにアクセスを行い、「First Name」「Last Name」「Email」を入力して「Register」ボタンをクリックします。

Nessus Homeの製品ページ

しばらくすると「Email」に指定したアドレス宛てに「Tenable Nessus Home Activation Code」という件名のメールを受信します。 このメールの中に今回使用する「Nessus Home」のアクティベーションコードが記載されていますので、確認をしておきます。

3. Nessusをインストールする仮想マシンの準備

今回は VirtualBox と Vagrant を使用してNessusのインストール対象となる仮想マシンを準備します。

VagrantによりCentOS7のbox(と呼ばれる仮想マシンのイメージファイル)をダウンロードし起動します。 Vagrantでは公式にCentOS7のboxが用意されていますので、これを使用します。

Vagrant box centos/7 - Vagrant Cloud

Vagrant用のフォルダを作り、移動します

$ mkdir vagrant && cd vagrant

今回使用する仮想マシン用のフォルダを作り、移動します。

$ mkdir nessus && cd nessus

VagrantFileを準備します。

$ vagrant init centos/7

後ほどホストマシン側からNessusにアクセスする為、作成されたVagrantFileをエディタで開き、以下のようにポート転送の設定を追加しておきます。

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# NOTE: This will enable public access to the opened port
# config.vm.network "forwarded_port", guest: 80, host: 8080

config.vm.network "forwarded_port", guest: 8834, host: 8834

CentOS7 の仮想マシンを起動します。(初回起動時はCentOS7のboxのダウンロードと、VirtualBoxへの設定も行われます。)

$ vagrant up

仮想マシンが起動をしたら、SSHのポート番号と秘密鍵ファイルのパスを確認します。 以下のコマンドを実行し、表示されるPortとIdentityFileの部分を確認してください。

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/user1/vagrant/nessus/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

SSHのポート番号が確認できたら、先ほどダウンロードしておいた Nussusのイメージファイルを仮想マシンにリモートコピーします。 この時、-i オプションには IdentityFile で示されていた秘密鍵ファイルのパスを、-P オプションにはポート番号を指定してください。

$ scp -i /Users/user1/vagrant/nessus/.vagrant/machines/default/virtualbox/private_key -P 2222 ~/Downloads/Nessus-8.1.0-es7.x86_64.rpm vagrant@localhost:/home/vagrant

4. Nessusのインストール

仮想マシンにログインを行い、Nessusのインストールを行います。

以下のコマンドで仮想マシンにログインを行います。

$ vagrant ssh

先ほどリモートコピーをした Nessusのイメージファイルを確認します。

[vagrant@localhost ~]$ ls -l
-rw-r--r--. 1 vagrant vagrant 62331220 Dec 16 08:51 Nessus-8.1.0-es7.x86_64.rpm

以下のコマンドでインストールを行い、その後、起動します。

[vagrant@localhost ~]$ sudo yum localinstall -y Nessus-8.1.0-es7.x86_64.rpm
[vagrant@localhost ~]$ sudo systemctl start nessusd

psコマンドを使用して、nessusd が起動していることを確認します。

[vagrant@localhost ~]$ ps aux | grep nessus
root      4434  0.2  0.2  12684  1100 ?        Ss   09:04   0:00 /opt/nessus/sbin/nessus-service -q
root      4435 86.7  5.9 119340 29892 ?        Sl   09:04   0:06 nessusd -q

起動確認後は仮想マシンからログアウトしておきます。

[vagrant@localhost ~]$ exit

5. Nessusの初期設定

ホストマシンのブラウザから以下のURLにアクセスを行うとNessusの初期設定画面が表示されます。

https://localhost:8834/

最初にSTEP 1/3として「Create an account」の画面が表示されるので、作成するアカウントのUsernameとPasswordを入力して「Continue」をクリックし、次の画面に移動します。 以後は、ここで登録した Username と Password でNessusにログインを行います。

f:id:toranoana-lab:20181217004836p:plain
Nessus初期設定1

次にSTEP 2/3として「Register your scanner」の画面が表示されるので、「Scanner Type」には「Home, Professional or Manager」を選択し、「Activation Code」には先にメールで取得したアクティベーションコードを入力して「Continue」をクリックし、次の画面に移動します。

f:id:toranoana-lab:20181217004956p:plain
Nessus初期設定2

STEP 3/3として「Initializing」画面が表示され Nessusの初期化が始まります。

f:id:toranoana-lab:20181217005252p:plain
Nessus初期設定3

初期化が終了すると、Nessus のメイン画面が表示されます。

f:id:toranoana-lab:20181217005327p:plain
Nessusメイン画面

6. スキャンポリシーの作成

脆弱性診断の前にスキャンポリシーの作成を行います。 画面左側のメニューより「Policies」をクリックして「Policies」画面に移動し、画面右上の「New Policy」をクリックすると作成できるスキャンポリシーの一覧が表示されます。 その中から「Advanced Scan」を選択します。

f:id:toranoana-lab:20181217005802p:plain
Nessusスキャンポリシーの一覧画面

新しく作成するスキャンポリシーの設定画面が表示されますので、「Settings」タブを選択し、メニューから「BASIC」->「General」を選択し、「Name」に作成するポリシーの名称を入力します。 今回は Advanced_Scan_Policy と入力しておきます。

f:id:toranoana-lab:20181217005906p:plain
Nessusポリシー設定画面1

メニューから「DISCOVERY」->「Port Scanning」を選択し、「Ports」の「Port scan range: 」の設定を「default」から「all」または「1-65535」に変更します。 (設定の変更により、Nessusで指定している代表的なポートだけではなく、TCPの全ポートをスキャンします。)

f:id:toranoana-lab:20181217005953p:plain
Nessusポリシー設定画面2

メニューから「DISCOVERY」->「Service Discovery」を選択し、「Search for SSL/TLS on」の設定を「Known SSL/TLS ports」から「All ports」に変更します。 (設定の変更により、代表的なSSL/TLSポート以外もSSL/TLSポートとしてスキャンします。)

f:id:toranoana-lab:20181217115854p:plain
Nessusポリシー設定画面3

メニューから「ASSESSMENT」->「Web Applications」を選択し、「Scan web applications」の設定を「OFF」から「ON」に変更します。 (診断対象上でWebアプリケーションが動作していた際の設定です。)

f:id:toranoana-lab:20181217010137p:plain
Nessusポリシー設定画面4

メニューから「REPORT」を選択し、「Override normal verbosity」のチェックボックスにチェックを入れ、「Report as much information as possible」を選択します。 また、Output下の「Display hosts that respond to ping」のチェックボックスにもチェックを入れておきます。 (なるべく診断結果の情報量を増やすための設定です。)

f:id:toranoana-lab:20181217010254p:plain
Nessusポリシー設定画面5

メニューから「ADVANCED」を選択し、Performance Options 下の「Slow down the scan when network congestion is detected」のチェックボックスにチェックを入れます。 (ネットワークの輻輳が検出された際に、診断(スキャン)速度を遅くします。)

f:id:toranoana-lab:20181217010254p:plain
Nessusポリシー設定画面6

上記の設定が完了したら画面下部の「Save」をクリックし、スキャンポリシーを保存します。

7. 脆弱性診断

画面左側のメニューより「My Scans」をクリックして「My Scans」画面に移動し、画面右上の「New Scan」をクリックすると実行する脆弱性診断に使用するスキャンポリシーの一覧が表示されます。

f:id:toranoana-lab:20181217010924p:plain
脆弱性診断に使用するスキャンポリシー一覧画面

一覧画面の「User Defined」タブをクリックすると、先ほど登録したスキャンポリシーが表示されます。

f:id:toranoana-lab:20181217011110p:plain

表示されたスキャンポリシーをクリックすると、脆弱性スキャンの設定画面が表示されますので、ここで「Name」に脆弱性診断の任意の名称(対象とするサーバーの名称など)を入力し、「Targets」に診断対象となるマシンのIPアドレスを設定して「Save」をクリックします。 ここでは「Name」に local_web_server を指定しています。 (「Targets」には複数のIPアドレスが設定できますが、Nessus Homeでは最大16IPアドレスの制限があります。)

f:id:toranoana-lab:20181217011159p:plain

スキャンの一覧画面に戻りますので、作成したスキャン設定の右側の矢印ボタン(Launchボタン)をクリックし、脆弱性診断を開始します。

f:id:toranoana-lab:20181217011223p:plain

診断完了後はスキャン設定の「Last Modified」の位置にチェックマークが付きます。(診断中はぐるぐると回転するアイコンが表示されています。)

f:id:toranoana-lab:20181217011547p:plain

診断完了後はスキャン設定名をクリックすると診断結果画面に移動しますので、内容を確認します。

f:id:toranoana-lab:20181217011758p:plain

f:id:toranoana-lab:20181217011817p:plain

8. 診断後

診断終了後は、以下のコマンドでNessusが稼働する仮想マシンを停止します。

$ vagrant halt

まとめ

今回はNessusの動作環境をVagrantで用意することで、手順の省略化を図ってみました。 説明では画面数が多くなってしまい煩雑なイメージを持たれる方もいるかもしれませんが、実際に操作をしてみると複雑な操作などはほとんど無く、脆弱性診断を行えます。 Nessusには他にも、上記の手順にも出てきました各種スキャンポリシー、外部から実行できる各種API、診断スクリプトの追加など興味を引く箇所が色々あるので、また機会があれば触ってみたいと思いました。



虎の穴ではJavaエンジニアをはじめとして一緒に働く仲間を絶賛募集中です! この記事を読んで、興味を持っていただけた方はぜひ弊社の採用情報をご覧下さい。 www.toranoana.jp