どのユーザーが私のプログラムを強制終了したかを知るにはどうすればいいですか?

どのユーザーが私のプログラムを強制終了したかを知るにはどうすればいいですか?

私は Linux サーバー上で長時間実行されるプログラムを実行しています。他の多くのユーザーもこのサーバー上でプログラムを実行しています。私たち全員が sudo 権限を持っています。

悪意のあるユーザーが、 または を使用して、実行中のプログラムを強制終了したとしますsudo killsudo pkillこのユーザーが誰であるかを確認するにはどうすればよいでしょうか?

答え1

Paul の回答は、証拠を排除できるという点で正しいですが、証拠が排除されるという意味ではありません。どのログを削除するかを知っている人の数 (気にするとしても) と比べると、sudo について知っている人のほうがはるかに多いです。

私のシステムでは、sudo が使用されるたびに、コマンドライン全体がログに保存されます。皆さんのシステムでも同じことが行われると思います。OpenBSD では、これは /var/log/authlog ですが、Debian システムでは /var/log/auth.log です。

どのファイルにそのような情報が保存されているかわからない場合は、sudoコマンドを実行してみてください。(sudoで何をするかは問題ではありません。でもecho十分です。目的は、sudoが使用されたときに変更されるログを変更することです。)次に、

ls -ltr /var/log/*auth*

または

ls -ltr /var/log | tail

最近変更されたファイルを見つけるためです。

答え2

すべて を持っている場合sudo、同じレベルの権限で証拠が削除される可能性があるため、強制終了されたプロセスの証拠を保持する保証された方法はありません。

あなたはauditd 監査デーモンkill などの特定のシステムコールを追跡します。

明らかに、ルート ユーザーは、まず監査デーモンを停止し、ログを削除することができます。そのため、ログを外部にエクスポートする必要があります。

より良い方法は、sudo をより適切に管理し、各ユーザーに必要なアクセス権のみを与えることです。一般ユーザーが完全なルート アクセスを必要とすることはほとんどないため、sudo を使用して権限のサブセットを与えることができます。

関連情報