1、命令历史记录中加时间
默认情况下如下图所示,没有命令执行时间,不利于审计分析。
通过设置export HISTTIMEFORMAT=’%F %T ‘,让历史记录中带上命令执行时间。
注意”%T”和后面的”’”之间有空格,不然查看历史记录的时候,时间和命令之间没有分割。
要一劳永逸,这个配置可以写在/etc/profile中,当然如果要对指定用户做配置,这个配置可以写在/home/$USER/.bash_profile中。
本文将以/etc/profile为例进行演示。
要使配置立即生效请执行source /etc/profile,我们再查看history记录,可以看到记录中带上了命令执行时间。
如果想要实现更细化的记录,比如登陆过系统的用户、IP地址、操作命令以及操作时间一一对应,可以通过在/etc/profile里面加入以下代码实现
export HISTTIMEFORMAT=”%F %Twho -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'whoami ”,注意空格都是必须的。
修改/etc/profile并加载后,history记录如下,时间、IP、用户及执行的命令都一一对应。
2、修改bash源码,支持syslog记录
首先下载bash源码,可以从gnu.org下载,这里不做详细说明了,系统需要安装gcc等编译环境。我们用bash4.4版本做演示。
修改源码:bashhist.c
修改源码config-top.h,取消/#define SYSLOG_HISTORY/这行的注释
编译安装,编译过程不做详细说明,本文中使用的编译参数为:./configure –prefix=/usr/local/bash,安装成功后对应目录如下:
此时可以修改/etc/passwd中用户shell环境,也可以用编译好的文件直接替换原有的bash二进制文件,但最好对原文件做好备份。
替换时要注意两点:
一定要给可执行权限,默认是有的,不过有时候下载到windows系统后,再上传就没有可执行权限了,这里一定要确定,不然你会后悔的;
替换时原bash被占用,可以修改原用户的bash环境后再进行替换。
查看效果,我们发现history记录已经写到了/var/log/message中。
如果要写到远程logserver,需要配置syslog服务,具体配置这里不做详细讲解,大家自己研究,发送到远端logserver效果如下图所示。
通过以上手段,可以有效保证history记录的完整性,避免攻击者登录系统后,通过取消环境变量、删除history记录等方式抹掉操作行为,为安全审计、应急响应等提供了完整的原始数据。
*本文作者:悬镜安全实验室,转载请注明FreeBuf.COM
——END——
本文分享自微信公众号 - 释然IT杂谈(gh_ad4551519762)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
来源:oschina
链接:https://my.oschina.net/u/4579491/blog/4877054