前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >ssh访问控制,阻断异常IP,防止暴力破解

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

作者头像
Kevin song
发布2021-11-30 16:01:31
发布2021-11-30 16:01:31
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

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

SSH 黑名单实现思路

①通过lastb获取一小时区间非法登录系统的IP并通过AWK 统计>10次的IP;

②FOR 循环 实现SSH 黑名单添加;

③将SHELL 脚本添加到系统计划任务中。

客户端IP发起登录,Linux的检查策略是先看/etc/hosts.allow中是否允许,如果允许直接放行;如果没有,则再看/etc/hosts.deny中是否禁止。

代码语言:javascript
代码运行次数:0
复制
#!/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 脚本添加到系统计划任务中。

代码语言:javascript
代码运行次数:0
复制
#!/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

计划任务

代码语言:javascript
代码运行次数:0
复制
[root@ecs-01 opt]# crontab    -e
#每5分钟执行一次
*/5 * * * *  /usr/bin/bash /opt/fwdrop.sh
*/5 * * * *  /usr/bin/bash /opt/sshdrop.sh

Firewall 配置

rich-rule

查看 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'

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档