sshd et le CLOUD
Introduction
Bien que le protocole SSH soit chiffré, il est essentiel d’apporter une sécurité supplémentaire aux accès SSH, surtout lorsqu’ils sont hébergés dans le cloud. En effet, lorsqu’un serveur est exposé avec une adresse IP publique, il devient inévitablement vulnérable aux nombreuses menaces en ligne, notamment les bots qui scannent continuellement les adresses IP à la recherche de failles à exploiter.
L’une des attaques les plus courantes est l’attaque par force brute. Les attaques par force brute visent les bases de données de mots de passe en testant systématiquement différentes combinaisons de caractères alphanumériques de diverses longueurs. Ces attaques sont généralement efficaces contre les mots de passe simples et courts, composés de 5 à 7 caractères.
Dans cet article, nous montrerons comment renforcer la sécurité d’un serveur SSH pour le protéger contre les menaces potentielles et réduire les risques associés aux accès non sécurisés. Nous aborderons diverses méthodes et bonnes pratiques pour sécuriser votre serveur SSH, notamment en limitant les tentatives de connexion, en utilisant des clés d’authentification plutôt que des mots de passe, et en mettant en place un pare-feu pour filtrer le trafic entrant.
SSH
En se basant sur l’ANSSI pour rédiger cet article, toutes les modifications se font dans /etc/sshd/sshd_config.
Un petit script pour automatiser cette sécurisation. Attention de bien installer une clef publique sur votre serveur avant :)
Pour prendre en compte les modifications:
systemctl restart sshd.service
Pour les plus curieux vous trouverez les préco d’ANSSI ici : https://www.ssi.gouv.fr/uploads/2014/01/NT_OpenSSH.pdf
Fail2ban
Pour aller un peu plus loin on peut y ajouter un outil comme Fail2ban. Fail2Ban est un outil open-source utilisé pour protéger les serveurs contre diverses attaques, notamment les attaques par force brute. Il analyse les journaux de votre serveur pour détecter les tentatives de connexion échouées et bannit les adresses IP suspectes pour une durée déterminée. Voici une cheat sheet pour vous aider à configurer et utiliser Fail2Ban :
Installation
sudo apt-get update && sudo apt-get upgrade
sudo apt install fail2ban
systemctl enable fail2ban
configuration
vi /etc/fail2ban/jail.local
[DEFAULT]
[sshd]
enabled = true
banaction = iptables-multiport
port = ssh
maxretry = 3
bantime = 864000
logpath = %(sshd_log)s
[sshlongterm]
port = ssh
logpath = %(sshd_log)s
banaction = iptables-multiport
maxretry = 10
findtime = 259200
bantime = 6084000
enabled = true
filter = sshd
Et un petit restart pour prendre en compte nos modifications
sudo systemctl restart fail2ban
Voici quelques exemples de paramètres que vous pouvez modifier : ignoreip : Liste des adresses IP à ignorer (ne pas bannir). bantime : Durée du bannissement en secondes (par défaut : 10 minutes). findtime : Durée pendant laquelle Fail2Ban recherche les tentatives de connexion échouées (par défaut : 10 minutes). maxretry : Nombre de tentatives de connexion échouées avant de bannir une adresse IP (par défaut : 5).
Exploitation
Si votre IP a été bannie vous pouvez la sortir de la liste du ban avec cette commande où 111.111.111.111 est l’ip qu’on veut sortir.
sudo fail2ban-client set nginx-http-auth unbanip 111.111.111.111
OSSEC
Pour renforcer davantage la sécurité de votre serveur, vous pouvez également utiliser OSSEC (Open Source HIDS SECurity). OSSEC est un système de détection d’intrusion basé sur l’hôte (HIDS) open-source qui offre une surveillance en temps réel des systèmes, une analyse de journaux, une vérification de l’intégrité des fichiers, la détection des rootkits et une gestion active des réponses aux incidents.
Installation
sudo apt-get update && sudo apt-get upgrade
sudo apt install ossec-hids ossec-hids-server
Configuration
Éditez le fichier de configuration d’OSSEC :
sudo nano /var/ossec/etc/ossec.conf
Adaptez la configuration en fonction de vos besoins. Par exemple, vous pouvez configurer des alertes par e-mail en ajoutant ces lignes dans la section :
<global>
<email_notification>yes</email_notification>
<email_to>contact@ravindra-job.fr</email_to>
<smtp_server>smtp.blog.ravindra-job.fr</smtp_server>
<email_from>contact@ravindra-job.fr</email_from>
</global>
Démarrage du service
sudo systemctl enable ossec
sudo systemctl start ossec
Exploitation
Pour vérifier l’état d’OSSEC et afficher les alertes, consultez les fichiers de journalisation :
sudo tail -f /var/ossec/logs/alerts/alerts.log
Si vous devez débloquer une adresse IP bloquée par OSSEC, vous pouvez utiliser la commande suivante, où 111.111.111.111 est l’adresse IP à débloquer :
sudo /var/ossec/bin/agent_control -u 111.111.111.111
Un petit aperçu de l’installation et de la configuration d’OSSEC pour renforcer la sécurité de votre serveur. N’oubliez pas de consulter la documentation officielle sur : https://www.ossec.net/docs/
Si vous voulez plus d’information sur l’infrastructure vous pouvez voir mon repo à ce sujet : https://github.com/ravindrajob/InfraAtHome