歡迎您光臨本站 註冊首頁

BASH增加日誌功能

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

BASH增加日誌功能

如果工作中遇到了比較囧的情況,機器被人攻破了,黑客登錄了你的系統(當然我們會盡全力防止這樣的事情發生)你一定會希望系統記錄下來哪個用戶做過哪些操作.History功能並不能滿足這個要求,因為黑客的智商應該會告訴他在離開的時候刪除history記錄(除非你遇到個菜鳥黑客).

那麼我們怎麼預防呢?這裡的方法是給bash來個記錄日誌,誰在什麼時間操作了什麼命令,都寫到messages裡面去.

下面是具體步驟:
1. 下載並打補丁
#cd /home/soft
#wget http://ftp.gnu.org/gnu/bash/bash-4.1.tar.gz
#tar zxf bash-4.1.tar.gz ; cd bash-4.1
#wget -r -nd -np http://ftp.gnu.org/gnu/bash/bash-4.1-patches/


#patch -p0 < bash41-001 全部文件都要patch一遍
2. 修改源碼
這裡這麼做的原因是因為bash4.1默認在代碼裡面註釋了log功能,並且原來記錄的內容並不能滿足要求,需要修改.
#vi bashhist.c 708 708行左右修改成下面內容
syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY: PID=%d PPID=%d SID=%d User=%s CMD=%s", getpid(), getppid(), getsid(getpid()), current_user.user_name, line);
else
{
strncpy (trunc, line, SYSLOG_MAXLEN);
trunc[SYSLOG_MAXLEN - 1] = '';
syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY (TRUNCATED): PID=%d PPID=%d SID=%d User=%s CMD=%s", getpid(), getppid(), getsid(getpid()), current_user.user_name, trunc);
}
#vi config-top.h 取消/*#define SYSLOG_HISTORY*/這行的註釋

3. 編譯安裝
#./configure --prefix=/usr/local/bash && make && make install
4. 測試
#vi /etc/passwd 修改一個用戶的登錄shell/usr/local/bash/bin/bash
tom:x:501:501::/home/users/tom:/usr/local/bash/bin/bash
tom用戶登錄並進行一些操作,之後查看messages文件,可以看到類似下面的記錄:
Jan 14 13:35:15 rhel6 -bash: HISTORY: PID=15912 PPID=2161 SID=15912 User=tom CMD=cat yum.conf
5. 把日誌記錄的日誌伺服器
#vi /etc/syslog.conf 添加一行*.* @logservername
日誌伺服器的做法只需要在/etc/sysconfig/syslog文件中修改SYSLOGD_OPTIONS="-m -r 0"

即可.

PS:此方法只針對syslog程序,RHEL6.0已更換為rsyslog具體方法還沒研究.

參考鏈接:
http://wenku.baidu.com/view/c3bb49c58bd63186bcebbc7a.html
http://www.rsyslog.com/doc

出自:http://salogs.com/
添加了點內容

本文出自 「shark巨菜-菜園志」 博客,請務必保留此出處http://sharkyan.blog.51cto.com/536264/478386


[火星人 ] BASH增加日誌功能已經有497次圍觀

http://coctec.com/docs/linux/show-post-50031.html