introduction
Tout service connecté à Internet est une cible potentielle d'attaques par force brute ou d'accès injustifié. Il existe des outils comme fail2ban
ou sshguard
, mais ceux-ci sont fonctionnellement limités car ils analysent uniquement les fichiers journaux. Blacklistd adopte une approche différente. Les démons modifiés comme SSH peuvent se connecter directement à blacklistd pour ajouter de nouvelles règles de pare-feu.
Étape 1: PF (pare-feu)
Une ancre est un ensemble de règles et nous en avons besoin dans notre configuration PF. Pour créer un ensemble de règles minimal, modifiez-le /etc/pf.conf
pour qu'il ressemble à ceci:
set skip on lo0
scrub in on vtnet0 all fragment reassemble
anchor "blacklistd/*" in on vtnet0
block in all
pass out all keep state
antispoof for vtnet0 inet
pass in quick on vtnet0 inet proto icmp all icmp-type echoreq
pass in quick on vtnet0 proto tcp from any to vtnet0 port 22
Maintenant, activez PF
pour démarrer automatiquement, éditez /etc/rc.conf:
pf_enable="YES"
pf_rules="/etc/pf.conf"
pflog_enable="YES"
pflog_logfile="/var/log/pflog"
Cependant, il y a une chose supplémentaire que vous voudrez peut-être faire en premier: tester vos règles pour vous assurer que tout est correct. Pour cela, utilisez la commande suivante:
pfctl -vnf /etc/pf.conf
Si cette commande signale des erreurs, revenez en arrière et corrigez-les en premier!
C'est une bonne idée de vous assurer que tout fonctionne comme prévu en redémarrant le serveur maintenant: shutdown -r now
Étape 2: Blacklistd
Les IP sont bloquées pendant 24h. Il s'agit de la valeur par défaut et peut être modifiée dans /etc/blacklistd
:
# Blacklist rule
# adr/mask:port type proto owner name nfail disable
[local]
ssh stream * * * 3 24h
Modifier /etc/rc.conf
pour activer Blacklistd:
blacklistd_enable="YES"
blacklistd_flags="-r"
Démarrez Blacklistd avec la commande suivante:
service blacklistd start
Étape 3: SSH
Une dernière chose que nous devons faire est de dire sshd
de notifier blacklistd
. Ajoutez UseBlacklist yes
à votre /etc/ssh/sshd_config
fichier. Redémarrez maintenant SSH avec service sshd restart
.
Dernière étape
Enfin, essayez de vous connecter à votre serveur avec un mot de passe invalide.
Pour obtenir toutes les adresses IP bloquées, utilisez l'une des commandes suivantes:
blacklistctl dump -bw
address/ma:port id nfail last access
150.x.x.x/32:22 OK 3/3 2017/x/x 04:43:03
115.x.x.x/32:22 OK 3/3 2017/x/x 04:45:40
91.x.x.x/32:22 OK 3/3 2017/x/x 07:51:16
54.x.x.x/32:22 OK 3/3 2017/x/x 12:05:57
pfctl -a blacklistd/22 -t port22 -T show
54.x.x.x
91.x.x.x
115.x.x.x
150.x.x.x
Pour supprimer une adresse IP bloquée, vous devez utiliser la commande pfctl
. Par exemple:
pfctl -a blacklistd/22 -t port22 -T delete <IP>
Notez que blacklistctl
l'adresse IP sera toujours bloquée! Il s'agit d'un comportement normal qui devrait être supprimé dans les prochaines versions.