{"id":48854016,"url":"https://github.com/rockballslab/vps-secure","last_synced_at":"2026-05-11T10:03:19.124Z","repository":{"id":349200887,"uuid":"1201394007","full_name":"rockballslab/vps-secure","owner":"rockballslab","description":"🛡️ Sécurise ton VPS en 15 min - honeypot, pare-feu, IPS, integrity monitoring. Une commande. Zéro compétence requise. 🚀⚡","archived":false,"fork":false,"pushed_at":"2026-05-09T08:34:00.000Z","size":54708,"stargazers_count":4,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-09T10:31:08.395Z","etag":null,"topics":["aide","auditd","bash","cis-benchmark","crowdsec","devops","docker","endlessh","hardening","homelab","linux","rkhunter","security","selfhosted","server-security","stig","sysadmin","ubuntu","vps","vps-hardening"],"latest_commit_sha":null,"homepage":"https://vps-secure.aiforceone.fr/offre.html","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rockballslab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-04T16:09:06.000Z","updated_at":"2026-05-09T08:34:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rockballslab/vps-secure","commit_stats":null,"previous_names":["rockballslab/vps-secure"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/rockballslab/vps-secure","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rockballslab%2Fvps-secure","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rockballslab%2Fvps-secure/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rockballslab%2Fvps-secure/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rockballslab%2Fvps-secure/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rockballslab","download_url":"https://codeload.github.com/rockballslab/vps-secure/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rockballslab%2Fvps-secure/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32889972,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-10T13:40:02.631Z","status":"online","status_checked_at":"2026-05-11T02:00:05.975Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aide","auditd","bash","cis-benchmark","crowdsec","devops","docker","endlessh","hardening","homelab","linux","rkhunter","security","selfhosted","server-security","stig","sysadmin","ubuntu","vps","vps-hardening"],"created_at":"2026-04-15T11:00:42.061Z","updated_at":"2026-05-11T10:03:19.112Z","avatar_url":"https://github.com/rockballslab.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"**⚡ +1597 bots bloqués en 24h sur un VPS standard - le tien est-il vraiment protégé ?**\n\n---\n\n# VPS-SECURE\n\n![GitHub stars](https://img.shields.io/github/stars/rockballslab/vps-secure?style=social)\n![Version](https://img.shields.io/github/v/release/rockballslab/vps-secure)\n\n**🔐 VPS-SECURE est le seul script qui transforme un VPS vierge en forteresse opérationnelle — honeypot, IPS collaboratif, dashboard temps réel, alertes Telegram — en 15 minutes et 1 commande, sans aucune compétence Linux requise.**\n\n\n\u003e \"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.**\"\n\n\n**15 minutes**, une seule commande pour que ton serveur devienne une **Forteresse** prête à accueillir tes services en toute sérénité.\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/rockballslab/vps-secure/main/install-secure.sh -o install-secure.sh \\\n  \u0026\u0026 chmod +x install-secure.sh \\\n  \u0026\u0026 sudo ./install-secure.sh\n```\n\n---\n\n## 🛡️ Pourquoi choisir ce script ?\n\nUn serveur nu ou configuré par défaut est une cible facile, visible et attaquable en quelques minutes.\n\n**VPS-Secure** n’est pas un simple script d’installation : c’est une fondation de sécurité ultra robuste, pensée pour transformer un VPS nu en serveur prêt à l’emploi et nettement mieux protégé contre les attaquants.\n\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./screenshots/VPS-SECURE.png\" alt=\"Ma Forteresse avec VPS-SECURE\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\n---\n\n\n## Qui suis-je ?\n\n👋 Hello, moi c'est Fabrice.\nEntrepreneur, fondateur de plusieurs SaaS et adepte du \"Zero Trust\".\n\n\nJ'ai conçu **VPS-SECURE** par nécessité : je voulais un outil capable de transformer n'importe quel serveur brut en une forteresse imprenable en quelques minutes, sans sacrifier la stabilité de mes services.\n\n\n\u003e *\"Eat your own dog food\"* : C'est précisément la configuration que j'utilise pour blinder mes serveurs de production et tester de nouvelles stacks n8n, des microservices ou des agents IA en production avec une tranquillité d'esprit absolue.\n\n\n---\n\n\n## Ce que fait VPS-SECURE\n\n1 commande - 15 étapes automatiques - zéro compétence technique requise.\n\n\n| # | Quoi | Pourquoi |\n|---|---|---|\n| 1 | Crée l'utilisateur `vpsadmin` | Fini le root - impossible de faire une erreur fatale |\n| 2 | SSH port 2222, clé uniquement | ... Connexion limitée à `vpsadmin` uniquement. **GSSAPI désactivé** (CVE-2026-3497) |\n| 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 |\n| 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 |\n| 5 | **UFW** (pare-feu) | Tout bloqué sauf les ports 2222, 80 et 443. Le forwarding Docker est ciblé - pas global |\n| 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 |\n| 7 | unattended-upgrades | Patches de sécurité installés automatiquement chaque nuit. **Docker CE** inclus dans les mises à jour automatiques. **snapd blacklisté** (CVE-2026-3888) |\n| 8 | Kernel hardening | **35 paramètres** : réseau (spoofing, SYN flood, ICMP...) + ASLR + ptrace + core dumps + perf events + **AppArmor userns restriction (CIS compliance)** |\n| 9 | **auditd** | Journalise tout : SSH, sudo, Docker, fichiers sensibles, crontabs, `/etc/hosts`. **Surveillance anti-rootkit** Scan quotidien `voidlink-detect` à 02h30 |\n| 10 | Swap 2 GB | Mémoire virtuelle d'urgence - évite les crashs |\n| 11 | **rkhunter** | Scanne les backdoors et rootkits. Scan quotidien automatique à **00h00 UTC (02h00 Paris)** - indépendant de Telegram |\n| 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) |\n| 13 | Alertes **Telegram** | Rapport de sécurité quotidien + Alerte immédiate à chaque connexion SSH |\n| 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 |\n| 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. Après une mise à jour OS, relancer la baseline manuellement (commande fournie). |\n\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./screenshots/comparatif2026.png\" alt=\"Comparatif 2026\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./screenshots/VPS-SECURE_overview.png\" alt=\"VPS-SECURE\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./screenshots/sticker2.png\" alt=\"Ma Forteresse avec VPS-SECURE\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./screenshots/sticker1.png\" alt=\"Ma Forteresse avec VPS-SECURE\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\n---\n\n## 🛡️ Réactivité sécurité\n\n\u003e *\"VPS-SECURE v2.7.2 — patch CVE-2026-31431 intégré en moins de 24h — une faille kernel  \n\u003e activement exploitée ajoutée à la liste CISA la veille. Le fix a été intégré en moins de 24h  \n\u003e après publication. C'est exactement pour ça que le produit existe.\"*\n\n**CVE-2026-31431 \"Copy Fail\"** — CVSS 7.8 · CISA KEV · Exploité in-the-wild  \nVecteur : escalade de privilèges locale via `algif_aead` (Linux kernel 6.8.0, Ubuntu 24.04)  \nFix : blacklist permanente du module via `modprobe.d` — intégré dans `install.sh` étape 8.\n\n---\n\n\n## Prérequis\n\nAvant de commencer et de lancer le script, tu as besoin de :\n\n- ✅ Un VPS vierge **Ubuntu 24.04 LTS** (Hostinger, Hetzner, OVH,…)\n- ✅ L'**IP** et le **mot de passe root** fournis par ton hébergeur\n- ✅ Une **clé SSH** générée sur ton ordinateur\n\n\n\u003e [!NOTE]\n\u003e 🔑 Ce script nécessite une licence - [disponible ici](https://vps-secure.aiforceone.fr/offre.html) - **OFFRE DE LANCEMENT 47€** au lieu de 97€ avec le code **REDUC50**\n\u003e\n\u003e 👨‍💻 Tu souhaites contribuer et auditer le code ? [Contacte-moi pour une licence gratuite](https://tally.so/r/lblb0k) - ta clé d'activation unique sera envoyée en quelques minutes.\n\n\n---\n\n\n# Installation automatique en 15mn chrono\n\n### Étape 0 - Utilise le guide interactif (recommandé)\n\nAvant de commencer, ouvre le [Guide d'installation interactif](https://vps-secure.aiforceone.fr/guide.html) et suis les indications pas à pas.\n\nIl te permet de centraliser toutes les infos demandées pendant l'installation - zéro copier-coller raté.\n\n\u003e [!TIP]\n\u003e Pas encore de VPS ? [-20% sur Hostinger avec le code **WP7SERVERWR1**](https://www.hostinger.com/fr?REFERRALCODE=WP7SERVERWR1) · ou · [20€ offerts sur Hetzner](https://hetzner.cloud/?ref=9x8yLdZS8Btd)\n\n---\n\n### Étape 1 - Génère ta clé SSH (sur ton ordinateur)\n\nOuvre un terminal sur ton ordinateur :\n- **Mac** → Spotlight (`Cmd+Espace`) → tape `Terminal` → Entrée\n- **Windows** → touche `Windows` → tape `Windows Terminal` ou `PowerShell` → Entrée\n\nPuis lance cette commande :\n```bash\nssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_vps\n```\n\nAppuie sur Entrée 3 fois pour ne pas définir de passphrase (option rapide).\n\n\u003e [!TIP]\n\u003e **Recommandé :** définis une passphrase forte à cette étape. Si ta clé privée\n\u003e est volée, elle sera inutilisable sans ce mot de passe.\n\u003e Si tu utilises ssh-agent, tu ne la retaperas qu'une fois par session.\n\nRécupère la clé publique en lançant cette commande - tu en auras besoin pendant le script :\n```bash\ncat ~/.ssh/id_ed25519_vps.pub\n```\n\nCopie le résultat qui s'affiche (elle commence par `ssh-ed25519`) et colle-la dans le [Guide d'installation](https://vps-secure.aiforceone.fr/guide.html)\n\n---\n\n### Étape 2 - Connecte-toi en root\n\n```bash\nssh root@IP_DU_VPS\n```\n\nRemplace `IP_DU_VPS` par l'IP que tu as notée dans le guide interactif.\n\nLe 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.\n\n\u003e [!TIP]\n\u003e 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.\n\n\n\n\u003e [!TIP]\n\u003e Si tu as déjà utilisé cette IP (rebuild VPS précédent), supprime l'ancienne clé connue avant de te connecter :\n\u003e ```bash\n\u003e ssh-keygen -R IP_DU_VPS\n\u003e ```\n\n---\n\n### Étape 3 - Lance le script\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/rockballslab/vps-secure/main/install-secure.sh -o install-secure.sh \\\n  \u0026\u0026 chmod +x install-secure.sh \\\n  \u0026\u0026 sudo ./install-secure.sh\n```\n\n\u003e [!IMPORTANT]\n\u003e **`install-secure.sh`** vérifie la signature GPG de `install.sh` avant de le lancer.\n\u003e C'est la commande recommandée - elle garantit que le script n'a pas été altéré.\n\n\nLe script est interactif. Il te pose **3 questions obligatoires** au début de l'installation :\n\n1. Ta clé d'activation (reçue par mail)\n2. Ta clé SSH publique (colle le contenu de `id_ed25519_vps.pub`)\n3. Confirme que la connexion fonctionne depuis un 2ème terminal\n\nEt **1 question optionnelle** à la fin : configurer les alertes Telegram.\n\n\u003e [!TIP]\n\u003e Le guide interactif te guide étape par étape. Il te permet de copier-coller chaque valeur sans erreur — utilise-le.\n\u003e \n\u003e [Ouvrir le Guide d'installation](https://vps-secure.aiforceone.fr/guide.html)\n\n\n \u003cp align=\"left\"\u003e\n  \u003cimg src=\"./screenshots/install_helper.png\" alt=\"Guide Installation\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\n---\n\n### Étape 4 - Reconnecte-toi en vpsadmin (après le redémarrage)\n\n```bash\nssh vpsadmin@IP_DU_VPS -p 2222 -i ~/.ssh/id_ed25519_vps\n```\n\nTon VPS est déjà PRÊT. Y'a plus qu'à vérifier !\n\n---\n\n### Étape 5 - Vérifie l'installation\n\nLe script t'a affiché cette commande à la fin - lance-la maintenant :\n\n```bash\nsudo vps-secure-verify\n```\n\nChaque composant retourne `[PASS]` ou `[FAIL]` avec la raison. Tout doit être PASS.\n\n\n```\n  [PASS] SSH          : port 2222 actif · root désactivé · PasswordAuth off · socket override OK\n  [PASS] UFW          : actif · ports 2222/80/443 ouverts · règle NAT Docker présente · logging medium\n  [PASS] CrowdSec     : actif · bouncer actif · port 8081 · 2 collection(s)\n  [PASS] Docker       : actif · v29.3.1 · iptables:false confirmé\n  [PASS] Endlessh     : container actif · port 22 en écoute · règle UFW présente\n  [PASS] AIDE         : baseline présente (âge : 0j) · cron 03h00 configuré\n  [PASS] rkhunter     : installé · baseline présente · conf.local OK · cron 00h00 UTC · dernier scan : jamais\n  [PASS] auditd       : actif · 34 règle(s) chargée(s)\n  [PASS] Swap         : actif · 2048 MB · swappiness=10\n  [PASS] Kernel       : ASLR=2 · ptrace_scope=1 · syncookies=1 · ip_forward=1 · suid_dumpable=0 \n  [PASS] DNS over TLS : systemd-resolved actif · DoT=yes · serveur principal : 9.9.9.9\n  [PASS] Telegram     : config présente · API OK · bot : @monbot\n\n  ✅ Installation 100% complète - tous les composants sont opérationnels.\n```\n\nC'est TOUT. Ça a pris moins de 15mn en automatique.\n\nTon VPS est maintenant **SÉCURISÉ**. C'est officiellement une **FORTERESSE**.\n\n---\n\n## Alertes de sécurité sur Telegram (optionnel)\n\nÀ la fin de l'installation, le script te propose de configurer deux niveaux d'alertes :\n\n- **Rapport quotidien à 09h00** - état global du serveur (CrowdSec, rkhunter, auditd)\n- **Alerte immédiate** - notification Telegram à chaque connexion SSH réussie (utilisateur + IP source)\n\n**Ce dont tu as besoin :**\n1. Crée un bot → ouvre [@BotFather](https://t.me/BotFather) → `/newbot` → copie le token\n2. Récupère ton chat ID → ouvre [@userinfobot](https://t.me/userinfobot) → `/start` → copie l'`id`\n\n**Ce que tu reçois chaque matin à 09h00 :**\n\n```\n🔐 vps-secure - Rapport quotidien\n📅 13/04/2026 · monvps\n\n✅ Tout va bien sur ton VPS\n\n✅ CrowdSec : aucune alerte\n✅ rkhunter : aucune anomalie\nℹ️ Baseline rkhunter mise à jour par apt le 2026-04-15T01:00:00Z\n✅ auditd : aucun événement critique\n🍯 Endlessh : 247 bot(s) piégé(s) en 24h\n✅ AIDE : aucune modification système détectée\n\nAucune action requise.\n```\n\n**Ce que tu reçois à chaque connexion SSH :**\n\n```\n🔐 Connexion SSH sur monvps\n👤 Utilisateur : vpsadmin\n🌐 IP source   : 92.184.x.x\n📅 13/04/2026 14:32:17\n```\n\nSi une anomalie est détectée dans le rapport quotidien, le message inclut le détail et la commande exacte pour réparer.\n\n\n---\n\n## Optionnel mais pratique\n\n## Connexion rapide\n\n\u003e [!TIP]\n\u003e Ajoute ceci sur **ton ordinateur** dans `~/.ssh/config` pour te connecter avec juste `ssh monvps` :\n\u003e ```\n\u003e Host monvps\n\u003e     HostName IP_DU_VPS\n\u003e     User vpsadmin\n\u003e     Port 2222\n\u003e     IdentityFile ~/.ssh/id_ed25519_vps\n\u003e ```\n\n---\n\n## Dashboard de monitoring (optionnel mais fortement recommandé)\n\nUn dashboard web pour visualiser en temps réel l'état de ton serveur.\n\n```bash\nbash \u003c(curl -fsSL https://raw.githubusercontent.com/rockballslab/vps-secure/main/dashboard/install-dashboard-secure.sh)\n```\n\nLe script te demande un domaine et un mot de passe. Ton mot de passe sera sauvegardé dans `~/vps-monitor/.env`.\n\n\u003e [!NOTE]\n\u003e **Prérequis :** un enregistrement DNS A pointant sur l'IP de ton VPS.\n\u003e Pour générer un mot de passe sécurisé : `openssl rand -base64 32`\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./dashboard/dashboard-login.png\" alt=\"VPS Secure Dashboard\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./dashboard/dashboard-preview.png\" alt=\"VPS Secure Dashboard\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n### Onglet Cockpit\n\nScore de santé 0–100 avec mascotte secrète au score parfait.\n\n| Carte | Ce qu'elle mesure |\n|---|---|\n| Threat Map | Globe interactif — arcs d'attaque en temps réel · IPs géolocalisées (Endlessh + CrowdSec) |\n| Endlessh | Bots piégés total · 24h · durée moy. de piégeage |\n| CrowdSec | IP bannies actives · alertes 24h · statut bouncer iptables |\n| Système | CPU · RAM · Disque (donuts) · uptime |\n| UFW Firewall | Blocages totaux sur les logs |\n| Auditd | Escalades sudo du jour |\n| rkhunter | Statut clean/alerte · date du dernier scan |\n| AIDE File Integrity | Intégrité des binaires SHA512 · date du dernier scan |\n| Mises à jour | Paquets apt disponibles · date du dernier check |\n| Connexions TCP | Connexions établies en temps réel |\n| Ports ouverts | Ports TCP en écoute · détection des ports inattendus |\n\nTimeline des 25 derniers événements sécurité avec défilement animé. Toggles Telegram interactifs (rapport 09h00 · alerte SSH).\n\n\u003e **Threat Map** - zoom centré sur le serveur, rotation automatique, zoom souris activé. Fond étoilé permanent. Points rouges = sources d'attaque actives, point vert = position du serveur. Cache 5 min côté backend.\n\n### Onglet Journal de sécurité\n\nTous les événements sur 1j / 7j / 30j : tentatives SSH, blocages UFW, bans CrowdSec, warnings rkhunter, modifications AIDE, ports inattendus. Géolocalisation des IPs avec drapeau pays. Filtre victoires/alertes.\n\n### Onglet Containers\n\nDétection automatique de tous les containers Docker via socket. Cards par service avec statut live (Actif · Arrêté · Unhealthy · Démarrage), CPU, RAM, ports exposés. Vérification de version en arrière-plan via registry Docker Hub — badge **À jour** ou **Update disponible** (cache 1h). Services surveillés : n8n, Baserow, MinIO, PostgreSQL, Caddy.\n\n### Stack technique\n\n- Backend Python stdlib — zéro dépendance externe\n- Auth HTTP Basic + rate limiting + lockout\n- Cache TTL 30s, historique 24h persisté sur disque\n- Frontend HTML/CSS/JS vanilla — Phosphor Icons, Chart.js, DM Sans\n- Mode clair/sombre avec persistance\n- Caddy reverse proxy + TLS automatique\n\n\n---\n\n\u003e [!WARNING]\n\u003e 🔒 **Docker \u0026 Firewall : Le \"UFW Bypass\" corrigé**\n\u003e\n\u003e Par défaut, Docker manipule iptables et ignore totalement les règles de votre pare-feu (UFW), exposant vos ports directement sur le web. Ce script corrige cette faille critique présente sur la quasi-totalité des installations standards.\n\u003e\n\u003e Le correctif : Le script désactive la gestion automatique d'iptables par le démon Docker (iptables: false).\n\u003e\n\u003e Accès Internet : Une règle de NAT (MASQUERADE) est automatiquement injectée dans before.rules pour que vos containers conservent un accès sortant (updates, API, etc.).\n\u003e\n\u003e Contrôle Total : Rien ne rentre sans votre accord explicite.\n\nConséquence directe : Si vous lancez un container sur le port 8080, il restera invisible de l'extérieur par défaut. Pour l'ouvrir, vous devez le faire manuellement :\n\n```bash\nsudo ufw allow 8080/tcp comment 'Mon application'\n```\n\n---\n\n## 🛡️ Niveau de sécurité\n\nUn VPS nu est une cible. VPS-Secure le transforme en serveur durci, surveillé et exploitable en production, avec un niveau de finition rarement proposé dans un script public.\n\nVPS-Secure ne “garantit” pas une sécurité absolue - aucun outil sérieux ne peut le faire. En revanche, il automatise un durcissement complet et avancé d’Ubuntu 24.04 LTS, en appliquant une grande partie des contrôles pertinents des référentiels **CIS Benchmark Level 1** et **DISA STIG**, tout en restant utilisable sur un VPS classique.\n\n\n| Standard | Ce que c'est |\n|---|---|\n| CIS Benchmark L1 | Base de durcissement reconnue pour des serveurs de production |\n| DISA STIG Ubuntu 24.04 | Un niveau de sécurité plus exigeant, inspiré des environnements les plus contrôlés |\n| OWASP Infrastructure | Une attention particulière à la supply chain, aux secrets, à la traçabilité et à l’intégrité |\n| Lynis Audit | Outil open source d'audit de sécurité qui scanne le système et produit un score de durcissement. Référence dans la communauté Linux pour évaluer l'état réel d'un serveur. |\n\n**CIS Benchmark L1** - Le CIS Benchmark du Center for Internet Security est une référence reconnue pour sécuriser les systèmes Linux.\nLe niveau L1 vise un bon équilibre entre sécurité et compatibilité, ce qui en fait une base adaptée aux serveurs de production.\nVPS-Secure automatise une large partie des contrôles applicables à un VPS Ubuntu 24.04, sans imposer une configuration trop lourde ou trop restrictive.\n\n**DISA STIG** - Le DISA STIG est un référentiel de durcissement plus exigeant, utilisé dans des contextes à fortes contraintes de sécurité.\nTous ses contrôles ne s’appliquent pas à un VPS classique, mais sa logique générale reste pertinente pour renforcer un serveur exposé à Internet.\nVPS-Secure reprend cette logique pour aller au-delà d’un durcissement “de base”, tout en restant déployable sans infrastructure d’entreprise.\n\n**Lynis** - Lynis est un outil d’audit de sécurité Linux largement utilisé par les administrateurs système.\nIl attribue un score de durcissement sur 100 et met en évidence les points faibles de la configuration.\nSur une installation de référence, VPS-Secure atteint un Lynis hardening index de **86/100**, ce qui correspond à un niveau de durcissement très élevé pour un VPS public.\n\n*Plafond structurel : certains contrôles (PIV/FIPS, infrastructure DoD) sont hors scope d'un VPS public.*\n\n\u003e ℹ️ Ce que cela couvre concrètement\n\u003e\n\u003e Le script met en place une base de sécurité cohérente : accès SSH durci, pare-feu, détection d’intrusion, journalisation, intégrité système, mises à jour automatiques et supervision.\n\u003e L’objectif est de transformer un VPS vierge en serveur nettement plus robuste dès l’installation.\n\u003e Ce n’est pas un simple script de confort : c’est une base de sécurité sérieuse pour héberger ensuite des applications, des conteneurs ou un SaaS.\n\n\n## Sécurité de l'utilisateur vpsadmin\n\nLe script crée un utilisateur dédié, vpsadmin, pour administrer le serveur au quotidien.\nCela évite d’utiliser le compte root pour les tâches courantes et réduit le risque d’erreur humaine.\nEn pratique, cela correspond à une bonne hygiène d’administration système.\n\n- ⚡ **Sudo simplifié** : vpsadmin peut exécuter des commandes d’administration sans ressaisir son mot de passe à chaque fois. Une configuration supplémentaire (use_pty) renforce la sécurité de cette délégation.\n\n- 🐳 **Docker** implique une élévation de privilèges : comme vpsadmin peut lancer Docker, il a potentiellement un niveau de contrôle très élevé sur le serveur. C’est normal : c’est le compromis nécessaire pour gérer facilement des containers sur un VPS.\n\n\n\u003e [!WARNING]\n\u003e **La règle d'or : Protège ta clé SSH !**\n\u003e Celui qui possède la clé privée SSH de vpsadmin possède en pratique l'accès d'administration au serveur.\n\u003e - Ne stocke jamais cette clé privée sur un cloud public.\n\u003e - Ne la partage jamais.\n\u003e - Utilise une machine de confiance pour les accès d'administration.\n\n---\n\n## Ce que ce script ne fait PAS\n\n- ❌ Pas de déploiement d'applications (n8n, WordPress, etc).\nLe 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.).\n\n- ⚠️ Pas de gestion HTTPS pour tes futurs sites.\nLe 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).\n\n\u003e Note : Si tu choisis l'option Dashboard, le HTTPS est géré automatiquement avec un Reverse Proxy Caddy.\n\n---\n\n## Commandes utiles après installation\n\n```bash\n# Vérifier l'installation complète (12 checks)\nsudo vps-secure-verify\n```\n\n```bash\n# Tableau de bord de sécurité instantané\nsudo vps-secure-stats\n```\n\n---\n\n### 📊 État du système\n\n```text\n╔══════════════════════════════════════════════════════╗\n║           vps-secure - Tableau de bord               ║\n╚══════════════════════════════════════════════════════╝\nmonvps · 13/04/2026 07:00\n\n🍯 HONEYPOT (Endlessh)          actif\nBots piégés (24h)     : 247\nBots piégés (total)   : 1834\n\n🛡️  CROWDSEC                     actif\nIP bannies actives    : 97\nAlertes (24h)         : 12\n\n🔥 PARE-FEU (UFW)\nBlocages totaux       : 4521\n\n📋 AUDIT (auditd)\nEscalades privilèges  : 3 aujourd'hui\n\n🔍 ROOTKITS (rkhunter)          OK\nDernier scan          : 2026-04-05 04:00:01\n\n🔐 INTÉGRITÉ (AIDE)\nDernier scan          : Aucune modification\n\n💻 SYSTÈME\nUptime                : 3 weeks, 2 days\nCharge                : 0.08, 0.12, 0.09\nMémoire               : 1.2Gi / 3.8Gi\n```\n\n\u003e [!NOTE]\n\u003e Le jour de l'installation, les escalades de privilèges affichent un nombre élevé (1000+).\n\u003e\n\u003e C'est normal - le script install.sh tourne en root et chaque commande système est auditée.\n\u003e\n\u003e Dès le lendemain, le compteur reflète uniquement tes actions réelles. \n\n---\n\n```bash\n# Ouvrir un port pour une app (ex: n8n sur 8080)\nsudo ufw allow 8080/tcp\n```\n\n```bash\n# Voir les alertes CrowdSec (dernières 24h)\nsudo cscli alerts list --since 24h\n```\n\n```bash\n# Consulter les logs d'audit\nsudo ausearch -k privilege_escalation --start today -i\nsudo ausearch -k docker_socket --start today -i\nsudo aureport --summary\n```\n\n```bash\n# Lancer un scan de rootkits manuellement\nsudo rkhunter --check --report-warnings-only\n```\n\n```bash\n# Voir le log du scan rkhunter quotidien (00h00 UTC · 02h00 Paris)\nsudo cat /var/log/rkhunter-cron.log\n```\n\n```bash\n# Honeypot Endlessh - logs en direct\nsudo docker logs -f endlessh\n```\n\n```bash\n# Vérifier les ports exposés par Docker\nsudo docker ps --format \"table {{.Names}}\\t{{.Ports}}\"\n```\n\n```bash\n# Statut du pare-feu\nsudo ufw status verbose\n```\n\n```bash\n# Tester le rapport Telegram manuellement (si Telegram a été activé)\nsudo /usr/local/bin/vps-secure-check.sh\n```\n\n```bash\n# Changer l'heure du rapport Telegram quotidien (ex: 08h00 au lieu de 09h00)\nsudo sed -i 's/^0 [0-9]* \\* \\* \\*/0 8 * * */' /etc/cron.d/vps-secure\nsudo cat /etc/cron.d/vps-secure  # vérifier\n```\n\n```bash\n# AIDE - lancer un scan d'intégrité manuellement\nsudo /usr/local/bin/vps-secure-aide-check.sh\n```\n\n```bash\n# AIDE - mettre à jour la baseline après un apt upgrade (packages mis à jour)\nsudo vps-secure-aide-rebase\n```\n\n```bash\n# Cache sécurité (Endlessh + CrowdSec) - mis à jour toutes les 5 min\ncat /var/cache/vps-secure/security-stats.json\n```\n\n```bash\n# Vérifier si rkhunter a été mis à jour par apt\nsudo cat /var/log/rkhunter-propupd.log\n```\n\n---\n\n## Compatibilité\n\nTesté et vérifié le 11 mai 2026 sur **Ubuntu 24.04 LTS** — **v2.7.3** - Hostinger KVM4 et Hetzner CPX42\n\nInstallation complète et 100% fonctionnelle en **13 min** (dashboard inclus)\n\n---\n\n## Licence\n\nVPS-SECURE COMMERCIAL LICENSE\nCopyright (c) 2026 AIFORCEONE\n[https://vps-secure.aiforceone.fr/offre.html](https://vps-secure.aiforceone.fr/offre.html)\n\n---\n\n*Fait avec ❤️ par Fabrice [@rockballslab](https://github.com/rockballslab)* part of AIFORCEONE\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frockballslab%2Fvps-secure","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frockballslab%2Fvps-secure","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frockballslab%2Fvps-secure/lists"}