---
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 >}}
---