⚡ 78 bots bloqués en 24h sur un VPS standard - le tien est-il protégé ?
🔐 Sécurise ton VPS en moins de 15 min - honeypot, pare-feu, IPS, integrity monitoring. Une commande. Zéro compétence requise.
"Si tu fais tourner n8n, openclaw, ou ton propre SaaS sur un VPS, et que tu tiens à tes données, lance ce script AVANT D'INSTALLER QUOI QUE CE SOIT.
15 minutes, une seule commande. Ton serveur passe du stade cible facile... à cible qui n'en vaut pas la peine."
Le constat est simple : les protections par défaut fournies par les hébergeurs (OVH, Hostinger, Hetzner, DigitalOcean, etc.) sont insuffisantes pour une mise en production vraiment sécurisée.
| Le problème | Un VPS livré "nu" tourne avec l'utilisateur root ouvert sur le port 22, sans firewall configuré et sans aucun système de détection d'intrusion. |
| Le risque | Les bots et scanners automatiques trouvent ton IP et tentent des attaques par force brute en moins de 2 minutes après l'activation du serveur. |
| La solution | En 15 minutes, ce script installe une stack complète clé en main - pare-feu UFW, IPS CrowdSec, honeypot Endlessh, integrity monitoring AIDE, audit système, DNS chiffré, hardening kernel - et configure des alertes Telegram en temps réel. |
Je m'appelle Fabrice, entrepreneur avec plusieurs SaaS à mon actif, et c'est précisément la configuration que j'utilise pour sécuriser mes serveurs de production.
Choisis VPS-SECURE pour que ton serveur devienne une forteresse prête à accueillir tes services en toute sérennité.
🔒 Score Lynis 81/100. +50% vs un VPS Ubuntu standard. Vérifiable en 2 min après installation.
15 étapes automatiques, zéro compétence technique requise.
| # | Quoi | Pourquoi |
|---|---|---|
| 1 | Crée l'utilisateur vpsadmin |
Fini le root - impossible de faire une erreur fatale |
| 2 | SSH port 2222, clé uniquement | Port 22 scanné en permanence par des bots - on déménage. Connexion limitée à vpsadmin uniquement |
| 3 | Mise à jour système + DNS chiffré + /tmp, /var/tmp et /dev/shm sécurisés |
Ferme les failles connues. DNS over TLS activé avant tout téléchargement - élimine la fenêtre de DNS poisoning. /tmp, /var/tmp et /dev/shm montés noexec - les scripts malveillants ne peuvent pas s'y exécuter |
| 4 | CrowdSec | Détecte et bannit les IP malveillantes. Installé via dépôt GPG signé avec vérification d'empreinte - intégrité vérifiée |
| 5 | UFW (pare-feu) | Tout bloqué sauf les ports 2222, 80 et 443. Le forwarding Docker est ciblé - pas global |
| 6 | Docker Engine + Compose v2 | Docker permet de faire tourner des applications dans des "boîtes isolées" (containers). Configuré pour ne pas bypasser UFW - les ports exposés restent sous contrôle du pare-feu. Règle NAT ajoutée dans UFW - les containers ont accès à internet |
| 7 | unattended-upgrades | Patches de sécurité installés automatiquement chaque nuit |
| 8 | Kernel hardening | 33 paramètres : réseau (spoofing, SYN flood, ICMP, redirections sécurisées) + ASLR + protection ptrace + core dumps désactivés + perf events restreints |
| 9 | auditd | Journalise tout : SSH, sudo, Docker, fichiers sensibles, crontabs (vecteur de persistence) et /etc/hosts (MITM DNS local) |
| 10 | Swap 2 GB | Mémoire virtuelle d'urgence - évite les crashs |
| 11 | rkhunter | Scanne les backdoors et rootkits. Scan quotidien automatique à 04h00 - indépendant de Telegram |
| 12 | Désactivation des services inutiles | avahi, cups, bluetooth, ModemManager désactivés - chaque service actif = surface d'attaque (CIS 2.x). Ctrl-Alt-Delete masqué (DISA STIG) |
| 13 | Alertes Telegram | Rapport de sécurité quotidien + Alerte immédiate à chaque connexion SSH |
| 14 | Endlessh (honeypot port 22) | SSH est sur le port 2222 - le port 22 est libre. Endlessh le capture et maintient les bots connectés des heures en leur envoyant un banner SSH infini. Ils ne peuvent pas attaquer ailleurs pendant ce temps |
| 15 | AIDE (integrity monitoring) | Hash SHA512 de tous les binaires système à l'installation. Scan quotidien à 03h00 - toute modification (binaire remplacé, backdoor, rootkit) déclenche une alerte dans le rapport Telegram de 07h00. Les mises à jour automatiques (unattended-upgrades) sont détectées et la baseline est mise à jour silencieusement - zéro fausse alerte |
Avant de commencer, tu as besoin de :
- ✅ Un VPS vierge Ubuntu 24.04 LTS (Hostinger, Hetzner,…)
- ✅ L'IP et le mot de passe root fournis par ton hébergeur
- ✅ Une clé SSH générée sur ton ordinateur
💡 Pas encore de VPS ? -20% sur Hostinger avec le code WP7SERVERWR1 · ou · 20€ offerts sur Hetzner - recommandé : CPX21 (4 GB RAM · 9,99€/mois) ou CPX32 (8 GB RAM · 14,49€/mois)
🔑 Ce script nécessite une licence - disponible ici
👨💻 Développeur ? Contacte-moi pour un accès: free4dev@aiforceone.fr
Avant de commencer, ouvre le Guide d'installation interactif et suit les indications.
Il te permet de :
- Noter ton IP et ta clé SSH au même endroit
- Exporter ta config en
.txtou.pdf - Déverrouiller la commande de lancement quand tout est prêt
💡 Ouvre le guide d'installation depuis ton navigateur.
Ouvre un terminal sur ton ordinateur :
- Mac → Spotlight (
Cmd+Espace) → tapeTerminal→ Entrée - Windows → touche
Windows→ tapeWindows TerminalouPowerShell→ Entrée - Linux →
Ctrl+Alt+T
Puis lance cette commande :
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_vpsAppuie sur Entrée 3 fois (pas besoin de mot de passe).
Récupère la clé publique - tu en auras besoin pendant le script :
cat ~/.ssh/id_ed25519_vps.pubCopie la ligne qui s'affiche (elle commence par ssh-ed25519).
💡 Si tu as déjà utilisé cette IP (rebuild VPS), supprime l'ancienne clé connue :
ssh-keygen -R IP_DU_VPS
Puis
ssh root@IP_DU_VPSRemplace IP_DU_VPS par l'IP que tu as notée dans le guide interactif.
Le serveur va te demander un mot de passe - c'est le mot de passe root fourni par ton hébergeur par email après provisioning.
💡 C'est la seule fois où ce mot de passe est utilisé. Après l'installation, la connexion root par mot de passe est définitivement désactivée.
curl -fsSL https://raw.githubusercontent.com/rockballslab/vps-secure/main/install-secure.sh -o install-secure.sh \
&& chmod +x install-secure.sh \
&& sudo ./install-secure.sh🔐
install-secure.shvérifie la signature GPG deinstall.shavant de le lancer. C'est la commande recommandée - elle garantit que le script n'a pas été altéré.install.shseul reste disponible pour les environnements sans GPG.
Le script est interactif. Il te pose 2 questions obligatoires :
- Ta clé SSH publique (colle le contenu de
id_ed25519_vps.pub) - Confirme que la connexion fonctionne depuis un 2ème terminal
Et 1 question optionnelle à la fin : configurer les alertes Telegram.
À la toute fin, le script affiche la commande pour te reconnecter et la commande de vérification - puis attend que tu appuies sur Entrée avant de redémarrer. Prends le temps de les noter.
⚠️ Ne ferme pas cette session root avant que le script te le demande. Il vérifie lui-même que tu peux te reconnecter avant de désactiver root.
ssh vpsadmin@IP_DU_VPS -p 2222 -i ~/.ssh/id_ed25519_vpsLe script t'a affiché cette commande à la fin - lance-la maintenant :
sudo vps-secure-verify [PASS] SSH : port 2222 actif · root désactivé · PasswordAuth off · socket override OK
[PASS] UFW : actif · ports 2222/80/443 ouverts · règle NAT Docker présente · logging medium
[PASS] CrowdSec : actif · bouncer actif · port 8081 · 2 collection(s)
[PASS] Docker : actif · v29.3.1 · iptables:false confirmé
[PASS] Endlessh : container actif · port 22 en écoute · règle UFW présente
[PASS] AIDE : baseline présente (âge : 0j) · cron 03h00 configuré
[PASS] rkhunter : installé · baseline présente · conf.local OK · cron 04h00 · dernier scan : jamais
[PASS] auditd : actif · 26 règle(s) chargée(s)
[PASS] Swap : actif · 2048 MB · swappiness=10
[PASS] Kernel : ASLR=2 · ptrace_scope=1 · syncookies=1 · ip_forward=1 · suid_dumpable=0 · dmesg/kptr/eBPF restreints
[PASS] DNS over TLS : systemd-resolved actif · DoT=yes · serveur principal : 9.9.9.9
[PASS] Telegram : config présente · API OK · bot : @monbot
✅ Installation 100% complète - tous les composants sont opérationnels.
Chaque composant retourne [PASS] ou [FAIL] avec la raison. Tout doit être PASS.
C'est tout. Le VPS est sécurisé.
À la fin de l'installation, le script te propose de configurer deux niveaux d'alertes :
- Rapport quotidien à 07h00 - état global du serveur (CrowdSec, rkhunter, auditd)
- Alerte immédiate - notification Telegram à chaque connexion SSH réussie (utilisateur + IP source)
Ce dont tu as besoin :
- Crée un bot → ouvre @BotFather →
/newbot→ copie le token - Récupère ton chat ID → ouvre @userinfobot →
/start→ copie l'id
Ce que tu reçois chaque matin à 07h00 :
🔐 vps-secure - Rapport quotidien
📅 05/04/2026 · monvps
✅ Tout va bien sur ton VPS
✅ CrowdSec : aucune alerte
✅ rkhunter : aucune anomalie
✅ auditd : aucun événement critique
🍯 Endlessh : 247 bot(s) piégé(s) en 24h
✅ AIDE : aucune modification système détectée
Aucune action requise.
Ce que tu reçois à chaque connexion SSH :
🔐 Connexion SSH sur monvps
👤 Utilisateur : vpsadmin
🌐 IP source : 92.184.x.x
📅 05/04/2026 14:32:17
Si une anomalie est détectée dans le rapport quotidien, le message inclut le détail et la commande exacte pour réparer.
Tu as passé cette étape ? Relance
./install.shpour la configurer plus tard.
Par défaut, Docker ignore les règles de votre pare-feu (UFW) et expose vos ports directement sur Internet. Ce script corrige cette faille critique.
-
Le correctif : Le script désactive la gestion automatique d'iptables par Docker.
-
Accès Internet : Une règle de NAT (MASQUERADE) est automatiquement ajoutée à before.rules pour que vos containers conservent un accès à Internet.
-
Contrôle Total : Rien ne sort, rien ne rentre sans votre accord.
Ce que ça change concrètement : Si vous lancez un container sur le port 8080, il restera invisible depuis l'extérieur. Pour l'ouvrir, vous devrez le faire manuellement :
sudo ufw allow 8080/tcp comment 'Mon application'Ce script couvre environ 80% du CIS Benchmark Ubuntu 24.04 Level 1 et 70% du DISA STIG Ubuntu 24.04 - largement au-dessus de n'importe quel script public comparable.
| Standard | Couverture |
|---|---|
| CIS Benchmark L1 | ~87% |
| DISA STIG Ubuntu 24.04 | ~77% |
| OWASP Infrastructure | Supply chain (GPG + empreinte vérifiée), secrets, logging |
| Lynis Audit | 81/100 |
CIS Benchmark - CIS = Center for Internet Security, organisation américaine à but non lucratif qui publie des guides de configuration sécurisée pour tous les OS majeurs. Le Level 1 cible une sécurité raisonnable sans impact sur les fonctionnalités - c'est le standard utilisé par les entreprises pour leurs serveurs en production. 87% CIS L1 signifie 4 contrôles sur 5 couverts. Les 20% restants sont des contrôles non applicables sur VPS (partitions dédiées /var, /home) ou volontairement exclus pour garder le script accessible.
DISA STIG - DISA = Defense Information Systems Agency, l'agence IT du Département de la Défense américain. Les STIGs sont leurs guides de configuration, plus stricts que CIS, obligatoires pour tous les systèmes du gouvernement US. 77% DISA STIG est très bon pour un script public - les 23% restants concernent des contrôles militaires sans sens pour un VPS perso (accès physique, smartcard auth) ou nécessitant une infrastructure d'entreprise (LDAP, SIEM centralisé).
Lynis - outil d'audit de sécurité Linux open-source = Il scanne la configuration du serveur et donne un score sur 100. Référence industrie, utilisé par les sysadmins professionnels.
Le script crée un utilisateur dédié (vpsadmin) pour gérer ton serveur. Voici ce qu'il faut savoir sur ses pouvoirs :
-
⚡ Sudo simplifié : vpsadmin peut exécuter des commandes d'administration sans taper son mot de passe à chaque fois. Pour éviter les piratages de terminal, une sécurité supplémentaire (use_pty) a été ajoutée.
-
🐳 Docker = Pouvoir Root : Comme vpsadmin peut lancer Docker, il peut techniquement accéder à tout le serveur. C'est normal et nécessaire pour gérer tes containers facilement.
⚠️ La règle d'or : Protège ta clé SSH ! Puisque vpsadmin a de grands pouvoirs, celui qui possède ta clé privée SSH possède ton serveur.
- Ne stocke jamais ta clé privée sur un Cloud (Drive, Dropbox).
- Ne la partage jamais.
-
❌ Pas de déploiement d'applications (n8n, WordPress, etc). Le script prépare une infrastructure ultra-sécurisée. Une fois le script passé, ton serveur est une forteresse prête à accueillir tes services. À toi d'installer tes apps, elles bénéficieront automatiquement de la protection du système (Firewall, CrowdSec, etc.).
-
⚠️ Pas de gestion HTTPS pour tes futurs sites. Le script ne devine pas tes noms de domaine. Pour mettre tes propres sites en HTTPS (cadenas vert), tu devras simplement installer un Reverse Proxy (comme Caddy, Nginx Proxy Manager ou Traefik).
Note : Si tu choisis l'option Dashboard, le HTTPS est géré automatiquement avec un Reverse Proxy Caddy.
# Tableau de bord de sécurité instantané
sudo vps-secure-stats╔══════════════════════════════════════════════════════╗
║ vps-secure - Tableau de bord ║
╚══════════════════════════════════════════════════════╝
monvps · 05/04/2026 07:00
🍯 HONEYPOT (Endlessh) actif
Bots piégés (24h) : 247
Bots piégés (total) : 1834
🛡️ CROWDSEC actif
IP bannies actives : 97
Alertes (24h) : 12
🔥 PARE-FEU (UFW)
Blocages totaux : 4521
📋 AUDIT (auditd)
Escalades privilèges : 1247 aujourd'hui
🔍 ROOTKITS (rkhunter) OK
Dernier scan : 2026-04-05 04:00:01
🔐 INTÉGRITÉ (AIDE)
Dernier scan : Aucune modification
💻 SYSTÈME
Uptime : 3 weeks, 2 days
Charge : 0.08, 0.12, 0.09
Mémoire : 1.2Gi / 3.8Gi
ⓘ Le jour de l'installation, les escalades de privilèges affichent un nombre élevé (1000+). C'est normal - le script install.sh tourne en root et chaque commande système est auditée. Dès le lendemain, le compteur reflète uniquement tes actions réelles.
# Voir les alertes CrowdSec (dernières 24h)
sudo cscli alerts list --since 24h
# Consulter les logs d'audit
sudo ausearch -k privilege_escalation --start today -i
sudo ausearch -k docker_socket --start today -i
sudo aureport --summary
# Lancer un scan de rootkits
sudo rkhunter --check --report-warnings-only
# Voir le log du scan rkhunter quotidien (04h00)
sudo cat /var/log/rkhunter-cron.log
# Statut du pare-feu
sudo ufw status verbose
# Vérifier les ports exposés par Docker
sudo docker ps --format "table {{.Names}}\t{{.Ports}}"
# Tester le rapport Telegram manuellement (si Telegram a été activé)
sudo /usr/local/bin/vps-secure-check.sh
# Changer l'heure du rapport Telegram quotidien (ex: 08h00 au lieu de 07h00)
sudo sed -i 's/^0 [0-9]* \* \* \*/0 8 * * */' /etc/cron.d/vps-secure
sudo cat /etc/cron.d/vps-secure # vérifier
# Honeypot Endlessh - logs en direct
sudo docker logs -f endlessh
# AIDE - lancer un scan d'intégrité manuellement
sudo aide --check
# AIDE - mettre à jour la baseline après une mise à jour OS majeure (upgrade de version)
# Note : les patches de sécurité quotidiens (unattended-upgrades) sont gérés automatiquement
sudo aide --update && sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# Cache sécurité (Endlessh + CrowdSec) - mis à jour toutes les 5 min
cat /var/cache/vps-secure/security-stats.jsonAjoute ceci sur ton ordinateur dans ~/.ssh/config :
Host monvps
HostName IP_DU_VPS
User vpsadmin
Port 2222
IdentityFile ~/.ssh/id_ed25519_vps
Ensuite tu te connectes avec juste :
ssh monvpsUn dashboard web pour visualiser en temps réel l'état de ton serveur : bots piégés, IP bannies, blocages UFW, statut AIDE/rkhunter, charge système.
Accessible depuis un navigateur, protégé par une page de connexion, déployé en Docker. CrowdSec et Endlessh sont détectés automatiquement.
curl -fsSL https://raw.githubusercontent.com/rockballslab/vps-secure/main/dashboard/install-dashboard.sh && chmod +x install-dashboard.sh && ./install-dashboard.shLe script te demande un domaine et un mot de passe, configure tout et lance automatiquement. Ton mot de passe est sauvegardé dans ~/vps-monitor/.env.
Prérequis : un enregistrement DNS A pointant sur l'IP de ton VPS · ports 80/443 déjà ouverts par
install.sh
💡 Pour générer un mot de passe sécurisé depuis ton terminal ou ton serveur :
openssl rand -base64 32
Testé et vérifié le 12 Avril 2026 sur Ubuntu 24.04 LTS - Hostinger KVM2, KVM4 · Hetzner CX · Installation complète en 12 min · 100% fonctionnel
VPS-SECURE COMMERCIAL LICENSE Copyright (c) 2026 AIFORCEONE https://vps-secure.netlify.app/
Fait avec ❤️ par Fabrice @rockballslab part of AIFORCEONE

