Categories: Linux

Linux 設定 pam_tty_audit 記錄 SSH 使用者操作指令教學與範例

介紹如何在 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 參數則是可以指定納入監看的帳號清單。

disableenable 參數牴觸時,會以後面的設定覆蓋前面的設定。若希望只記錄 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>

參考資料

Share
Published by
Office Guide
Tags: 資訊安全

Recent Posts

Python 使用 PyAutoGUI 自動操作滑鼠與鍵盤

本篇介紹如何在 Python ...

9 個月 ago

Ubuntu Linux 以 WireGuard 架設 VPN 伺服器教學與範例

本篇介紹如何在 Ubuntu ...

9 個月 ago

Linux 網路設定 ip 指令用法教學與範例

本篇介紹如何在 Linux 系...

9 個月 ago

Windows 使用 TPM 虛擬智慧卡保護 SSH 金鑰教學與範例

本篇介紹如何在 Windows...

10 個月 ago

Linux 以 Shamir’s Secret Sharing 分割保存金鑰教學與範例

介紹如何在 Linux 中使用...

11 個月 ago

Linux 以 Cryptsetup、LUKS 加密 USB 隨身碟教學與範例

介紹如何在 Linux 系統中...

11 個月 ago