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-persistent
bleiben 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 save
den 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 save
wenn 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:
- 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) - Entfernen Sie die zuvor installierten Pakete und deren Einstellungen
sudo aptitude purge fail2ban iptables-persistent
(oder vielleicht auchnetfilter-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.