阻止来自 HAProxy LB 的 SSH 暴力破解

阻止来自 HAProxy LB 的 SSH 暴力破解

我们正在尝试使用在公共 DMZ 上设置的 HAProxy 授予对内部 SSH 服务器的访问权限。这按预期工作,但是到服务器的连接源自 HAProxy(tproxy 不起作用,因为 HAProxy 不是位于不同子网中的服务器的默认路由)。我们希望使用 fail2ban、denyhosts 或类似程序阻止暴力连接。

网络速览图

有没有办法阻止整个链条上的任何地方;SSH 服务器知道登录失败,但如果不阻止每个传入连接,就无法阻止。HAProxy 可以区分但不知道如何区分,syslog 将日志发送到 HAproxy 可能会起作用,但似乎没有一种干净的方法可以将 HAProxy 和 sshd 日志结合起来。HAProxy 上的速率限制等缓解控制已经到位。

在这种情况下处理暴力连接的最佳方法是什么?

答案1

我这样做的方式是在两个防火墙上使用基于策略的路由和正常的 NAT 设置。

您有两个防火墙:fw1一个是您的正常默认路由防火墙,另一个fw2是您的 ssh 入站防火墙。

该服务器分配有两个 IP 地址(在 eth0 和 eth0:1 上),服务器的默认路由指向 eth0 并出去fw1,eth0:1 上的 ip 地址用于选择具有指向的默认路由的不同路由表fw2

我用来设置的额外规则如下:

ip route add default via 192.168.42.251 table vpn
ip rule add fwmark 1 table vpn
ip rule add from 192.168.42.24 table vpn

192.168.42.24 地址分配给 eth0:1
机器fw1位于 192.168.42.1
机器fw2位于 192.168.42.251

的 nat iptable中的 DNAT 规则fw2必须将连接转发到 192.168.42.24 地址,而不是服务器的 eth0 地址(即 192.168.42.10)。

我记得该fwmark行对于基本入站使用来说不是必需的,但它允许我在 iptables 中使用“mangle”规则来指定某些连接自动出去fw2

最终结果是服务器始终看到来自其真实源 IP 地址的连接,因此源地址日志记录和 fail2ban 等功能无需修改即可正常工作。

相关内容