SSH brute-force protection

本页说明如何通过在 MikroTik RouterOS 上使用防火墙过滤器来配置暴力破解防护,在多次登录失败后阻止 SSH 登录尝试,并为每个尝试级别设置不同的超时时间,最终对合法用户予以放行。

暴力破解防护

本示例演示如何保护 SSH 端口免受暴力破解攻击。请注意,SSH 每个连接允许 3 次登录尝试,并且地址列表在成功登录后不会被清除。这意味着如果你触发了防护机制,可能会不小心将自己加入黑名单。

/ip/firewall/filter/add action=add-src-to-address-list address-list=bruteforce_blacklist address-list-timeout=1d chain=input comment="Blacklist" connection-state=new dst-port=22 protocol=tcp src-address-list=connection3

/ip/firewall/filter/add action=add-src-to-address-list address-list=connection3 address-list-timeout=1h chain=input comment="Third attempt" connection-state=new dst-port=22 protocol=tcp src-address-list=connection2

/ip/firewall/filter/add action=add-src-to-address-list address-list=connection2 address-list-timeout=15m chain=input comment="Second attempt" connection-state=new dst-port=22 protocol=tcp src-address-list=connection1

/ip/firewall/filter/add action=add-src-to-address-list address-list=connection1 address-list-timeout=5m chain=input comment="First attempt" connection-state=new dst-port=22 protocol=tcp

/ip/firewall/filter/add action=accept chain=input dst-port=22 protocol=tcp src-address-list=!bruteforce_blacklist

如果所有三个连接列表都使用 1 分钟的超时,攻击者每分钟可以猜测 9 次。使用上面的结构,最大值是每 5 分钟猜测 3 次。

警告

地址列表的命名遵循 Port knocking 一文中使用的约定。类似的命名方案也被使用,其中受信任的地址列表被命名为 "secured"。