🎯 Compétences acquises
Construire un système sécurisé
🛠️ Le Tutoriel Complet
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.
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.
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.
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 :
# === 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.
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
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
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
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
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é :
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 statusaffiche "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 nodans sshd_config) et root est banni - ✅Les mises à jour de sécurité s'installent automatiquement (
unattended-upgradesactif) - ✅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.