NESSUSD


Section: User Manual (8)

名称

nessusd - Nessusセキュリティスキャナのサーバ部分

概要


nessusd [-D] [-c CFG-FILE] [-a BIND] [-p PORT]
nessusd [-v] [-h] [-d]

nessusd [-C] [-L] [-K KEY] [-U USER] [-P USER[,[PWD]]]

あるいは、長いオプションを用いて、

nessusd [--background] [--config-file=CFG-FILE] [--listen=BIND] [--port=PORT]
nessusd [--version] [--help] [--dump-cfg]

nessusd [--change-pass-phrase] [--list-keys] [--list-user-pwd=USER] [--make-user=USER[,[PWD]]]

解説


Nessus Security Scannerは、サーバとクライアントの2つの部分からなるセキュリティ監査ツールである。サーバであるnessusdは攻撃を担当し、クライアントであるnessus(1)はユーザインターフェイスを担当する。

基本的に、nessus suiteはクライアントとサーバの2つの部分からなる。 サーバについてはここで記述されており、クライアントの詳細については nessus(1)のmanpageを見よ。オプションで、もし(nessus suiteの一部 である)nessus-librariesパッケージを
./configure --enable-cipher ...
のように設定したならば、サーバ、クライアント間の通信は暗号レイヤで暗号 化されるだろう。

暗号レイヤ版のnessus suiteのみを使うことが強く推奨される。

nessusdによってなされた攻撃は、異なる言語で書かれた外部モジュール(ある いは、望むならプラグイン)によってコードされる。

nessusdはセキュリティスキャナであるから、皆に使わせるのは危険である。 このman pageでは、nessusdを適切に設定する方法を記しているので、悪い目 的に自由に使われ得ない。

素早い導入


スーパーユーザであるrootがnessusdサーバを最初に起動するとき、nessusdは、 いくつかのデフォルトを仮定しながら自動的にすべてのセットアップを行うだ ろう。もし暗号レイヤと共にコンパイルされたなら、最初のユーザのためのワ ンタイムパスワードを
nessusd --make-user=username,passwd
と指定することが必要となる。 あるいは、同等の短いオプションを用いて、
nessusd -P username,passwd

ここで、ユーザ名とパスワードを区切るコンマのいずれの側にも、スペースが あってはならない。先に起動した他のnessusdが既に動いているとき、そのコ マンドを殺すことができる(しかしプライベートキーが初期に生成されるまで 待つ)。そのエントリが保存されているかどうか照合するために、
nessusd --list-keys
として鍵のデータベースを調べてもよい。 あるいは、同等の短いオプションを用いて、
nessusd -L

今、いくつかのnessusのアプリケーションがusernameというユーザ名、passwd というパスワードでlogin (nessus(1)を見よ)することが許された。 他の鍵データベースを調べると、ユーザパスワードは公開鍵(El Gamal) に置 き替えられているのがわかるだろう。

オプション


-D, --background
サーバをbackgroundで走らせる(デーモンモード)。
-c <config-file>, --config-file=<config-file>
/nessus/etc/nessusd.conf の代わりに他の設定ファイルを使う
-a <address>, --listen=<address>
サーバが可能な接続のうちIP address が <address> であるもののみを listenするようにする。このアドレスは、マシン名ではない。つまり、 nessusd -a 192.168.1.1 では、nessusd に 192.168.1.1 あての要求だけを listenするようにする。nessusd がゲートウェイで走っており、かつnessusd が外部から接続されるのを望まないのならば、このオプションは有用である。
-p <port>, --port=<port>
サーバに、3001/tcp (デフォルト)の代わりにTCPポート番号 <port> をlisten するようにさせる。
-v, --version
バージョンナンバーを表示して終了する
-h, --help
このコマンドのサマリを表示する
-d, --dump-cfg
サーバにコンパイルオプションを表示させる。

鍵管理のオプション


鍵管理のオプションは、他のnessusd が既に動いていても用いることができる。 ユーザ鍵データベースへの変更は、動いているnessusdにも反映される。 nessusdが鍵管理オプションとともに起動された場合には、デーモンとして起 動しない。これらのオプションは、nessusdがスーパーユーザであるrootとし て起動された場合のみ有効である。

-C, --change-pass-phrase
個人のパスフレーズを使うと、nessusdが秘密鍵をセキュアにすることができ る。この特徴を使えば、パスフレーズは、続いてその鍵を使って暗号化するの に使われるコマンドライン(入力デバイスの詳細についてはgetpass(1)を見よ) から読まれる。 再起動したとき、あなたが正しいパスフレーズを入力するまで、nessusdは立 ちあがらない。一度パスフレーズを失なってしまったなら、秘密鍵を消すこと しかできない(普通は /nessus/etc/nessus/nessusd.private-keys にある)。 鍵からパスフレーズを削除するために、空のパスフレーズを与えることが必要 となる。

ユーザ及びホストの鍵データベースのエントリーは、ホスト、ネットワークの 詳細、ユーザのいずれかに向けられる。ホスト及びネットワークの詳細は、


である。

ユーザ鍵はEmail addressと似た外観であり、


である。

ネットワークのリストであるネットワークの詳細の一般的な形式を使うことで、 特定の一まとめのクライアントネットワークは、みな一緒にユーザ鍵やパスワー ドが有効にされる。

-L, --list-keys
ユーザ鍵データベースのエントリを列挙する。
-K <key>, --delete-key=<key>
ユーザデータベースからユーザ鍵を削除する。<key>引数はホスト か、この鍵から連想されるネットワークスペック(?)にマッチするユーザのエ ントリか、-Lないし--list-key オプションで列挙された鍵の全体のいずれか である。 例えば、jordan@127.0.0.0/8+cvs.nessus.org は、たとえcvs.nessus.orgが名 前解決で212.198.14.17であるとしても、jordan@127.0.0.0/8+212.198.14.17 とマッチしない。他方、jordan@localhostは jordan@127.0.0.0/8+cvs.nessus.orgのデータベースエントリにマッチする。
-U <user-name>, --list-user-pwd=<user-name>
データベースに蓄えられた、ユーザについての詳細なプレーンテキストの情報 を表示する。これは、ログインに失敗した回数、ユーザ名とパスワード、(可 能なら)ネットワークアクセスの詳細である。<user-name>引数でマッチ するルールは、上記 -K ないし --delete-keys オプションで述べたのと似て いる。
-P <user-pwd-mod>, --make-user=<user-pwd-mod>
以下に述べる、パスワードを付与されたユーザ名を追加、削除、変更する。ユー ザパスワードはサーバとクライアントの最初の通信においてのみ用いられる。 データベースにクライアント鍵を「手で」(マニュアルで)置く代わりに、最初 の通信において一時的なパスワードが使われる。サーバとクライアントは、同 じ初期パスワードを使うことに同意してなければならない。 一度クライアントがログインに成功すると、クライアントはサーバに公開鍵を 送信する。続くコネクションの間、クライアントとサーバは、認証のために challenge/response のスキームを用いる。もはやlogin passwordは存在しな い。

デフォルトでは、自動的にユーザパスワードが消滅する前に、最大5回のlogin の失敗が可能である。

ユーザ名は、常に<user-pwd-mod>の引数の一部である。ユーザが既にデータ ベースに存在する場合、データベースに対するユーザ名がマッチするルールは、 上記 -Kないし --delete-keysオプションのそれと似ていることに注意。
-P username,passwd, --make-user=username,passwd
ユーザusernameのパスワードをpasswdに追加または置きかえる。

ユーザ名のマッチのルールのため、新しいパスワードを設定したときに一般的 なネットワークスペックがより限定されたものに置換されてしまう、というこ とが起きるかもしれない。
-P username,, --make-user=username,
ユーザusernameのパスワードエントリを削除する。オプションの引数はコンマ で終わることに注意。

-P username, --make-user=username
このオプションは、上記 -Uないし --list-user-pwd オプションといくぶん似 ている。これは、nessusdに、
<login-failures> &;lt;username> <password>
のようなスペースで区切られたパスワードデータベースのプレーンテキストの 情報を表示させる。ここでは、このオプションの引数はコンマで終わらない。

設定ファイル


デフォルトのnessusd の設定ファイルは /nessus/etc/nessnsd.confである。 これは、
<keyword> = <value>
というような行か、#文字で始まるコメント行から成りたっている。以下はキー ワードの詳細である:
plugins_folder
プラグインのフォルダの場所を示す。これは大抵 /nessus/lib/nessus/plugins だが、これを変更してもよい。
logfile
ログファイルへのパス。もしnessusdのメッセージをsyslog(8)経由で記録した いなら「syslog」と入れることができる。また、nessusdのログをstdoutに出 したいなら「stderr」とすれば良い。nessusdは繊細なプログラムなので、ロ グを残すべきである。よって、syslogを入れるのはたいていは良くない考えで、 デバッグの目的としてのみそうされるべきである。
max_threads
クライアントに与えられるべき同時にテストするホストの最大数(変更可能)。 この値は与えられた帯域、テストしたいホストの数などを考慮する必要がある。 より多くのスレッドを動かせば、テスト中より多くのパケットをとりこぼし、 より多くの脆弱性を見落とすかもしれない。一方、より多くのスレッドを動か せば、テストはより早く進む。個人的には、PII 450, RAM 128MBのマシンで50 スレッドでテストしたが、テストは好都合に進み、/24のネットワークに対し て素早く行なえた。
users
ユーザデータベースへのパス
rules
ルールデータベースへのパス
language
クライアントにレポートを送るとき、nessusdが使う言語。現在"english"と "francais"(フランス語)が利用可能な言語である。
checks_read_timeout
recv()をするとき、セキュリティチェックが待つ秒数。もしnessusdを遅いネッ トワークリンク経由(例えばダイヤルアップコネクション経由のホストに対す るテスト)で行なうなら、この値を増やしておくべきである。
peks_username
これは秘密鍵データベースにおいて、自分自身を識別するのに使うnessusdサー バの名前である。
peks_keylen
公開鍵の最小鍵長さ。
peks_keyfile
秘密鍵のデータベースへのパス。
peks_usrkeys
公開鍵とパスワードデータベースへのパス。
peks_pwdfail
一時的なパスワードが消滅するまでのログイン失敗の最大数。

このファイル中、他のオプションはたいていクライアントによって再定義され る。

ユーザデータベース


ユーザデータベースは、nessusdを使うことが許されたユーザのリストを有し ている。なぜ、1人にだけ許す代わりにユーザのリストを作るのか?この文書 で後ほど定義されるであろうルールファイルで、あなたの会社の中心に nessusdサーバを立て、あなたのネットワークの一部だけをテストする権利が あるユーザを追加することができる。例えば、あなたは、R&Dの人にネットワー クの彼らの部分をテストすることを望み、残りをあなたがテストするかもしれ ない。あなたはnessusdを、誰もが自分自身のコンピュータのみをテストでき るように設定できるかもしれない。

ユーザデータベースは非常に簡単なフォーマットであり、それは、

user:password [rules]
ここで、

user
あなたが追加したいと思うログイン名である。これは、あなたが望む何で も可能である。特殊なエントリーが必要である:そのユーザ名は「*」である。 それは、あなたの公開鍵で認証されたユーザのために使われる。
password
このユーザに関連づけられたパスワードである。 パスワードはプレインテキストなので、ユーザデータベースは600のモー ドであることを確認すべきである。もし、ユーザに公開鍵経由でログインする ことを望むなら、これを空にする。
rule
この限定されたユーザに適用される。

典型的なnessusd.usersファイルは、

# User foo, with password bar 
foo:bar 
deny 192.168.1.1/32 
accept 192.168.0.0/16 
default deny 

# 
# User oof authentificates using his public key : 
# 
oof: 
deny 192.168.1.1/24 
accept 192.168.0.0/16 
default deny 

ルールセットのフォーマット


ルールは、常に以下の同じフォーマットを持つ:
keyword IP/mask
キーワードはdeny, accept, defaultのいずれかである。

これに加えて、エクスクラメーションマーク(!)をIPアドレスの前につけるこ とができ、それは "not" を意味する。ルールには3つの源があり、


ルールに優先順位があることを知らねばならない:ユーザはその特権を拡張す ることができず、下げることしかできない(つまり、彼がテストすることを許 可されているホストの組を制限することしかできない)。

ルールセットデータベース


ルールのデータベースはシステム全域のルールであり、全てのユーザに適用さ れる。その構文は前のセクションで定義されている。例えば:
       accept 127.0.0.0/8

       deny 192.168.1.1/32

       deny !192.168.0.0/16

       default deny
こうすると、ユーザがlocalhost、192.168.0.0/16に属するホストのうち 192.168.1.1/32 以外の全てをテストすることが許される。 ルールは、接続時にログインしたユーザのIP addressに置き替えられる、 client_ipという特殊なキーワードを受け付ける。 もし、すべての人に、その人自身のコンピュータをテストすることを許可した いのなら、可能である:

       accept client_ip/32

       default deny

参考


nessus(1), nessus-adduser(8),getpass(1),nmap(1)

NESSUSプロジェクトについてのさらなる情報


Nessusプロジェクトについてのさらなる情報が得られる正式な場所は:
http://www.nessus.org (Official site)
http://cvs.nessus.org (Developers site)

著者

Nessusプロジェクトは、Renaud Deraison <deraison@cvs.nessus.org> によって始められ、メンテナンスされている。Nessusサーバ、ほとんどの攻撃 モジュールは共に、主としてCopyright (C) 1998-1999 Renaud Deraison であ る。

Jordan Hrycaj <jordan@mjh.teddy-net.com> は、クライアント−サーバ間の暗号レイヤの作者である。暗号化ライブラリ (libpeks)については(C) 1998-1999 Jordan Hrycaj である。

そして、数人の他の人々が、親切にもパッチやバグレポートを送ってくれてい る。彼等に感謝したい。


もくじ


Translated by Mimori Yuki <mimori@puni.net>