ssh访问控制,阻断异常IP,防止暴力破解

文章转载自:https://mp.weixin.qq.com/s/oktVy09zJAAH_MMKdXjtIA

由于业务需要将Linux服务器映射到公网访问,SSH 端口已经修改,但还是发现有很多IP进行暴力破解,尝试将异常IP阻止非法访问,实现方式①SSH黑名单 ②Firewalld防火墙添加drop规则;

SSH 黑名单实现思路

①通过lastb获取一小时区间非法登录系统的IP并通过AWK 统计>10次的IP;
②FOR 循环 实现SSH 黑名单添加;
③将SHELL 脚本添加到系统计划任务中。
客户端IP发起登录,Linux的检查策略是先看/etc/hosts.allow中是否允许,如果允许直接放行;如果没有,则再看/etc/hosts.deny中是否禁止。

#!/bin/bash
DATE=$(date +"%a %b %e %H")
DROP_IP=$(lastb |grep "$DATE" |awk '{a[$3]++}END{for(i in a)if(a[i]>10)print i}')
for IP in $DROP_IP; do
    if [ $(cat /etc/hosts.deny |grep -c "$IP") -eq 0 ]; then
        echo "sshd:$IP:deny" >> /etc/hosts.deny      
fi
done

Firewalld实现思路

①通过lastb获取一小时区间非法登录系统的IP并通过AWK 统计>10次的IP;
②FOR 循环 实现fFirewalld防火墙添加drop规则并重新加载防火墙配置;
③将SHELL 脚本添加到系统计划任务中。


#!/bin/bash
DATE=$(date +"%a %b %e %H")
DROP_IP=$(lastb |grep "$DATE" |awk '{a[$3]++}END{for(i in a)if(a[i]>10)print i}')
for ip in $DROP_IP; do
    if [ $(firewall-cmd  --list-all |grep drop |grep -c "$ip") -eq 0 ]; then
       firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="$ip" drop" >> /dev/null
       firewall-cmd --reload >>/dev/null
      fi
done

计划任务


[root@ecs-01 opt]# crontab    -e
#每5分钟执行一次
*/5 * * * *  /usr/bin/bash /opt/fwdrop.sh
*/5 * * * *  /usr/bin/bash /opt/sshdrop.sh

Firewall 配置

查看 rich-rule

firewall-cmd   --list-rich-rules --zone=public

允许 rich-rule ip

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.8" accept'

禁止 rich-rule ip

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.8" drop'

删除 rich-rule ip

firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.10.8" drop'

允许 rich-rule ip + port

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.8" port protocol="tcp" port="22" accept'

禁止 rich-rule ip + port

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.10.8" port protocol="tcp" port="22" drop'

删除 rich-rule ip + port

firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.10.8" port protocol="tcp" port="22" drop'

禁止 rich-rule icmp

firewall-cmd   --permanent --add-rich-rule='rule protocol value=icmp drop'

删除rich-rule icmp

firewall-cmd   --permanent --remove-rich-rule='rule protocol value=icmp drop'
posted @ 2021-11-20 17:46  哈喽哈喽111111  阅读(554)  评论(0编辑  收藏  举报