Projet

Sécurisation d’un serveur Linux

Mise en place d’un socle de sécurité sur un serveur Debian : sécuriser SSH, pare-feu UFW, gestion des utilisateurs et bonnes pratiques.

Sécurisation d’un serveur Linux

Contexte

Projet réalisé dans une logique de mise en pratique des fondamentaux Linux, infrastructure et DevOps.

Objectif

Construire un environnement simple, structuré et sécurisé afin de renforcer la compréhension des systèmes, de l’automatisation et des bonnes pratiques de sécurisation des infrastructures.

Architecture technique

Mise en place d'un socle de sécurité sur un serveur Debian : durcissement SSH, pare-feu UFW, gestion des utilisateurs et bonnes pratiques

Introduction

La sécurisation d’un serveur Linux est une étape fondamentale dans toute infrastructure moderne.
Un serveur mal configuré ou exposé sans protection devient rapidement une cible pour les scans automatisés, attaques par brute force, tentatives d’intrusion ou exploitations de vulnérabilités.

Dans cet article, nous allons mettre en place un socle de sécurité de base sur un serveur Debian afin de réduire la surface d’attaque et appliquer plusieurs bonnes pratiques essentielles :

  • Durcissement du service SSH ;

  • configuration du pare-feu UFW ;

  • gestion sécurisée des utilisateurs ;

  • sécurisation des accès ;

  • recommandations de sécurité système.

L’objectif n’est pas de rendre le serveur invulnérable, mais d’établir une base solide et professionnelle pour toute infrastructure Linux.

1. Mise à jour du système

On commence par mettre à jour la liste des paquets, puis les paquets installés, afin de corriger les failles de sécurité connues.

sudo apt update && sudo apt upgrade -y

2. Création d'un utilisateur non root avec sudo

Travailler en root est risqué : une erreur de commande s'applique à tout le système. On crée donc un utilisateur dédié, que l'on ajoute au groupe sudo.

sudo adduser devops

sudo usermod -aG sudo devops

groups devops

3. Sécurisation du service SSH

On interdit la connexion directe du compte root en SSH, ce qui oblige à passer par l'utilisateur créé à l'étape précédente.

sudo nano /etc/ssh/sshd_config

Régler la directive suivante :

PermitRootLogin no

On vérifie la syntaxe du fichier avant de redémarrer le service :

sudo sshd -t

sudo systemctl restart ssh

Précaution : garder une session SSH ouverte pendant la modification, et tester une nouvelle connexion dans un second terminal avant de fermer la première.

4. Pare-feu avec UFW

UFW (Uncomplicated Firewall) filtre le trafic entrant. La règle SSH est ajoutée avant l'activation du pare-feu, pour ne pas se couper l'accès au serveur.

sudo apt install -y ufw

sudo ufw allow OpenSSH

sudo ufw enable

sudo ufw status

5. Protection contre le force brute avec fail2ban

fail2ban surveille les journaux et bannit temporairement les adresses IP qui multiplient les échecs de connexion.

sudo apt install -y fail2ban

sudo systemctl status fail2ban

6. Automatisation

Les étapes de base (mises à jour, installation des paquets, activation d'UFW) sont regroupées dans un script Bash. La création de l'utilisateur et la configuration SSH restent manuelles.

Code source et guides détaillés : https://github.com/stephanemetche/linux-server-setup

7. Limites et version 2

Ce socle est volontairement simple. Les améliorations prévues sont :

- authentification SSH par clés, avec désactivation de l'authentification par mot de passe ;

- mises à jour de sécurité automatiques avec unattended-upgrades ;

- configuration de fail2ban dédiée à SSH.

Sécurisation d’un serveur Linux Sécurisation d’un serveur Linux