VPS登陆次数限制
前言
继上次爆破防御后,依然有陌生IP骚扰,百无聊赖,续作此篇;
1. 始终允许IP
假设IP:192.168.18.1 是经常登录的IP,填入
/etc/hosts.allow
,当然 :allow
是可以省略的。当hosts.allow
和host.deny
相冲突时,
以hosts.allow
设置为准
$ echo "sshd:192.168.18.1:allow" >> /etc/hosts.allow
2. 写脚本
在路径 /usr/local/bin/
下,创建文件
secure_ssh.sh
,
错误次数大于个位数,即错误次数大于等于10就将IP列入黑名单(判断见行7)。
$ vim /usr/local/bin/secure_ssh.sh
内容如下:
#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /usr/local/bin/black.list
for i in `cat /usr/local/bin/black.list`
do
IP=`echo $i |awk -F= '{print $1}'`
NUM=`echo $i |awk -F= '{print $2}'`
if [ ${#NUM} -gt 1 ]; then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];then
echo "sshd:$IP:deny" >> /etc/hosts.deny
fi
fi
done
3. 列入计划
将脚本文件每一分钟执行一次 (* /1 * * * * )
$ crontab -e
/1 * * * * sh /usr/local/bin/secure_ssh.sh
或
* * * * * sh /usr/local/bin/secure_ssh.sh
4. 后记
1).查看记录列表
$ cat /usr/local/bin/black.list
2).清空记录列表
black.list
文件是根据secure
日志文件通过上面脚本文件生成的,且每分钟会覆盖一次
$ echo "" > /var/log/secure
$ echo "" > /usr/local/bin/black.list
3).修改hosts.deny文件
手动添加或删除IP记录
$ vim /etc/hosts.deny