web-dev-qa-db-fra.com

Comment bloquer les adresses IP abusives avec PF à OpenBSD?

Nous pouvons voir des journaux nginx qu'il y a une adresse IP faisant des choses méchantes.

Comment pouvons-nous le bloquer avec une commande pf et ensuite plus tard en permanence avec le /etc/pf.log? Comment pouvons-nous bloquer un x.x.x.x/24 pour cette adresse IP? C'est l'exemple: 1.2.3.4

Mise à jour: Non, on dirait que OpenBSD n'a pas autorisé/refuser le fichier dans/etc. Et Afaik, le meilleur conseil pour bloquer les adresses IP abusives utilise PF.

# cd /etc 
# ls -la|egrep -i 'deny|allow'
# uname -a
OpenBSD foo.com 5.4 GENERIC.MP#0 AMD64
# 
13
somelooser28533

La meilleure façon de le faire est de définir une table et de créer une règle pour bloquer les hôtes, dans pf.conf:

table <badhosts> persist
block on fxp0 from <badhosts> to any

Puis ajouter/supprimer/supprimer/supprimer de manière dynamique les adresses IP:

$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T delete 1.2.3.4

Les autres commandes "table" incluent flush (supprimer tout), replace et show. Voir man pfctl pour plus.

Si vous souhaitez une liste plus permanente, vous pouvez le conserver dans un (ou plusieurs) fichiers. Dans pf.conf:

table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on fxp0 from <badhosts> to any

Vous pouvez également ajouter des noms d'hôte au lieu des adresses IP. Voir la section "Tables" de man pf.conf et man pfctl.

NOTE: Les exemples ci-dessus supposent que l'interface face à Internet est fxp0, veuillez changer en fonction de votre configuration. N'oubliez pas non plus que les règles de pf.conf sont évalués séquentiellement et pour block ou pass règles de la dernière règle correspondante qui s'applique. Avec ce jeu de règles

table <badhosts> persist
block on fxp0 from <badhosts> to any
pass inet tcp from 192.168.0.0/24 to any port 80

et après l'ajout 1.2.3.4 et 192.168.0.10 à la table badhosts

$ pfctl -t badhosts -T add 1.2.3.4
$ pfctl -t badhosts -T add 192.168.0.10

Tout le trafic de 1.2.3.4 et 192.168.0.10 sera bloqué mais le deuxième hôte volonté Pouvoir des connexions au port d'autres machines 80 car la règle pass et remplace la règle block.

13
Zé Loff

Il n'est pas clair d'autres réponses que vous devez créer une table réelle des Badhosts que vous essayez de bloquer.

Cela va dans le fichier pf.conf, par exemple, j'ai deux fichiers Badguys, 1 et 2 Badguys1, c'est pour ceux qui viennent et badguys2 sont pour la liste noire permanente.

Donc, si vous devez ajouter une adresse IP de quelqu'un qui est une nuisance pendant une période de temps, ajoutez-les à Badguys1.

Maintenant, dans votre fichier pf.conf, vous avez ceci. Dans mon exemple, j'utilise EN1, car c'est mon interface wifi. Définissez cela sur ce que l'interface de votre réseau est disponible.

table <badhosts> persist file "/etc/badguys1" file "/etc/badguys2"
block on en1 from <badhosts> to any

Maintenant, vous pouvez ajouter des adresses temporaires à Badguys1. (Pas Badhosts, c'est un nom pour les tables)

Sudo pfctl -t badguys1 -T add 185.130.5.160

1 table created.
1/1 addresses added.

Bien que cela indique 1 table créée - il ajoute la propriété intellectuelle, ne créant pas une nouvelle table. Maintenant, si vous regardez dans Badguys1, vous verrez la nouvelle adresse IP.

Sudo pfctl -t badhosts -T show
4
user160328