権限のないユーザーとして FreeBSD で Nessus を実行する
制限
- ローカルホストをスキャンする場合、Nessus プラグインは root として実行されていると想定します。したがって、特定タイプのスキャンは失敗する場合があります。たとえば、特権ユーザー以外で Nessus が実行される場合、プラグインがすべてのディレクトリにアクセスできないため、ファイルコンテンツのコンプライアンス監査は失敗するか、間違った結果を返すことがあります。
- nessuscli には --no-root モードはありません。root として nessuscli を使用するコマンドを実行すると、root が所有する Nessus インストールディレクトリにファイルが作成され、Nessus がこれらのファイルに適切にアクセスできなくなる可能性があります。nessuscli を実行する場合は注意が必要です。使用後に chown でアクセス許可を修正することもできます。
注意: 特記されない限り、次のコマンドは root のログインシェルで実行します。
- まだ実行していない場合は、Nessus on FreeBSD をインストールします。pkg add Nessus-*.txz
- Nessus サービスを実行する root 以外のアカウントを作成します。
この例では、ユーザーが nonprivgroup に nonprivuser を作成します。# adduser
Username: nonprivuser
Full name: NonPrivUser
Uid (Leave empty for default):
Login group [nonprivuser]:
Login group is nonprivuser.Invite nonprivuser into other groups?[]:
Login class [default]:
Shell (sh csh tcsh bash rbash nologin) [sh]:
Home directory [/home/nonprivuser]:
Home directory permissions (Leave empty for default):
Use password-based authentication?[yes]:
Use an empty password?(yes/no) [no]:
Use a random password?(yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation?[no]:
Username : nonprivuser
Password : *****
Full Name :NonPrivUser
Uid :1003
Class :
Groups : nonprivuser
Home : /home/nonprivuser
Home Mode :
Shell : /bin/sh
Locked : no
OK?(yes/no): yes
adduser:INFO:Successfully added (nonprivuser) to the user database.
Add another user?(yes/no): no
Goodbye! - /sbin ディレクトリの Nessus バイナリで「world」アクセス許可を削除します。chmod 750 /usr/local/nessus/sbin/*
- /opt/nessus の所有者を root ユーザー以外に変更します。chown -R nonprivuser:nonprivuser /usr/local/nessus
- /dev/bpf デバイスへのアクセス権を root ユーザー以外に付与し、raw socket を使用できるようにするためのグループを作成します。pw groupadd access_bpf
pw groupmod access_bpf -m nonprivuser - nonprivuser がグループに表示されていることを確認します。
- 次に、システム制限値を確認します。
ulimit -a コマンドを使用して、各パラメーターが次の値以上であることを確認します。
この例は、FreeBSD 10 の値を示しています。# ulimit -a
cpu time (seconds, -t) unlimited
file size (512-blocks, -f) unlimited
data seg size (kbytes, -d) 33554432
stack size (kbytes, -s) 524288
core file size (512-blocks, -c) unlimited
max memory size (kbytes, -m) unlimited
locked memory (kbytes, -l) unlimited
max user processes (-u) 6670
open files (-n) 58329
virtual mem size (kbytes, -v) unlimited
swap limit (kbytes, -w) unlimited
sbsize (bytes, -b) unlimited
pseudo-terminals (-p) unlimited - ステップ 6 の値が最小要件を満たさない場合、次のステップに沿って値を変更します。
テキストエディターを使用して、/etc/sysctl.conf ファイルを編集します。
次に、service コマンドを使用して、sysctl サービスを再起動します。service sysctl restart
別な方法として、システムを再起動することもできます。
ulimit -a コマンドを再び使用して、新しい最小必要値を確認します。 - 次に、テキストエディターを使用して、/usr/local/etc/rc.d/nessusd サービススクリプトを変更して以下の行を削除および追加します。
削除 : /usr/local/nessus/sbin/nessus-service -D -q
追加 : chown root:access_bpf /dev/bpf
追加 : chmod 660 /dev/bpf
追加 : daemon -u nonprivuser /usr/local/nessus/sbin/nessus-service -D -q --no-root
変更後のスクリプトは次のように表示されます。
# pw groupshow access_bpf
access_bpf:*:1003:nonprivuser
access_bpf:*:1003:nonprivuser
nessusd_start() {
echo 'Starting Nessus...'
chown root:access_bpf /dev/bpf
chmod 660 /dev/bpf
daemon -u nonprivuser /usr/local/nessus/sbin/nessus-service -D -q --no-root
}
nessusd_stop() {
test -f /usr/local/nessus/var/nessus/nessus-service.pid && kill `cat /usr/local/nessus/var/nessus/nessus-service.pid` && echo 'Stopping Nessus...' && sleep 3
}