2002年7月14日
Nessusセキュリティスキャナー
Nessusはフリーで利用できるセキュリティ診断ツールです。 クライアント/サーバモデルで設計されており、大規模な診断でも対応できるように考慮されています。
シグネーチャファイルを更新することで、数多くのセキュリティホールを診断することができます。またプラグイン機能によって新しいセキュリティ診断ツールが組み込みできる汎用性がありクラッカーの攻撃方法の95%近い攻撃方法による弱点の検知が可能です。
Nessusをコンパイル、動作させるには以下のモジュールが必要です。(普通にLinuxをインストールすれば多分標準でこれらはインストール済みだと思いますが無い場合にはインストールしてください)
以下の素材を入手してください。
インストールは以下の手順で行ってください。
●nessus-librariesのインストール
# tar zxvf nessus-libraries-x.x.x.tar.gz
# cd nessus-libraries
# ./configure
# make
# make install
インストールが完了したら、環境変数LD_LIBRARY_PATH と LD_RUN_PATH にそれぞれ、"/usr/local/lib"を追加します。シェルとしてbashやbshを使っている場合、環境変数は/etc/profileで設定すると、すべてのユーザで同じ変数が反映されるのでこれを修正するとします。環境変数は/etc/profileの適当な個所に追加してください。
(/etc/profile)
# LD_LIBRARY_PATH="/usr/local/lib"
:
LD_RUN_PATH="/usr/local/lib"
export LD_RUN_PATH LD_LIBRARY_PATH
:
続いて、Linuxの場合には/etc/ld.so.confファイルにも上記の"/usr/local/lib"を記述します。
(/etc/ld.so.conf)
/usr/kerberos/lib
/usr/X11R6/lib
/usr/lib/qt-3.0.3/lib
/usr/lib/sane
/usr/lib/wine
/usr/local/lib
/etc/ld/so/confの編集が終わったら
# ldconfig
を実行します。
最後に、PATH環境変数に/usr/local/binが設定されていることを確認してください。
# env | grep PATH
もしPATH環境変数に/usr/local/binが設定されていなかったら、/etc/profileの中に追加してください。
以上が完了したら一度ログアウトしてから、再度、ログインするとこれらの環境変数が反映されている筈です。
●libnaslのインストール
# tar zxvf libnasl-x.x.x.tar.gz
# cd libnasl
# ./configure
# make
# make install
●nessus-coreのインストール
# tar zxvf nessus-core-x.x.x.tar.gz
# cd nessus-core
# ./configure (GTKを使わない場合には、./configure --disable-gtk )
# make
# make install
●nessus-pluginsのインストール
# tar zxvf nessus-plugins-x.x.x.tar.gz
# cd nessus-plugins
# ./configure
# make
# make install
●暗号化キーの生成
Nessusはクライアントとサーバ間のデータを暗号化してやり取りします。そのために、Nessusを起動する前に暗号化キーをサーバに作成します。作成には、nessus-mkcertコマンドを実行し幾つかの質問に答えていくと暗号化のためのキーが作成されます。 なお、質問に対する回答はすべて省略しても基本的には問題ありません。
# nessus-mkcert [Enter]
-------------------------------------------------------------------------------
Creation of the Nessus SSL Certificate
-------------------------------------------------------------------------------
This script will now ask you the relevant information to create the SSL
certificate of Nessus. Note that this information will *NOT* be sent to
anybody (everything stays local), but anyone with the ability to connect to your
Nessus daemon will be able to retrieve this information.
CA certificate life time in days [1460]: [Enter]
Server certificate life time in days [365]: [Enter]
Your country (two letter code) [FR]: JP [Enter]
Your state or province name [none]: [Enter]
Your location (e.g. town) [Paris]: Chiba [Enter]
Your organization [Nessus Users United]: [Enter]
-------------------------------------------------------------------------------
Creation of the Nessus SSL Certificate
-------------------------------------------------------------------------------
Congratulations. Your server certificate was properly created.
/usr/local/etc/nessus/nessusd.conf updated
The following files were created :
. Certification authority :
Certificate = /usr/local/com/nessus/CA/cacert.pem
Private key = /usr/local/var/nessus/CA/cakey.pem
. Nessus Server :
Certificate = /usr/local/com/nessus/CA/servercert.pem
Private key = /usr/local/var/nessus/CA/serverkey.pem
Press [ENTER] to exit
●ユーザ登録
Nessusをクライアントさら接続するにはユーザ登録をサーバに行っておく必要があります。ユーザ登録はnessus-adduserコマンドで行います。このコマンドを実行すると登録するユーザIDや認証方法、パスワードを求めてきます。 ユーザID以外は基本的にはデフォルトのままで構いません。
# nessus-adduser [Enter]
Using /var/tmp as a temporary file holder
Add a new nessusd user
----------------------
Login : userid [Enter]
Authentication (pass/cert) [pass] : [Enter]
Login password : ***** [Enter]
User rules
----------
nessusd has a rules system which allows you to restrict the hosts
that test has the right to test. For instance, you may want
him to be able to scan his own host only.
Please see the nessus-adduser(8) man page for the rules syntax
Enter the rules for this user, and hit ctrl-D once you are done :
(the user can have an empty rules set)
[Ctrl] + [D]
Login : test
Password : *****
DN :
Rules :
Is that ok ? (y/n) [y] [Enter]
user added.
#
最後のにnessusをデーモンとして起動。
# nessusd -D
なお、スクリプトで起動時に自動的にデーモンを起動するなら以下のスクリプトを作成し、
(/etc/rc.d/init.d/nessusd)
#!/bin/bash # # nessus # # chkconfig: - 95 35 # description: nessusd # probe: true # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network RETVAL=0 prog="nessusd" MK_CERT="/usr/local/sbin/nessus-mkcert" CA_Cert=/usr/local/com/nessus/CA/cacert.pem CA_Private=/usr/local/var/nessus/CA/cakey.pem CERT_Serverkey=/usr/local/com/nessus/CA/servercert.pem CERT_Privatekey=/usr/local/var/nessus/CA/serverkey.pem # Check that networking is up. [ "${NETWORKING}" = "no" ] && exit 0 [ -x /usr/local/sbin/nessusd ] || exit 0 [ -r ${ROOTDIR}/usr/local/etc/nessus/nessusd.conf ] || exit 0 start() { # Start daemons. if [ -n "`/sbin/pidof nessusd`" ]; then echo -n $"$prog: already running" return 1 fi if [ ! -r ${CERT_Privatekey} ] ; then /usr/local/sbin/nessus-mkcert fi if [ ! -r ${CERT_Serverkey} ] ; then /usr/local/sbin/nessus-mkcert fi if [ ! -r ${CA_Private} ] ; then /usr/local/sbin/nessus-mkcert fi if [ ! -r ${CA_Cert} ] ; then /usr/local/sbin/nessus-mkcert fi echo -n $"Starting $prog: " daemon /usr/local/sbin/nessusd -D ${OPTIONS} RETVAL=$? [ $RETVAL -eq 0 ] && touch /var/lock/subsys/nessusd return $RETVAL } stop() { # Stop daemons. echo -n $"Stopping $prog: " killproc nessusd RETVAL=$? [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/nessusd echo return $RETVAL } restart() { stop # wait a couple of seconds for the named to finish closing down sleep 2 start } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) echo $"Usage: $0 {start|stop|restart}" exit 1 esac exit $?
# chkconfig --add nessusd [Enter]
Nessusサーバをコントロールするにはクライアントソフトを使いますが、クライアントソフトとしては、Xウィンドウで動作するものとWindowsで動作するものが用意されています。
以下ではWindows上で動作するNessus WXについて説明します。
●Nessus WXの入手・インストール
Nessus WXは http://nessuswx.nessus.org/ から入手できます。 ここにはソースファイル以外にバイナリになったものも用意されているので、通常はバイナリをダウンロードすれば良いでしょう。入手したバイナリはZIP形式になっているので、WinZIP等で適当なディレクトに解凍して解凍後にできたNessusWX.EXEのショートカットを作成してデスクトップなどにコピーすると良いでしょう。
●NessusDBの作成
解凍でできたNessus WX.exeを実行すると、初めての起動時にデータベースが古いフォーマットであるとの表示され、フォーマット変換する旨が表されるの、[はい]を選択します。続いてデータベースのチェックダイアログが表示されたなら[Close]で終了します。するとデータベースが無い旨が表示されデータベースを作成するか確認してくるので[はい]を選択しデータベースを作成します。 以上で、c:\NessusDBが作成され、NessasWXが起動できるようになります。
●NessusWXからNessusサーバへの接続
上記作業後、NessusWXクライアントを使ってNessusサーバへの接続が可能になります。
メニューのCommunicationから「Connect」を選び、次の項目を設定します。
・Server-Name : Nessusサーバが動作しているサーバ名またはIPアドレス
・Port number : 1241
・Encryption : TLSv1
・Authentication by password : 有効
・Login : 先にnessus-adduserで作成したユーザ名
・Save password : 有効にする
・Password :先にnessus-adduserで作成したパスワード
以上で設定項目は完了で、[Connect]ボタンを押すと、Nessusサーバと接続されます。なおそのサーバへの接続が初めのときの初回のみ、New Server Certification 画面が表示され、サーバ公開キーを保存するかどうか確認してくるので、[Accept & Save]で公開キーを保存してください。
うまくサーバに接続できるとNessusWXのステータス画面に、
というように表示される筈です。
Connection with the server [192.168.1.2] established.
1005 plugins loaded
149 preferences received
0 rules received