特権ユーザー以外のユーザーとして、Linux で Systemd を使って Nessus を実行する

制限

  • ローカルホストをスキャンする場合、Nessus プラグインは root として実行されていると想定します。したがって、特定タイプのスキャンは失敗する場合があります。たとえば、特権ユーザー以外で Nessus が実行される場合、プラグインがすべてのディレクトリにアクセスできないため、ファイルコンテンツのコンプライアンス監査は失敗するか、間違った結果を返すことがあります。
  • nessuscli には --no-root モードはありません。root として nessuscli を使用するコマンドを実行すると、root が所有する Nessus インストールディレクトリにファイルが作成され、Nessus がこれらのファイルに正常にアクセスできなくなる可能性があります。nessuscli を実行する場合は注意が必要です。使用後に chown でアクセス許可を修正することもできます。

手順

  1. 次のいずれかを行います。
    • まだ行っていない場合は Nessus をインストールします。
    • Nessus をすでにインストールして実行している場合は、nessusd を停止します。
  2. Nessus サービスを実行する root 以外のアカウントを作成します。

    sudo useradd -r -m nonprivuser

  3. /sbin ディレクトリ内の Nessus バイナリに対する world アクセス許可を削除します。

    sudo chmod 750 /opt/nessus/sbin/*

  4. /opt/nessus の所有権を非 root ユーザーに変更します。

    sudo chown nonprivuser:nonprivuser -R /opt/nessus

    注意: Tenable Nessus が更新されるたびに、ステップ 3 と 4 を完了する必要があります。
  5. nessusdnessus-service の機能を設定します。

    ヒント: インターフェースをプロミスキャスモードにするには cap_net_admin を使用します。
    パケットフォージェリ用の raw ソケットを作成するには、cap_net_raw を使用します。
    リソース制限を設定するには、cap_sys_resource を使用します。

    これが管理ツールにすぎず、この Nessus のインスタンスにスキャンを実行させない場合、このインスタンスにリソース制限の変更機能のみを付与する必要があります。

    sudo setcap "cap_sys_resource+eip" /opt/nessus/sbin/nessusd

    sudo setcap "cap_sys_resource+eip" /opt/nessus/sbin/nessus-service

    この Nessus インスタンスにスキャンを実行させる場合は、パケットフォージェリを許可し、インターフェース上でプロミスキャスモードを有効にするためにさらにアクセス許可を追加する必要があります。

    sudo setcap "cap_net_admin,cap_net_raw,cap_sys_resource+eip" /opt/nessus/sbin/nessusd

    sudo setcap "cap_net_admin,cap_net_raw,cap_sys_resource+eip" /opt/nessus/sbin/nessus-service

  6. 次の 2 つのコマンドを実行して、オーバーライド設定ファイルを作成します。

    mkdir -p /etc/systemd/system/nessusd.service.d/

    printf '[Service]\nExecStart=\nExecStart=/opt/nessus/sbin/nessus-service -q --no-root\nUser=nonprivuser\n' > /etc/systemd/system/nessusd.service.d/override.conf

    このファイルは、権限のない設定で nessusd サービスユニットファイル (/usr/lib/systemd/system/nessusd.service) 内の ExecStart オプションと User オプションをオーバーライドします。

  7. 次のコマンドを実行して、systemd マネージャー設定を再読み込みし、オーバーライド設定ファイルを含めます。

    sudo systemctl daemon-reload

  8. 次のコマンドを実行して nessusd を開始します。

    sudo service nessusd start

  9. 次のコマンドを実行して、権限のないユーザーとして Tenable Nessus が実行されていることを確認します。

    service nessusd status

権限のないユーザーで Tenable Nessus を実行している場合は、override.conf/etc/systemd/system/nessusd.service.d の下に生成され、CGroup (コントロールグループ) に、nessus-servicenessusd の両方が --no-root パラメーターで開始されたことが示されます。