web-dev-qa-db-fra.com

Comment bloquer une plage d'adresses IP avec UFW

J'essaie de bloquer une plage d'adresses IP sur mon serveur Ubuntu 16.04LTS à partir d'un pays spécifique, à savoir la Chine, l'Iran, etc.

J'espérais trouver un script ou quelque chose que je pourrais exécuter pour créer facilement une liste de mise à jour dynamique. Comme dans je viens de mettre dans les codes de pays et il remplit automatiquement la liste actuelle de quelque part puis ajouté ma plage de bloc. Facilitant les mises à jour de la liste d'adresses à mesure qu'elles changent. Mais pour commencer, j’ai utilisé pays, blocs IP pour trouver une liste d’adresses pour la Chine et les ai enregistrées dans un fichier texte intitulé "chinaiprange.txt"

Après quelques recherches, j'ai trouvé la commande suivante pour les entrer toutes en une fois à partir de this exemple

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

Cependant, lorsque je l'exécute, je reçois la sortie suivante: ERROR: Bad source address

Les adresses sont enregistrées au format suivant:

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

S'il y avait une meilleure façon de faire cela, ce serait génial, mais me laisser savoir ce que je fais mal serait tout aussi génial. Merci d'avance!

3
mrhatter

Relisez man ufw. Il y a deux, similaires, ufw invocations que vous confondez:

   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]]

Vous voulez probablement

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

Je ne pense pas que la syntaxe de votre commande soit conforme à la syntaxe (de la commande ufw elle-même ou de la boucle bash - bien que ce soit une bonne pratique de citer la variable $line dans i.e. ... from "$line" to any ...).

L'erreur ERROR: Bad source address indique un problème avec la chaîne d'adresse elle-même, et nous pouvons en déduire qu'il pourrait être dû aux fins de ligne CR-LF de style DOS - que vous avez pu confirmer en ouvrant le fichier chinaiprange.txt dans nano

La solution consiste à fixer les fins de ligne en utilisant l’une des méthodes bien connues, telles que:

  • exécuter votre fichier à l'aide de la commande dos2unix
  • en utilisant tr ou sed - par exemple sed -i 's/\r$//' chinaiprange.txt
  • ouvrir le fichier dans vi et exécuter :set ff=unix suivi de :wq pour le réenregistrer
1
steeldriver