Hardening Linux — Bonnes pratiques
Durcissement de sécurité Linux - Guide complet
Cette documentation présente un processus complet de durcissement (hardening) pour vos VPS Linux chez RedHeberg, suivant les bonnes pratiques de sécurité système.
Préparation du système
1. Mise à jour complète du système
# Mise à jour des paquets
apt update && apt upgrade -y
# Installation des outils nécessaires
apt install -y ufw fail2ban unattended-upgrades auditd sudo
2. Configuration des mises à jour automatiques
# Configuration d'unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
# Édition du fichier de configuration
nano /etc/apt/apt.conf.d/50unattended-upgrades
Ajoutez ces lignes dans le fichier :
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Durcissement SSH
3. Modification du port SSH
# Sauvegarde de la configuration SSH
cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup
# Édition de la configuration
nano /etc/ssh/sshd_config
Modifiez ces paramètres dans le fichier :
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
X11Forwarding no
AllowTcpForwarding no
ClientAliveInterval 300
ClientAliveCountMax 2
MaxAuthTries 3
Protocol 2
4. Configuration des clés SSH
# Création du répertoire SSH pour l'utilisateur
mkdir -p ~/.ssh
chmod 700 ~/.ssh
# Génération d'une paire de clés (sur votre machine locale)
ssh-keygen -t ed25519 -b 4096 -f ~/.ssh/redheberg_key
# Copie de la clé publique sur le serveur
nano ~/.ssh/authorized_keys
# Collez le contenu de votre clé publique
chmod 600 ~/.ssh/authorized_keys
# Redémarrage du service SSH
systemctl restart ssh
systemctl status ssh
Attention
Testez la connexion SSH avec le nouveau port avant de fermer votre session actuelle :
ssh -p 2222 -i ~/.ssh/redheberg_key user@YOUR_SERVER_IP
Configuration du pare-feu UFW
5. Paramétrage strict d'UFW
# Réinitialisation des règles
ufw --force reset
# Politique par défaut restrictive
ufw default deny incoming
ufw default allow outgoing
# Autorisation SSH sur le nouveau port
ufw allow 2222/tcp
# Autorisation des services essentiels (exemple web)
ufw allow 80/tcp
ufw allow 443/tcp
# Activation d'UFW
ufw enable
# Vérification du statut
ufw status verbose
Protection contre les intrusions
6. Configuration de Fail2Ban
# Configuration de Fail2Ban
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local
Ajoutez cette configuration :
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
ignoreip = 127.0.0.1/8
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
# Redémarrage de Fail2Ban
systemctl restart fail2ban
systemctl enable fail2ban
# Vérification du statut
fail2ban-client status sshd
Durcissement réseau et kernel
7. Configuration sysctl pour la sécurité réseau
# Édition des paramètres kernel
nano /etc/sysctl.d/99-security.conf
Ajoutez ces paramètres de sécurité :
# Protection contre l'IP spoofing
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Désactivation du forwarding IP
net.ipv4.ip_forward = 0
net.ipv6.conf.all.forwarding = 0
# Protection contre les attaques ICMP
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Désactivation des redirections ICMP
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
# Désactivation du source routing
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
# Protection SYN flood
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
# Randomisation des PIDs
kernel.randomize_va_space = 2
# Limitation des logs kernel
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
8. Désactivation d'IPv6 (si non utilisé)
# Ajout dans sysctl
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.d/99-security.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.d/99-security.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.d/99-security.conf
# Application des changements
sysctl -p /etc/sysctl.d/99-security.conf
Audit et surveillance
9. Configuration d'auditd
# Configuration de l'audit système
nano /etc/audit/rules.d/audit.rules
Ajoutez ces règles d'audit :
# Audit des connexions
-w /var/log/auth.log -p wa -k auth
-w /var/log/secure -p wa -k auth
# Audit des modifications système
-w /etc/passwd -p wa -k passwd_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes
# Audit SSH
-w /etc/ssh/sshd_config -p wa -k ssh_config
# Redémarrage d'auditd
systemctl restart auditd
systemctl enable auditd
10. Vérification des services actifs
# Liste des services en cours d'exécution
systemctl list-units --type=service --state=running
# Désactivation des services inutiles (exemple)
systemctl disable snapd
systemctl stop snapd
# Vérification des ports ouverts
netstat -tulpn
ss -tulpn
Anti-DDoS RedHeberg + Netrix
Vos VPS bénéficient de la protection Anti-DDoS RedHeberg + Netrix qui filtre le trafic malveillant en amont. Ce durcissement système complète cette protection.
Checklist finale de sécurisation
✅ Vérifications obligatoires
- [