在Linux下记录所有用户的登录和操作日志

背景

在很多大厂中,一般会通过第三方的4A系统登录企业的服务器,登陆者所有的操作都会由4A系统采集、汇总、记录,以达到安全审计的目的。

但是很多小公司并没有采购4A系统的预算,那么为了保证操作的安全性和可追溯性,一般我们可以用history命令来查看用户的操作记录,但是这个命令不能记录是哪个用户登录操作的,也不能记录详细的操作时间,且不完整。所以误操作而造成重要的数据丢失,就很难查到是谁操作的。

今天就来介绍一种非常简洁的方法,通过编写脚本来追溯每个用户的操作记录。

实现方式

我们通过脚本代码来实现记录所有用户的登录操作日志。编辑/etc/profile文件,在文件末尾加入下面代码:

[root@rb1 /]# vi /etc/profile
history
USER=`whoami`
USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
if [ "$USER_IP" = "" ]; then
USER_IP=`hostname`
fi
if [ ! -d /var/log/history ]; then
mkdir /var/log/history
chmod 777 /var/log/history
fi
if [ ! -d /var/log/history/${LOGNAME} ]; then
mkdir /var/log/history/${LOGNAME}
chmod 300 /var/log/history/${LOGNAME}
fi
export HISTSIZE=4096
DT=`date +"%Y%m%d_%H:%M:%S"`
export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null

说明:

/var/log/history这是记录日志的存放位置,可以自定义。

正常情况下,在/var/log/history下会以每个用户为名新建一个文件夹,

[root@rb1 /]# cd /var/log/history/
[root@rb1 history]# ll
total 20
d-wx------ 2 test test 4096 Jul 12 18:06 test
d-wx------ 2 interface interface 4096 Jul 12 18:12 interface

每次用户退出后都会产生以用户名、登录IP、时间命名的文件,里面包含此用户本次的所有操作:

[root@rb1 history]# cd interface/
[root@ rb1 interface]# ls
interface@180.173.188.252_20180626_14:59:51
interface@180.173.188.252_20180628_14:40:26
interface@180.173.188.252_20180703_09:44:21
interface@180.173.188.252_20180703_11:18:40
interface@180.173.188.252_20180704_13:37:19

注意事项

1、在配置完成后,一定要用root用户重新登录一次,这样会创建 /var/log/history目录。否则直接用普通用户登录会报无权限的错误,无法追溯用户操作。

2、在安装某些组件或工具的时候,会执行 source /etc/profile 并检测执行结果(echo $?)。按照上述配置,结果会返回1,为异常情况,那么工具可能会安装失败。

可以按照如下方式修改来解决这个问题:在 /etc/profile 文件的最后,加入一行:

echo "Welcome to `hostname`!"

这样,执行 source /etc/profile 返回值就为0了。

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员柒叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值