介紹如何在 Ubuntu Linux 中設定 PAM 的 pam_tty_audit
透過 auditd
記錄下 SSH 登入的使用者操作指令。
auditd
pam_tty_audit
在運作時需要搭配 auditd
服務一起使用,所以要先安裝 auditd
:
# 安裝 auditd 套件
sudo apt-get install auditd
關於 auditd
的詳細操作說明,可以參考 Adultd:Linux 系統稽核工具使用教學與範例。
pam_tty_audit
編輯 /etc/pam.d/sshd
設定檔,加入一行 pam_tty_audit
的設定:
# 搭配 auditd 記錄使用者操作 session required pam_tty_audit.so disable=user1,user2 enable=user3
這裡的設定中,可以用 disable
參數指定排除的帳號清單,而 enable
參數則是可以指定納入監看的帳號清單。
若 disable
與 enable
參數牴觸時,會以後面的設定覆蓋前面的設定。若希望只記錄 root
管理者的操作,可以排除所有使用者,然後只納入 root
管理者:
# 搭配 auditd 記錄使用者操作 session required pam_tty_audit.so disable=* enable=root
更改好 PAM 的設定檔之後,就會立即生效,後續登入的使用者都會被 auditd
錄下所有的操作指令。
在預設的狀況下,pam_tty_audit
並不會記錄使用者由鍵盤輸入的的密碼,如果要連同密碼一起記錄,要加上 log_passwd
:
# 搭配 auditd 記錄使用者操作 session required pam_tty_audit.so disable=user1,user2 enable=user3 log_passwd
auditd
的記錄檔的位置預設放在 /var/log/audit/audit.log
,其中也包含了使用者的每一個按鍵(包含退位鍵、刪除鍵、換行鍵等),雖然可以直接閱讀這個記錄檔,但是建議以 aureport
輸出格式化的報表會更好閱讀:
# 輸出 auditd 的 tty 按鍵報表 sudo aureport --tty
TTY Report =============================================== # date time event auid term sess comm data =============================================== 1. 05/18/22 13:53:15 2213 1000 ? 257 vi <esc>,"[2;2R",<esc>,"[>0;136;0cG:q",<ret> 2. 05/18/22 13:55:11 2216 1000 ? 257 bash "cd /et",<tab>,"pamd.",<backspace>,<backspace>,".d",<ret>,"vi sshd",<tab>,<ret>,"aurepo",<tab>,<ret>,"aureport --tty",<ret>,"exit",<ret> 3. 05/18/22 13:55:15 2221 1000 ? 257 bash "sudo su",<ret>,"ls",<ret>,"exit",<ret> 4. 05/18/22 14:03:30 2305 1000 ? 259 vi <esc>,"[2;2R",<esc>,"[>0;136;0cG",<up>,<up>,<up>,<up>,<up>,"v",<esc>,<up>,<up>,<down>,<down>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,"Ggg",<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,"/tty",<ret>,"nnnnnnnnnnnG:q",<ret> 5. 05/18/22 14:03:49 2310 1000 ? 259 vi <esc>,"[2;2R",<esc>,"[>0;136;0cG",<up>,<up>,<up>,<up>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,":q",<ret>
我們可以用 --start
與 --end
參數來指定記錄的時間範圍:
# 輸出 10 分鐘內的 tty 按鍵報表 sudo aureport --tty --start recent # 輸出開機後的 tty 按鍵報表 sudo aureport --tty --start boot # 輸出昨天到現在的 tty 按鍵報表 sudo aureport --tty --start yesterday # 指定資料時間區間 sudo aureport --tty --start 05/18/22 13:00:00 --end 05/18/22 14:00:00
aureport
預設的輸出報表只會顯示使用者 ID,若要顯示使用者名稱,可以加上 -i
參數:
# 輸出 auditd 的 tty 按鍵報表 sudo aureport --tty -i
TTY Report =============================================== # date time event auid term sess comm data =============================================== 1. 05/18/22 13:53:15 2213 ubuntu ? 257 vi <esc>,"[2;2R",<esc>,"[>0;136;0cG:q",<ret> 2. 05/18/22 13:55:11 2216 ubuntu ? 257 bash "cd /et",<tab>,"pamd.",<backspace>,<backspace>,".d",<ret>,"vi sshd",<tab>,<ret>,"aurepo",<tab>,<ret>,"aureport --tty",<ret>,"exit",<ret> 3. 05/18/22 13:55:15 2221 ubuntu ? 257 bash "sudo su",<ret>,"ls",<ret>,"exit",<ret> 4. 05/18/22 14:03:30 2305 ubuntu ? 259 vi <esc>,"[2;2R",<esc>,"[>0;136;0cG",<up>,<up>,<up>,<up>,<up>,"v",<esc>,<up>,<up>,<down>,<down>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,"Ggg",<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,<down>,"/tty",<ret>,"nnnnnnnnnnnG:q",<ret> 5. 05/18/22 14:03:49 2310 ubuntu ? 259 vi <esc>,"[2;2R",<esc>,"[>0;136;0cG",<up>,<up>,<up>,<up>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,<right>,":q",<ret>