Credit : Illustration backtotheweb.fr
Hardening Linux : securiser son serveur de A a Z
Hardening Linux : securiser son serveur de A a Z
J'ai passé pas mal de temps à chercher la bonne config, alors autant partager.
Un serveur Linux expose sur Internet est constamment attaque. Voici une checklist complete pour le securiser, applicable des la mise en production.
1. Securiser SSH
SSH est la premiere cible. Editez /etc/ssh/sshd_config :
# Changer le port (evite 90% des scans automatiques)
Port 2222
# Desactiver la connexion root
PermitRootLogin no
# Authentification par cle uniquement
PasswordAuthentication no
PubkeyAuthentication yes
# Limiter les utilisateurs autorises
AllowUsers deploy admin
# Timeouts
ClientAliveInterval 300
ClientAliveCountMax 2
# Protocole 2 uniquement
Protocol 2
# Desactiver les methodes inutiles
ChallengeResponseAuthentication no
X11Forwarding no
Redemarrez :
sudo systemctl restart sshd
Important : testez une nouvelle connexion SSH avant de fermer la session courante.
2. Configurer le pare-feu (UFW)
sudo apt install ufw
# Politique par defaut
sudo ufw default deny incoming
sudo ufw default allow outgoing
# Autoriser SSH (sur le port personnalise)
sudo ufw allow 2222/tcp
# Autoriser HTTP et HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Activer
sudo ufw enable
sudo ufw status verbose
3. Installer fail2ban
fail2ban bannit les IP apres plusieurs echecs de connexion :
sudo apt install fail2ban
Creez /etc/fail2ban/jail.local :
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
banaction = ufw
[sshd]
enabled = true
port = 2222
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
[nginx-http-auth]
enabled = true
logpath = /var/log/nginx/error.log
[nginx-botsearch]
enabled = true
logpath = /var/log/nginx/access.log
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# Voir les bans actifs
sudo fail2ban-client status sshd
4. Installer CrowdSec
CrowdSec est une alternative moderne a fail2ban avec une base de donnees collaborative de menaces :
curl -s https://install.crowdsec.net | sudo sh
sudo apt install crowdsec crowdsec-firewall-bouncer-iptables
# Verifier les decisions
sudo cscli decisions list
# Voir les alertes
sudo cscli alerts list
# Installer des collections
sudo cscli collections install crowdsecurity/nginx
sudo cscli collections install crowdsecurity/linux
5. Mises a jour automatiques
sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
Verifiez /etc/apt/apt.conf.d/50unattended-upgrades :
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
};
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";
6. Durcir le noyau
Ajoutez dans /etc/sysctl.d/99-hardening.conf :
# Protection contre le spoofing
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Ignorer les pings broadcast
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Desactiver la redirection IP
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# Desactiver le routage source
net.ipv4.conf.all.accept_source_route = 0
# Protection SYN flood
net.ipv4.tcp_syncookies = 1
# Logger les paquets martiens
net.ipv4.conf.all.log_martians = 1
# Desactiver IPv6 si non utilise
net.ipv6.conf.all.disable_ipv6 = 1
Appliquez :
sudo sysctl --system
7. Auditer le systeme
# Scanner les rootkits
sudo apt install rkhunter chkrootkit
sudo rkhunter --check
sudo chkrootkit
# Lister les ports ouverts
sudo ss -tlnp
# Verifier les fichiers SUID
find / -type f -perm -4000 2>/dev/null
# Verifier les utilisateurs avec shell
grep -v '/nologin\|/false' /etc/passwd
# Installer Lynis pour un audit complet
sudo apt install lynis
sudo lynis audit system
Lynis attribue un score de securite et liste les recommandations detaillees.
8. Configurer les permissions
# Restreindre /tmp
chmod 1777 /tmp
# Proteger les fichiers sensibles
chmod 600 /etc/shadow
chmod 644 /etc/passwd
chmod 600 /etc/ssh/sshd_config
# Restreindre cron
echo "deploy" | sudo tee /etc/cron.allow
Checklist finale
[ ] SSH sur port non standard, cles uniquement
[ ] Pare-feu actif (UFW/iptables)
[ ] fail2ban ou CrowdSec installe
[ ] Mises a jour automatiques activees
[ ] Noyau durci (sysctl)
[ ] Audit Lynis > 70 points
[ ] Sauvegardes testees
[ ] Monitoring en place
La securisation est un processus continu. Planifiez des audits reguliers et restez informe des nouvelles vulnerabilites.
Article mis à jour en avril 2026.