根据ssh远程登录错误次数自动限制IP/防止ssh暴力攻击

Linux 3607℃

防止ssh暴力破解可以从这几个方面控制:

  1. 更改ssh默认22端口,但是攻击者可以使用端口扫描工具(如nmap)重新找到你的ssh登陆端口;
  2. 可以限制root账户远程登陆,自己需要使用root身份时执行su -或sudo,这个办法还行,能够有效防止;
  3. 但有时候,攻击者使用大量肉鸡来暴力破解会对主机网络造成一定影响,可以将攻击来源IP加入/etc/hosts.deny中来拒绝该IP尝试登陆。

我们可以在第三种办法基础上,通过shell脚本自动将错误登陆10次以上的IP加入拒绝列表,首先编写脚本如下:

vim secure_ssh.sh
#! /bin/bash
cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /home/sxdgy/lastb
for i in `cat  /home/sxdgy/lastb`
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

然后给脚本附上执行权限,再加入到自动任务中,根据自身情况设置好执行间隔:

chmod u+x secure_ssh.sh
vim /etc/crontab
#在末尾加上自动任务,一小时执行一次
01 * * * * root /root/secure_ssh.sh

保存退出,等到触发时间到了就可以看到已经在/etc/hosts.deny文件中加入许多拒绝的IP:

cat /etc/hosts.deny 
sshd:103.110.96.41:deny
sshd:103.207.39.202:deny
sshd:103.230.240.193:deny
sshd:103.58.116.8:deny
sshd:104.248.224.156:deny
sshd:109.248.9.9:deny
sshd:110.185.166.137:deny
sshd:112.85.42.102:deny
sshd:112.85.42.150:deny

转载请注明:零五宝典 » 根据ssh远程登录错误次数自动限制IP/防止ssh暴力攻击