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

図11 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)。このとき氏名およびメールアドレス、企業名、電話番号などの登録が必要だ。

図1 Nessusの評価用ライセンス申込みページ
図1 Nessusの評価用ライセンス申込みページ

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

図2 Nessusの個人向け無償ライセンス申込みページ
図2 Nessusの個人向け無償ライセンス申込みページ

 ライセンスの申込みを行うと、メールでアクティベーションコードが送られてくる。筆者が試した際は、どちらの場合も申込みを行ってすぐにメールが届いていた。

Nessusのダウンロード

 Nessusのダウンロードは、Tenable Network SecurityのWebサイトから行える。WindowsおよびMac OS X、各種Linux、FreeBSD、Solaris向けのバイナリパッケージが用意されているので、使用したい環境に応じたものをダウンロードする(図3)。

図3 Nessusのダウンロードページ
図3 Nessusのダウンロードページ

Windows環境でのNessusのインストール

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

 Windows版Nessusのインストーラは、Windowsアプリケーションで一般的なウィザード形式のものだ(図4)。

図4 Windows版Nessusのインストーラ
図4 Windows版Nessusのインストーラ

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

図5 Nessusはサービスとしてインストールされる
図5 Nessusはサービスとしてインストールされる

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)。

図6 「Welcome to Nessus!」ページ
図6 「Welcome to Nessus!」ページ

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

図7 Nessusの初期設定ページ
図7 Nessusの初期設定ページ

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

図8 アカウント作成画面
図8 アカウント作成画面

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

図9 アクティベーションコード入力画面
図9 アクティベーションコード入力画面

 なお、Nessusは開発元であるTenable Network Securityのサーバーにアクセスしてプラグイン更新を行うが、環境によってはプロクシを経由しないとインターネットにアクセスできない場合もあるだろう。その場合、アクティベーションコードの入力画面で「Optional Proxy Settings」をクリックすることで利用するプロクシの情報を入力できる。

 アクティベーションの完了後、プラグインの更新作業を行う(図10)。ここで「Next: Download plugins」をクリックすると、プラグインのダウンロードが実行される。この作業には数分程度の時間がかかるので注意したい。

図10 アクティベーションコードの登録完了画面
図10 アクティベーションコードの登録完了画面

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

図11 Nessus管理画面へのログイン画面
図11 Nessus管理画面へのログイン画面

Nessusによる脆弱性スキャンを実行する

 Nessusの管理画面には表1のタブが用意されており、ログイン直後は「Scans」タブの内容が表示されている。

表1 Nessusの管理画面に用意されているタブ
タブ名操作できる機能
Resultsスキャン結果の確認やレポートの作成
Scans実行中/実行待ちスキャンの確認やスキャンの実行
Templatesスキャン設定テンプレートの管理
Policiesスキャン設定の管理
Users管理画面のユーザー管理
Configuration各種設定

 スキャンの実行や管理は「Scans」タブで行える(図12)。

図12 スキャンの実行や管理を行う「Scans」タブ
図12 スキャンの実行や管理を行う「Scans」タブ

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

図13 「New Scan」ダイアログ
図13 「New Scan」ダイアログ

 ここで設定できる項目の意味は表2のとおりだ。

表2 「New Scan」ダイアログでの設定項目
設定項目説明
Scan Titleスキャン一覧画面で表示されるスキャン名
Scan Type「Run Now」を指定するとすぐにスキャンが実行される。「Template」を選択すると設定をテンプレートとして保存できる
Scan Policyスキャン設定を指定する。スキャン設定は「Policies」タブで設定できる
Scan Targetsスキャン対象とするホスト名もしくはIPアドレスを指定する
Upload Targetsホスト一覧が記載されたテキストファイルでスキャン対象を指定する

 Scan Typeで「Run Now」を指定した場合、「Create Scan」ボタンをクリックするとそのスキャンがScansタブのスキャン一覧に追加されると同時にすぐにスキャンが開始され、「Status」にその状況が表示される(図14)。

図14 「Create Scan」ボタンをクリックするとスキャンが実行される
図14 「Create Scan」ボタンをクリックするとスキャンが実行される

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

図15 完了したスキャンは「Results」画面からその結果を確認できる
図15 完了したスキャンは「Results」画面からその結果を確認できる

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

図16 発見された脆弱性の概要(サマリ)ページ
図16 発見された脆弱性の概要(サマリ)ページ

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

図17 発見された脆弱性および各種情報一覧
図17 発見された脆弱性および各種情報一覧

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

図18 表示される脆弱性の詳細情報
図18 表示される脆弱性の詳細情報

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

図19 「Export Scan Results」画面
図19 「Export Scan Results」画面

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

図20 PDF形式で出力されたレポート
図20 PDF形式で出力されたレポート

スキャン方法の設定

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

図21 スキャン方法の一覧画面
図21 スキャン方法の一覧画面

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

図22 「General Settings」タブの設定項目
図22 「General Settings」タブの設定項目

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

図23 「Credentials」タブの設定項目
図23 「Credentials」タブの設定項目

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

図24 「Plugins」タブの設定項目
図24 「Plugins」タブの設定項目

企業内での利用は有償だが信頼性を重視するなら使う価値あり

 Nessusで検出された脆弱性には無害なものもあり、また誤検出の可能性もある。そのため最終的には人間の手で検出された問題点をそれぞれチェックして本当に問題となるものかどうかを確認する必要がある。あくまでNessusは問題の対象を絞り込んだり、問題となりそうな場所を見つけ出すためだけのもので、ただスキャンを行うだけではセキュリティの向上にはつながらないということを覚えておきたい。

 Nessusは商用利用は有償となるソフトウェアであるものの、その使い勝手はよく、信頼性に対する評価も高い。個人利用であれば無料で利用できるのもメリットだ。まずは自分が管理しているサーバーで試用してみて、そのセキュリティ状況をチェックしてみてはいかがだろうか。