IP-Adresse blocken mit UFW
Spammer gehören bestraft! Mit der UFW (Uncomplicated Firewall) eine leichte Übung. Damit kann man IP-Adressen (oder ganze Netzwerke) aussperren.
Läuft UFW überhaupt?
ufw status
Wenn hier Status: inactive
kommt, läuft UFW nicht und muß erst gestartet werden. Dies geschieht mit
ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Die UFW wird als Dienst eingerichtet und beim Booten automatisch gestartet.
Disablen mit
ufw disable
Firewall stopped and disabled on system startup
IP-Adresse blockieren
Angenommen, der Feind ist 192.168.169.170, dann geschieht das mit dem Befehl
ufw deny from 192.168.169.170 to any
oder mit Portnummer
ufw deny from 192.168.169.170 to any port 80
Prüfen mit
ufw status numbered
Die generelle Syntax ist
ufw deny proto {tcp|udp} from {IP-Addresse} to any port {Portnummer}
Ein ganzes Subnet blocken
ufw deny proto tcp from 192.168.169.0/24 to any port 22
Regel wieder entfernen
ufw status numbered ufw delete NUMMER
NUMMER ist die Zahl in eckigen Klammer zu Beginn jeder Zeile, zum Beispiel löschen von Regel № 1:
ufw delete 1
Deleting: deny from 192.168.169.170 comment 'Spammer blockieren' Proceed with operation (y|n)? y
Regel an erster Stelle der Kette einfügen
Vermutlich existieren aber bereits verschiedene Regeln in der Kette, wie zum Beispiel “Port 22 und 80 erlaubt”, sodaß die obigen Befehle wirkungslos bleiben werden, da die neuen Regeln hinten angehängt werden.
Die Firewall (iptables) arbeitet nämlich die Regeln zeilenweise ab und bricht nach der ersten Übereinstimmung ab. Wenn es also bereits eine Regel gibt die Port 80 erlaubt, und erst danach eine Regel erstellt wird die die IP-Adresse 192.168.169.170 blockt, so wird ein Angriff auf Port 80 von dieser IP-Adresse funktionieren.
Damit dies aber trotzdem geblockt wird, fügt man die Regel an erster Stelle der Kette ein.
ufw insert 1 deny from 192.168.169.170 comment 'Spammer blockieren'
Prüfen mit
ufw status numbered
ergibt etwas wie
Status: active To Action From -- ------ ---- [ 1] Anywhere DENY IN 192.168.169.170 # Spammer blockieren [ 2] 20/tcp ALLOW IN Anywhere [ 3] 21/tcp ALLOW IN Anywhere [ 4] 22/tcp ALLOW IN Anywhere [ 5] 25/tcp ALLOW IN Anywhere [ 6] 53/tcp ALLOW IN Anywhere [ 7] 80/tcp ALLOW IN Anywhere
before.rules
Eine Alternative zu ufw insert
ist die Datei before.rules
. In dieser Datei werden die Regeln eingetragen, die vor den benutzerdefinierten Regeln greifen sollen.
vi /etc/ufw/before.rules
Nach der Zeile
# End required lines
die Regeln einfügen, z. B.:
# Block spammers -A ufw-before-input -s 192.168.169.170 -j DROP
Wir verwenden DROP
anstatt REJECT
, weil dann der Angreifer keine Rückmeldung von iptables bekommt. Als wie wenn der Port nicht lauschen würde.
Danach die Firewall neu laden
ufw reload
Regeln anzeigen
iptables -L