Sécuriser un nouveau serveur Linux
Un nouveau serveur est joignable depuis Internet dès son démarrage, et des robots d’analyse automatiques commencent à tenter de s’y connecter en quelques minutes. Cette liste de contrôle présente les étapes à suivre dans la première heure sur un nouveau VPS (serveur privé virtuel) ou serveur cloud Linux, avant d’installer des sites ou des applications. Les commandes sont données pour Debian et Ubuntu (qui utilisent apt) et pour AlmaLinux, Fedora et CentOS Stream (qui utilisent dnf).
1. Mettre à jour tous les paquets
Commencez par installer toutes les mises à jour disponibles, car l’image peut être antérieure aux derniers correctifs de sécurité.
# Debian and Ubuntu
apt update && apt upgrade -y
# AlmaLinux, Fedora and CentOS Stream
dnf upgrade -y
Redémarrez le serveur si la mise à jour comprenait un nouveau noyau : reboot.
2. Créer un utilisateur avec les droits sudo
Travailler en permanence en tant que root rend les erreurs coûteuses et donne aux attaquants un nom d’utilisateur connu à cibler. Créez votre propre utilisateur et donnez-lui les droits sudo, qui lui permettent d’exécuter des commandes d’administrateur au besoin en tapant sudo devant.
# Debian and Ubuntu
adduser jane
usermod -aG sudo jane
# AlmaLinux, Fedora and CentOS Stream
useradd -m jane
passwd jane
usermod -aG wheel jane
Donnez ensuite votre clé SSH au nouvel utilisateur. Si la clé est déjà configurée pour root, copiez-la :
mkdir -p /home/jane/.ssh
cp /root/.ssh/authorized_keys /home/jane/.ssh/
chown -R jane:jane /home/jane/.ssh
chmod 700 /home/jane/.ssh
chmod 600 /home/jane/.ssh/authorized_keys
Ouvrez un nouveau terminal et vérifiez que ssh jane@203.0.113.40 fonctionne et que sudo whoami répond root.
3. N’autoriser que les clés SSH
Un mot de passe peut être deviné ; une clé, pratiquement pas. Une fois que la connexion par clé fonctionne pour le nouvel utilisateur, désactivez la connexion par mot de passe et la connexion directe en root.
-
Ouvrez le fichier de configuration du serveur SSH :
sudo nano /etc/ssh/sshd_config. -
Réglez ces lignes, en supprimant le
#éventuel devant :PermitRootLogin noPasswordAuthentication no -
Vérifiez si le dossier
/etc/ssh/sshd_config.d/contient des fichiers qui définissent aussiPasswordAuthenticationouPermitRootLogin. Les réglages qui s’y trouvent peuvent primer sur le fichier principal : modifiez-les également. -
Testez la configuration avec
sudo sshd -t. Aucun message signifie aucune erreur. -
Redémarrez SSH :
sudo systemctl restart sshsous Debian et Ubuntu, ousudo systemctl restart sshdsous AlmaLinux, Fedora et CentOS Stream. -
Gardez votre session actuelle ouverte et connectez-vous depuis un deuxième terminal. Ne fermez la première session qu’une fois la nouvelle connexion fonctionnelle.
Si la deuxième connexion échoue, utilisez la session toujours ouverte pour annuler la modification. Si vous perdez complètement l’accès, utilisez la console dans le navigateur de votre fournisseur, si elle existe, pour corriger le fichier.
4. Activer un pare-feu
Un pare-feu décide quels ports réseau acceptent des connexions. N’autorisez que ce dont vous avez besoin : SSH, et les ports web 80 (HTTP) et 443 (HTTPS) si le serveur héberge des sites.
Sous Debian et Ubuntu, l’outil habituel est ufw. Autorisez SSH avant de l’activer :
sudo apt install ufw
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status
Sous AlmaLinux, Fedora et CentOS Stream, l’outil habituel est firewalld :
sudo systemctl enable --now firewalld
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Si vous avez changé le port SSH, autorisez ce port plutôt que le service par défaut. Certains fournisseurs proposent aussi un pare-feu réseau devant le serveur ; gardez les deux ensembles de règles cohérents.
5. Installer automatiquement les mises à jour de sécurité
De nouveaux correctifs de sécurité paraissent sans cesse. Les mises à jour automatiques les installent sans attendre votre intervention.
# Debian and Ubuntu
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
Sous AlmaLinux et CentOS Stream, installez dnf-automatic, réglez apply_updates = yes dans /etc/dnf/automatic.conf et démarrez son minuteur (timer) :
sudo dnf install dnf-automatic
sudo systemctl enable --now dnf-automatic.timer
Les noms du fichier de configuration et du minuteur peuvent varier d’une version à l’autre, en particulier sur les versions récentes de Fedora : consultez la documentation de votre distribution si ces commandes ne correspondent pas. Certaines mises à jour, comme un nouveau noyau, nécessitent quand même un redémarrage pour prendre effet.
6. Facultatif : bloquer les tentatives de connexion répétées
fail2ban surveille les fichiers journaux et bloque temporairement les adresses qui échouent à se connecter de nombreuses fois. Avec un SSH par clé uniquement, il n’est pas indispensable, mais il réduit le bruit dans les journaux et peut protéger d’autres services, comme la messagerie ou les connexions web. Il est disponible dans les dépôts de paquets standard de Debian et Ubuntu et, sous AlmaLinux et CentOS Stream, via le dépôt EPEL.
7. Prévoir les sauvegardes et la surveillance
- Sauvegardes : mettez en place des sauvegardes hors du serveur et prenez un instantané (snapshot) maintenant que le système de base est prêt, voir Instantanés et sauvegardes de serveur.
- Surveillance : gardez un œil sur le processeur, la mémoire, l’espace disque et la joignabilité du serveur, et configurez des alertes pour être prévenu des problèmes avant vos visiteurs. Vérifiez régulièrement l’espace disque avec
df -h. - Routine : consultez les journaux de connexion, supprimez les logiciels que vous n’utilisez plus et refaites ces vérifications après chaque changement important.
Le VPS DomainPilot est autogéré : DomainPilot s’occupe du matériel, du réseau et de la virtualisation, et vous gérez le système d’exploitation et les applications, y compris les étapes de ce guide. Les offres VPS comprennent les instantanés, des graphiques de surveillance et des alertes, ainsi qu’une protection réseau contre les attaques DDoS. Les serveurs cloud comprennent les instantanés et des pare-feu.
Guides associés
- Se connecter à votre serveur en SSH
- Instantanés et sauvegardes de serveur
- Choisir un panneau de contrôle pour votre VPS
- Protéger votre compte d’hébergement