所謂日志審計,就是記錄所有系統及相關使用者行為的資訊,并且可以自動分析、處理、展示(包括文本或者錄像)
法1)通過環境變量指令及syslog服務進行全部日志審計(資訊太大,不推薦)
法2)sudo配合syslog服務,進行日志審計(資訊較少,效果不錯)
法3)在bash解釋器程式裡嵌入一個螢幕,讓所有被審計的系統使用者使用修改過的增加了螢幕的特殊bash程式作為解釋程式
法4)齊治的堡壘機:商業産品
我們今天要學習的是:sudo日志審計:專門對使用sudo指令的系統使用者記錄其執行的指令相關資訊。
1) 安裝sudo指令,syslog服務(centos6.4為rsyslog服務)
(預設情況Centos5.8系統中已經安裝sudo,syslog服務,按前文講解的安裝系統的方式安裝也會安裝好上述指令服務,如果沒有安裝,可以執行下邊的指令安裝,要確定可以上網)
[root@c58 ~] rpm –qa|egrep “sudo|syslog”
rsyslog-3.22.1-7.el5
sudo-1.7.2p1-13.el5
[root@c65 ~]# rpm -qa |egrep"sudo|syslog"
sudo-1.8.6p3-12.el6.x86_64
rsyslog-5.8.10-8.el6.x86_64
如果沒有安裝則執行下面的指令安裝:
yum install –y sudo syslog
2) 配置/etc/sudoers
增加配置“Defaults logfile=/var/log/sudo.log” 到/etc/sudoers中,注意:不包含引号。
[root@oldboy ~]# echo "Defaults logfile=/var/log/sudo.log" >>/etc/sudoers
[root@oldboy ~]# tail -1 /etc/sudoers
Defaults logfile=/var/log/sudo.log
[root@oldboy ~]# visudo –c //檢查sudoers檔案文法
/etc/sudoers: parsed OK
提示:下面的3),4)可以不執行,直接切換到普操作,然後檢視/var/log/sudo.log有無記錄。
3) 配置系統日志/etc/rsyslog.conf
增加配置local2.debug到/etc/rsyslog.conf中。
[root@oldboy ~]# echo"local2.debug /var/log/sudo.log" >> /etc/rsyslog.conf
[root@oldboy ~]# tail -1 /etc/rsyslog.conf //檢視配置結果
local2.debug /var/log/sudo.log
提示:如果是Centos5.8路徑為/etc/syslog.conf
echo "local2.debug /var/log/sudo.log" >>/etc/syslog.conf
配置指令(隻适合Centos6系列)
echo "local2.debug /var/log/sudo.log" >> /etc/audisp/plugins.d/syslog.conf
4) 重新開機rsyslog核心日志記錄器
[root@oldboy ~]# /etc/init.d/rsyslogrestart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
提示:如果是Centos5.8啟動指令如下
[root@oldboy ~]# /etc/init.d/syslog restart
Shutting down kernel logger: [ OK ]
Starting down system logger: [ OK ]
Shutting system logger: [ OK ]
Starting kernel logger: [ OK ]
此時,會自動建立一個/var/log/sudo.log檔案(日志上配置的名字)并且檔案權限為600(-rw-------)所有都群組均為root(如果看不到日志檔案,就退出重新登入看看)。
[root@oldboy ~]# ls -l /var/log/sudo.log //確定隻有root才能檢視
-rw------- 1 root root 0 Jan 28 12:25/var/log/sudo.log
5)測試sudo日志審計配置結果
根據前文講解的建立使用者chuji001擁有sudo權限。同時使用root使用者登入檢視/var/log/sudo.log
chuji001使用者下操作:
[oldboy@oldboy ~]$ whoami
oldboy
[oldboy@oldboy ~]$ sudo su -
[root@oldboy ~]# su - chuji001
[chuji001@oldboy ~]$ sudo -l
[sudo] password for chuji001:
Matching Defaults entries for chuji001 onthis host:
requiretty, !visiblepw, always_set_home, env_reset,env_keep="COLORS DISPLAY HOSTNAME
HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2QTDIR USERNAME LANG LC_ADDRESS
LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATIONLC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPERLC_TELEPHONE", env_keep+="LC_TIME LC_ALL
LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin,
logfile=/var/log/sudo.log
User chuji001 may run the following commands on this host:
(root) /usr/bin/free,/usr/bin/iostat, /usr/bin/top, /bin/hostname, /sbin/ifconfig,/bin/netstat,/sbin/route
[chuji001@oldboy ~]$ whoami
chuji001
[chuji001@oldboy ~]$ sudouseradd aaaa
Sorry,user chuji001 is not allowed to execute '/usr/sbin/useradd aaaa' as root onoldboy.
root使用者下檢視(為了日志的安全,僅能在root使用者下檢視):
[root@oldboy ~]# ls -l /var/log/sudo.log
-rw------- 1 root root 314 Jan 28 12:34/var/log/sudo.log
[root@oldboy ~]# cat /var/log/sudo.log
Jan 28 12:33:10 : oldboy : TTY=pts/1 ; PWD=/home/oldboy ; USER=root ;
COMMAND=/bin/su -
Jan 28 12:33:21 : chuji001 : TTY=pts/1 ; PWD=/home/chuji001 ; USER=root;
COMMAND=list
Jan28 12:34:09 : chuji001 : command not allowed ; TTY=pts/1 ;
PWD=/home/chuji001 ; USER=root ;COMMAND=/usr/sbin/useradd aaaa
kaifamanager001使用者下操作:
[kaifamanager001@oldboy ~]$ sudo -l
Matching Defaults entries forkaifamanager001 on this host:
LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin,
Userkaifamanager001 may run the following commands on this host:
(ALL) ALL, (ALL) /usr/bin/passwd [A-Za-z]*,(ALL) !/usr/bin/passwd root, (ALL)
!/usr/sbin/visudo, (ALL) !/usr/bin/vi *sudoer*,(ALL) !/usr/bin/vim, (ALL) !/bin/su -
[kaifamanager001@oldboy ~]$ whoami
kaifamanager001
[kaifamanager001@oldboy ~]$ sudo su -
Sorry,user kaifamanager001 is not allowed to execute '/bin/su -' as root on oldboy.
-rw------- 1 root root 748 Jan 28 12:41/var/log/sudo.log
Jan 28 12:33:10 : oldboy : TTY=pts/1 ;PWD=/home/oldboy ; USER=root ;
COMMAND=/bin/su -
Jan 28 12:33:21 : chuji001 : TTY=pts/1 ;PWD=/home/chuji001 ; USER=root ;
COMMAND=list
Jan 28 12:34:09 : chuji001 : command notallowed ; TTY=pts/1 ;
PWD=/home/chuji001 ; USER=root ; COMMAND=/usr/sbin/useradd aaaa
Jan 28 12:39:36 : kaifamanager001 :TTY=pts/1 ; PWD=/home/kaifamanager001 ;
USER=root ; COMMAND=list
Jan 28 12:40:29 : oldboy : TTY=pts/2 ;PWD=/home/oldboy ; USER=root ;
Jan 28 12:40:53 : kaifamanager001 :TTY=pts/1 ; PWD=/home/kaifamanager001 ;
Jan28 12:41:07 : kaifamanager001 : command not allowed ; TTY=pts/1 ;
PWD=/home/kaifamanager001 ; USER=root; COMMAND=/bin/su –
[kaifamanager001@oldboy ~]$ sudo vi/etc/sudoers
##pri config
senior001 ALL=(OP) GY_CMD_1
manager001 ALL=(ALL) NOPASSWD:ALL
kaifamanager001 ALL=(ALL) NOPASSWD:ALL,/usr/bin/passwd[A-Za-z]*,!/usr/bin/passwd root,!/usr/sbin/visudo,!/usr/bin/vi*sudoer*,!/usr/bin/vim,!/bin/su -
[kaifamanager001@oldboy ~]$ sudo grep"NOPASSWD:ALL" /etc/sudoers
manager001 ALL=(ALL) NOPASSWD:ALL
kaifamanager001 ALL=(ALL) NOPASSWD:ALL,/usr/bin/passwd [A-Za-z]*,!/usr/bin/passwdroot,!/usr/sbin/visudo,!/usr/bin/vi *sudoer*,!/usr/bin/vim,!/bin/su -
[kaifamanager001@oldboy ~]$ sudo su – root //提權後,就能切換到root使用者下,非常危險的
[root@oldboy~]#
-rw------- 1 root root 1259 Jan 28 12:47/var/log/sudo.log
[root@oldboy ~]# cat /var/log/sudo.log
Jan 28 12:40:53 : kaifamanager001 : TTY=pts/1; PWD=/home/kaifamanager001 ;
Jan 28 12:41:07 : kaifamanager001 : commandnot allowed ; TTY=pts/1 ;
PWD=/home/kaifamanager001 ; USER=root ; COMMAND=/bin/su -
Jan28 12:46:09 : kaifamanager001 : TTY=pts/1 ; PWD=/home/kaifamanager001 ;
USER=root ; COMMAND=/bin/vi /etc/sudoers
Jan28 12:47:32 : kaifamanager001 : TTY=pts/1 ; PWD=/home/kaifamanager001 ;
USER=root ; COMMAND=/bin/grep NOPASSWD:ALL/etc/sudoers
Jan28 12:47:41 : kaifamanager001 : TTY=pts/1 ; PWD=/home/kaifamanager001 ;
USER=root ; COMMAND=/bin/su – root
日志集中管理(了解):
1) rsync+inotify或定時任務+rsync,推到日志管理伺服器上,10.0.0.7——20130302.sudo.log
2) rsyslog服務來處理
[root@mysql-a ~]# echo “10.0.2.164logserver”>>/etc/hosts
#日志伺服器位址。
[root@mysql-a ~]# echo “*.info @logserver”>>/etc/rsyslog.conf 适合所有日志推走
3) 日志收集解決方案
本文轉自 小楊_Ivan 51CTO部落格,原文連結:http://blog.51cto.com/aqiang/1894340