很多情況下我們需要記錄用戶執(zhí)行過的命令,不管是root還是其他普通用戶,我們可以通過以下方式來記錄。
創(chuàng)新互聯(lián)建站:于2013年開始為各行業(yè)開拓出企業(yè)自己的“網(wǎng)站建設”服務,為上千家公司企業(yè)提供了專業(yè)的網(wǎng)站制作、成都網(wǎng)站設計、網(wǎng)頁設計和網(wǎng)站推廣服務, 按需制作由設計師親自精心設計,設計的效果完全按照客戶的要求,并適當?shù)奶岢龊侠淼慕ㄗh,擁有的視覺效果,策劃師分析客戶的同行競爭對手,根據(jù)客戶的實際情況給出合理的網(wǎng)站構架,制作客戶同行業(yè)具有領先地位的。
PROMPT_COMMAND會在命令執(zhí)行前執(zhí)行。
$(who am i |awk '{print \$2,\$5}') 會輸出登錄用戶用的tty和登錄服務器的遠程電腦IP或者主機名。
$PWD 是內建變量,顯示當前執(zhí)行命令的工作目錄。
history 1 | { read x cmd; echo ${cmd}; 會輸出最后早核一條歷史命令中的執(zhí)行信息。
為了不讓用戶修改變量,使用 declare -rx 命令定義了只讀環(huán)境變量。這里要注意使用 readonly 命令也可以定義只讀變量,但是用戶用env命令看不到,只有用 export PROMPT_COMMAND 命令將變量設置為環(huán)境變量后才能看到。
變量加到 /etc/bashrc 是因為用戶登錄后會加載這里的配置,包括 sudo sudo su sudo su - su root su - root 。如果加到其他文件里則部分命令后就不會加載變量,自行嘗試。
修改rsyslog是可以自定義日志輸出的文件路徑和名字,用 logger -p 這個命令配合使用。
新增logrotate配置則是需要切割日志,防止單個日志文件太大,以及做好切割備份,方便查詢。
【一】
在 /etc/profile 最后添加如下行,則日志會直接輸出到 messages 日志里。春虧
這種方式:不定義日志格式,直接將日志寫到messages日志文件里,和其他日志放一起,但是可以指定日志標簽,方便檢索。
缺點是(1)會導致日志增大,并且用戶提權后因-t標簽的存在,導致不會記錄提權前的用戶。(2)不能自定義日志路徑。
【二】
缺點:用戶可以刪除日志文件。
因為普通用戶和root都要往日志文件里寫,所以需要給普通用戶加一個附加組;并且如果日志文件不存在,普通用戶登錄后也需要新建,所以普通用戶必須有日志文件父目錄的寫權限。為了能讓所有普通用戶都可以寫,就給Command目錄加了SGID權限以及修改目錄屬組為audit。這樣普通用戶在這個目錄下創(chuàng)建的日志文件的屬組會自動繼承Command目錄的屬組,也就是audit。 (umask 002 touch $HISTORY_FILE) 命令則是因為root用戶生成的日志文件權限是644,屬組沒有寫權限。所以這里用 啟動子shell并修改umask的方式生成日志文件扒睜神。這樣就不會修改root默認的 0022 的umask。
其他審計軟件:
免費2個月