Auf der Netfilter-Website befinden sich Links zu offiziellen und empfohlenen Dokumentationen .
Dies ist kein neues Thema, die Ressourcen sind grenzenlos .
Die meisten grundlegenden Befehle sind ziemlich intuitiv und können leicht auf die Manpage verweisen .
netfilter, die Kernel-Technologie, die die Paketfilterung ermöglicht, ist weit fortgeschritten. Es gibt zusätzliche Tabellen, mit denen Pakete entstellt, übersetzt und auf andere Weise das Routing beeinflusst werden können. Das iptables
Dienstprogramm ist das Userland-Tool für die Interaktion mit Netfilter. Wenn Sie mehr über erweiterte Funktionen erfahren möchten, empfehlen wir Ihnen, auf die oben genannte Dokumentation zu verweisen. Für eine Einführung in die Grundfunktionalität lesen Sie bitte weiter.
So listen Sie alle vorhandenen Regeln auf:
iptables -L -n
-n
Verhindert, dass Iptables IPS auflösen, was zu einer schnelleren Ausgabe führt.
Die Standardtabelle ist die filter
Tabelle, mit der grundlegende Firewallregeln auf die drei Ketten angewendet werden. Die drei Standardketten in der filter
Tabelle sind INPUT
, OUTPUT
und FORWARD
.
Die Ketten sind weitgehend selbsterklärend. Die INPUT-Kette wirkt sich auf eingehende Pakete aus, die OUTPUT-Kette auf lokal generierte Pakete und schließlich auf FORWARD-Pakete, die durch das System geleitet werden.
Unter den Zielen, die Sie angeben können, können Sie DROP
Pakete, dh einfach ignorieren und nicht antworten. Sie können REJECT
Pakete senden, bei denen eine ICMP-Antwort an die Quelle der Ablehnung gesendet wird. Schließlich können Sie ACCEPT
sie, wodurch die Pakete weiterleiten können.
Oft mit einer Außenverkleidung Firewall die Standardauswahl wird DROP
im Gegensatz zu REJECT
, da sie die sichtbaren Fußabdruck Ihres Netzwerks über das Internet reduziert. Beispielsweise würde eine IP, die Dienste ansonsten auf einen bestimmten Host beschränkt, eine geringere Sichtbarkeit aufweisen DROP
.
Beachten Sie, -A
bedeutet an das Ende der Kette anzuhängen. Wenn Sie nach oben einfügen möchten, können Sie verwenden -I
. Alle Regeln werden von oben nach unten abgearbeitet. -D
zum Löschen.
Auf DROP
ein eingehendes Paket von 192.168.235.235
:
iptables -A INPUT -s 192.168.235.235 -j DROP
Dies springt zu dem DROP
Ziel für alle Protokolle, die von dieser IP stammen.
Akzeptieren:
iptables -A INPUT -s 192.168.235.235 -j ACCEPT
So verhindern Sie den Zugriff auf diese IP von Ihrem lokalen Server oder Netzwerk aus:
iptables -A OUTPUT -d 192.168.235.235 -j DROP
Sie können das -p
Protokoll, die -s
Quelle des Pakets, das -d
Ziel des Pakets, den Zielport --dport
, den Quellport --sport
und viele andere Flags angeben , die sich auf die Behandlung der Pakete durch die Regel auswirken.
Wenn Ihre Standard - INPUT
Politik war DROP
und Sie wollten alle am ermöglichen 192.168.123.0/24
Subnetz Zugriff SSH auf Ihrem Server, hier ein Beispiel:
iptables -A INPUT -s 192.168.123.0/24 -p tcp --dport 22 -j ACCEPT
Richtig, Sie können auch die CIDR-Notation verwenden !
Im Allgemeinen gilt die beste Standardrichtlinie DROP
für alle Ketten. Jede Kette hat eine Standardrichtlinie, die durch das -P
Flag angegeben wird . Auch wenn Sie Ihre Richtlinie auf Standard festgelegt haben DROP
, wird empfohlen, dass der endgültige Eintrag in einer Kette ebenfalls ein ist DROP
.
So ändern Sie beispielsweise die Richtlinie DROP
für die Ketten INPUT, FORWARD und OUTPUT:
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
Seien Sie vorsichtig , wenn Sie die Standardrichtlinie von DROP for INPUT auf einem Remote-System festlegen, ohne sich zuvor den SSH-Zugriff zu erlauben, können Sie den Zugriff auf das System verhindern. Auf einem Remote-System können Sie aus Sicherheitsgründen eine temporäre crontab angeben, um alle 5 Minuten alle Regeln zu löschen.
So löschen Sie alle Regeln und lassen den gesamten Datenverkehr zu:
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -X
iptables -F
Beachten Sie, dass -X
alle erstellten Ketten entfernt werden. -F
löscht alle Regeln.
Es gibt native Tools zum Speichern und Wiederherstellen der Regeln. Insbesondere iptables-save
und iptables-restore
. Die meisten modernen Linux-Distributionen haben save
und restore
funktionieren in einer mit dem System gelieferten iptables init-Datei.
Es gibt andere Best Practices für die Firewall, z. B. das Verwerfen von fehlerhaften Paketen und andere Arten von unerwünschtem Datenverkehr. Dies ist ein Vorteil der Verwendung eines Front-End-Dienstprogramms wie Shorewall , da viele dieser Richtlinien standardmäßig implementiert werden. Trotzdem stimme ich Ihrem Ansatz zu und bevorzuge es, meine eigenen Regeln auch direkt beizubehalten. Dieselben Best Practices können ohne Front-End implementiert werden.