Nessusを利用した総合セキュリティチェック

知名度はないようですが、すごいツールです

Nessusとは

 Nessusとは、Nessus Projectが開発を進めているセキュリティスキャナです。Nessus Projectが考える所のセキュリティスキャナの定義は"特定のネットワークを遠隔地から監視し、クラッカーが侵入可能、あるいは悪用可能かどうかを判断することが出来るソフトウェア"ということになっています。

 また、特定のサービスが特定のポートで運用されているということを前提におかないという特徴もあります。例えばWeb Serverがポート1234で動かされていたとしても、Nessusはそれを発見し、そのセキュリティを試験します。

 さらに、Plug-inによる機能拡張が可能なのも大きな特徴で、2000年12月の時点で800以上のPlug-inが用意されています。単純にあるリモートホストでそのサービスが動いているのかどうかを確認する単純な物から、特定のアプリケーションのバグの有無をチェックするような物まで、実に多種多様なPlug-inがあります。

 本家は米国ですが、日本にもミラーサイトがあります。もっとも日本語化はされていませんし、2001年10月9日現在アクセスできません。下記のリンクは本家米国のサイトです。

http://www.nessus.org/

 

Nessusのインストールと設定

 Nessusはクライアントとサーバーの2要素で構成されています。サーバーが対応しているOSはUNIX系のOSのみで、Windows系には対応していません。当然Linuxでは問題なく動作します。

 NessusのクライアントはUNIX版、Java版、Windows版があります。UNIX版はGTK上で動作するので、GTKのVersion 1.2が必要になります。また、明言はされていませんがNMAPも必要なようです。NMAPについてはこちらを参照してください。ちなみにJava版は1年以上更新されていないので、利用しない方がいいでしょう。

 Nessusには、rpmファイルが用意されているので、ありがたく利用することにします。ミラーサーバーが幾つもありますが、国内にはないので米国西海岸のFTPサイトを以下に示しておきます。2000年12月17日現在の最新バージョンは1.0.6-1です。

ftp://mirror.arc.nasa.gov/pub/tools/nessus/nessus-1.0.6/RPMS/i386/nessus-1.0.6-1.i386.rpm
ftp://mirror.arc.nasa.gov/pub/tools/nessus/nessus-1.0.6/RPMS/i386/nessus-client-1.0.6-1.i386.rpm
ftp://mirror.arc.nasa.gov/pub/tools/nessus/nessus-1.0.6/RPMS/i386/nessus-devel-1.0.6-1.i386.rpm ftp://mirror.arc.nasa.gov/pub/tools/nessus/nessus-1.0.6/RPMS/i386/nessus-plugins-1.0.6-1.i386.rpm

 ダウンロード後、ごく普通にrpmをインストールする要領でインストールを行います。

 rpm -Ivh nessus-1.0.6-1.i386.rpm
 rpm -Ivh nessus-client-1.0.6-1.i386.rpm
 rpm -Ivh nessus-devel-1.0.6-1.i386.rpm
 rpm -Ivh nessus-plugins-1.0.6-1.i386.rpm

 まずnessusdの設定を行います。設定ファイルは/etc/nessus/以下にあるnessusd.confで行いますが、メールアドレスを修正する程度で他にはいじる必要はないでしょう。

 続いてNessusを利用するユーザーのアカウント登録を行います。Nessusは独立したユーザーデータベースを持っているので、そこに利用ユーザーを登録するという作業になります。登録にはroot権限が必要です。

 nessus-adduser

 まずユーザー名を聞かれるので、利用したいユーザーのユーザー名を入力します。これは、最終的にNessusのクライアントから入力するので、UNIXのアカウント名と必ずしも一致させる必要はありません。次に認証方式をcipher(暗号)/plaintext(非暗号)のどちらで行うかを聞かれますが、cipherでいいでしょう。

 次にsourceIPによる利用制限の設定を行います。デフォルトは"anywhere"でどこからでも利用できるようになっていますが、そのままで問題はないでしょう。次にOne Time Passwordの入力を求められますので、パスフレーズを入力します。

 次にルールの設定を行います。これは作成しているユーザーにどの程度の操作を許可するかを決定するのですが、結構細かく指定できるので詳細は"man nessus-adduser"を参照してください。私はというと、"default accept"だけを指定し、何でもできることにしてあります。前段階でローカルIPからの利用のみを許可しているのならば、ここはそんなに神経質になる必要はないと思います。最後に設定内容の確認が行われ、"y"でアカウントの作成が行われて自動的に終了します。

 ここまで終了したらnessusdを起動します。先ほどsuしてあるはずですが、管理者権限が必要です。

 nessusd -D

 ちなみに、/etc/rc.d/init.d以下にスクリプトファイルが入るので、再起動しても自動的に起動されます。

 

Nessusの利用

 Nessusの起動は、コマンドラインから"nessus &"と入力するだけです。初回起動時にはPersonal Keyの生成が行われるので、少々時間がかかります。鍵の生成終了後、その鍵をプロテクトするためのパスワードの入力を求められます。ここで入力したパスワードは、以降毎回nessusを起動するたびに聞かれることになりますので、忘れないようなパスワードにしましょう。万一忘れてしまった場合は、自分のホームディレクトリにある./nessus*を削除すれば、再度初回起動と同じ扱いになります。

 コマンドラインから"nessus &"と入力し、Nessusを起動すると取りあえず立ち上がりますが、この時点ではほとんど何も出来ませんので、右下の"Log in"をクリックしてログインします。ここでユーザー登録を行った際に設定したパスワードを聞かれるので、正確なパスワードを入力すると鍵が生成され、ログオンできます。以降はこの際に作成された鍵を利用して認証が行われるため、パスワードの入力を行う必要はありません。だから、"One Time Password"なわけですね。

 私はこの場面で非常にはまりました。いろいろ試行錯誤を繰り返している中で何とか正常に起動ができるようになりましたが、nessus-adduserで設定したOne Time Passwordを入力したつもりでもなぜか"Authentication Failed"(認証に失敗しました)と出てしまうことが何度もありました。もし同じ症状になった方がいらっしゃったら、 ユーザーを何度も作り直したり(ユーザーの削除が出来ないので、同じユーザーを作ったり、強引にユーザーファイルと思しきファイルを消す)、nessusdの設定を変えて再起動したりしてみてください。

 ログオン直後の画面はこんな感じになります。

 "Nessusd Host"は、Nessusdが稼動しているホスト、つまりクライアントが現在接続しているサイト名が入ります。"Port"はNessusdのサービスポート番号です。Encryptionは自動的に入るのでよく分かりませんが、"Twofish"というのは、有名な公開鍵暗号アルゴリズムの名前です。"Login"はログイン名が入ります。設定は画面上部のタブで切り替えるページで行うようになっており、全ての設定終了後、左下の"Start the Scan"をクリックするとチェックが開始されます。

 設定画面を参照したい方は、上の画像のタブ名部分をクリックしてください。

 

Nessusの結果の見方

 "Start the Scan"をクリックすると、設定された内容にしたがってセキュリティチェックが開始されます。結構時間がかかりますが、ログを眺めていると恐ろしい勢いで様々なチェックが行われていることが分かります。チェックを行う際には、"tail -f /var/log/messages"と"tail -f /var/log/httpd/access_log"を監視することをお勧めします。見ていると、実際にどのようなチェックが行われているかも分かります。

 全てのチェックが終了すると、以下のような画面に遷移します。

 下の"Save as..."と"Save as NSR"を利用すれば、様々な形式でこの記録を保存することが出来ます。出力形式としてNSR(Nessus独自形式)、HTML、LaTeX、ASCII Text、グラフ付HTML、XML(試験サポート)が選択できます。ちなみに、NSRで保存し、Nessusの起動後に"Load Report"を利用すれば再度この画面を見ることが出来ます。

 赤色のボールであらわされているサービスが"Security Hole"、オレンジが"Security Warning"で、基本的にはここを修正することになります。もっとも、Nessusのチェック基準は非常に厳しいので、ルーターのフィルタリングによって防御できる部分もありますし、そもそもフレッツISDNを利用してサーバーを立てているレベルでは気にする必要ないものもあるように感じました。私のサイトのチェック結果をHTMLで出力したレポートを見たい方は、ここをクリックしてください。

 ここまで読み進まれた方はなんとなく感じられているかもしれませんが、Nessusは防御する側にとっても非常に強力なチェックツールですが、攻撃する側にとっても非常に強力なアタックツールでもあります。Nessusではデフォルトではオンにされていない"Dangerous"とされる機能が数多くありますが、その中にはDoSのように本当にそのまま攻撃に使えてしまえるような機能もたくさんあります。

絶対に見ず知らずのホストに向けて使用しないようにして下さい。