voteinutile.fr logo

Tuto : Comment sécuriser un serveur Ubuntu (Partie 1) – SSH et SSHd

Vous venez d’installer votre serveur Ubuntu. Il est tout neuf, prêt à recevoir vos applications et à gérer vos données. Félicitations camarade ! Mais avant de l’exposer au monde, la sécurité doit être votre priorité absolue. Dans cet article qui sera en deux parties (au moins). nous allons plonger dans l’univers de SSH, SSHd et les configurations nécessaires pour transformer votre serveur en une forteresse imprenable. Zébartit

Premier pas : Connexion via SSH

La première étape pour sécuriser votre serveur passe par l’installation et la configuration de SSH. SSH (Secure Shell) est un protocole qui permet de se connecter à une machine distante de manière sécurisée. Pour ce faire, ouvrez votre terminal favori et entrez les commandes suivantes :

sudo apt update
sudo apt install openssh-server

Une fois l’installation terminée, assurez-vous que le service SSH est bien en cours d’exécution :

sudo systemctl status ssh

Vous devriez voir quelque chose comme « active (running) ». Si ce n’est pas le cas, démarrez-le manuellement :

sudo systemctl start ssh

Création de clés SSH

Passons maintenant à la création de clés SSH. Ces clés sont essentielles pour établir une connexion sécurisée entre votre machine locale et votre serveur. Utilisez la commande suivante pour générer une paire de clés :

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa

Cette commande créera deux fichiers : une clé privée (id_rsa) et une clé publique (id_rsa.pub). Il est primordial de garder la clé privée en sécurité. Pour transférer la clé publique sur votre serveur, utilisez :

ssh-copy-id username@server_ip

Configuration avancée de SSH

C’est ici que les choses deviennent intéressantes. Modifier les paramètres par défaut de SSH peut aider à renforcer la sécurité de votre serveur. Ouvrez le fichier de configuration SSH :

sudo vi /etc/ssh/sshd_config

Quelques modifications essentielles :

  • Changer le port par défaut : Le port 22 est le port standard pour SSH. En changeant ce port, vous réduisez immédiatement les risques de scans automatisés.
Port 52222
  • Désactiver la connexion root : Empêcher l’utilisateur root de se connecter directement via SSH augmente la sécurité de votre serveur.
PermitRootLogin no
  • Désactiver l’authentification par mot de passe : Une fois que vous avez configuré l’authentification par clé publique, désactivez l’authentification par mot de passe.
PasswordAuthentication no
  • Restreindre les utilisateurs autorisés : Limitez l’accès SSH à des utilisateurs spécifiques.
AllowUsers votre_utilisateur

Après avoir effectué ces modifications, redémarrez le service SSH pour appliquer les changements :

sudo systemctl restart ssh

Renforcement de la sécurité SSH avec l’authentification à deux facteurs (2FA)

Pour aller encore plus loin dans la sécurisation de SSH, vous pouvez configurer l’authentification à deux facteurs (2FA) en utilisant Google Authenticator.

Étape 1 : Installation de libpam-google-authenticator

Commencez par installer le module PAM pour Google Authenticator :

sudo apt install libpam-google-authenticator

Étape 2 : Configuration de l’utilisateur

Chaque utilisateur qui souhaite utiliser 2FA devra configurer Google Authenticator sur son compte. Connectez-vous en tant qu’utilisateur (ou demandez à chaque utilisateur de le faire) et exécutez :

google-authenticator

Le programme vous posera plusieurs questions. Voici les réponses recommandées :

  • Do you want authentication tokens to be time-based? Répondez y pour les tokens basés sur le temps.
  • Update the .google_authenticator file? Répondez y pour enregistrer les nouvelles configurations.
  • Disallow multiple uses of the same authentication token? Répondez y pour plus de sécurité.
  • Increase the original generation time? Répondez n.
  • Do you want to enable rate-limiting? Répondez y pour limiter les tentatives de connexion par minute.

Ensuite, une série de codes QR et de codes d’urgence apparaîtra. Scannez le code QR avec votre application 2FA (Google Authenticator, par exemple) et sauvegardez les codes d’urgence en lieu sûr.

Étape 3 : Configuration de PAM pour SSH

Ouvrez le fichier /etc/pam.d/sshd :

sudo vi /etc/pam.d/sshd

Ajoutez la ligne suivante au début du fichier pour inclure Google Authenticator :

auth required pam_google_authenticator.so

Étape 4 : Modification du fichier SSH

Assurez-vous que l’authentification par challenge-response est activée. Ouvrez le fichier de configuration SSH :

sudo vi /etc/ssh/sshd_config

Recherchez la ligne suivante et assurez-vous qu’elle est définie sur yes :

ChallengeResponseAuthentication yes

Enfin, redémarrez le service SSH pour appliquer les changements :

sudo systemctl restart ssh

Utilisation de Docker pour les conteneurs

Si vous utilisez Docker pour gérer vos applications dans des conteneurs, sachez que la configuration réseau par défaut ne permet pas aux conteneurs de communiquer entre eux. Pour résoudre ce problème, créez un bridge réseau personnalisé :

docker network create --driver bridge mon_bridge

Ensuite, connectez vos conteneurs à ce bridge :

docker network connect mon_bridge votre_conteneur1
docker network connect mon_bridge votre_conteneur2

Vous pouvez maintenant pinguer vos conteneurs entre eux et établir des connexions SSH internes si nécessaire.

Configuration des fichiers hosts

Pour faciliter la communication entre vos conteneurs ou vos serveurs sans DNS, vous pouvez modifier le fichier /etc/hosts. Ajoutez-y les adresses IP et des alias pour les identifier facilement :

sudo vi /etc/hosts

Ajoutez les lignes suivantes :

172.21.0.2 UC1
172.21.0.3 UC2

Les fichiers de configuration personnalisée

Pour éviter de modifier directement les fichiers de configuration par défaut, nous allons utiliser des fichiers de configuration personnalisée. Créez un fichier dans /etc/ssh/sshd_config.d avec un numéro élevé pour qu’il soit pris en compte en dernier :

sudo vi /etc/ssh/sshd_config.d/99-custom.conf

Dans ce fichier, ajoutez les configurations suivantes :

PermitRootLogin no
PasswordAuthentication no
Port 52222
AllowUsers votre_utilisateur

Redémarrez SSH pour prendre en compte les nouvelles configurations :

sudo systemctl restart ssh

Tester la connexion

Pour vérifier que tout fonctionne correctement, tentez une connexion SSH :

ssh -p 52222 votre_utilisateur@server_ip

Si tout est en ordre, vous devriez être connecté sans avoir à saisir de mot de passe, simplement avec votre clé SSH.

Le fichier de configuration client

Pour simplifier les connexions à vos serveurs, créez un fichier de configuration SSH côté client. Dans votre répertoire ~/.ssh, créez un fichier config :

vi ~/.ssh/config

Ajoutez les lignes suivantes :

Host votre_alias
    HostName server_ip
    User votre_utilisateur
    Port 52222
    IdentityFile ~/.ssh/id_rsa

Cette configuration vous permet de vous connecter simplement en tapant :

ssh votre_alias

Conclusion

La sécurisation de votre serveur Ubuntu avec SSH et SSHd est une étape cruciale pour protéger vos données et applications. En suivant ces étapes, vous vous assurez que votre serveur est protégé contre les attaques les plus courantes, tout en simplifiant vos processus de connexion. N’oubliez pas que la sécurité ne s’arrête jamais, et il est essentiel de rester informé des nouvelles menaces et des meilleures pratiques.

Alors, prêt à transformer votre serveur en bastion de sécurité ? N’attendez plus, plongez dans l’action et sécurisez votre infrastructure dès aujourd’hui !

Voilà c’était pas si dur, non ? Si cet article vous a plu, n’oubliez pas de partager vos retours dans les commentaires et de nous suivre pour plus de tutoriels passionnants.

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.