Kali-linux distribution GNU/Linux spécialisée dans l'audit et le pentest.
Kali-linux.fr Communauté française de kali-linux
fail2ban et astuces pour securiser ssh sur kali linux

Salut à tous ! Aujourd’hui, nous allons voir quelques astuces pour garantir encore plus la sécurité de votre serveur ssh. Un petit rappel donc qui je l’espère vous intéressera.

A cet effet, nous aborderons les points suivants:

  • La configuration de fail2ban
  • L’authentification par clés
  • La traçabilité des tentatives de connexion via Motd

L’authentification ssh par mot de passe

La méthode traditionnelle est l’authentification par mot de passe. Dans certains cas, cette méthode d’authentification via ssh ne peut pas être désactivée comme il est recommandé.

Dans ce cas, il est important d’avoir un mot de passe complexe composé d’au moins 12 caractères avec un mélange de tout: lettres alphabétiques majuscules et minuscules, les caractères spéciaux et les chiffres.
Tout cela étant fait, il s’avère que des machines zombies font constamment du brute-force sur les serveurs vulnérables. Nous aborderons comment détecter ces tentatives.

Par exemple vous pouvez très facilement trouver des scripts python ou dans un autre langage pour lancer une attaque brute-force. SSH bruteforcer en est un et fonctionne en multi-thread, mais il en existe beaucoup d’autres.

Pour éviter que vos mots de passe tombent entre de mauvaises mains, nous allons voir deux options:

  • Utiliser fail2ban
  • Utiliser la méthode d’authentification par clé publique uniquement.

Comprendre et déployer fail2ban

fail2ban est un logiciel qui se charge d’analyser les logs de divers services installés sur la machine, pour bannir automatiquement un hôte via iptables pour une durée déterminée, en cas d’échec après X tentatives. C’est un élément essentiel pour sécuriser son système, et éviter des intrusions via brute-force.

Comment Installer et configurer fail2ban sur kali

On suppose qu’on travaille sur une machine kali linux. Pour installer fail2ban, il suffit de taper la commande suivante:

apt-get install fail2ban

Après installation, tous les fichiers de configurations seront logés dans le répertoire /etc/fail2ban
Passons à la configuration proprement dite…
Le fichier de configuration principal est le jail.conf mais nous n’allons pas l’utiliser directement car ce fichier est souvent altéré après les mises à niveau. Pour cela nous allons faire une copie de ce fichier et le nommer jail.local avec la commande ci-après: cp jail.conf jail.local (en étant dans le répertoire /etc/fail2ban)
Nous allons à présent définir nos options dans le fichier jail.local
Les options à définir sont en dessous de la section [DEFAULT] (la section qui vient après [INCLUDES] )

  • ignoreip = 127.0.0.1/8 ::1 192.168.42.0/24
  • bantime = 30m
  • findtime = 2m
  • maxretry = 10

ignoreip: définit les adresses ip ou plage d’adresse à ignorer ou tolérer lors du fonctionnement de fail2ban,
bantime: définit le temps durant lequel une adresse ip doit être bloqué,
findtime: c’est le laps de temps pendant lequel on considère les occurences (au delà du findtime, on repart à 0),
maxretry: c’est le nombre de tentatives infructueuses que peut faire une adresse ip
En résumé, en langage humain, nos options définies peuvent être traduite de la sorte: Toute adresse ip faisant 10 requêtes infructueuses en 2 minutes sera bannie pendant 30 minutes sauf l’adresse de loopback (127.0.0.1 ou ::1) et les adresses du réseau 192.168.42.0/24.

Ensuite dans la section [sshd], nous définirons les options ci-après:

enable= true

port = ssh

logpath = %(sshd_log)s

backend = %(sshd_backend)s

Nous pouvons personnaliser ici les options définies dans la section [DEFAULT] mais dans ce cas, seules les options définies dans la section [sshd] seront considérées. Dans ce tutoriel, nous préférons laisser ainsi.

Fail2ban en action sur kali linux

Nous avons fini les configurations, il nous reste à activer fail2ban. Pour ce faire, nous taperons les commandes suivantes:

  • Activer fail2ban: sudo systemctl enable fail2ban
  • Démarrer le service de fail2ban: sudo systemctl start fail2ban.service

Enfin, fail2ban est en marche ! Vous pouvez créer un daemon pour le démarrer automatiquement après boot. Il faut noter que d’autres options sont disponibles si vous voulez personnaliser encore plus.

Méthode d’authentification par clé publique

Cette méthode est vraiment intéressante : elle vous permet d’empêcher le bruteforce autrement sans utiliser fail2ban et d’utiliser uniquement des clés publiques pour se connecter à votre serveur. La délicatesse est que seuls dont les clés publiques sont reconnus par le serveur pourront s’y connecter.
Chers sysadmins, commençons les configs 🙂 !
Pour commencer, nous allons générer une paire de clé comme l’image ci-contre:

Notons que l’emplacement par défaut des clés se trouve dans le répertoire caché .ssh de votre répertoire personnel: id_rsa.pub pour la clé publique et id_rsa pour la clé privée. Lors de la génération de la paire de clé, il est recommandé de définir une passphrase pour des raisons de sécurité. Une fois les clés générées, nous enverrons la clé publique sur le serveur ssh, dans le fichier authorized_keys. Pour ce faire, nous utiliserons la commande scp:

ssh-copy-id -i $HOME/.ssh/id_rsa.pub [email protected]

A présent sur le serveur, nous modifierons le fichier de configuration ssh (/etc/ssh/ssh_config) pour activer uniquement l’authentification par clé publique comme ci-contre:

Ensuite, il faut redémarrer le service ssh (systemctl restart ssh.service) et puis tout est configuré !

La traçabilité via Motd

A ce niveau, il s’agira d’avoir un message (une bannière) après connexion au serveur ssh notifiant la date de la dernière connexion réussie et le nombre de tentatives infructueuses. Je vous recommande même cette partie avant d’appliquer tout ce qui est dit ci-haut car ceci vous donne une idée de l’état de vos méthodes d’authentification. Pour ce faire, nous modifierons le fichier /etc/ssh/sshd_config comme suit:

PrintMotd yes
PrintLastLog yes

PrintMotd défini sur yes permettra d’afficher la bannière après connexion au serveur ssh tandis que PrintLastLog permet d’afficher dans la bannière la dernière connexion réussie.

L’autre élément intéressant serait d’afficher le nombre de tentatives infructueuses de connexions dans le MOTD. Cela vient par défaut sur les serveurs CentOS mais sur Kali, la commande ci-après nous révèle l’information voulue:

echo -ne "Total des tentatives échouées: $(grep 'Failed password' /var/log/auth.log* | wc -l) failed attempts"

J’espère que cet article vous sera utile. Pour d’autres astuces autour de kali linux, je vous invite à faire un tour dans la rubrique astuces.

One thought on “Astuces pour sécuriser son serveur ssh (fail2ban, key auth et traçabilité)”
Leave a Comment

Time limit is exhausted. Please reload CAPTCHA.