Frage IPTables erlauben nur den Zugriff auf den lokalen Host


Ich habe im Laufe der Jahre Probleme gehabt, ein solides Verständnis für iptables zu bekommen. Jedes Mal, wenn ich versuche, die Manpages durchzulesen, beginnen meine Augen zu verglasen.

Ich habe einen Dienst, dem ich nur den Zugriff auf den localhost erlauben möchte.

Welche Begriffe (oder Konfiguration, wenn sich jemand großzügig fühlt) sollten Google für den Zugriff auf einen bestimmten Port nur für den Host des lokalen Hosts zulassen?


48
2018-03-14 14:37


Ursprung


An welchem ​​Port läuft dieser Dienst? - Bart De Vos
44344, es ist ein Service, der inhouse geschrieben wurde - iptablessuck
Ich möchte meinen Nick vorübergehend für 'iptablesrules' ändern, aber ich kann nicht - Art Shayderov
@Art, sie saugen nur weil ich sie nicht verstehe :) - iptablessuck
@iptablessuck eigentlich sieht es so aus als könnte ich. Aber ich werde nicht dazu führen, dass ich mir nicht sicher bin, ob ich das ändern kann :) - Art Shayderov


Antworten:


Wenn mit Service ein bestimmter Port gemeint ist, sollten die folgenden zwei Zeilen funktionieren. Ändern Sie die "25" zu dem Port, den Sie einschränken möchten.

iptables -A INPUT -p tcp -s localhost --dport 25 -j ACCEPT
iptables -A INPUT -p tcp --dport 25 -j DROP

57
2018-03-14 14:47



"Alles, was von localhost zu Port 25 kommt, akzeptiere" und die zweite Regel sagt "Lass alles fallen, was in Port 25 kommt". Die erste Zeile wird zuerst verarbeitet, wodurch localhost zugelassen wird, und alles andere wird durch die zweite Zeile gelöscht. Ja? - iptablessuck
Das ist richtig! - Hyppy
@Hyppy, wie würdest du das "rückgängig machen"? - tester
@tester diese Befehle erneut eingeben, aber ersetzen -A mit -D - pepoluan
@Astronaut Typ 'sudo Dienst iptables speichern', um die Änderungen zu speichern. dann neu starten. Sie können prüfen, ob Änderungen gespeichert wurden, indem Sie "sudo iptables -L" eingeben - Vinayak


Ich würde empfehlen:

iptables -A INPUT -i lo -p tcp --dport $APP_PORT -j ACCEPT
iptables -A INPUT -p tcp --dport $APP_PORT -j DROP

Weil selbstadressierte Pakete nicht unbedingt 127.0.0.1 als Quelle haben, sondern alle von der lo Schnittstelle.

Jetzt, wenn du Ja wirklich möchte verstehen iptables Das erste, was Sie tun sollten, ist das Herunterladen und Drucken von guten Diagrammen, die die Beziehungen der netfilter Tabellen. Hier sind zwei großartige:

Lesen Sie schließlich viel iptables HOWTOs. Die praktischen Beispiele würden dir dabei helfen, richtig schnell zu werden :)


26
2018-03-14 16:43



ty! lo zeigt sich für mich nach der Verwendung dieser Befehle mit dem letzten Befehl von diesem Link cyberciti.biz/faq/howto-display-linux-iptables-loaded-rules  iptables -L -v -n --line-numbers
@Gracchus Ich finde es viel einfacher zu benutzen iptables-save Speichern Sie die Ausgabe in einer Datei, bearbeiten Sie sie mit vim oder emacsund importieren Sie die bearbeitete Datei erneut mit iptables-apply - pepoluan
Ich denke, je nach Anwendungsfall sollte die zweite Regel explizit ablehnen, anstatt still zu fallen. Wird es als Best Practice stillgelegt? Ist REJECT sicher zu verwenden? - Mr. Doomsbuster
@ tech-pro Ja, REJECT ist sicher zu verwenden. Es hängt davon ab, was Sie erreichen wollen und ob Sie gegenüber Leuten, die versuchen, den Hafen zu benutzen, höflich sein wollen. REJECT sendet ein TCP-RST-Paket zurück, das dem Client mitteilt, dass die Maschine hochgefahren ist, aber der Port geschlossen ist. Wenn Sie einen Port schließen, den die Leute zu Recht erwarten könnten, dann ist REJECT gut. Wenn Sie nur Portscanner erwarten, ist DROP besser. - Law29
Ich hatte einen Webserver auf dem Port, auf den ich nur über den lokalen Host zugreifen möchte. In anderen, um jemanden sofort zu verleugnen, der aus dem Browser verwendet, dachte ich, REJECT könnte besser sein. Wenn es gelöscht wird, bleibt der Browser eingeschaltet, bis die Zeitüberschreitung auftritt. Ist die Ablehnung in diesem Anwendungsfall sinnvoll? - Mr. Doomsbuster