CentOS系统中对用户登录历史记录,存储在以下文件中:
- /var/run/utmp(用于记录当前打开的会话)被who和w工具用来记录当前有谁登录以及他们正在做什么,而uptime用来记录系统启动时间。
- /var/log/wtmp (用于存储系统连接历史记录)被last工具用来记录最后登录的用户的列表。
- /var/log/btmp(记录失败的登录尝试)被lastb工具用来记录最后失败的登录尝试的列表。
utmpdump命令
来自sysvinit-tools包,可以用于转储二进制日志文件到文本格式的文件以便检查。
utmpdump /var/run/utmp
utmpdump /var/log/btmp
utmpdump /var/log/wtmp
utmpdump从utmp、wtmp和btmp日志文件或轮循的旧归档文件来读取详细的登录事件,来补充如who,w,uptime,last,lastb之类的标准工具的不足,这也使得它成为一个很棒的工具。
知道了怎么查看日志,如何防御呢?
添加单个黑名单只需要把ip添加到 /etc/hosts.deny
sshd:192.168.0.xxx:deny
允许IP访问的放置在白名单 /etc/hosts.allow
sshd:192.168.0.xxx:allow
下面是自动拦截攻击并加入黑名单的自动化脚本(未实测)
1,创建脚本文件:
mkdir /usr/local/bin/ipblock.sh
#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /data/doc/black.txt
for i in `cat /data/doc/black.txt`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i|awk -F= '{print $2}'`
if [ $NUM -gt 5 ];then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo "sshd:$IP:deny" >> /etc/hosts.deny
fi
fi
done
2,添加执行权限
chmod +x /usr/local/bin/ipblock.sh
3,创建记录日志文件
touch /data/doc/black.txt
4,创建定时任务
crontab -e
*/5 * * * * sh /usr/local/bin/ipblock.sh
5,测试查看