使用 HAproxy,我可以将流量从池中的所有其他后端服务器引导到后端服务器吗?从网络角度来看,这相当于将交换机上的所有端口镜像到一个端口进行检查。这样,我可以将所有未加密的流量传递到环回地址并使用 SNORT 检查它。
目前,我们将所有进入 HAproxy 节点的流量加密,并将加密后的流量发送到我们的网络服务器。我们有一个带外 IDS,但是由于它只有我们的证书才能解密流量,因此我们无法在 haproxy 上实现完美的前向保密或 diffie-helman 密码。
我读过一些指南,其中允许您使用 F5 执行此操作,但这对我们来说不是一个选择。
感谢您提供的任何见解。
答案1
HAProxy 无法自行完成此操作,但如果您使用一组相当简单的frontend/listen
声明,则可以使用iptables
TEE
目标(请参阅这里对于使用来说,它应该相当简单。
对于服务器的“公共” IP 为 10.10.10.10、后端为 192.168.1.11 和 192.168.1.12 且 IDS 为 172.16.172.10 的系统,HAProxy 配置将如下所示:
listen IN
mode tcp
bind 10.10.10.10:443
<other HAProxy options/directives here>
server hap-intermediary 127.1.1.1:443
frontend INTERMEDIARY
mode http
bind 127.1.1.1:443 ssl crt /path/to/cert.pem
<other HAProxy options/directives here>
<backend selection logic, if needed>
default_backend SERVERS
backend SERVERS
<other HAProxy options/directives here>
server server1 192.168.1.11:443 check check-ssl ssl
server server2 192.168.1.12:443 check check-ssl ssl
这基本上只是将所有流量以进入服务器的任何形状传递IN
,INTERMEDIARY
然后INTERMEDIARY
解密请求并做出您想要的任何选择。
然后您需要设置iptables
如下规则:
iptables -t mangle -A PREROUTING -d 127.1.1.1 -j TEE --gateway 172.16.172.10
iptables -t mangle -A POSTROUTING -s 127.1.1.1 -j TEE --gateway 172.16.172.10
当然,这假设所有路线和网络都已设置,但它应该可以工作。
我想您可以废除所有 HAProxy 内容并设置一些iptables
规则来匹配您的后端主机并将TEE
流量直接发送到您的 IDS。
# Server 1
iptables -t mangle -A PREROUTING -d 192.168.1.11 -j TEE --gateway 172.16.172.10
iptables -t mangle -A POSTROUTING -s 192.168.1.11 -j TEE --gateway 172.16.172.10
# Server 2
iptables -t mangle -A PREROUTING -d 192.168.1.12 -j TEE --gateway 172.16.172.10
iptables -t mangle -A POSTROUTING -s 192.168.1.12 -j TEE --gateway 172.16.172.10