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