防止SSH被暴力破解

2011年12月6日 | 分类: linux学习笔记 | 标签:

今天上VPS想查看下SSH的登录日志,发现在/var/log/secure里面记录了好多失败的记录,想来肯定是某些无聊人士的无聊之作吧!不过还真怕他们无聊之中把密码给“无聊”出来,于是便搜索了下防止暴力破解SSH的脚本。

#! /bin/bash
cat /var/log/secure|awk ‘/Failed/{print $(NF-3)}’|sort|uniq -c|awk ‘{print $2″=”$1;}’ > /root/black.txt
DEFINE=”20″
for i in `cat /root/black.txt`
do
IP=`echo $i |awk -F= ‘{print $1}’`
NUM=`echo $i|awk -F= ‘{print $2}’`
if [ $NUM -gt $DEFINE ];
then
grep $IP /etc/hosts.deny > /dev/null
if [ $? -gt 0 ];
then
echo “sshd:$IP” >> /etc/hosts.deny
fi
fi
done

hosts.deny和hosts.allow可以控制外部IP对本机服务的访问。这两个配置文件的格式如下:

#服务进程名:主机列表:当规则匹配时可选的命令操作

/etc/hosts.allow控制可以访问本机的IP地址,/etc/hosts.deny控制禁止访问本机的IP。如果两个文件的配置有冲突,以/etc/hosts.deny为准。

将上面的脚本保存为denyssh.sh文件,赋予执行权限,然后添加到crond定时执行。


* */1 * * * root sh /home/denyssh.sh

 

  1. 2011年12月20日09:47

    越来越专业了。

    [回复]