--- categories: ['OpenBSD','Réseau','Sécurité'] date: 2022-04-03T08:01:04+02:00 description: "Comment protéger le serveur SSH des abus de connexions, sous OpenBSD, avec l'outil sshlockout" draft: false include_toc: true show_comments: false tags: ['Surveillance','SSH','OpenBSD','PF'] title: "sshlockout : protéger le serveur SSH, sous OpenBSD" translationKey: 'openbsd-sshlockout' --- ## 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 {{< inside2 l="sys/openbsd/pkg" t="Installez" a="installer" >}} le paquet **sshlockout**. ## Configuration ### Packet-Filter Il faut ajouter/modifier vos règles du parefeu Packet-Filter : 1. une table persistante, nommée **lockout**, telle que :
`table persist` 2. puis l'équivalent de cette règle bloquante :
`block in quick on egress proto tcp from 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 : ```sh ## 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 : - https://www.openbsd.org/faq/pf/tables.html - https://wiki.openbsd.fr.eu.org/doku.php/openbsd.org/faq/pf/tables - {{< man daily 8 >}} ---