良许Linux教程网 干货合集 history命令使用小技巧

history命令使用小技巧

history命令:用于显示历史记录和执行过的指令命令。history命令读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令,下面为大家分享一下history命令使用方法。

history命令使用小技巧

1、命令历史记录中加时间

默认情况下如下图所示,没有命令执行时间,不利于审计分析。

Linux系统下活用History命令Linux系统下活用History命令
Linux系统下活用History命令Linux系统下活用History命令

通过设置export HISTTIMEFORMAT=’%F %T ‘,让历史记录中带上命令执行时间。

注意”%T”和后面的”’”之间有空格,不然查看历史记录的时候,时间和命令之间没有分割。

要一劳永逸,这个配置可以写在/etc/profile中,当然如果要对指定用户做配置,这个配置可以写在/home/$USER/.bash_profile中。

本文将以/etc/profile为例进行演示。

Linux系统下活用History命令Linux系统下活用History命令
Linux系统下活用History命令Linux系统下活用History命令

要使配置立即生效请执行source /etc/profile,我们再查看history记录,可以看到记录中带上了命令执行时间。

Linux系统下活用History命令Linux系统下活用History命令
Linux系统下活用History命令Linux系统下活用History命令

如果想要实现更细化的记录,比如登陆过系统的用户、IP地址、操作命令以及操作时间一一对应,可以通过在/etc/profile里面加入以下代码实现

export HISTTIMEFORMAT="\%F \%T`who \-u am i 2>/dev/null| awk '{print $NF}'|sed \-e 's/[()]//g'``whoami`

注意空格都是必须的。

Linux系统下活用History命令Linux系统下活用History命令
Linux系统下活用History命令Linux系统下活用History命令

修改/etc/profile并加载后,history记录如下,时间、IP、用户及执行的命令都一一对应。

Linux系统下活用History命令Linux系统下活用History命令
Linux系统下活用History命令Linux系统下活用History命令

通过以上配置,我们基本上可以满足日常的审计工作了,但了解系统的朋友应该很容易看出来,这种方法只是设置了环境变量,攻击者unset掉这个环境变量,或者直接删除命令历史,对于安全应急来说,这无疑是一个灾难。

针对这样的问题,我们应该如何应对,下面才是我们今天的重点,通过修改bash源码,让history记录通过syslog发送到远程logserver中,大大增加了攻击者对history记录完整性破坏的难度。

2、修改bash源码,支持syslog记录

首先下载bash源码,可以从gnu.org下载,这里不做详细说明了,系统需要安装gcc等编译环境。我们用bash4.4版本做演示。

修改源码:bashhist.c

Linux系统下活用History命令Linux系统下活用History命令
Linux系统下活用History命令Linux系统下活用History命令

修改源码config-top.h,取消/#define SYSLOG_HISTORY/这行的注释

Linux系统下活用History命令Linux系统下活用History命令
Linux系统下活用History命令Linux系统下活用History命令

编译安装,编译过程不做详细说明,本文中使用的编译参数为: ./configure –prefix=/usr/local/bash,安装成功后对应目录如下:

Linux系统下活用History命令Linux系统下活用History命令
Linux系统下活用History命令Linux系统下活用History命令

此时可以修改/etc/passwd中用户shell环境,也可以用编译好的文件直接替换原有的bash二进制文件,但最好对原文件做好备份。

替换时要注意两点:

1、一定要给可执行权限,默认是有的,不过有时候下载到windows系统后,再上传就没有可执行权限了,这里一定要确定,不然你会后悔的;

2、替换时原bash被占用,可以修改原用户的bash环境后再进行替换。

查看效果,我们发现history记录已经写到了/var/log/message中。

Linux系统下活用History命令Linux系统下活用History命令
Linux系统下活用History命令Linux系统下活用History命令

如果要写到远程logserver,需要配置syslog服务,具体配置这里不做详细讲解,大家自己研究,发送到远端logserver效果如下图所示。

Linux系统下活用History命令Linux系统下活用History命令
Linux系统下活用History命令Linux系统下活用History命令

通过以上手段,可以有效保证history记录的完整性,避免攻击者登录系统后,通过取消环境变量、删除history记录等方式抹掉操作行为,为安全审计、应急响应等提供了完整的原始数据。

以上就是良许教程网为各位朋友分享的Linux系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

img
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部