阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux安全运维之如何活用history命令

81次阅读
没有评论

共计 1733 个字符,预计需要花费 5 分钟才能阅读完成。

作者分离本人多年丰厚的工作实战经历,以简单、浅显易懂方式讲述了如何活用 history 命令。

Linux 安全运维之如何活用 history 命令

悬镜 Linux 运维

Linux 系统下可通过 history 命令查看用户所有的历史操作记录,在安全应急响应中起着非常重要的作用,但在未进行附加配置情况下,history 命令只能查看用户历史操作记录,并不能区分用户以及操作时间,不便于审计分析。

当然,一些不好的操作习惯也可能通过命令历史泄露敏感信息。

下面我们来介绍如何让 history 日志记录更细化,更便于我们审计分析。

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

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

Linux 安全运维之如何活用 history 命令

悬镜 Linux 运维

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

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

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

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

Linux 安全运维之如何活用 history 命令

悬镜 Linux 运维

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

Linux 安全运维之如何活用 history 命令

悬镜 Linux 运维

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

export HISTTIMEFORMAT=”%F %Twho -u am i 2>/dev/null| awk ‘{print $NF}’|sed -e ‘s/[()]//g’

whoami”,注意空格都是必须的。

Linux 安全运维之如何活用 history 命令

悬镜 Linux 运维

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

Linux 安全运维之如何活用 history 命令

悬镜 Linux 运维

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

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

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

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

修改源码:bashhist.c

Linux 安全运维之如何活用 history 命令

悬镜 Linux 运维

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

Linux 安全运维之如何活用 history 命令

悬镜 Linux 运维

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

Linux 安全运维之如何活用 history 命令

悬镜 Linux 运维

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

替换时要注意两点:

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

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

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

Linux 安全运维之如何活用 history 命令

悬镜 Linux 运维

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

Linux 安全运维之如何活用 history 命令

悬镜 Linux 运维

经过以上操作,能够有效保证 history 记载的完好性,防止攻击者登录系统后,经过取消环境变量、删除 history 记载等方式抹掉操作行为,为平安审计、应急响应等提供了完好的原始数据。

 

马哥学习交流群

马哥教育 -Linux 学习 - 1 群 485374463

马哥教育 -Linux 学习 - 2 群 339184057

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-12-03发表,共计1733字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中