发布于 

服务器怎么防止ssh暴力破解

主要原理是通过定时任务自动将攻击者 IP 添加至 /etc/hosts.deny 文件。

首先将自己的常用 IP 加入 /etc/hosts.allow,防止误封。

1
vim /etc/hosts.allow 

添加一行 all:192.168.1.2:allow,其中 192.168.1.2 换成自己现在的 IP 地址。

脚本 /usr/local/bin/secure_ssh.sh 内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
. /etc/profile
. /root/.bash_profile
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 "all:$IP" >> /etc/hosts.deny
/bin/systemctl restart sshd.service
fi
fi
done

加入定时任务,每 1 分钟执行一次。

1
crontab -e

添加一行 */1 * * * * sh /usr/local/bin/secure_ssh.sh 即可。