iptables ermöglicht den Zugriff auf meine persönliche Website, wenn ich mich in meinem LAN befinde, blockiert aber den Zugriff, wenn ich mich außerhalb befinde

iptables ermöglicht den Zugriff auf meine persönliche Website, wenn ich mich in meinem LAN befinde, blockiert aber den Zugriff, wenn ich mich außerhalb befinde

Ich verwende einen transparenten Proxy, um Anfragen von einer Quelle (Client) an ein Ziel (Server) weiterzuleiten. Ich verwende iptables, damit das transparente Bit funktioniert ... d. h.: Dadurch wird die IP des Clients am Ziel angezeigt, obwohl die Anfrage über den Zwischenproxy ging ... eigentlich heißt das SSLH ...https://github.com/yrutschle/sslh

Hier sind die Regeln:

iptables -w -t mangle -N SSLH
iptables -w -t mangle -A PREROUTING -p tcp -m socket --transparent -j SSLH
iptables -w -t mangle -A OUTPUT --protocol tcp --out-interface eth0 -m multiport --sport 80,443,4480 --jump SSLH
iptables -w -t mangle -A SSLH --jump MARK --set-mark 0x1
iptables -w -t mangle -A SSLH --jump ACCEPT
ip rule add fwmark 0x1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100

Ich betreibe eine Website auf Apache auf derselben Maschine wie der Proxy. Es ist ein Pi, der sich in meinem Heim-LAN befindet.

Wenn ich versuche, auf diesem Apache auf eine Website zuzugreifen, und die Anforderung von außerhalb des LAN stammt, beispielsweise wenn ich mich auf meinem Telefon mit einem WLAN-Hotspot verbinde, wird die Seite im Browser angezeigt. WENN ich mich jedoch mit meinem LAN-WLAN-Netzwerk verbinde und versuche, dieselbe Seite zu öffnen, tritt ein Timeout auf, ES SEI DENN, ich deaktiviere diese Iptables-Regeln. Wenn ich dies tue, tritt bei Anforderungen, die von außerhalb des LAN stammen, ein Timeout auf.

Um die Sache möglicherweise etwas komplizierter zu machen, verwende ich auch dnsmasq, das auf demselben Pi läuft, um NAT-Loopback zu simulieren, sodass ich von meinem eigenen LAN aus mit dem Domänennamen und nicht nur mit der lokalen IP-Adresse auf die Website zugreifen kann.

Wenn ich nur die lokale IP-Adresse des Webservers verwende, funktioniert es trotzdem nicht.. es sei denn, ich

Muss ich die iptables-Regeln ändern, damit eine Web-Anfrage wie diese:

https://www.example.com/test.html

Wird die Seite angezeigt, unabhängig davon, ob ich mich außerhalb oder innerhalb meines LAN befinde?

Danke schön,

Biegen

Antwort1

Ich habe eine Lösung, die funktioniert.

Meine Frage war...

Muss ich die iptables-Regeln ändern, damit eine Web-Anfrage wie diese:
https://www.example.com/test.html
Wird die Seite angezeigt, unabhängig davon, ob ich mich außerhalb oder innerhalb meines LAN befinde?

Meine iptables-Regeln scheinen Verbindungsanfragen zu blockieren, die aus meinem LAN stammen. Ich weiß immer noch nicht genau, warum das so ist, aber es müssen die iptables-Regeln sein, die das tun, denn Anfragen, die von außerhalb des LAN stammen, funktionieren mit den geltenden Regeln einwandfrei, und Anfragen, die von außerhalb oder innerhalb des LAN stammen, funktionieren, wenn die Regeln vollständig deaktiviert sind.

Ich hatte die Idee, Regeln hinzuzufügen, um eingehenden und ausgehenden Datenverkehr von allen IPs in meinem lokalen LAN zu akzeptieren. Der DHCP-Server auf meinem Router weist Geräten in meinem LAN IPs im Bereich 192.168.1.1 bis 192.168.1.200 zu.

Durch die Angabe von 192.168.1.0/24 kann ich auf ALLE IPs in diesem Bereich verweisen.

Das sind die Regeln, die ich jetzt verwende:

iptables -t mangle -N SSLH
iptables -t mangle -A INPUT -p tcp -s 192.168.1.0/24 -j ACCEPT
iptables -t mangle -A OUTPUT -p tcp -d 192.168.1.0/24 -j ACCEPT
iptables -t mangle -A PREROUTING -p tcp -m socket --transparent -j SSLH
iptables -t mangle -A OUTPUT -p tcp --out-interface eth0 -m multiport --sport 80,443,4480 -j SSLH
iptables -t mangle -A SSLH -j MARK --set-mark 0x1
iptables -t mangle -A SSLH -j ACCEPT
ip rule add fwmark 0x1 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100

Und ich freue mich, sagen zu können, dass eine URL wiehttps://www.example.com/das auf eine Webseite auf meinem persönlichen Apache-Server auf einem Pi in meinem LAN verweist, öffnet jetzt die Webseite, wenn ich die Seite von innerhalb oder außerhalb meines LAN anfordere.

Um herauszufinden, warum meine ursprünglichen Regeln Anfragen blockierten, die aus meinem LAN stammten, habe ich versucht, Folgendes zu ändern:

iptables -t mangle -A PREROUTING -p tcp -m socket --transparent -j SSLH

Zu:

iptables -t mangle -A PREROUTING -p tcp -j SSLH

Denn beim transparenten Socket-Match werden nicht-transparente Sockets ignoriert, was bei einer Anfrage der Fall wäre, die nicht über SSLH läuft. Aber der Datenverkehr von lokalen IP-Adressen wurde trotzdem blockiert.

Diese Regel ist wahrscheinlich der Übeltäter. Sie sendet alle ausgehenden Pakete von meinem Webserver (Port 443) an die benutzerdefinierte Kette SSLH. Alle Pakete in dieser Kette werden markiert und mithilfe der folgenden Regeln an die Loopback-Schnittstelle weitergeleitet, um vom SSLH-Proxy verarbeitet zu werden.

iptables -t mangle -A OUTPUT -p tcp --out-interface eth0 -m multiport --sport 80,443,4480 -j SSLH

Aber wenn diese Pakete „eingehend“ waren und nicht durch den SSLH-Proxy gingen, um zu ihrem Ziel zu gelangen, und wenn sie „ausgehend“ sind und an die Loopback-Schnittstelle weitergeleitet werden, um von SSLH verarbeitet zu werden, weiß dieses vermutlich nicht, was es mit ihnen anfangen soll, und sie gehen einfach verloren. In diesem Fall wurden diese Pakete benötigt, damit eine Webseite im Browser des Clients angezeigt wird, daher kommt es zu einer Zeitüberschreitung der Website.

Prost,

Biegen

verwandte Informationen