不可思議!只需這一招,審計變得手到擒來,用戶行為無所遁形!
Linux 審計在安全管理中至關(guān)重要,不僅能檢測和預防潛在的安全威脅,還能追蹤用戶行為、確保合規(guī)性并提供詳盡的操作記錄。這些審計功能為系統(tǒng)管理員和安全專家提供了維護系統(tǒng)完整性和安全性所需的重要信息。
PROMPT_COMMAND是一個在 Bash shell 中非常有用的環(huán)境變量。它允許用戶在每次顯示命令提示符之前執(zhí)行指定的命令。這可以用于多種用途,例如自動更新命令提示符的內(nèi)容、記錄命令歷史、監(jiān)視系統(tǒng)狀態(tài)等。
今天通過配置PROMPT_COMMAND實現(xiàn)審計命令行所有操作。最終實現(xiàn)的效果如下圖:
什么是PROMPT_COMMAND?
PROMPT_COMMAND 是一個 Bash 環(huán)境變量,它包含一個命令或一組命令。這些命令在每次顯示命令提示符之前執(zhí)行。通過使用 PROMPT_COMMAND,可以動態(tài)地更改提示符的內(nèi)容或執(zhí)行其他自動化任務(wù)。
實現(xiàn)審計命令行所有操作
1.配置環(huán)境變量
編輯/etc/profile,在改文件中導出一個變量,并設(shè)置改變量為只讀模式。如下圖所示:
該命令太長,可能不太容易理解。別擔心,接下來我們將通過拆解,詳細解析這個命令的作用和用法。
export PROMPT_COMMAND='RETRN_VAL=$?;logger -p local6.debug "$(whoami) [$$]: $(history 1 | sed "s/^[]*[0-9]\+[ ]*//") [$RETRN_VAL]"'
readonly PROMPT_COMMAND
2.命令拆解與解析
(1) RETRN_VAL=$?
$?是一個特殊變量,它存儲了上一個命令的退出狀態(tài)(返回值)。將其賦值給RETRN_VAL變量,以便在后續(xù)使用。
(2) logger -p local6.debug
logger是一個命令,用于將消息寫入系統(tǒng)日志。選項-p指定消息的優(yōu)先級。local6.debug表示使用 local6這個本地設(shè)施(facility),并且日志級別為debug。
(3) "$]:
RETRN_VAL]"
這是傳遞給 logger 命令的日志消息。它包含以下幾部分:
- $(whoami): 這個命令返回當前用戶的用戶名。
- [$$]: 這個特殊變量表示當前進程的進程ID
- $(history 1 | sed "s/^[]*[0-9]\+[ ]*//"): 這部分命令獲取最近執(zhí)行的命令,并使用sed刪除歷史編號。
- [$RETRN_VAL]: 包含上一個命令的退出狀態(tài)。
(4) readonly:將環(huán)境變量設(shè)置為只讀以防止被修改。
3.自定義日志路徑
然后在/etc/rsyslog.d目錄下創(chuàng)建一個history.conf,內(nèi)容如下;
local6.debug /var/log/users-command.log
該配置的意思是將local6.debug的日志指定到自定義的文件目錄下。
4.重啟rsyslog服務(wù)
重啟rsyslog服務(wù),執(zhí)行如下命令:
systemctl restart rsyslog
完成了上述配置后,每個用戶登錄系統(tǒng)上做了什么操作都一目了然了。如下圖:
總結(jié)
PROMPT_COMMAND是一個強大的工具,可以用來定制 Bash 提示符并實現(xiàn)自動化任務(wù)。通過正確配置 PROMPT_COMMAND,你可以提高命令行的效率和信息可見性。希望本教程能幫助你更好地理解和使用 PROMPT_COMMAND。