History配置-到底是谁动了服务器

分类: linux

2021-02-01

|

633

|

评论:0

分享:

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

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

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

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

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

image.png




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

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

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

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

vim /etc/profile

export HISTTIMEFORMAT='%F %T '


image.png




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

image.png




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

vim /etc/profile

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


image.png




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




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

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

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

首先下载bash源码.

  1. 下载bash源码


wget http://ftp.gnu.org/gnu/bash/bash-4.4.tar.gz
tar -xf bash-4.4.tar.gz
cd bash-4.4


2. 编辑源码

vim bashhist.c


image.png

vim config-top.h

image.png

3. 编译安装

./configure --prefix=/usr/local/bash && make && make install

4. 替换/bin/bash

cp /usr/local/bash/bin/bash{,.bak}
cp -Rvf /bin/bash /tmp/ # 备份
cp -Rvf /usr/local/bash/bin/bash /bin/bash

5. 更改日志位置(可选)

# 创建日志文件
# touch /var/log/bash.log
# chmod 664 /var/log/bash.log
# /etc/rsyslog.conf末尾添加以下内容:
# user.info /var/log/bash.log


效果

image.png如果要写到远程logserver,需要配置syslog服务,具体配置这里不做详细讲解,大家自己研究,发送到远端logserver


参考文章: 

https://my.oschina.net/u/4196605/blog/4925912

https://www.wabks.com/post/601.html






转载请注明来源

文章:History配置-到底是谁动了服务器

链接:/article/17

作者:小辉辉

标签: linux history
本文共 0 个回复

发表评论 (对文章评论)

captcha