it-swarm.com.de

So blockieren Sie einen IP-Adressbereich mit UFW

Ich versuche, einen IP-Adressbereich auf meinem Ubuntu 16.04LTS-Server aus einem bestimmten Land zu blockieren, z. B. China, Iran usw.

Ich hatte gehofft, ein Skript oder etwas zu finden, das ich ausführen könnte, um eine dynamisch aktualisierte Liste zu erstellen. Wie in Ich habe gerade Ländervorwahlen eingegeben und es wird automatisch die aktuelle Liste von irgendwoher aufgefüllt und dann mein Blockbereich angehängt. Einfache Aktualisierung der Adressliste bei Änderungen. Aber zu Beginn benutzte ich Länder-IP-Blöcke , um eine Liste von Adressen für China zu finden und sie in einer Textdatei mit dem Titel "chinaiprange.txt" zu speichern.

Nach einigem Suchen habe ich den folgenden Befehl gefunden, um sie alle auf einmal aus this Beispiel einzugeben

while read line; do Sudo ufw insert 1 deny from $line to any; done < chinaiprange.txt

Wenn ich es jedoch ausführe, erhalte ich die folgende Ausgabe: ERROR: Bad source address

Die Adressen werden im folgenden Format gespeichert:

1.0.1.0/24 
1.0.2.0/23
1.0.8.0/21
...

Wenn es einen besseren Weg gibt, wäre das großartig, aber mich wissen zu lassen, was ich falsch mache, wäre genauso großartig. Danke im Voraus!

3
mrhatter

Lesen Sie man ufw erneut. Es gibt zwei ähnliche ufw Aufrufe, die Sie verwirren:

   ufw [--dry-run] [delete] [insert NUM] allow|deny|reject|limit [in|out] [log|log-all] PORT[/PROTOCOL]

   ufw [--dry-run] [rule] [delete] [insert NUM] allow|deny|reject|limit [in|out [on INTERFACE]] [log|log-all] [proto PROTOCOL] [from ADDRESS [port PORT]] [to ADDRESS [port PORT]]

Sie wollen wahrscheinlich

Sudo ufw insert 1 deny on eth0 from $line 
0
waltinator

Ich glaube nicht, dass irgendetwas an der Syntax Ihres Befehls falsch ist (entweder am ufw -Befehl selbst oder an der Bash-Schleife - obwohl es eine gute Praxis wäre, die Variable $line, d. H. ... from "$line" to any ..., zu zitieren).

Der Fehler ERROR: Bad source address weist auf ein Problem mit der Adresszeichenfolge selbst hin, und wir können davon ausgehen, dass dies an DOS-ähnlichen Zeilenenden für CR-LF liegt. Diese konnten Sie durch Öffnen der Datei chinaiprange.txt in nano bestätigen.

Die Lösung besteht darin, die Zeilenenden mit einer der bekannten Methoden zu fixieren, wie zum Beispiel:

  • führen Sie Ihre Datei mit dem Befehl dos2unix aus
  • mit tr oder sed - zum Beispiel sed -i 's/\r$//' chinaiprange.txt
  • öffnen der Datei in vi und Ausführen von :set ff=unix gefolgt von :wq zum erneuten Speichern
1
steeldriver