要審計使用者執行的命令,在系統本地執行的話,比較簡單。修改histtimeformat變數即可,比如:
export histtimeformat="[%f %t $(who am i)] "
但是簡單的依賴.bash_history 或 script 是不可靠的,兩者雖然記錄了使用者行為,但是可能被使用者篡改和清除。
rsyslog 是標準linux系統的一部分,能夠實時的寫日誌,並且還可以將日誌選擇性的傳送到遠端日誌伺服器。
利用rsyslog 可以將日誌實時寫入遠端日誌伺服器,從而杜絕使用者篡改,提高審計材料的真實度。
以ubuntu為例,下面的辦法可以讓rsyslog記錄使用者所執行的命令以及時間戳,供審計使用。
1、rsyslog 新增日誌
echo -e "local6.* /var/log/commands.log" >/etc/rsyslog.d/bash.conf2、在/etc/profile 中加入
function bash2syslog這裡寫入本地日誌。然後rsyslog直接將日誌寫入遠端伺服器 。trap bash2syslog debug
建議root 使用者的umask 值設定為027或者007,防止/var/log/commands.log檔案被普通使用者檢視到。
3、日誌輪轉
/var/log/commands.log
4、重啟rsyslog,使用者退出重新登陸
service rsyslog restart5、rsyslog 傳送日誌到遠端伺服器(可選)
echo "local6.* @@192.168.0.2" >>/etc/rsyslog.conf
6、利用watchdog監視rsyslog,如果服務被停止,則重啟機器 (可選)
apt-get install watchdogupdate-rc.d watchdog defaults
cat >> /etc/watchdog.conf <
7、目標日誌伺服器配置 /etc/rsyslog.d/commands-audit.conf
$template log_by_hostip, "/var/log/command-audit/%fromhost-ip%-commands.log"
local6.notice ?log_by_hostip
8、其它優化
設定/etc/profile
讓不同會話共享歷史記錄,而不是臨時儲存在記憶體裡,會話退出後才能共享
適當修改環境變數 prompt_command
參考文件
Linux 日誌程序rsyslog
日誌是程式產生的文字類和數字型別資訊,作用是用來統計資訊,排除錯誤。linux 作業系統中的日誌存放在 var log目錄下,系統中的日誌 於程式,比如linux系統中的rsyslog程式以及安裝的大型程式mysql httpd等。rsyslog 系統日誌管理,是乙個程式,或者說是乙個程序,用以維護...
Linux系統中日誌服務rsyslog(未完)
系統的日誌管理 var log message 儲存日誌的檔案 清空 rebort 清空後需要重起 1.rsyslog 採集日誌的程式 收集到指定位置 他不產生日誌,只起到採集作用 採集規則 46行 vim etc rsyslog.conf 日誌採集規則 什麼型別的日誌.什麼級別的日誌 var lo...
linux下配置rsyslog日誌收集伺服器案例
環境配置 centos6系統 client1 192.168.1.33 centos7系統 client2 192.168.1.44 centos7系統 master 192.168.1.55 配置服務端master端 第一 啟用udp tcp進行傳輸 vim etc rsyslog.conf pr...