GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Alle eingehenden Verbindungen mit iptables ablehnen?

Versuchen Sie dies mit Root-Zugriff :

# Set default chain policies
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# Accept on localhost
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Allow established sessions to receive traffic
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Beachten Sie, dass dadurch alle laufenden Verbindungen brutal unterbrochen werden - Dazu gehören Dinge wie die SSH-Verbindung, die Sie zur Verwaltung des Servers verwenden können. Verwenden Sie dies nur, wenn Sie Zugriff auf eine lokale Konsole haben.

Siehe die Antwort von Miphix, um zu erfahren, wie man eine Ausnahme für SSH hinzufügt.


Wenn Sie remote über SSH arbeiten, möchten Sie vielleicht dies hinzufügen (-I fügt es vor allen anderen Regeln in INPUT ein ):

iptables -I INPUT -p tcp --dport 22 -j ACCEPT

Wenn Ihr SSH-Dienst auf einem anderen Port lauscht, müssen Sie diesen Port anstelle von 22 verwenden .

Andernfalls könnten Sie versehentlich den Zugriff verlieren.


Beachten Sie, dass die anderen Antworten IPv6 nicht abdecken! Wenn Ihr System IPv6-Datenverkehr akzeptiert, gilt keine einzige iptables-Regel für IPv6-Datenverkehr.

Anstatt iptables / ip6tables direkt zu verwenden, empfehle ich die Verwendung von iptables-restore and save. Diese Tools ermöglichen es, eine iptables-Konfiguration mit mehreren Regeln anzugeben und sie einfach mit einem Befehl zu laden.

Erstellen Sie eine Datei (ich nannte sie iptables.rules) mit folgendem Inhalt:

*filter

# drop forwarded traffic. you only need it of you are running a router
:FORWARD DROP [0:0]

# Accept all outgoing traffic
:OUTPUT ACCEPT [623107326:1392470726908]


# Block all incoming traffic, all protocols (tcp, udp, icmp, ...) everything.
# This is the base rule we can define exceptions from.
:INPUT DROP [11486:513044]

# do not block already running connections (important for outgoing)
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

# do not block localhost
-A INPUT -i lo -j ACCEPT

# do not block icmp for ping and network diagnostics. Remove if you do not want this
# note that -p icmp has no effect on ipv6, so we need an extra ipv6 rule
-4 -A INPUT -p icmp -j ACCEPT
-6 -A INPUT -p ipv6-icmp -j ACCEPT

# allow some incoming ports for services that should be public available
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

# commit changes
COMMIT

Beachten Sie, dass ich ein zusätzliches Beispiel hinzugefügt habe, wenn Sie ICMP und Datenverkehr zu bestimmten Ports zulassen möchten.

Jetzt können Sie es mit diesen Befehlen laden:

iptables-restore < iptables.rules
ip6tables-restore < iptables.rules

Jetzt decken Ihre Regeln auch IPv6 ab und sind einfach zu verwalten.

Zusätzlicher Hinweis für Debian-Benutzer:Wenn Sie mit Ihren Regeln zufrieden sind, können Sie apt install iptables-persistent Die Regeln werden also nach dem Neustart wiederhergestellt. Die Regeln werden beim Herunterfahren nicht automatisch gespeichert, führen Sie also netfilter-persistent save aus um die dauerhaften Regeln zu aktualisieren.


Linux
  1. Linux DD-Befehl - 15 Beispiele mit allen Optionen

  2. Testen von SSL-Verbindungen mit SSLyze, Nmap oder OpenSSL

  3. Alle C-Kommentare mit Sed löschen?

  4. Wie installiere ich alle installierten Pakete mit Zypper neu?

  5. iptables verwirft alle eingehenden ICMP-Anfragen außer von einer IP

Überwachen Sie MySQL-Verbindungen und Abfragen mit mytop

So sichern Sie eine Linux-Firewall mit IPTables-Regeln

Alle Dateien finden, deren Name eine Zeichenfolge enthält

Stellen Sie nginx.conf so ein, dass alle Verbindungen außer zu bestimmten Dateien oder Verzeichnissen verweigert werden

Sollte ich die Paketrate mit iptables begrenzen?

Der beste Weg, um alle iptables-Regeln zu löschen