Ich dachte, dass Folgendes für ausgehendes HTTP auf einem Desktop (Nicht-Server) erforderlich ist:
iptables -A INPUT -p tcp -m multiport --sports 80,443 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
Aber es stellt sich heraus, dass ich diese beiden brauche, damit es funktioniert. Ich weiß nicht warum:
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
Ich weiß, dass die letzte Regel UDP zur lo
Schnittstelle erlaubt .
Aber ich dachte alles was ich brauchte war outgoing TCP for NEW/ESTABLISHED connections
+ incoming TCP for ESTABLISHED connections
. Es schien mir nicht intuitiv zu sein (weil ich noch lerne).
Antworten:
Sie benötigen offensichtlich keinen
lo
Internetzugang. Aber vielleicht läuft ein lokaler DNS-Server (Forwarder). DNS verwendet UDP, und für den Webzugriff ist neben HTTP auch DNS erforderlich.Ihre Regeln erlauben übrigens keine (verwandten) ICMP-Antworten. Dies wird wahrscheinlich zu Problemen führen (es sei denn, Sie verwenden niedrigere Werte für MSS / MTU). Sie erlauben jedoch nicht einmal ausgehendes ICMP, sodass die Pfad-MTU-Erkennung nicht einmal funktioniert.
quelle
Ich kann nur Annahmen treffen, da Sie Ihre Standardrichtlinien nicht aufgelistet haben. Gefunden oben in der Ausgabe von
iptables -S
. Ich gehe davon aus, dass Sie restriktiv sind und so etwas haben.Großartig! Ihr Computer ist jetzt in Bezug auf IP-Pakete völlig unsichtbar, mit verbundenen Augen, gebunden und geknebelt. Dies ist fast so gut wie das Trennen von Ihrem Ethernet-Netzwerk.
Wenn Sie also Hoffnung in dieser grausamen, dunklen Welt haben möchten, müssen Sie einige Regeln aufstellen, um einige Pakete anzunehmen, vielleicht jemanden mit einem Messer treffen, mit dem Sie Ihre Seile schneiden können, aber welche Pakete sind die richtigen?
Eine Ausgaberegel ist erforderlich, damit Pakete die Ports erreichen können, die die Server für den http / https-Verkehr verwenden
Eine INPUT-Regel ist erforderlich, damit Pakete von Ports, die für den http / https-Verkehr verwendet werden, in Ihren Browser gelangen.
Jetzt können Sie über Ihren Webbrowser NEUE http / https-Verbindungen herstellen und Informationen erhalten, die über diese EINGESETZTEN Verbindungen zurückkommen.
Was ist dann das Problem? Es gibt keine Möglichkeit, DNS-Informationen abzurufen. Sie sollten in der Lage sein, die IP-Adresse der Websites, die Sie besuchen möchten, in Ihren Webbrowser einzugeben, aber genau das möchten wir nicht. Der DNS-Verkehr wird über Port 53 mit dem UDP-Protokoll verarbeitet.
Und um diese praktischen Antworten zu erhalten, müssen wir noch einige Löcher in diese Augenbinde schneiden.
Jetzt gibt es etwas Licht, das Sie hören können, wenn Sie eine DNS-Abfrage an einen der Server von Google senden
Eine solche Antwort! Aber vielleicht kann Ihr Browser immer noch nicht herausfinden, wo sich Slashdot wirklich auf der Welt befindet. Mindestens eine Distribution (Ubuntu) ist für die Verwendung eines internen DNS-Proxys eingerichtet, sodass Sie in der Lage sein müssen, mit sich selbst zu sprechen (der Rest der Welt ist sowieso langweilig), indem Sie Regeln einrichten, auf denen Sie als Server kommunizieren können Port 53
Beachten Sie den subtilen Unterschied zwischen diesen Regeln "Ich bin mein eigener Server" und den vorherigen Regeln "Ich möchte nur die Weltregeln sehen". Auch
-o lo
und-i lo
zeige an, dass dieser Server nur diese Maschine dienen, ein gutes Maß zu vermeiden , dass gesaugt in einen komplizierten DNS - Bounce - Typ Angriff.Sie sollten jetzt sehen, dass Ihr Browser wieder funktioniert.
quelle
Dies hängt davon ab, ob die
INPUT
und / oderOUTPUT
Ketten auf nichtACCEPT
übereinstimmende Pakete eingestellt sind. Wenn ja, brauchen Sie überhaupt keine Regeln. Wenn Sie es nicht geändert haben, ist dies wahrscheinlich die Standardeinstellung.Diese letzten beiden Regeln erlauben jeglichen Verkehr von oder zur
lo
Schnittstelle (dh 127.0.0.1 / :: 1), nicht nur UDP. Sofern Sie keine Verbindung zu einem Webserver auf dem lokalen Desktop herstellen, haben diese keine Relevanz für HTTP.quelle
-j DROP
für IN./FORD/OUT. Es gibt jedoch etwas im Netzwerk oder auf dem Computer, für das UDP-Pakete erforderlich sind, die an die Loopback-Schnittstelle gesendet werden, damit der Internetzugang funktioniert. Ich habe die Protokolle überprüft: UDP von / nachlo
wurde gelöscht, und dann konnte ich nicht auf das Internet zugreifen. Der Internetzugang wird wiederhergestellt, indem tcp / udp / etc auf der Loopback-Schnittstelle zugelassen wird. Es ist komisch.