在linux系统的环境下,由于可以多用户进行登录,有时候会出现一些混乱,有时候会误删一些数据,如果想查出恶意进攻的用户及IP地址,这就需要我们对远程连接的用户进行监控。下面给出具体实现方法。
通过在/etc/profile里面加入以下代码就可以实现:
#PS1就是用来设置命令提示符的环境变量
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/loghistory ]
then
mkdir /tmp/loghistory
chmod 777 /tmp/loghistory
fi
if [ ! -d /tmp/loghistory/${LOGNAME} ]
then
mkdir /tmp/loghistory/${LOGNAME}
chmod 300 /tmp/loghistory/${LOGNAME}
fi
# 保存历史命令条数
export HISTSIZE=4096
DT=`date "+%Y-%m-%d_%H:%M:%S"`
# 设置保存历史命令的文件
export HISTFILE="/tmp/loghistory/${LOGNAME}/${USER_IP}.loghistory.$DT"
chmod 600 /tmp/loghistory/${LOGNAME}/*loghistory* 2>/dev/null
source /etc/profile 使用脚本生效
退出用户,重新登录(注销)
查看命令记录(本地:0.)
cd /tmp/whodone/
清理180天history
vi clear_history.sh
#!/bin/bash
var=/tmp/whodone/
cd $var
user=`ls $var`
for i in ${user};
do
cd $var$i
find . -name *done* -mtime +180 | xargs rm -rf
done
exit 0