Pratique
Checklist durcissement VPS
Un VPS exposé sur Internet doit être durci dès le départ. L'objectif n'est pas de le rendre invincible, mais de réduire la surface d'attaque, améliorer la visibilité et éviter les erreurs classiques.
Accès SSH
- désactiver la connexion root directe
- utiliser des clés SSH
- protéger les clés privées
- limiter les utilisateurs autorisés
- changer uniquement ce qui est documenté
- surveiller les échecs de connexion
Fichier courant :
sudo nano /etc/ssh/sshd_config
Après modification :
sudo sshd -t
sudo systemctl reload ssh
Mises à jour
- mettre à jour le système
- supprimer les paquets inutiles
- activer les mises à jour de sécurité si adapté
- redémarrer quand le noyau est mis à jour
- documenter les services installés
sudo apt update
sudo apt upgrade
Pare-feu
N'expose que les ports nécessaires.
sudo ufw status verbose
Exposition classique :
- SSH
- HTTP
- HTTPS
La base de données ne doit pas être exposée publiquement si elle n'en a pas besoin.
Nginx
- forcer HTTPS
- ajouter des headers de sécurité
- limiter la taille des requêtes
- configurer les timeouts
- activer le rate limiting sur les routes sensibles
- journaliser les accès
- tester la configuration avant reload
sudo nginx -t
sudo systemctl reload nginx
Comptes et droits
- utiliser un utilisateur applicatif non-root
- limiter
sudo - vérifier les groupes privilégiés
- éviter de lancer les applications en root
- protéger les fichiers
.env
Logs et supervision
- surveiller SSH
- surveiller Nginx
- surveiller l'application
- surveiller l'espace disque
- conserver les logs utiles
- installer CrowdSec ou équivalent si adapté
journalctl -xe
df -h
sudo tail -f /var/log/nginx/access.log
Sauvegardes
- sauvegarder la base
- sauvegarder les fichiers importants
- tester la restauration
- protéger les sauvegardes
- éviter que les sauvegardes soient modifiables depuis le serveur compromis
À retenir
Un VPS propre repose sur peu de ports exposés, des accès contrôlés, des mises à jour, des logs exploitables et des sauvegardes testées.
