La sécurisation d'un nouveau serveur Linux est une étape cruciale avant sa mise en production. Ce guide présente les mesures fondamentales à prendre immédiatement après l'installation pour protéger votre système.
1. Mise à jour du système
La première action à effectuer est la mise à jour complète du système d'exploitation :
# Pour Debian/Ubuntu sudo apt update && sudo apt upgrade -y # Pour CentOS/RHEL sudo dnf update -y
Évitez de travailler en tant que root. Créez un utilisateur avec des privilèges sudo :
# Création d'un nouvel utilisateur sudo adduser votre_utilisateur # Ajout aux sudoers (Debian/Ubuntu) sudo usermod -aG sudo votre_utilisateur # Ajout aux sudoers (CentOS/RHEL) sudo usermod -aG wheel votre_utilisateur
SSH est souvent la première cible des attaques. Modifiez sa configuration dans `/etc/ssh/sshd_config` :
# Changement du port par défaut (22) Port 2222 # Désactivation de la connexion root PermitRootLogin no # Autorisation uniquement de certains utilisateurs AllowUsers votre_utilisateur # Désactivation de l'authentification par mot de passe PasswordAuthentication no # Limitation des tentatives de connexion MaxAuthTries 3
sudo systemctl restart sshd
Pour l'authentification par clé (plus sécurisée) :
# Sur votre machine locale ssh-keygen -t ed25519 -C "[email protected]" # Transfert de la clé publique ssh-copy-id -i ~/.ssh/id_ed25519.pub votre_utilisateur@adresse_serveur
Installez et configurez le pare-feu :
# UFW (Ubuntu/Debian) sudo apt install ufw sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow 2222/tcp # Votre port SSH sudo ufw enable # Firewalld (CentOS/RHEL) sudo dnf install firewalld sudo systemctl enable firewalld sudo systemctl start firewalld sudo firewall-cmd --permanent --add-port=2222/tcp # Votre port SSH sudo firewall-cmd --reload
Fail2ban protège contre les tentatives d'intrusion par force brute :
# Installation sudo apt install fail2ban # Debian/Ubuntu sudo dnf install fail2ban # CentOS/RHEL # Configuration de base sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
```
[sshd] enabled = true port = 2222 filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 3600
sudo systemctl enable fail2ban sudo systemctl start fail2ban
Identifiez et désactivez les services non nécessaires :
# Lister les services actifs sudo systemctl list-unit-files --state=enabled # Désactiver un service sudo systemctl disable service_name sudo systemctl stop service_name
# Debian/Ubuntu sudo apt install unattended-upgrades sudo dpkg-reconfigure unattended-upgrades
# CentOS/RHEL sudo dnf install dnf-automatic sudo systemctl enable --now dnf-automatic.timer
Paramètres du noyau Linux
Modifiez `/etc/sysctl.conf` pour renforcer la sécurité réseau :
# Protection contre les attaques de type spoofing net.ipv4.conf.all.rp_filter=1 net.ipv4.conf.default.rp_filter=1 # Désactivation du routage IP net.ipv4.ip_forward=0 # Protection contre les attaques SYN flood net.ipv4.tcp_syncookies=1 # Ignorer les pings net.ipv4.icmp_echo_ignore_all=1
sudo sysctl -p
Modifiez `/etc/security/limits.conf` :
* hard core 0 * soft nproc 1000 * hard nproc 2000
# Auditd pour l'audit système sudo apt install auditd # Debian/Ubuntu sudo dnf install audit # CentOS/RHEL # Logwatch pour analyser les logs sudo apt install logwatch # Debian/Ubuntu sudo dnf install logwatch # CentOS/RHEL
Installez et exécutez des outils de vérification :
# Lynis - outil d'audit de sécurité sudo apt install lynis # Debian/Ubuntu sudo dnf install lynis # CentOS/RHEL sudo lynis audit system
Conclusion
Cette configuration de base fournit un bon niveau de sécurité pour un nouveau serveur Linux. Cependant, la sécurité est un processus continu qui nécessite des mises à jour et des audits réguliers. Adaptez ces recommandations à vos besoins spécifiques et tenez-vous informé des nouvelles menaces et vulnérabilités.
