VPS登陆次数限制

前言

继上次爆破防御后,依然有陌生IP骚扰,百无聊赖,续作此篇;


1. 始终允许IP

假设IP:192.168.18.1 是经常登录的IP,填入 /etc/hosts.allow ,当然 :allow 是可以省略的。当hosts.allowhost.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