Ubantu防止SSH暴力穷举密码多次登录失败封IP

Linux 系统SSH 登录失败的内容会记录到/var/log/secure文件,Ubantu的记录文件在/var/log/auth.log里,
先在/etc/hosts.allow: 设置允许哪些IP访问主机

sshd:XXX.XXX.XXX.XXX:allow
sshd:1.2.3.4:allow
sshd:123.234.56.78:allow

XXX.XXX.XXX.XXX代表你本地ip,如果你是动态的,ip只换后两位,那么可以跟我一样(建议动态ip不要继续往下看了,不要搞坑太大)

sshd:123.234.:allow

在root文件夹建立一个ssh_black.sh文件

内容:

cat /var/log/auth.log | awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /home/ubuntu/black.txt
#cat /var/log/secure|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /root/black.txt
DEFINE="5"
for i in `cat  /home/ubuntu/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:deny" >> /etc/hosts.deny
      fi
    fi
done
systemctl restart sshd

然后 给个执行权限

#chmod +x /root/ssh_black.sh
#cat /etc/hosts.deny

测试一下

# ./ssh_black.sh

#cat /etc/hosts.deny

 

最后将ssh.sh脚本放入cron计划任务,每1小时执行一次。

# crontab -e
7 */1 * * * sh /usr/local/bin/ssh_black.sh

 

另外禁用登录方法:

用户登录禁用启用:

 

启用打开 /etc/ssh/sshd_config 设置AllowUsers选项:
#允许wzl用户登录
AllowUsers wzl
#允许wzl用户从192.168.1.1登录
AllowUsers wzl@192.168.1.1
#重启sshd服务
systemctl restart sshd

 

禁用打开 /etc/ssh/sshd_config 设置AllowUsers选项
#禁止wzl用户登录
DenyUsers wzl
#允许wzl用户从192.168.1.1登录
AllowUsers wzl@192.168.1.1
#重启sshd服务
systemctl restart sshd

 

IP登录禁用启用
启用打开 /etc/hosts.allow 允许指定IP登录:
#允许192.168.1.1登录
sshd:192.168.1.1:allow
#允许IP段登录
sshd:192.168.1.1/100:allow
#重启sshd服务
systemctl restart sshd

 

禁用打开 /etc/hosts.deny 拒绝所有IP地址登录:
#禁止所有IP登录
sshd:ALL
#重启sshd服务
systemctl restart sshd
扫码领红包

微信赞赏支付宝扫码领红包

发表回复

后才能评论