sshlockout : protéger le serveur SSH, sous OpenBSD

Article publié, le et modifié le
2 minutes de lecture

Cet article contient 286 mots.
Source brute de l'article :

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

Rien que du classique : # pkg_add 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 <lockout> persist
  2. 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