天天看點

生産環境日志審計解決方案生産環境日志審計解決方案

所謂日志審計,就是記錄所有系統及相關使用者行為的資訊,并且可以自動分析、處理、展示(包括文本或者錄像)

法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