Aller au contenu principal

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

  • [