Ubuntu Linux · Épisode 09

💡 Sécuriser Ubuntu — Pare-feu, Intrusions & Bonnes Pratiques

UFW, fail2ban, mises à jour automatiques, SSH durci, AppArmor et audit de sécurité à tout ce qu'il faut pour construire un système Ubuntu robuste et résistant aux attaques.

📅 Avril 2026
👤 Par OWL
~35 min de lecture
Intermédiaire
Illustration sécurité Ubuntu Linux

Construire un système sécurisé

💰
Pare-feu UFW
Configurer Uncomplicated Firewall pour n'autoriser que le trafic légitime et bloquer tout le reste par défaut.
💰
fail2ban
Bloquer automatiquement les adresses IP qui tentent des attaques par force brute sur SSH, HTTP et d'autres services.
💰
Mises à jour auto
Configurer unattended-upgrades pour que les correctifs de sécurité critiques s'installent automatiquement sans intervention.
💰
Audit & Surveillance
Surveiller les tentatives de connexion, auditer les logs système et détecter les comportements suspects avec les bons outils.

Sécuriser Ubuntu Linux

La métaphore d'OWL : La Maison Fortifiée

Sécuriser un système Linux, c'est comme fortifier une maison. UFW, c'est la porte blindée et les volets : rien n'entre ou ne sort sans ton autorisation explicite. fail2ban, c'est le gardien qui observe qui tente de forcer la porte et qui les blackliste après 3 échecs. Les mises à jour automatiques, c'est l'équipe qui répare les failles dans les murs sans que tu aies — t'en préoccuper.

AppArmor, c'est le système de zones sécurisées à l'intérieur de la maison : même si un intrus entre, il est confiné dans une seule pièce et ne peut pas accèder aux pièces sensibles. Et les logs, c'est ta caméra de surveillance — tu vois tout ce qui s'est passé.

Les 5 Principes de Sécurité Linux

1. Moindre privilège

Chaque utilisateur et service n'a que les droits strictement nécessaires. Jamais root au quotidien.

2. Surface d'attaque minimale

Désinstaller tout ce qu'on n'utilise pas. Fermer tous les ports inutiles.

3. Défense en profondeur

Plusieurs couches de sécurité : pare-feu + fail2ban + AppArmor + mots de passe forts.

4. Mises à jour régulières

90% des intrusions exploitent des vulnérabilités connues et corrigées. Patcher = protèger.

5. Surveillance & Journalisation

Un système sécurisé est un système surveillé. Consulter régulièrement les logs permet de détecter une intrusion avant qu'elle ne cause des dégéts.

1. UFW — Le Pare-feu Ubuntu

UFW (Uncomplicated Firewall) est l'interface simplifiée d'iptables fournie avec Ubuntu. La règle d'or : tout bloquer par défaut, n'autoriser que ce dont tu as besoin.

Terminal — Configurer UFW
# Vérifier le statut
sudo ufw status verbose

# Politique par défaut : tout bloquer
sudo ufw default deny incoming
sudo ufw default allow outgoing

# Autoriser les services nécessaires
sudo ufw allow ssh # port 22 SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 8096/tcp # Jellyfin

# Activer le pare-feu
sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)é y
Firewall is active and enabled on system startup


# Voir les règles numérotées
sudo ufw status numbered

# Supprimer une règle par son numéro
sudo ufw delete 3

# Autoriser seulement depuis une IP spécifique
sudo ufw allow from 192.168.1.0/24 to any port 22

# Limiter les tentatives de connexion SSH (anti brute-force)
sudo ufw limit ssh
⚠️

Toujours autoriser SSH avant d'activer UFW si tu es connecté à distance — sinon tu te coupes l'accès à la machine ! La commande sudo ufw allow ssh est obligatoire avant sudo ufw enable.

2. fail2ban — Le Gardien Anti-Intrusions

fail2ban surveille les logs en temps réel et bannit automatiquement les IPs qui échouent trop souvent — s'authentifier. Indispensable pour SSH exposé sur internet.

Terminal — Installer et configurer fail2ban
# Installer fail2ban
sudo apt install fail2ban -y

# Créer le fichier de config local (ne JAMAIS modifier jail.conf directement)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

# Paramètres essentiels dans [DEFAULT]
[DEFAULT]
bantime = 3600 # bannir 1 heure
findtime = 600 # fenêtre de 10 minutes
maxretry = 5 # max 5 tentatives ratées
ignoreip = 127.0.0.1/8 192.168.1.0/24 # ne pas bannir le rôleau local

[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log
maxretry = 3 # plus strict pour SSH


# Démarrer et activer fail2ban
sudo systemctl enable --now fail2ban

# Vérifier le statut
sudo fail2ban-client status
sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter: Currently failed: 2 Total failed: 47
|- Actions: Currently banned: 3 Total banned: 12


# Débannir une IP manuellement
sudo fail2ban-client set sshd unbanip 192.168.1.50

# Voir les IPs actuellement bannies
sudo fail2ban-client banned

3. Mises — Jour de Sécurité Automatiques

unattended-upgrades installe automatiquement les correctifs de sécurité critiques. Tu conserves le contrôle sur les mises à jour de fonctionnalités, mais les failles sont corrigées sans délai.

Terminal — Configurer les MAJ automatiques
# Installer unattended-upgrades
sudo apt install unattended-upgrades apt-listchanges -y

# Activer la configuration interactive
sudo dpkg-reconfigure --priority=low unattended-upgrades

# éditer la configuration
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

# Lignes importantes — activer/vérifier
// Installer les méj de sécurité Ubuntu
"origin=Ubuntu,codename=${distro_codename}-security";

// Supprimer automatiquement les paquets obsolétes
Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Redémarrer automatiquement si nécessaire (nuit)
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";


# Configurer la fréquence (/etc/apt/apt.conf.d/20auto-upgrades)
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1"; // vérifier chaque jour
APT::Periodic::Unattended-Upgrade "1"; // installer chaque jour


# Tester en mode dry-run
sudo unattended-upgrades --dry-run --debug

4. Durcir SSH — Configuration Avancée

SSH est souvent la première cible des attaquants. Voici la configuration recommandée pour le rendre très robuste :

/etc/ssh/sshd_config — Configuration sécurisée
sudo nano /etc/ssh/sshd_config

# === SéCURITé SSH — Config OWL ===

# Changer le port (réduire le bruit des bots automatiques)
Port 2222

# Désactiver root en SSH (OBLIGATOIRE)
PermitRootLogin no

# Forcer l'authentification par clé uniquement
PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes

# Limiter les utilisateurs autorisés
AllowUsers owl alice

# Timeout et tentatives
LoginGraceTime 30
MaxAuthTries 3
MaxSessions 5

# Désactiver les fonctionnalités inutiles
X11Forwarding no
AllowAgentForwarding no
PermitEmptyPasswords no

# Déconnecter les sessions inactives (15 min)
ClientAliveInterval 300
ClientAliveCountMax 3


# Vérifier la syntaxe avant de redémarrer !
sudo sshd -t

# Redémarrer SSH
sudo systemctl restart ssh

# Mettre à jour UFW si tu as changé le port
sudo ufw allow 2222/tcp
sudo ufw delete allow ssh

5. AppArmor — Confinement des Applications

AppArmor est déjé actif sur Ubuntu par défaut. Il confine les applications dans des profils de sécurité : même si une app est compromise, elle ne peut pas accèder à des fichiers système sensibles.

Terminal — Gérer AppArmor
# Vérifier qu'AppArmor est actif
sudo apparmor_status
apparmor module is loaded.
74 profiles are loaded.
72 profiles are in enforce mode.
2 profiles are in complain mode.


# Voir les profils actifs
sudo aa-status | grep "enforce"

# Installer des profils supplémentaires
sudo apt install apparmor-profiles apparmor-utils -y

# Mettre un profil en mode "enforce" (actif et appliqué)
sudo aa-enforce /etc/apparmor.d/usr.bin.firefox

# Mettre un profil en mode "complain" (log seulement, ne bloque pas)
sudo aa-complain /etc/apparmor.d/usr.bin.firefox

# Désactiver un profil (non recommandé)
sudo aa-disable /etc/apparmor.d/usr.bin.firefox
💡

Sur Ubuntu, AppArmor est activé automatiquement et protège déjé les services critiques (nginx, mysql, cups...). Tu n'as généralement pas besoin de le configurer manuellement — vérifie juste qu'il est en mode enforce et non complain.

6. Surveiller son Système — Logs & Audit

Terminal — Surveillance et logs
# Voir les tentatives de connexion SSH échouées
grep "Failed password" /var/log/auth.log | tail -20
grep "Invalid user" /var/log/auth.log | tail -20

# Voir les connexions réussies
grep "Accepted" /var/log/auth.log | tail -10

# Vérifier les dernières connexions
last -n 20
lastb -n 10 # connexions échouées

# Logs système en temps réel
sudo journalctl -f
sudo journalctl -f -u ssh # SSH uniquement
sudo journalctl -f -u fail2ban # fail2ban en direct

# Chercher des anomalies dans les logs système
sudo journalctl --since "1 hour ago" -p err
# -p err = niveau erreur et plus grave (warn, err, crit, alert, emerg)

# Lister les processus qui écoutent sur le rôleau
ss -tlnp

# Voir les cronjobs system (attention aux scripts malveillants)
cat /etc/crontab
ls /etc/cron.*

7. Outils d'Audit de Sécurité

Lynis — Audit de sécurité complet

Terminal
# Installer Lynis
sudo apt install lynis -y

# Lancer un audit complet
sudo lynis audit system

[ Lynis 3.x ]
...
Hardening index : 68 [############## ]
Tests performed : 247
Plugins enabled : 2
...
Suggestions (22):
- SSH: Disable root login
- Enable automatic security updates
...

rkhunter — Détection de rootkits

Terminal
# Installer et initialiser rkhunter
sudo apt install rkhunter -y
sudo rkhunter --update
sudo rkhunter --propupd # créer la baseline des fichiers légitimes

# Lancer une analyse
sudo rkhunter --check --sk # --sk = skip keyboard prompts

# Vérifier le rapport
cat /var/log/rkhunter.log | grep -E "Warning|Infected"

ClamAV — Antivirus open source

Terminal
# Installer ClamAV
sudo apt install clamav clamav-daemon -y

# Mettre à jour les définitions de virus
sudo freshclam

# Scanner un dossier
sudo clamscan -r /home/owl/Downloads/

# Scanner et mettre en quarantaine les fichiers infectés
sudo clamscan -r --move=/tmp/quarantaine /home/owl/

La Checklist Sécurité d'OWL

Script tout-en-un pour appliquer la configuration sécurité recommandée par OWL sur un Ubuntu fraîchement installé :

secure_ubuntu.sh — à adapter selon tes besoins
#!/bin/bash
echo "💡 Configuration sécurité Ubuntu — OWL Setup"

# 1. Mises à jour
sudo apt update && sudo apt upgrade -y
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -f noninteractive unattended-upgrades
echo "é Mises à jour automatiques activées"

# 2. UFW pare-feu
sudo apt install -y ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw --force enable
echo "é UFW activé (SSH autorisé)"

# 3. fail2ban
sudo apt install -y fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo systemctl enable --now fail2ban
echo "é fail2ban actif"

# 4. Outils d'audit
sudo apt install -y lynis rkhunter
echo "é Outils d'audit installés"

# 5. Désactiver IPv6 si non utilisé
# echo "net.ipv6.conf.all.disable_ipv6=1" | sudo tee -a /etc/sysctl.conf

echo ""
echo "💡 Configuration de base terminée !"
echo "💡 N'oublie pas de configurer SSH (PasswordAuthentication no)"
echo "💡 Lance : sudo lynis audit system pour un audit complet"

✅ Comment savoir si ton Ubuntu est bien sécurisé

  • UFW est actif (sudo ufw status affiche "Status: active") avec seuls les ports nécessaires ouverts
  • fail2ban tourne (sudo fail2ban-client status sshd) et surveille SSH
  • SSH n'accepte que les clés (PasswordAuthentication no dans sshd_config) et root est banni
  • Les mises à jour de sécurité s'installent automatiquement (unattended-upgrades actif)
  • Lynis donne un score de hardening supérieur — 70 après application de ces mesures

⚠️ Problèmes Courants & Solutions

J'ai activé UFW et je ne peux plus me connecter en SSH

💡 Si tu as accès physique à la machine : sudo ufw allow ssh puis sudo ufw reload. Si c'est un VPS distant, utilise la console d'urgence de ton hébergeur. à l'avenir : toujours ajouter la règle SSH avant d'activer UFW.

é fail2ban a banni ma propre IP et je ne peux plus me connecter

💡 Débannir ton IP depuis la console locale : sudo fail2ban-client set sshd unbanip TON_IP. Puis ajoute ton rôleau local dans ignoreip du fichier /etc/fail2ban/jail.local pour éviter que ça se reproduise.

J'ai désactivé PasswordAuthentication mais je n'ai pas de clé SSH — comment me reconnecter

💡 C'est le piège classique ! Toujours avoir sa clé publique sur la machine avant de désactiver les mots de passe. Pour récupérer l'accès : boot en mode recovery, remonte le système en lecture-écriture, remet PasswordAuthentication yes, redémarre, copie ta clé, puis redésactive les mots de passe.

é Lynis donne des suggestions que je ne comprends pas, que faire

💡 Chaque suggestion Lynis a un identifiant (ex: SSH-7408). Tape sudo lynis show details SSH-7408 pour avoir l'explication complète et les commandes de correction. Ne corrige pas aveuglément tout ce que Lynis suggére — certaines recommandations sont pour des serveurs de production et inutiles sur un PC perso.

💬 Commentaires & Discussion