特権ユーザー以外のユーザーとして、macOS で Nessus を実行する
制限
- ローカルホストをスキャンする場合、Nessus プラグインは root として実行されていると想定します。したがって、特定タイプのスキャンは失敗する場合があります。たとえば、特権ユーザー以外で Nessus が実行される場合、プラグインがすべてのディレクトリにアクセスできないため、ファイルコンテンツのコンプライアンス監査は失敗するか、間違った結果を返すことがあります。
- nessuscli には --no-root モードはありません。root として nessuscli を使用するコマンドを実行すると、root が所有する Nessus インストールディレクトリにファイルが作成され、Nessus がこれらのファイルに適切にアクセスできなくなる可能性があります。nessuscli を実行する場合は注意が必要です。使用後に chown でアクセス許可を修正することもできます。
手順
- まだ行っていない場合は Nessus を MacOSX にインストールします。
-
Nessus のサービスが root で実行されているので、アンロードする必要があります。
次のコマンドを使用して、Nessus のサービスをアンロードします。
sudo launchctl unload /Library/LaunchDaemons/com.tenablesecurity.nessusd.plist
- Mac で、[System Preferences] (システム環境設定) > [Users & Groups] (ユーザーとグループ) の順に移動し、新しいグループを作成します。
-
次に、[System Preferences] (システム環境設定) > [Users & Groups] (ユーザーとグループ) の順に移動し、新しい標準ユーザーを作成します。権限のない Nessus アカウントとして実行するようにこのユーザーを設定します。
-
ステップ 1 で作成したグループにこの新しいユーザーを追加します。
-
/sbin ディレクトリの Nessus バイナリで「world」アクセス許可を削除します。
sudo chmod 750 /Library/Nessus/run/sbin/*
-
/Library/Nessus/run ディレクトリの所有者を、ステップ 2 で作成した root 以外 (標準) のユーザーに変更します。
sudo chown -R nonprivuser:nonprivuser /Library/Nessus/run
-
そのユーザーに /dev/bpf* デバイスへの読み取り/書き込み許可を付与します。これを簡単に実行する方法は、Wireshark のインストールです。これにより、access_bpf と呼ばれるグループと対応する起動デーモンが作成され、/dev/bpf* に適切なアクセス許可が開始時に設定されます。このケースでは、nonpriv ユーザーを access_bpf グループのメンバーに単純に割り当てることができます。この方法以外の場合、起動デーモンを作成して、「nonpriv」ユーザー (またはその一部であるグループ) にすべての /dev/bpf* への読み取り / 書き込み許可を付与する必要があります。
- ステップ 8 の変更を有効にするために、システムを再起動します。
-
テキストエディターを使用して、Nessus の /Library/LaunchDaemons/com.tenablesecurity.nessusd.plist ファイルを変更し、次のラインを追加します。既存ラインは変更しないでください。
<string>--no-root</string>
<key>UserName</key>
<string>nonprivuser</string>
-
sysctl
を使用して、次のパラメーターが最小値を持つことを確認します。$ sysctl debug.bpf_maxdevices
debug.bpf_maxdevices:16384
$ sysctl kern.maxfiles
kern.maxfiles:12288
$ sysctl kern.maxfilesperproc
kern.maxfilesperproc:12288
$ sysctl kern.maxproc
kern.maxproc:1064
$ sysctl kern.maxprocperuid
kern.maxprocperuid:1064
-
ステップ 9 の値が最小要件を満たさない場合、次のステップに沿って値を変更します。
/etc/sysctl.conf ファイルを作成します。
テキストエディターを使用して、ステップ 9 で見つかった適切な値で systctl.conf ファイルを編集します。例:
$ cat /etc/sysctl.conf
kern.maxfilesperproc=12288
kern.maxproc=1064
kern.maxprocperuid=1064
-
次に、launchctl limit コマンドを使用して、お使いの OS のデフォルト値を確認します。
例: MacOSX 10.10 と 10.11 の値。
$ launchctl limit
cpu unlimited unlimited
filesize unlimited unlimited
data unlimited unlimited
stack 8388608 67104768
core 0 unlimited
rss unlimited unlimited
memlock unlimited unlimited
maxproc 709 1064
maxfiles 256 unlimited
-
手順 11 の値を上記の OSX デフォルト値に設定していない場合は、次の手順で値を変更します。
テキストエディターを使用して、手順 11 に示している適切なデフォルト値を指定して launchd.conf ファイルを編集します。
例:
$ cat /etc/launchd.conf
limit maxproc 709 1064
注意: OSX の古いバージョンの中には maxproc の制限が小さいものがあります。お使いの OSX バージョンで /etc/launchctl.conf から制限を引き上げることができる場合、値を増加してください。
-
すべての変更を有効にするために、システムを再起動するか、起動デーモンをリロードします。
sudo launchctl load /Library/LaunchDaemons/com.tenablesecurity.nessusd.plist