この質問は、私の前の質問に関連しています: 本番サーバーで管理者が実行したすべてのコマンドをログに記録します
管理者が個人のユーザー名でサーバーにログインし、Sudo -i
を実行してrootになることは会社のポリシーです。 Sudo -i
を実行すると、SudoはSudo_USER
という環境変数を作成します。この変数には、元のユーザーのユーザー名が含まれています。
auditd
にこの変数を各コマンドのログに含めることは可能ですか?または同等の機能。
これは、auditd
の現在のルールセットです。
# First rule - delete all
-D
# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320
# Log any command run on this system
#-a exit,always -F Arch=b64 -S execve
-a exit,always -F Arch=b32 -S execve
述べたように ここ :
使用する
session required pam_loginuid.so
すべてのログイン関連のPAM構成ファイル(suおよびSudo用のものではない)では、auditd
が呼び出し元ユーザーのuidをフィールドauid
に記録します。
auditd
のログでこのIDを検索できます。
ausearch -ua <uid>
別のアカウントになりすましている場合でも、ユーザーが発行したすべてのコマンドを生成します。
あなたが要求している情報は、嬉しいことに、すでにログに含まれています。探したい特定のフィールドはaud
です。 auditctl
のマンページから:
auid The original ID the user logged in with. Its an abbreviation of audit uid. Sometimes its referred to as loginuid. Either the user account text or number may be used.
例として、次の方法論を使用して生成したロットエントリを次に示します。
-a always,exit -S sethostname -S setdomainname -k system-locale
su -
を発行してルートシェルを起動しますhostname audit-test.home.private
type = SYSCALL msg = audit(1358306046.744:260):Arch = c000003e syscall = 170 success = yes exit = 0 a0 = 2025010 a1 = 17 a2 = 7 a3 = 18 items = 0 ppid = 23922 pid = 26742 auid = 1000 uid = 0 gid = 0 euid = 0 suid = 0 fsuid = 0 egid = 0 sgid = 0 fsgid = 0 tty = pts4 ses = 16 comm = "hostname" exe = "/ usr/bin/hostname" subj = unconfined_u:unconfined_r:unconfined_t :s0-s0:c0.c1023 key = "system-locale"
したがって、はい、ログメッセージは非常に冗長ですが、ログメッセージにauid=1000
がはっきりと表示されます。これは、私のユーザーアカウントのuidに対応しています。
上記の例の詳細とauditdの簡単な説明については、コミュニティブロガー(私)の IT Security からのこのブログ投稿を想像してみてください。資格 監査対象の簡単な紹介 。
Fueroによって言及されたausearch
コマンドは、これらのかなり徹底的なログに対してレポートを検索および実行するために使用される一連のアプリケーションの一部です。