Linux历史命令的记录与隐藏

您所在的位置:网站首页 linux运行命令不显示log Linux历史命令的记录与隐藏

Linux历史命令的记录与隐藏

2023-03-06 21:22| 来源: 网络整理| 查看: 265

linux下历史命令通常有两大用处,一个是快速复用,另外是审计,快速复用在之前的文章linux命令行技巧中提过,有兴趣的可以去看看,今天主要说审计部分,分两部分:记录历史命令和隐藏命令行历史,分别针对运维防护及入侵渗透,下面分别介绍

记录所有用户历史命令

原本的linux默认记录1000条历史记录,且只记录命令,完全没办法做审计,当遇到服务器入侵等情况,做审计工作时,如果你没有开启audit,或其他第三方审计工具,在通过history做审计的时候,即便命令不被清除,你也只能看到历史命令,看不到其他任何信息,审计很不方便

这边直接上代码

PS1="`whoami`@`hostname`:"'[$PWD]' history USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'` if [ "$USER_IP" = "" ] then USER_IP=`hostname` fi if [ ! -d /tmp/dbasky ] then mkdir /tmp/dbasky chmod 777 /tmp/dbasky fi if [ ! -d /tmp/dbasky/${LOGNAME} ] then mkdir /tmp/dbasky/${LOGNAME} chmod 300 /tmp/dbasky/${LOGNAME} fi export HISTSIZE=4096 DT=`date "+%Y-%m-%d_%H:%M:%S"` export HISTFILE="/tmp/dbasky/ chmod 600 /tmp/dbasky/${LOGNAME}/*dbasky* 2>/dev/null

将以上命令复制到/etc/profile下面,source /etc/profile 使生效,重新登陆就可以看到历史命令记录

简单解释一下,以上部分脚本是在/tmp目录下创建一个dbasky目录,用来存放所有的用户的历史命令,HISTSIZE设置为4096条,可以根据自己情况自定义,在该目录下,不同的用户名分别在不同的文件夹下,历史命令文件以用户IP+日期的形式记录

这样在后期做审计的时候,可以很快速的找到某用户某时间的历史命令

如果需要记录哪条命令是哪个时刻执行的,需要自定义HISTTIMEFORMAT,添加时间在命令之前

或者觉得上面的方法比较复杂,那你就直接用HISTTIMEFORMAT定义历史记录格式,然后通过修改HISTSIZE,增加历史命令记录数量

你还可以在这里增加用户,以及客户端IP等

隐藏你的命令行历史

相对于命令行记录,隐藏命令行历史,除了在渗透测试中使用,还有一些使用场景,比如特权命令不想被别人看到,或者比较重要的命令不希望在浏览历史命令时被误执行

这里说的不是完全意义上的禁用历史命令记录,如果你要那么做,那你直接在环境变量/etc/profile中将HISTSIZE设置为0即可

下面的几个方法是临时隐藏命令行历史

在命令前插入空格

在命令行前插入空格是最简单的方式,但是这个方式的前提是环境变量HISTCONTROL的支持,在HISTCONTROL中有四种模式

export HISTCONTROL=erasedups # 清除整个命令历史中的重复条目 export HISTCONTROL=ignoredups # 忽略记录命令历史中连续重复的命令 export HISTCONTROL=ignorespace # 忽略记录空格开始的命令 export HISTCONTROL=ignoreboth # 等价于ignoredups和ignorespace

在命令行前插入空格,而不记录历史命令,需要HISTCONTROL为ignorespace或ignoreboth的情况,默认HISTCONTROL为ignoredups(CentOS6、7),所以需要先执行export设置HISTCONTROL为上面说的两种模式,之后在当前环境变量下执行命令不被记录

HISTSIZE设置当前会话历史命令记录

在前面提到,通过HISTSIZE=0,可以关闭历史命令记录,那么我们可以通过export HISTSIZE=0的方式,关闭当前会话的历史命令记录,而不影响全局

通过set命令来配置关闭history

linux下set命令可以用于设置shell环境变量和shell执行方式

set通过+或-号来设置选项关闭或开启,o选项用于指定选项名

所以通过set +o history的方式,可以关闭history,当然,也可以在set前面加空格,那么该命令也不会被记录

然后再通过set -o history的方式,开启history,这种方式的好处在于,你不必全部清除所有历史命令,这样在渗透过程中可以灵活屏蔽不想被记录的命令,而不会被审计人员发现

history命令管理

最后这种方式就是直接通过history命令来清除部分或全部历史命令

通过history -c命令可以清除所有历史命令,在操作完成之后,可以通过这种方式清除所有历史记录,这种方式可以完成隐藏,但是会露马脚

另外就是通过history -d 命令行id的方式,删除想要删除的命令,不过最好在history命令前加空格,这样做比较隐秘,这种方式首先需要通过history命令结合grep等查找命令,查寻要删除命令的id,通过删除这个id来删除历史命令

或者通过上下键翻找历史命令,通过Ctrl+U来清除当前行的记录

不过这种方式会留个小马脚

ok,以上就是今天要介绍的linux下命令历史记录的保存及隐藏方式



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3