利用rsyslog 对Linux用户进行审计

简介:

rsyslog 是标准Linux系统的一部分,能够实时的写日志,并且还可以将日志选择性的发送到远程日志服务器。


要审计用户执行的命令,简单的依赖.bash_history 或 script 是不可靠的,两者虽然记录了用户行为,但是可能被用户篡改。利用rsyslog 可以将日志实时写入远程日志服务器,从而杜绝用户篡改,提高审计材料的真实度。


以ubuntu为例,下面的办法可以让rsyslog记录用户所执行的命令以及时间戳,供审计使用。


1、rsyslog 添加日志

1
echo  "local6.* /var/log/commands.log"  > /etc/rsyslog .d /bash .conf

2、在/etc/profile 中加入

1
2
3
4
5
6
7
8
function  bash2syslog {
     declare  command
     command =$(fc - ln  -0 2> /dev/null || true )
     if  "$command"  !=  ""  ]; then
         logger -p local6.notice -t  bash  --  "$(who am i)"  $PWD $USER:  "$command"
     fi
trap  bash2syslog DEBUG

这里写入本地日志。然后rsyslog直接将日志写入远程服务器 。


建议root 用户的umask 值设置为027或者007,防止/var/log/commands.log文件被普通用户查看到。



3、日志轮转

编辑/etc/logrotate.d/rsyslog 在中间增加一段

1
2
3
4
5
6
7
8
9
10
11
12
13
/var/log/commands.log
{
         rotate 30
         weekly
         missingok
         notifempty
         compress
         delaycompress
         sharedscripts
         postrotate
                 reload rsyslog >/dev/null 2>&1 || true
         endscript
}

 

4、重启rsyslog,用户退出重新登陆

1
service rsyslog restart

5、rsyslog 发送日志到远程服务器(可选)

1
echo  "local6.*          @@192.168.0.2"  >> /etc/rsyslog .conf

 

6、利用watchdog监视rsyslog,如果服务被停止,则重启机器 (可选)

1
2
3
4
5
6
7
8
9
10
11
apt-get  install  watchdog
update-rc.d watchdog defaults
  
Cat >>  /etc/watchdog .conf  <<EOF
watchdog-device    =  /dev/watchdog
admin                   = root
interval                = 1
logtick                 = 1
log- dir                  /var/log/watchdog
pidfile                 =  /var/run/rsyslogd .pid
EOF


7、目标日志服务器配置 /etc/rsyslog.d/commands-audit.conf

1
2
$template LOG_BY_HOSTIP, "/var/log/command-audit/%fromhost-ip%-commands.log"
local6.notice ?LOG_BY_HOSTIP










本文转自 紫色葡萄 51CTO博客,原文链接:http://blog.51cto.com/purplegrape/1544117,如需转载请自行联系原作者

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
Ubuntu Linux 网络安全
Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录
本文介绍了Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录。
2242 1
Linux Debian11服务器安装SSH,创建新用户并允许远程SSH远程登录,并禁止root用户远程SSH登录
|
10月前
|
存储 安全 关系型数据库
Linux日志管理rsyslog系统日志管理
本篇文章带大家了解日志管理中的esyslog系统日志管理,了解日志是从哪里来的,怎么观察日志,以及配置日志设备文件,学习怎么查看常见的一些种类的日志信息。本篇文章需要关心的问题:哪类程序--->产生的什么日志--->放到什么地方
193 0
Linux下查看用户使用硬盘情况
Linux下查看用户使用硬盘情况
|
NoSQL Shell Linux
Linux 更改用户环境变量和所有用户环境变量
Linux 更改用户环境变量和所有用户环境变量
|
Shell Linux
LINUX SHELL脚本中获得用户主目录
LINUX SHELL脚本中获得用户主目录
479 0
|
Linux Windows
OracleVirtualBo界面太小,操作界面对用户不友好?如何使得界面最大化且方便在Windows和Linux环境之间切换应用呢?
OracleVirtualBo界面太小,操作界面对用户不友好?如何使得界面最大化且方便在Windows和Linux环境之间切换应用呢?
198 0
OracleVirtualBo界面太小,操作界面对用户不友好?如何使得界面最大化且方便在Windows和Linux环境之间切换应用呢?
Linux基础知识- 系统随你玩之--笔记-日常实用命令-登录用户
Linux基础知识- 系统随你玩之--笔记-日常实用命令-登录用户
|
运维 Linux Shell
Linux基础知识- 系统随你玩之--文件的用户与用户组
Linux基础知识- 系统随你玩之--介绍文件的用户与用户组并带领大家实际操作
Linux基础知识- 系统随你玩之--文件的用户与用户组
|
Shell Linux 数据安全/隐私保护
linux中如何查看哪些用户允许登录
linux中如何查看哪些用户允许登录
696 0
|
安全 Shell Linux
Linux 用户和用户组管理
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。 每个用户账号都拥有一个唯一的用户名和各自的口令。
235 0