共计 1556 个字符,预计需要花费 4 分钟才能阅读完成。
Linux 零碎下可通过 history 命令查看用户所有的历史操作记录,在平安应急响应中起着十分重要的作用,但在未进行附加配置状况下,history 命令只能查看用户历史操作记录,并不能辨别用户以及操作工夫,不便于审计剖析。
当然,一些不好的操作习惯也可能通过命令历史泄露敏感信息。
上面咱们来介绍如何让 history 日志记录更细化,更便于咱们审计剖析。
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、用户及执行的命令都一一对应。
通过以上配置,咱们基本上能够满足日常的审计工作了,但理解零碎的敌人应该很容易看进去,这种办法只是设置了环境变量,攻击者 unset 掉这个环境变量,或者间接删除命令历史,对于平安应急来说,这无疑是一个劫难。
针对这样的问题,咱们应该如何应答,上面才是咱们明天的重点,通过批改 bash 源码,让 history 记录通过 syslog 发送到近程 logserver 中,大大增加了攻击者对 history 记录完整性毁坏的难度。
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 二进制文件,但最好对原文件做好备份。
替换时要留神两点:
- 1、肯定要给可执行权限,默认是有的,不过有时候下载到 windows 零碎后,再上传就没有可执行权限了,这里肯定要确定,不然你会悔恨的;
- 2、替换时原 bash 被占用,能够批改原用户的 bash 环境后再进行替换。
查看成果,咱们发现 history 记录曾经写到了 /var/log/message 中。
如果要写到近程 logserver,须要配置 syslog 服务,具体配置这里不做具体解说,大家本人钻研,发送到远端 logserver 成果如下图所示。
通过以上伎俩,能够无效保障 history 记录的完整性,防止攻击者登录零碎后,通过勾销环境变量、删除 history 记录等形式抹掉操作行为,为平安审计、应急响应等提供了残缺的原始数据。
本文为悬镜平安实验室原创文章,如需转载请标注:http://lab.xmirror.cn/2017/05…