Client-IP an SSH-Jumpgateway hinter HAProxy

Started by AlexH, June 01, 2020, 10:38:10 AM

Previous topic - Next topic
Hallo zusammen,

ich betreibe ein SSH-Jumpgateway und Reverseproxy zusammen in einer VM. Das Setup basiert auf einem SSLH-Daemon und einem Nginx als Revrsproxy. Dieses Setup möchte ich nun gerne mittels HAProxy realisieren.
Ich versuche mich gerade an dem SSH-Jumpgateway. Die SSH-Connections bekomme ich auch an das passende Backend durchgereicht. Allerdings sehe ich auf dem Backend nur die IP-Adresse von der Opnsense und nicht die Client-IP.
Wie muss ich den HAProxy auf der Opnsense konfigurieren, damit ich die Clientip am Backend sehe. Dies benötige ich für Fail2Ban.


Gruß
Alex

June 01, 2020, 12:24:40 PM #1 Last Edit: June 01, 2020, 12:33:24 PM by hbc
Ob das technisch überhaupt möglich ist? Bei HTTP Reverse-Proxy wird die reale IP als zusätzliche Header-Anweisung übertragen (X-Forwarded-for, X-Client-IP) und kann dann am Webserver ausgewertet werden und das auch nur, wenn SSL-Offloading durchgeführt wird und haproxy den Header somit einfügen kann.
SSH dürfte so einen Mechanismus nicht haben, um die reale IP mitzugeben. Oder funktioniert es mit nginx als RevProxy und Du willst ihn durch haproxy ersetzen? Wie hast Du es dann mit nginx gelöst?

Aber opnSense unterstützt doch rate-limits in Regeln. Kannste doch dort blocken. Nach jedem falschen Login wird Verbindung  von SSHd beendet. Dann kannste z.B. konfigurieren max. 3 Verbindungen von IP pro 10min oder was halt Sinn gibt.
Intel(R) Xeon(R) Silver 4116 CPU @ 2.10GHz (24 cores)
256 GB RAM, 300GB RAID1, 3x4 10G Chelsio T540-CO-SR

Klar kann man die real IP mitgeben. Das einzige Problem: man braucht das Proxy-Protokoll und das ist teilweise kompliziert in der Konfiguration. In dem Fall müsste wahrscheinlich der sslh weg.

June 01, 2020, 09:39:49 PM #3 Last Edit: June 01, 2020, 10:00:46 PM by hbc
Dann müsste man mmproxy dazwischen schalten als PROXY Gateway... funktioniert halt nur, wenn der SSHd über Linux läuft.

https://serverfault.com/questions/620703/sshd-real-ip-behind-haproxy

https://blog.cloudflare.com/mmproxy-creative-way-of-preserving-client-ips-in-spectrum/
Intel(R) Xeon(R) Silver 4116 CPU @ 2.10GHz (24 cores)
256 GB RAM, 300GB RAID1, 3x4 10G Chelsio T540-CO-SR

Ja, mmproxy muss da laufen, wo auch der sshd läuft, also auf deinem Server. Dafür funktioniert es mit jeder Software auf TCP-Basis. Wüsste nicht, ob es da auch was für BSD-Server gibt oder für was auch immer du verwendest.

Vielen Dank für den Tip mit go-mmproxy, dass tut genau das was ich brauche.

Gruß
Alex