shell历史命令记录功能

简介:

在Linux下可通过history命令查看用户所有的历史操作记录,同时shell命令操作记录默认保存在用户目录下的.bash-history文件中,通过这个文件可以查询shell命令的执行历史,有助于运维人员进行系统审计和问题排查,同事,在服务器遭受黑客攻击后,也可以通过这个命令或文件查询黑客登录服务器所执行的历史命令操作,但是有时候黑客在入侵服务器后为了毁灭痕迹,可能会删除.bash_history文件,这就需要合理保护或备份.bash_history文件


让history命令自动记录所有shell命令的执行时间,编辑/etc/bashrc文件,最后添加如下内容:

===============

HISTFILESIZE=4000

HISTSIZE=4000

HISTTIMEFORMAT='%F %T '

export HISTTIMEFORMAT

===============

使配置生效source /etc/bashrc

其中,HISTFILESIZE定义了在.bash_history文件中保存命令的记录总数,默认值是1000,这里设置为4000;HISTSIZE定义了history命令的输出的记录总数;

HISTTIMEFORMAT定义时间显示格式,这里的格式与date命令后的“+%F %T”是一致的;HISTTIMEFORMAT作为history的时间变量将值传递给history命令。

通过这样的设置后,执行history命令,就会显示每条历史命令的详细执行时间,例如:

wKioL1cXAb_BB5v-AAAvAdLdRFc320.png

spacer.gif


为了确保服务器的安全,保留shell命令的执行历史是非常有用的一条技巧,虽然shell有历史功能,但是这个功能并非针对审计目的而设计,因此很容易被黑客篡改或丢失;

下面在介绍一种方法,可以实现详细记录登陆过系统的用户、IP地址、shell命令以及详细操作时间等,并将这些信息以文件的形式保存在一个安全的地方,以供系统审计和故障排查。

将下面这段代码添加到/etc/profile文件末尾中,即可实现上述功能

======================================


#history

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`

HISTDIR=/usr/share/.history

if [ -z $USER_IP ]

then

USER_IP=`hostname`

fi

if [ ! -d $HISTDIR ]

then

mkdir -p $HISTDIR

chmod 777 $HISTDIR

fi

if [ ! -d $HISTDIR/${LOGNAME} ]

then

mkdir -p $HISTDIR/${LOGNAME}

chmod 300 $HISTDIR/${LOGNAME}

fi

export HISTSIZE=4000

DT=`date +%Y%m%d_%H%M%S`

export HISTFILE="$HISTDIR/${LOGNAME}/${USER_IP}.history.$DT"

export HISTTIMEFORMAT="[%Y.%m.%d %H:%M:%S]"

chmod 600 $HISTDIR/${LOGNAME}/*.history* 2>/dev/null


=======================================

使配置生效 source /etc/profile

每段代码将每个用户的shell命令执行历史以文件的形式保存在/usr/share/.history目录中,每个用户一个文件夹,并且文件夹下的每个文件以IP地址加shell命令操作时间的格式命名,下面是user01用户执行shell命令的历史记录文件,基本效果如下:

spacer.gifwKioL1cXAebxpWnZAAAq57EBkFs900.png


本文转自    蜗牛远途   51CTO博客,原文链接:http://blog.51cto.com/ywliyq/1765711
相关文章
|
4天前
|
分布式计算 Hadoop Shell
使用shell脚本实现自动SSH互信功能
使用shell脚本实现自动SSH互信功能
10 1
|
7天前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
19天前
|
网络协议 Unix Shell
第十一章 Shell常用命令与工具(二)
第十一章 Shell常用命令与工具(二)
|
19天前
|
移动开发 Shell Linux
第十一章 Shell常用命令与工具(一)
第十一章 Shell常用命令与工具(一)
|
24天前
|
存储 Shell 数据安全/隐私保护
ZooKeeper【基础知识 04】控制权限ACL(原生的 Shell 命令)
【4月更文挑战第11天】ZooKeeper【基础知识 04】控制权限ACL(原生的 Shell 命令)
27 7
|
25天前
|
Shell
ZooKeeper【基础 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)
【4月更文挑战第10天】ZooKeeper【基础 02】zookeeper-3.6.0 常用Shell命令(节点增删改查+监听器+四字指令)
25 0
|
1月前
|
分布式计算 Hadoop Shell
Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第4天】Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
33 5
|
1月前
|
Shell Linux
在linux shell脚本中root切换到普通用户执行脚本或命令的方法
在linux shell脚本中root切换到普通用户执行脚本或命令的方法
13 1
|
1月前
|
Shell
shell学习(三)【shell变量、数组,文件命令、特殊变量】
shell学习(三)【shell变量、数组,文件命令、特殊变量】
14 0
|
1月前
|
Shell
shell 命令(一)概述【别名、 bash重定向 、定义变量】
shell 命令(一)概述【别名、 bash重定向 、定义变量】
23 0