Description
sshlockout est un petit outil logiciel bien pratique pour surveiller les connexions sur le service SSH. Il gardera une trace des tentatives de connexions par des utilisateurs inconnus aussi bien que des erreurs d’authentification.
Au bout de 5 tentatives sur une période d’une heure, une entrée permanente est ajoutée à la table associée aux adresses IP par pf(4).
En deux, trois minutes d’installation et de configuration, voici un système de surveillance, géré avec le parefeu, efficace et fonctionnel !
Installation
Installez le paquet sshlockout.
Configuration
Packet-Filter
Il faut ajouter/modifier vos règles du parefeu Packet-Filter :
- une table persistante, nommée lockout, telle que :
table <lockout> persist
- puis l’équivalent de cette règle bloquante :
block in quick on egress proto tcp from <lockout> to port ssh
/etc/syslog.conf
Il est nécessaire de modifier le fichier de configuration /etc/syslog.conf
,
en ajoutant la déclaration suivante :
auth.info;authpriv.info | exec /usr/bin/doas -n /usr/local/sbin/sshlockout -pf "lockout"
cron
Pour finir, il faut ajouter une tâche cron, pour libérer les adresses IP de la table lockout, dont l’enregistrement est vieux de plus d’un jour.
Le manpage officiel informe de mettre dans la cron-table de root :
3 3 * * * pfctl -t lockout -T expire 86400
Personnellement, je préfère ajouter à mon fichier daily.local, l’écriture suivante :
## sshlockout: expire IP
pfctl -t lockout -T expire 84600
printf '%s\n' "=> Nb IPs into lockout table:"
pfctl -t lockout -T show | wc -l
ce qui libére les adresses IP enregistrées depuis une journée, et me restitue dans le mail quotidien le nombre d’IP enregistrées dans la table.
Voilà !
Documentation
- le manpage, une fois installé :
man 8 sshlockout
- gestion des tables dans Packet-Filter :
- daily(8)