Die Portumleitung 443 auf 8443 funktioniert für meine Tomcat-Instanz nicht

Die Portumleitung 443 auf 8443 funktioniert für meine Tomcat-Instanz nicht

ich verwende Ubuntu Headless Server 18.04 auf einem dedizierten Hostserver. Der Hoster hat eine externe Firewall, wo ich die Ports 8443,443 (TCP) geöffnet habe. Auf meinem Ubuntu-Server verwende ich iptables, wo ich den Port 443 mit der Tabelle nat auf 8443 umgeleitet habe.

iptables -A PREROUTING -t nat -p tcp --dport 443 -j REDIRECT --to-ports 8443

außerdem habe ich im eingehenden und ausgehenden Verkehr die Ports 443 und 8443 geöffnet.

ich kann immer noch mit example.com:8443 auf die Tomcat-Instanz zugreifen und habe kein Problem, aber example.com antwortet nicht. Wenn ich in iptables nachschaue, sehe ich kein Drop-Paket. Auf meiner Tomcat-Instanz ändere ich die server.xml nicht. Der Connector hört 8443. Ich weiß nicht, wo das Problem liegt? Ich hoffe, einige Experten können mir helfen, das Problem zu beheben.

Mit freundlichen Grüße

Schwarzbart

Antwort1

Was Sie hier wirklich brauchen, ist ein Reverse-Proxy (wie etwa Nginx), der die SSL-Terminierung für Sie auf Port 443 durchführen und die Anfrage dann an Tomcat auf Port 8443 weiterleiten kann.

SSL/TLS ist komplex und meiner Ansicht nach ist es keine gute Idee, sich bei der Abwicklung des SSL-Handshakes und der Übermittlung Ihrer Anfrage an die Tomcat-Anwendung auf IPTABLES zu verlassen.

Wenn Sie IPTABLES wirklich verwenden müssen, stellen Sie eine Verbindung zum Dienst her opensslund finden Sie heraus, was genau passiert. Melden Sie die Ausgabe hier und möglicherweise erhalten Sie weitere Hilfe.

openssl s_client -connect www.example.com:443

Das Problem kann auch daran liegen, dass Sie die Tabelle verwenden nat. Meines Wissens werden Regeln für diese Tabelle nur angewendet, wenn die Anfragen weitergeleitet werdendurchder Server, anstatt zu einem anderen Port auf derselben IP-Adresse weitergeleitet zu werden.

Ein Reverse-Proxy würde einen Großteil dieser Komplexität beseitigen und Ihnen zudem viele weitere Funktionen bieten (z. B. Ratenbegrenzung, Zugriffskontrolle usw.).

Antwort2

Dies hängt möglicherweise davon ab, an welche Schnittstelle Ihr Tomcat gebunden ist. Wenn er an die Loopback-Schnittstelle gebunden ist, funktioniert dies überhaupt nicht.

Meistens wird das REDIRECT-Ziel mit einer angegebenen Schnittstelle verwendet, wie:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 443 -j REDIRECT --to-port 8443

(ersetzen Sie eth1 durch die tatsächliche Netzwerkschnittstelle, auf der Tomcat ausgeführt wird)

REDIRECT ist eine praktische Methode für das DNAT-Ziel. Wenn das oben genannte nicht funktioniert, können Sie Folgendes versuchen:

iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 10.0.0.1:8443

(ersetzen Sie 10.0.0.1 durch die IP-Adresse Ihres Computers)

verwandte Informationen