Skip to content

Latest commit

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

SecureSysInit – Cloud-init pour serveur Linux sécurisé

SecureSysInit est un projet **cloud-init ** destiné à automatiser le déploiement d’un serveur Linux sécurisé, robuste et prêt pour l’administration système.

Il combine :

  • configuration du stockage avec LVM / partition dédiée,
  • durcissement SSH,
  • sécurisation réseau (UFW, Fail2Ban),
  • bonnes pratiques d’administration système.

Ce type de configuration est particulièrement adapté aux environnements cloud, VPS ou VM de production.


🎯 Objectifs du projet

  • Isoler les logs système sur un disque dédié pour éviter la saturation du système
  • Mettre en place un accès SSH sécurisé (clé + port non standard)
  • Restreindre l’accès root et l’authentification par mot de passe
  • Déployer automatiquement un pare-feu et un système anti-bruteforce
  • Préparer un compte administrateur sécurisé

📋 Prérequis

  • Image Linux compatible cloud-init (Ubuntu/Debian recommandé)
  • Deux disques attachés à la VM (/dev/sda + /dev/sdb)
  • Accès à une clé SSH publique valide

📁 Fichier principal

user-data.yaml

Ce fichier doit être fourni comme user-data lors de la création de l’instance.


⚙️ Détails de la configuration

💾 1. Gestion du stockage (Logs isolés)

  • Initialisation du disque /dev/sdb
  • Formatage en ext4
  • Montage automatique sur /var/log

🎯 Objectif : éviter qu’une croissance des logs ne bloque le système.


👤 2. Compte administrateur sécurisé

  • Utilisateur : sysadmin
  • Groupes : sudo, adm
  • Authentification exclusivement par clé SSH
  • Accès sudo sans mot de passe

⚠️Important : remplacer la clé SSH par votre clé publique réelle.


🔐 3. Durcissement SSH (Hardening)

Configuration appliquée :

  • Port SSH : 2222
  • Authentification par mot de passe désactivée
  • Connexion root interdite
  • X11 Forwarding désactivé

Configuration écrite dans :

/etc/ssh/sshd_config.d/hardening.conf

🛡️ 4. Services de sécurité installés

ServiceRôle
ufwPare-feu simplifié
fail2banProtection contre les attaques bruteforce
gitRécupération de scripts d’administration

⚙️ 5. Automatisation avancée (runcmd)

Actions exécutées au premier démarrage :

  • Ouverture des ports nécessaires (2222, 80)
  • Activation forcée du pare-feu
  • Configuration de Fail2Ban pour SSH sur le port 2222
  • Redémarrage du service Fail2Ban
  • Clonage d’un dépôt de scripts d’administration dans /opt/scripts

📨 6. Message de fin

À la fin du provisioning, cloud-init affiche :

Le système est prêt après <UPTIME> secondes. Accès via port 2222 uniquement.

🚀 Utilisation

Déploiement cloud

Fournir ce fichier comme user-data lors de la création de l’instance (AWS, Azure, GCP, OpenStack, VPS).

Connexion SSH

ssh -p 2222 sysadmin@<IP_DU_SERVEUR>

⚠️ Bonnes pratiques

  • Tester ce script en environnement de staging avant production
  • Ajouter une règle firewall pour HTTPS si nécessaire
  • Sauvegarder la clé SSH utilisée
  • Vérifier que /dev/sdb existe avant déploiement

📄 Licence

Projet open-source à vocation éducative. Licence recommandée : MIT ou Apache 2.0.

About

SecureSysInit – Cloud-init pour serveur Linux sécurisé

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors