iptables und Hacker-Prävention

iptables und Hacker-Prävention

Hallo, liebe Ubuntuer!

hier ist ein Beispiel meiner iptables.rules-Datei:

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:f2b-sshd - [0:0]
:f2b-sshd-ddos - [0:0]
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd-ddos
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -s 202.215.160.75/32 -j DROP
-A INPUT -s 66.210.251.136/32 -j DROP
-A INPUT -s 61.40.0.0/16 -j DROP
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd-ddos
-A INPUT -i tap0 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd
-A INPUT -i br0 -j ACCEPT
-A FORWARD -i br0 -j ACCEPT
-A f2b-sshd -j RETURN
-A f2b-sshd-ddos -j RETURN
COMMIT

Beachten Sie, dass dies eine gekürzte Version meiner Datei ist. Ich lösche wahrscheinlich ungefähr 100 IPs/Domänen.

Mein Problem besteht darin, dass wenn ich eine neue IP-Adresse wie xxxx eingebe, diese wie folgt hinzugefügt wird:

-A INPUT -i br0 -j ACCEPT
-A INPUT -s x.x.x.x/32 -j DROP
-A FORWARD -i br0 -j ACCEPT

Dadurch wird die IP-Adresse nicht gelöscht, wie ich es möchte. Ich habe ein Shell-Skript, mit dem ich Benutzer/Domänen lösche:

./drop-Benutzer

sudo iptables -A INPUT -s $1 -j DROP
sudo sh -c "iptables-save > /etc/iptables.rules" 

./Drop-Domäne

 sudo iptables -A INPUT -s $1/16 -j DROP
 sudo sh -c "iptables-save > /etc/iptables.rules"

Um dieses Problem zu beheben, bearbeite ich die Dateien /etc/iptables.rules manuell, um die IP-Adresse xxxx über diese Zeile zu verschieben:

 -A INPUT -p tcp -m multiport --dports 22 -j f2b-sshd-ddos

und dann aufrufen:

sudo iptables-restore < /etc/iptables.rules

Was ist falsch an meinem Prozess, wenn überhaupt etwas? Gibt es einen besseren Weg? Jeden Tag verbringe ich etwa 10 Minuten mit Hacks und die meiste Zeit davon bearbeite ich meine iptables.rules-Dateien und stelle sie dann über iptables-restore wieder her. Ich würde gerne einfach ./drop-user oder ./drop-domain aufrufen und fertig, aber ich habe das Gefühl, dass ich nicht genug über iptables weiß.

Sollte ich vor der iptables-restore-Funktion die folgenden Befehle ausführen?

 sudo iptables -F
 sudo iptables -Z

Dank im Voraus!

Antwort1

Ich würde Ihnen dringend empfehlen, den Sperrvorgang mit zu automatisieren fail2ban. Dies funktioniert in einer Standardkonfiguration einwandfrei und kann weiter angepasst werden, wenn Sie möchten, dass mehr Dienste überwacht werden.

In Kombination mit iptables-persistentbleiben die Regeln auch nach Neustarts erhalten, was hilfreich ist.

Hier ist eine grundlegende Übersicht darüber, was ich mit jedem Ubuntu-Server mache:

Installieren und konfigurieren Sie fail2ban

sudo aptitude install fail2ban && sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local && sudo nano /etc/fail2ban/jail.local

Dadurch wird es installiert und die Konfigurationsdatei für Ihre Anpassungen in eine neue Datei kopiert. Dies ist die bewährte Vorgehensweise, da dadurch verhindert wird, dass Ihre Änderungen überschrieben werden, wenn das Paket aktualisiert wird.

Meine persönliche Vorliebe ist die Verlängerung derSperrzeitUndfinde Zeitvon den Standardeinstellungen. Sperrzeit ist die Dauer, für die ein Angreifer gesperrt ist, und Suchzeit ist das Zeitfenster, in dem seine Versuche gezählt werden, falls sie Angriffe mit Ratenbegrenzung durchführen. Suchen und bearbeiten bantime = 21600(auf sechs Stunden erhöht, Zeitwert in Sekunden) und auch findtime = 3600(max. 3 Angriffsversuche pro Stunde).

Vorhandene Iptables-Regeln löschen und neue Standardwerte festlegen

Dies ist ein Einzeiler, der auf einem typischen Webserver verwendet werden soll, dessen eingehende Ports nur auf Port 22 (SSH), Port 80 (HTTP) und Port 443 (HTTPS) lauschen.Dieses DigitalOcean-Tutorialist eine gute Referenz zum Erstellen Ihres eigenen oder Anpassen meines.Seien Sie vorsichtig mit Iptables und dem Festlegen von DROP-Regeln. Wenn Sie die Reihenfolge falsch eingeben, sperren Sie sich dauerhaft aus!Allerdings verwende ich diesen Einzeiler; er ist sicher, getestet und funktioniert perfekt:

sudo iptables -P INPUT ACCEPT && sudo iptables -F && sudo iptables -A INPUT -i lo -j ACCEPT && sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT && sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT && sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT && sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT && sudo iptables -A INPUT -j LOG && sudo iptables -A FORWARD -j LOG && sudo ip6tables -A INPUT -j LOG && sudo ip6tables -A FORWARD -j LOG && sudo iptables -A INPUT -j DROP

Änderungen auch nach Neustarts beibehalten

Der letzte Schritt besteht darin, das Paket zu installieren und zu konfigurieren iptables-persistent, das das Speichern und Wiederherstellen von Regeln bei Neustarts automatisiert.

sudo aptitude install iptables-persistent && sudo service iptables-persistent start

Sie werden aufgefordert, die IPV4- und IPV6-Regeln zu bestätigen. Wählen Sie mit der Tabulatortaste jeweils „Ja“ aus und speichern Sie. Es wird beim Neustart automatisch gestartet, sodass Sie sich nicht um weitere Konfigurationen kümmern müssen.

Beim persistenten Festlegen der Regeln ist zu beachten, dass Sie den Prozess manuell über alle neuen Regeln informieren müssen, die Sie hinzufügen oder bearbeiten (z. B. wenn Sie HTTPS auf Port 443 hinzugefügt oder entfernt haben). Führen Sie dazu Folgendes aus, um sudo service iptables-persistent saveden aktuellen Regelsatz zu aktualisieren. Ich glaube, der Befehl wurde in Versionen nach 14.04 in „netfilter-persistent“ geändert. Verwenden Sie ihn also, sudo service netfilter-persistent savewenn der erste nicht funktioniert.

Zusammenfassung

Jetzt überwacht fail2ban Angriffe auf SSH und fügt IP-Adressen automatisch hinzu und entfernt sie entsprechend den von Ihnen festgelegten Parametern. Iptables ignoriert den gesamten eingehenden Datenverkehr für Ports, die Sie nicht geöffnet haben, und diese Regeln bleiben auch nach Neustarts bestehen, sodass Sie nicht viel mehr tun müssen. Viel Spaß mit der zusätzlichen Freizeit, schätze ich!

Wenn Sie alle Änderungen rückgängig machen möchten, führen Sie alle oben genannten Schritte in umgekehrter Reihenfolge aus.

Wenn Sie diese Methode aus irgendeinem Grund nicht weiter verwenden möchten, können Sie alles schnell rückgängig machen. Dies wird nicht empfohlen, aber es ist Ihr Computer, also gehen Sie folgendermaßen vor:

  1. Leeren Sie alle Iptables-Regeln und akzeptieren Sie den gesamten Datenverkehr auf allen Ports sudo iptables -P INPUT ACCEPT && sudo iptables -F(Sie müssen dies tun, um am Ende die DROP-Regel zu entfernen, sonst werden Sie ausgesperrt)
  2. Entfernen Sie die zuvor installierten Pakete und deren Einstellungen sudo aptitude purge fail2ban iptables-persistent(oder vielleicht auch netfilter-persistent, je nach Ihrer Version des Ubuntu-Servers). Nach einem Neustart sollte alles wieder wie vorher sein – abzüglich aller benutzerdefinierten Iptables-Einstellungen, die Sie wie derzeit manuell erneut hinzufügen müssen.

verwandte Informationen