90swj 阅读(7) 评论(0)

不知道作为运维的你有没有体会过这样一种情况:

当某天你的服务器发生异常情况,例如某个文件莫名被删除了,或者某个文件被人私自篡改,甚至是发生安全事件等等,这时你的经理找到你要你查个水落石出,于是你想看看history里有没有一些异常的操作,当你在终端里敲完history命令之后,看到的结果,却敌我难分,例如某个rm -rf的操作到底是自己人做的操作还是有人未经同意做得操作呢,此时的结果看不到详细的信息,只能看到操作的指令,但是你很想看这些指令到底是在什么时候执行的,哪个用户执行的,哪个终端执行的,甚至是终端的ssh远程IP是多少等等,遇到这些情况你可能在一阵噼里啪啦之后一筹莫展,不知道从何下手。但是别担心,今天给大家推出解决方案:

注意事项(必读):

  • 此方案会导致所有存在的历史记录变成当前日期的时间,如果你们决定忽略以前的历史记录,那么建议先敲history -c清空历史记录,再按照以下步骤实施就是了。
  • 建议新机器第一件事就是部署该方案

1,编辑/etc/profile

在文件内容末尾添加如下内容:

1 w -uh>$HOME/.cache_tty;grep "`tty|cut -d '/' -f3,4`" $HOME/.cache_tty|awk '{print $3}'>$HOME/.cache_tty_ip
2 export HISTTIMEFORMAT="`whoami` `tty|cut -d '/' -f3,4` $(w -uh>$HOME/.cache_tty;grep "`tty|cut -d '/' -f3,4`" $HOME/.cache_tty|awk '{print $3}') %F %T "

示例图:

 

2,保存退出然后敲history命令验证是否生效:

1 history

如下图可以看出已经生效: