WindowsやLinuxで実行できる脆弱性スキャナ「Nessus」を試す

管理しているサーバーなどに脆弱性がないかを調べるツールを「脆弱性スキャナ」と呼ぶ。脆弱性スキャナにはさまざまなものがあるが、古くからよく知られているものの1つに「Nessus」がある。今回はこのNessusを使った脆弱性の調査について紹介する。
マルチプラットフォーム対応の脆弱性スキャナ「Nessus」
Nessusは指定したサーバーに対しポートスキャンや擬似的なアクセスなどを行うことで、サーバーに存在する脆弱性を調査するツールだ。対象とするサーバーが使用しているソフトウェアに既知の脆弱性がないかどうかを調査できるほか、設定ミスや脆弱なパスワードの存在なども確認できる。また、さまざまな形式で詳細なレポートを生成できるのも特徴だ。WindowsおよびMac OS X、Linux、FreeBSD、Solarisというマルチプラットフォームで動作する。
Nessusはかつてはオープンソースで開発されていたが、バージョン3.0以降は非オープンソースのプロプライエタリソフトウェアとして開発されている。企業などでの一般的な利用には有償のライセンス契約が必要となっているが、非商用の個人利用であれば無料で利用でき、また15日間限定の無料体験ライセンスも提供されている。
今回はNessusの最新版であるNessus 5(5.0.2)を使用し、Windows環境およびLinux環境から脆弱性スキャンを実行する方法について紹介する。
なお、無償で利用できる個人向けライセンス(Nessus for Home)はホームネットワークでの利用のみが許可されており、最大で16IPアドレスまでのスキャンしか行えないといった制限があるものの、脆弱性スキャン機能については有償版と同じものが利用できる。また、企業内などで評価目的で利用する場合は15日間利用できる評価用ライセンスが用意されているので、こちらを利用してほしい。
Nessusを利用するためのライセンスを取得する
Nessus本体は開発元であるTenable Network SecurityのWebサイトからダウンロードできる。ただし、インストール後の初期設定時に同社から取得したアクティベーションコードの入力が必要だ。そのため、事前にこちらを取得しておく必要がある。
企業内での評価目的であれば、「Nessus Evaluation」ページから評価用ライセンスの申込みが行える(図1)。このとき氏名およびメールアドレス、企業名、電話番号などの登録が必要だ。

いっぽう、家庭内での利用の場合は「Nessus HomeFeed」ページから無償ライセンスを取得できる(図2)。この場合は、氏名およびメールアドレスの入力のみが必須となっている。

ライセンスの申込みを行うと、メールでアクティベーションコードが送られてくる。筆者が試した際は、どちらの場合も申込みを行ってすぐにメールが届いていた。
Nessusのダウンロード
Nessusのダウンロードは、Tenable Network SecurityのWebサイトから行える。WindowsおよびMac OS X、各種Linux、FreeBSD、Solaris向けのバイナリパッケージが用意されているので、使用したい環境に応じたものをダウンロードする(図3)。

Windows環境でのNessusのインストール
Nessusはマルチプラットフォームに対応しており、WindowsおよびMac OS X、各種Linux、FreeBSDなどさまざまなプラットフォーム向けのバイナリが公開されている。たとえばWindowsの場合、Windows XP/2003/Vista/2008/7の32ビットおよび64ビット版に対応したインストーラが提供されている。利用したい環境に応じたインストーラをダウンロードして実行するだけでインストールが可能だ。
Windows版Nessusのインストーラは、Windowsアプリケーションで一般的なウィザード形式のものだ(図4)。

インストール作業は指示に従ってウィザードを進めていくだけで完了する。なお、Nessusはサービスとしてインストールされ、Webブラウザでアクセスしてその操作や設定を行う仕組みとなっている(図5)。

Linux環境でのNessusのインストール
Linux環境向けには、各種ディストリビューション向けにrpmおよびdeb形式でバイナリパッケージが提供されている。対応しているディストリビューションはDebian 6.0、Red Hat Enterprise Linux(RHEL) 4/5/6およびその互換OS、Fedora 16~18、SUSE Linux Enterprise 10/11、Ubuntu 9.10~12.04などだ。たとえばRHEL 6互換のCentOS(64ビット)環境では、Nessus-5.2.1-es6.x86_64.rpmというパッケージが用意されている。このパッケージをダウンロードし、以下のようにrpmコマンドでインストールする。
# rpm -ivh Nessus-5.2.1-es6.x86_64.rpm
このパッケージの場合、Nessusの各種機能は「nessusd」というサービスを通じて提供される。このサービスは自動的には起動しないので、インストール後に以下のようにして起動しておく。
# /sbin/service nessusd start
なお、nessusdはTCPの8834番ポートで待ち受けを行うので、このポートにアクセスできるようファイアウォール設定の変更も行っておこう。
Nessusの初期設定
Nessusのインストール後は、まずWebブラウザでNessusのGUI設定画面にアクセスして各種設定を行う必要がある。Windows版の場合、インストールの完了後に自動的にWebブラウザが立ち上がり「Welcome to Nessus!」と書かれたページが表示されるはずだ(図6)。

Nessusの管理画面には通常SSL経由(HTTPS)で接続するのだが、使用する証明書は正式なものではないため、Webブラウザから警告が表示される旨がこのページでは記されている。これを確認したうえで、「here」部分のリンクをクリックすると初期設定を行うための画面が表示される(図7)。

ここで「Get started」ボタンをクリックすると、まずNessusの管理画面にアクセスするためのユーザーアカウントを作成する画面が表示される(図8)。ここで「Login」にはログインに使用するログイン名を、「Password」および「Confirm Password」にそれぞれ同じパスワードを入力して「Next」をクリックする。

続いてアクティベーションコードの入力画面が表示されるので、ここで先に入手しておいたコードを入力して「Next」をクリックする(図9)。

なお、Nessusは開発元であるTenable Network Securityのサーバーにアクセスしてプラグイン更新を行うが、環境によってはプロクシを経由しないとインターネットにアクセスできない場合もあるだろう。その場合、アクティベーションコードの入力画面で「Optional Proxy Settings」をクリックすることで利用するプロクシの情報を入力できる。
アクティベーションの完了後、プラグインの更新作業を行う(図10)。ここで「Next: Download plugins」をクリックすると、プラグインのダウンロードが実行される。この作業には数分程度の時間がかかるので注意したい。

プラグインの更新が完了すると、Nessusの管理画面へのログイン画面が表示される(図11)。ここでは先ほど登録したユーザー名およびパスワードでログインが行える。

Nessusによる脆弱性スキャンを実行する
Nessusの管理画面には表1のタブが用意されており、ログイン直後は「Scans」タブの内容が表示されている。
タブ名 | 操作できる機能 |
---|---|
Results | スキャン結果の確認やレポートの作成 |
Scans | 実行中/実行待ちスキャンの確認やスキャンの実行 |
Templates | スキャン設定テンプレートの管理 |
Policies | スキャン設定の管理 |
Users | 管理画面のユーザー管理 |
Configuration | 各種設定 |
スキャンの実行や管理は「Scans」タブで行える(図12)。

ここで「New Scan」をクリックすると、スキャンの設定を行うダイアログが表示される(図13)。

ここで設定できる項目の意味は表2のとおりだ。
設定項目 | 説明 |
---|---|
Scan Title | スキャン一覧画面で表示されるスキャン名 |
Scan Type | 「Run Now」を指定するとすぐにスキャンが実行される。「Template」を選択すると設定をテンプレートとして保存できる |
Scan Policy | スキャン設定を指定する。スキャン設定は「Policies」タブで設定できる |
Scan Targets | スキャン対象とするホスト名もしくはIPアドレスを指定する |
Upload Targets | ホスト一覧が記載されたテキストファイルでスキャン対象を指定する |
Scan Typeで「Run Now」を指定した場合、「Create Scan」ボタンをクリックするとそのスキャンがScansタブのスキャン一覧に追加されると同時にすぐにスキャンが開始され、「Status」にその状況が表示される(図14)。

スキャンが完了すると「Results」画面に完了したスキャンが追加され、そこからスキャン結果を確認できる(図15)。

Results画面に表示されるスキャン結果をクリックすると、そこでまず発見された脆弱性や各種情報の概要が表示される(図16)。

ここで、中央に表示された棒グラフでは発見された脆弱性や問題点の数を深刻度別に表したものだ。このグラフをクリックすると、発見された脆弱性や問題点の一覧が表示される。

また、ここで個別の脆弱性情報をクリックすると、その脆弱性についての詳細が表示される(図18)。

脆弱性一覧をファイルで出力することも可能だ。左サイドバーの「Export Results」をクリックし、出力形式と出力する情報を選択して「Export」ボタンをクリックすれば良い(図19)。

たとえばPDF形式で出力されたレポートは図20のようになる。

スキャン方法の設定
スキャン方法については「Policies」タブで設定が可能だ。デフォルトでは「External Network Scan」および「Internal Network Scan」、「Prepare for PCI-DSS audits (section 11.2.2)」、「Web App Tests」が用意されている(図21)。

ここで「New Policy」をクリックして新たな設定を作成できるほか、既存のスキャンポリシーをクリックしてその設定を変更することもできる。スキャン設定の変更画面では4つのタブが用意されており、まず「General Settings」タブでは全体的なスキャン動作に関わる設定を行える(図22)。

「Credentials」タブではスキャン時に使用する認証/アカウント識別情報などを指定できる(図23)。

「Plugins」タブでは使用するプラグインの設定が行える(図24)。

企業内での利用は有償だが信頼性を重視するなら使う価値あり
Nessusで検出された脆弱性には無害なものもあり、また誤検出の可能性もある。そのため最終的には人間の手で検出された問題点をそれぞれチェックして本当に問題となるものかどうかを確認する必要がある。あくまでNessusは問題の対象を絞り込んだり、問題となりそうな場所を見つけ出すためだけのもので、ただスキャンを行うだけではセキュリティの向上にはつながらないということを覚えておきたい。
Nessusは商用利用は有償となるソフトウェアであるものの、その使い勝手はよく、信頼性に対する評価も高い。個人利用であれば無料で利用できるのもメリットだ。まずは自分が管理しているサーバーで試用してみて、そのセキュリティ状況をチェックしてみてはいかがだろうか。