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