
Kann ich mit HAproxy den Datenverkehr von allen anderen Backend-Servern in einem Pool an einen Backend-Server weiterleiten? Aus Netzwerksicht wäre dies vergleichbar mit der Spiegelung aller Ports eines Switches auf einen Port zur Überprüfung. Auf diese Weise könnte ich den gesamten Datenverkehr unverschlüsselt an eine Loopback-Adresse weiterleiten und ihn mit SNORT überprüfen.
Derzeit verschlüsseln wir den gesamten Datenverkehr in unseren HAproxy-Knoten und senden diesen Datenverkehr verschlüsselt an unsere Webserver. Wir haben ein Out-of-Band-IDS, da es jedoch nur unser Zertifikat zum Entschlüsseln des Datenverkehrs hat, können wir auf Haproxy weder Perfect Forward Secrecy noch Diffie-Helman-Chiffren implementieren.
Ich habe Anleitungen gelesen, die dies mit einer F5 ermöglichen, für uns ist das jedoch keine Option.
Vielen Dank für alle Informationen, die Sie geben können.
Antwort1
HAProxy kann dies nicht selbst tun, aber wenn Sie eine Reihe relativ einfacher frontend/listen
Deklarationen verwenden, können Sie das iptables
TEE
Ziel verwenden (sieheHierfür die Verwendung), sollte es ziemlich einfach sein.
Für ein System, bei dem die „öffentliche“ IP des Servers 10.10.10.10 ist, dessen Backends 192.168.1.11 und 192.168.1.12 sind und dessen IDS 172.16.172.10 ist, würde die HAProxy-Konfiguration ungefähr so aussehen:
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
Dadurch wird im Wesentlichen der gesamte Datenverkehr von IN
nach weitergeleitet INTERMEDIARY
, in welcher Form auch immer er auf dem Server eingegangen ist. Anschließend INTERMEDIARY
werden die Anforderungen entschlüsselt und die gewünschten Entscheidungen getroffen.
Sie müssen dann iptables
Regeln einrichten, die wie folgt aussehen:
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
Dies setzt natürlich voraus, dass alle Routen und Netzwerke eingerichtet sind, aber es sollte funktionieren.
Ich nehme an, Sie könnten einfach den ganzen HAProxy-Kram weglassen und einige iptables
Regeln einrichten, die Ihren Backend-Hosts entsprechen und TEE
den Datenverkehr direkt zu Ihrem IDS leiten.
# 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