我在VPS上面运行了RouterOS的CHR版本,难免被暴力破解,因此之前写了一篇关于如何封禁SSH的文章,原理是通过解析日志,统计一段时间内某个IP登录失败次数来实现的。但是此脚本灵敏度依赖于脚本的执行周期,周期越短越灵敏,但是相应的也会对性能造成一些影响。

原文章:MikroTik RouterOS自动封禁SSH登陆失败次数过多的IP脚本

后来在网上看到一个官方的视频,通过Filter链表将SSH访问的源IP地址加入到地址列表中,达到封禁的目的。

一共是6条策略组成,必须按照顺序添加排列:

/ip firewall filter
add action=add-src-to-address-list address-list=blacklist address-list-timeout=1d chain=input comment="black list" \
connection-state=new dst-port=22 protocol=tcp src-address-list=connection3
add action=add-src-to-address-list address-list=connection3 address-list-timeout=1h chain=input comment="Third Connection" \
connection-state=new dst-port=22 protocol=tcp src-address-list=connection2
add action=add-src-to-address-list address-list=connection2 address-list-timeout=15m chain=input comment="second Connection" \
connection-state=new dst-port=22 protocol=tcp src-address-list=connection1
add action=add-src-to-address-list address-list=connection1 address-list-timeout=5m chain=input comment="First Connection" \
connection-state=new dst-port=22 protocol=tcp
add action=accept chain=input comment="Accept exclude blacklist" dst-port=22 protocol=tcp src-address-list=!blacklist
add action=drop chain=input comment="drop all protocol ssh" dst-port=22 protocol=tcp
第一条匹配来至第三次连接的地址列表,加入到blacklist列表,保存1天
第二条匹配来至第二次连接的地址类别,加入到connection3地址列表,保存1小时
第三条匹配来至第一次连接的地址列表,加入到connection2地址列表,保存15分钟
第四条匹配记录第一次SSH连接,连接类型new,加入到connection1地址列表,保存5分钟
第五条允许除了blacklist地址列表的SSH连接通过
第六条拒绝所有SSH连接
允许三次 SSH的连接请求(connection-type=new),当超过三次后会被加入blacklist,拒绝时间为1天。前三次的被允许存活时间分别是5分钟,15分钟和1小时

来源:RouterOS防御暴力破解防火墙策略(视频)

最后修改:2023 年 08 月 02 日
如果觉得我的文章对你有用,请随意赞赏