當使用者透過 SSH 修改檔案時,如何使用 ausearch 記錄使用者的 IP?

當使用者透過 SSH 修改檔案時,如何使用 ausearch 記錄使用者的 IP?

我的團隊使用相同的 root 密碼登入開發伺服器;我們沒有設立單獨的用戶帳戶。

我現在正在嘗試創建文件更改日誌,並且我想區分不同的作者,但是 ausearch 總是返回用戶的名稱(因此始終為“root”),即使我通過了規則name_format=numeric,該規則應該公開IP 地址而不是“根」。

答案1

注意:OP 在另一個線上場所也提出了這個問題。這是我在其他位置的答案的編輯版本。不建議多個使用者直接以 root 身分登入的問題已在此處解決,無需重新討論。

據我了解,您是在詢問如何取得審核日誌以顯示每個記錄的操作是從哪個 IP 位址進行的。您感到沮喪的是,大多數審核行甚至沒有hostnameaddr字段,而少數有的大多看起來像這樣:

node=192.168.33.9 type=USER_START msg=audit(1422241281.664:263): pid=5912 uid=0 auid=1001 ses=18 msg='op=PAM:session_open acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/4 [...]

即具有未知hostnameaddr值。

Linux 稽核子系統不會自動以關聯的主機名稱/IP 資訊填入其條目;像 sshd 這樣的守護程序必須以某種方式明確地將它們提供給auditd(在 sshd 的情況下,透過 PAM 呼叫):

node=192.168.33.9 type=CRED_ACQ msg=audit(1422240837.085:202): pid=5441 uid=0 auid=501 ses=18 msg='op=PAM:setcred acct="ratb" exe="/usr/sbin/sshd" hostname=canton.local addr=192.168.33.36 terminal=ssh res=success'

像您最喜歡的編輯器這樣的使用者級命令根本不會這樣做,因為它們不關心您來自哪裡。

由於每個人都以同一用戶的身份直接登錄,因此您必須記錄ses來自USER_START審核 sshd 透過 PAM 發出的訊息,然後將它們與sessshd 的 ID相關聯系統調用您要追蹤的活動的訊息。例如,這是來自echo hi > tmp/testing.txt與上面相同的 SSH 會話的審計跟踪,因此共享相同的sesID (18):

node=192.168.33.9 type=PATH msg=audit(1422241924.835:341): item=1 name="tmp/testing.txt" inode=2631940 dev=08:22 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=CREATE
node=192.168.33.9 type=PATH msg=audit(1422241924.835:341): item=0 name="tmp/" inode=2621477 dev=08:22 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT
node=192.168.33.9 type=CWD msg=audit(1422241924.835:341):  cwd="/root"
node=192.168.33.9 type=SYSCALL msg=audit(1422241924.835:341): arch=c000003e syscall=2 success=yes exit=3 a0=bc62a8 a1=241 a2=1b6 a3=10 items=2 ppid=5913 pid=5921 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts4 ses=18 comm="bash" exe="/bin/bash" key=(null)

相關內容