Linux系统下可通过history命令查看用户所有的历史操作记录,在安全应急响应中起着非常重要的作用,但在未进行附加配置情况下,history命令只能查看用户历史操作记录,并不能区分用户以及操作时间,不便于审计分析。
当然,一些不好的操作习惯也可能通过命令历史泄露敏感信息。
下面我们来介绍如何让history日志记录更细化,更便于我们审计分析。
1、命令历史记录中加时间
默认情况下如下图所示,没有命令执行时间,不利于审计分析。
通过设置export HISTTIMEFORMAT='%F %T ',让历史记录中带上命令执行时间。
注意”%T”和后面的”’”之间有空格,不然查看历史记录的时候,时间和命令之间没有分割。
要一劳永逸,这个配置可以写在/etc/profile中,当然如果要对指定用户做配置,这个配置可以写在/home/$USER/.bash_profile中。
本文将以/etc/profile为例进行演示。
通过以上配置,我们基本上可以满足日常的审计工作了,但了解系统的朋友应该很容易看出来,这种方法只是设置了环境变量,攻击者unset掉这个环境变量,或者直接删除命令历史,对于安全应急来说,这无疑是一个灾难。
针对这样的问题,我们应该如何应对,下面才是我们今天的重点,通过修改bash源码,让history记录通过syslog发送到远程logserver中,大大增加了攻击者对history记录完整性破坏的难度。
2、修改bash源码,支持syslog记录
首先下载bash源码,可以从gnu.org下载,这里不做详细说明了,系统需要安装gcc等编译环境。我们用bash4.4版本做演示。