DenyHosts
Lorsque nous mettons un serveur en ligne sur internet, nous avons tous à subir de nombreuses tentatives de connexion sur le port SSH (et oui les attaques SSH par dictionnaire sont courantes). Il est difficile de fermer ce port que nous utilisons pour nous connecter de chez nous à notre serveur préféré (pas toujours simple de n'utiliser que la console !). D'où la question suivante : « Comment sécuriser son serveur tout en ayant facilement accès à celui-ci par SSH ? ». Une réponse peut être Denyhosts.
Le principe de Denyhosts est simple : c'est un dæmon qui analyse en permanence le fichier de log /var/log/auth.log et qui au bout de plusieurs tentatives (cf. « Configuration ») de connexion infructueuses blacklist l'IP en cause dans le fichier /etc/hosts.deny.
L'administrateur pourra même être averti par courriel lorsqu'une IP sera mise en liste noire.
Pré-requis
- Disposer des droits d'administration ;
- Disposer d'une connexion à Internet configurée et activée ;
- Avoir installé le paquet openssh-server.
Installation
Il vous suffit, pour cela, d'installer le paquet denyhosts.
Configuration
Le dæmon DenyHosts est tout de suite opérationnel. Cependant, vous pouvez personnaliser la configuration en éditant le fichier /etc/denyhosts.conf.
Vous pourrez alors configurer de nombreuses options parmi lesquelles :
BLOCK_SERVICE = ALL ou sshd | pour bloquer l'accès à tous les services ou seulement à ssh |
DENY_THRESHOLD_INVALID = 5 | indiquer le nombre d'échec avec un login invalide avant blocage |
DENY_THRESHOLD_VALID =10 | indiquer le nombre d'échec avec un login valide avant blocage |
DENY_THRESHOLD_ROOT = 1 | indiquer le nombre d'échec avec le login root avant blocage |
ADMIN_EMAIL = root@localhost | indiqué l'adresse mail qui sera informé à chaque blocage d'une IP |
SMTP_HOST = localhost | définir le relay SMTP pour l'envoi des mails de notification |
SMTP_PORT = 25 | définir le port SMTP |
SMTP_FROM = DenyHosts <nobody@localhost> | définir le nom de l'expéditeur de la notification |
SMTP_SUBJECT = DenyHosts Report | définir le sujet du mail de notification |
Je vais vous épargner l'ensemble des variables de configuration car elles sont plutôt nombreuses. Ils vous suffit d'aller voir le fichier de configuration qui est très bien commenté.
Utilisation
Il est donc intéressant de compléter le fichier /etc/hosts.allow avec les adresses IP à partir desquelles vous vous connectez le plus souvent. Vous pouvez même définir des plage d'adresse ou des domaines pour lesquels vous ne serez jamais bloqué même en cas d'échec important.
la syntaxe dans le fichier /etc/hosts.allow sera de cette forme-là :
ALL: 192.168.1. ALL: 192.168.12. ALL: .mondomaine.com
Désinstallation
Pour supprimer cette application, il suffit de supprimer son paquet. La configuration de l'application sera conservée ou supprimée selon la méthode de désinstallation que vous choisirez.
Note sur la sécurité
Voir aussi
- fail2ban lit les logs de divers serveurs (SSH, Apache, FTP, etc.) à la recherche d'erreurs d'authentification répétées et ajoute une règle iptables pour bannir l'adresse IP de la source.
- (fr) Tutoriel sur la configuration complète de DenyHosts sur IT-Connect
Contributeurs : Matthieu Chauveau, Patrick Poulain.