Script Bash professionnel pour sécuriser automatiquement vos serveurs VPS Ubuntu/Debian en quelques minutes.
- ✅ Mise à jour complète du système
- 👤 Création utilisateur admin non-root avec sudo
- 🔑 Authentification SSH par clé uniquement (pas de mot de passe)
- 🔐 Durcissement SSH (changement port, désactivation root, limitations)
- 🔥 Pare-feu UFW avec règles de base
- 🧱 Fail2ban contre les attaques par force brute
- 🛡️ Hardening système (sysctl, kernel parameters)
- 📊 Netdata pour le monitoring (optionnel, sécurisé sur localhost)
- 🔄 Mises à jour automatiques de sécurité
- 💾 Backups automatiques des configurations
- 📝 Logging détaillé de toutes les opérations
- 🌐 Support IPv6 complet
curl -fsSL https://raw.githubusercontent.com/NaosV1/secure-ssh/main/secure.sh | sudo bashPrédéfinir le nom d'utilisateur :
curl -fsSL https://raw.githubusercontent.com/NaosV1/secure-ssh/main/secure.sh | sudo VPS_USER=adminvps bashcurl -fsSL https://raw.githubusercontent.com/NaosV1/secure-ssh/main/secure.sh | \
sudo VPS_USER=adminvps VPS_SSH_KEY="ssh-ed25519 AAAA..." bashRemplacez ssh-ed25519 AAAA... par votre clé SSH publique complète.
Pour inspecter le script avant de l'exécuter :
wget https://raw.githubusercontent.com/NaosV1/secure-ssh/main/secure.sh
less secure.sh
chmod +x secure.sh
sudo ./secure.sh- OS : Ubuntu 18.04+ ou Debian 10+
- Accès : Root ou sudo
- Connexion : Internet active
- Temps : 8-12 minutes d'exécution
- ✅ Authentification par clé SSH uniquement (mot de passe désactivé)
- ✅ Root login désactivé
- ✅ Port personnalisable
- ✅ MaxAuthTries: 3
- ✅ MaxSessions: 5
- ✅ ClientAlive: 300s
- ✅ AllowUsers configuré
- ✅ AuthenticationMethods: publickey
- ✅ SSH (port personnalisé)
- ✅ HTTP (80)
- ✅ HTTPS (443)
- ✅ Rate limiting sur SSH
- ✅ IPv4 + IPv6
- ✅ Protection SSH
- ✅ Protection SSH-DDoS
- ✅ Ban: 1h après 5 tentatives
- ✅ Findtime: 10 minutes
- ✅ SYN cookies (anti SYN flood)
- ✅ IP spoofing protection
- ✅ ICMP redirects désactivés
- ✅ Source routing désactivé
- ✅ ASLR activé
- ✅ Kernel pointer restriction
NE FERMEZ PAS votre session SSH actuelle immédiatement !
- ✅ Ouvrez un NOUVEL onglet/terminal
- ✅ Testez la connexion avec le nouveau port et utilisateur
- ✅ Seulement si ça marche, fermez l'ancienne session
# Tester la nouvelle connexion
ssh nouvel_user@votre_ip -p 28Si vous ne pouvez pas vous reconnecter, retournez à votre ancienne session et restaurez la configuration :
sudo cp /root/config-backup-*/sshd_config /etc/ssh/sshd_config
sudo systemctl restart sshCliquez pour voir le détail des opérations
-
Vérifications initiales
- Vérification root/sudo
- Vérification distribution (Ubuntu/Debian)
- Création des répertoires de backup et logs
-
Mise à jour système
apt update && apt upgrade- Installation des paquets nécessaires
-
Création utilisateur
- Validation du nom d'utilisateur
- Création avec
adduser - Ajout au groupe sudo
- Configuration du mot de passe
- Configuration clé SSH (optionnel)
-
Configuration SSH
- Backup de
/etc/ssh/sshd_config - Création de
/etc/ssh/sshd_config.d/99-custom-security.conf - Changement de port
- Désactivation root login
- Limitation des tentatives
- Test de configuration avant restart
- Backup de
-
Pare-feu UFW
- Installation UFW
- Configuration règles par défaut
- Ouverture ports SSH, HTTP, HTTPS
- Rate limiting
- Activation IPv6
-
Fail2ban
- Installation Fail2ban
- Configuration jail SSH
- Configuration jail SSH-DDoS
- Activation service
-
Hardening système
- Désactivation services inutiles
- Configuration sysctl (/etc/sysctl.d/99-security.conf)
- Application des paramètres
-
Netdata (optionnel)
- Installation sécurisée
- Configuration localhost uniquement
- Désactivation télémétrie
-
Mises à jour automatiques
- Installation unattended-upgrades
- Configuration mises à jour de sécurité automatiques
-
Résumé et logs
- Affichage configuration finale
- Sauvegarde logs dans
/var/log/ - Instructions de test
- ❌ Ne modifie pas les données utilisateur
- ❌ Ne crée pas de backdoors
- ❌ N'envoie pas de données externes (sauf Netdata si télémétrie activée)
- ❌ Ne désactive pas l'accès SSH existant avant de configurer le nouveau
- ✅ Toujours tester la nouvelle connexion SSH avant de fermer l'ancienne
- ✅ Conserver les backups de configuration
- ✅ Consulter les logs en cas de problème
- ✅ Utiliser des clés SSH plutôt que des mots de passe
- ✅ Changer le mot de passe par défaut si utilisation automatisée
- name: Sécuriser VPS
hosts: all
tasks:
- name: Exécuter secure-ssh
shell: |
curl -fsSL https://raw.githubusercontent.com/NaosV1/secure-ssh/main/secure.sh | \
VPS_USER=admin VPS_PASSWORD='{{ vault_password }}' bashresource "null_resource" "secure" {
provisioner "remote-exec" {
inline = [
"curl -fsSL https://raw.githubusercontent.com/NaosV1/secure-ssh/main/secure.sh | VPS_USER=admin VPS_PASSWORD='${var.admin_pass}' bash"
]
}
}Plus d'exemples dans automation-examples.sh.
Netdata écoute sur localhost pour la sécurité. Créez un tunnel SSH :
ssh -L 19999:localhost:19999 user@votre_ip -p 28Puis accédez à http://localhost:19999
sudo fail2ban-client status sshdsudo ufw status verbose- Accédez via console VPS (interface web provider)
- Restaurez la config :
cp /root/config-backup-*/sshd_config /etc/ssh/sshd_config
systemctl restart sshsudo ufw allow 28/tcp
sudo ufw reloadsudo usermod -aG sudo nom_utilisateurTous les logs sont sauvegardés dans :
/var/log/vps-secure-YYYYMMDD-HHMMSS.log
Les backups de configuration dans :
/root/config-backup-YYYYMMDD-HHMMSS/
Les contributions sont les bienvenues ! N'hésitez pas à :
- 🐛 Reporter des bugs
- 💡 Proposer des améliorations
- 📖 Améliorer la documentation
- ⭐ Mettre une étoile si le projet vous est utile
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Ce script modifie la configuration système de votre serveur. Bien qu'il ait été testé, utilisez-le à vos propres risques. Toujours :
- Faire un backup de vos données importantes
- Tester sur un serveur de développement d'abord
- Garder un accès console au serveur (interface web provider)
NaosV1
- GitHub: @NaosV1
- Repository: secure-ssh
Basé sur les meilleures pratiques de sécurité Linux et les recommandations de :
⭐ Si ce projet vous aide, n'hésitez pas à lui donner une étoile !