服务日志审计项目
目的要求:实施后可以让运维和开发的所有执行的命令都有记录可查,杜绝内部人员操作隐患)(缺陷:单机、本地服务器上应用
配置sudo命令日志审计,并不记录普通用户的普通操作,而是记录,那些执行sudo命令的用户的操作。
sudo配合syslog服务,进行日志审计。
安装sudo命令和sysclog服务
[root@localhost 桌面]# yum -y install sudo rsyslog
[root@localhost 桌面]# rpm -q sudo
sudo-1.8.6p3-12.el6.x86_64
[root@localhost 桌面]# rpm -q rsyslog
rsyslog-5.8.10-8.el6.x86_64
[root@localhost 桌面]# rpm -qa |egrep "sudo|rsyslog"
rsyslog-5.8.10-8.el6.x86_64
sudo-1.8.6p3-12.el6.x86_64
添加要提权的用户shi:和测试的普通用户shi2
[root@localhost 桌面]# useradd shi
[root@localhost 桌面]# echo "123" |passwd --stdin shi
[root@localhost 桌面]# useradd shi2
[root@localhost 桌面]# echo "789" |passwd --stdin shi2
[root@localhost 桌面]# vim /etc/sudoers
………………
root ALL=(ALL) ALL
shi ALL=(ALL) /usr/bin/passwd,!/usr/bin/passwd root,/bin/mount,/bin/umount
………………
wq
把提权的命令写入/var/log/sudo.log文件中:
[root@localhost 桌面]# echo "Defaults logfile=/var/log/sudo.log" >>/etc/sudoers
[root@localhost 桌面]# tail -1 /etc/sudoers
Defaults logfile=/var/log/sudo.log
[root@localhost 桌面]# visudo -c //visudo -c 可以检查语法是否正确
/etc/sudoers:解析正确
指定一个local2的设备,打印的内容级别是debug,把执行的sudo的命令通过rsyslog写到/var/log/sudo.log文件中:
[root@localhost 桌面]# echo "local2.debug /var/log/sudo.log" >>/etc/rsyslog.conf
[root@localhost 桌面]# tail -1 /etc/rsyslog.conf
local2.debug /var/log/sudo.log
[root@localhost 桌面]# ls /var/log/ |grep "sudo"
为空 //重启rsyslog服务前,文件还没有生成
[root@localhost 桌面]# /etc/init.d/rsyslog restart
[root@localhost 桌面]# ls /var/log/ |grep "sudo"
sudo.log //重启rsyslog服务后,会成该文件
[root@localhost 桌面]# ls -l /var/log/sudo.log //权限很小,只有root能看,能操作
-rw-------. 1 root root 0 5月 14 19:13 /var/log/sudo.log
[root@localhost 桌面]# cat /var/log/sudo.log
为空 //因为还没有用户执行sudo命令,没有记录。
测试提权的shi用户(执行sudo命令):
[root@localhost 桌面]# su - shi
[shi@localhost ~]$ sudo -l
输入自己密码:123,查看权限:
用户 shi 可以在该主机上运行以下命令:
(ALL) /usr/bin/passwd, (ALL) !/usr/bin/passwd root, (ALL) /bin/mount, (ALL)
/bin/umount
[shi@localhost ~]$ sudo passwd shi2 //更改普通用户shi2的密码
输入shi2的新密码:987,即可更改成功。、
[shi@localhost ~]$ sudo passwd root //不能更改root密码
对不起,用户 shi 无权以 root 的身份在 localhost.localdomain 上执行 /usr/bin/passwd root。
[shi@localhost ~]$ umount /dev/cdrom
umount: /dev/sr0 is not in the fstab (and you are not root)
[shi@localhost ~]$ sudo umount /dev/cdrom
[shi@localhost ~]$ mount /dev/cdrom /mnt
mount: only root can do that
[shi@localhost ~]$ sudo mount /dev/cdrom /mnt
mount: block device /dev/sr0 is write-protected, mounting read-only
[shi@localhost ~]$ sudo useradd a
对不起,用户 shi 无权以 root 的身份在 localhost.localdomain 上执行 /usr/sbin/useradd a。
查看记录sudo命令的日志/var/log/sudo.log,可以查看到所有普通用户用sudo执行的命令(成功或失败)
[root@localhost 桌面]# cat /var/log/sudo.log
May 14 19:19:18 : shi : TTY=pts/0 ; PWD=/home/shi ; USER=root ; COMMAND=list
May 14 19:22:23 : shi : TTY=pts/0 ; PWD=/home/shi ; USER=root ;
COMMAND=/usr/bin/passwd shi2
May 14 19:24:26 : shi : 命令禁止使用 ; TTY=pts/0 ; PWD=/home/shi ;
USER=root ; COMMAND=/usr/bin/passwd root
May 14 19:26:10 : shi : TTY=pts/0 ; PWD=/home/shi ; USER=root ; COMMAND=list
May 14 19:26:49 : shi : TTY=pts/0 ; PWD=/home/shi ; USER=root ;
COMMAND=/bin/umount /dev/cdrom
May 14 19:27:29 : shi : TTY=pts/0 ; PWD=/home/shi ; USER=root ;
COMMAND=/bin/mount /dev/cdrom /mnt
May 14 19:28:33 : shi : 命令禁止使用 ; TTY=pts/0 ; PWD=/home/shi ;
USER=root ; COMMAND=/usr/sbin/useradd a
如果对运维课程感兴趣,可以在b站上搜索我的账号: 运维实战课程,可以关注我,学习更多免费的运维实战技术视频