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!
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
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:
dos2unix
tr
ou sed
- par exemple sed -i 's/\r$//' chinaiprange.txt
vi
et exécuter :set ff=unix
suivi de :wq
pour le réenregistrer