Installez un serveur Debian 12 de façon sécurisée
Nous allons installer Debian 12 de manière simple et sécurisée avec un mot de passe à usage unique (OTP) pour le serveur SSH et Cockpit, un pare-feu pour bloquer les IP malveillantes avec CrowdSec, et des mises à jour automatiques.
1. Prérequis :
- Debian 12 sans compte root ou désactivé
- Nom d'utilisateur qui ne contient pas de nom générique comme
Debian, Serveur, etc. - Compte avec un mot de passe fort
- Serveur SSH
- Installez l'application Android Google Authenticator ou un équivalent
2. Installation de Cockpit avec un mot de passe à usage unique (OTP)
Cockpit est une interface web de gestion de serveurs Linux. Il permet aux administrateurs de surveiller et de gérer facilement leurs serveurs via un navigateur web, offrant une vue d'ensemble des performances du système, des journaux, des utilisateurs, et des services en cours d'exécution. Cockpit simplifie la gestion des tâches administratives courantes sans nécessiter de compétences avancées en ligne de commande.
L'OTP (One-Time Password) est un mot de passe à usage unique qui change à chaque connexion, renforçant la sécurité en rendant difficile l'accès non autorisé. L'OTP est souvent utilisé dans le cadre de l'authentification à deux facteurs (2FA), où un code généré par une application comme Google Authenticator est requis en plus du mot de passe traditionnel. Cela ajoute une couche supplémentaire de sécurité en vérifiant non seulement ce que vous savez (le mot de passe), mais aussi ce que vous avez (le code OTP).
Installation de Cockpit et de libpam-google-authenticator :
sudo apt install -y cockpit libpam-google-authenticator
Flashez le QR code avec Google Authenticator après avoir exécuté cette commande :
google-authenticator -t -f -d -w 3 -e 10 -r 3 -R 30
Explication des options :
- -t : Activer la vérification TOTP (Time-based One-Time Password).
- -f : Écrire la configuration dans le fichier
~/.google_authenticator. - -d : Interdire la réutilisation des jetons précédemment utilisés.
- -w 3 : Définir la taille de la fenêtre des jetons autorisés. Par défaut, les jetons expirent toutes les 30 secondes. Une fenêtre de taille 3 permet l'authentification avec le jeton précédent et le jeton suivant pour compenser un éventuel décalage horaire.
- -e 10 : Générer 10 codes de secours d'urgence.
- -r 3 -R 30 : Limiter le taux de connexion. Autoriser 3 tentatives de connexion toutes les 30 secondes.
Ajoutez à la fin du fichier /etc/pam.d/cockpit. L'option nullok permet aux utilisateurs qui n'ont pas encore généré de code 2FA de se connecter, tandis que les codes sont requis si l'utilisateur a suivi l'étape 2 ci-dessus. Cette option est utile lors du déploiement. Une fois que tous les utilisateurs auront généré des codes, vous pourrez supprimer l'option nullok pour exiger la 2FA pour tous. :
echo 'auth required pam_google_authenticator.so nullok' | sudo tee -a /etc/pam.d/cockpit
Copiez vos paramètres 2FA dans un endroit sûr :
cat .google_authenticator
Redémarrez le service cockpit :
systemctl restart cockpit
3. Configurez SSH pour utiliser l'OTP
Modifiez le fichier de configuration PAM SSH :
sudo nano /etc/pam.d/sshd
Ajoutez la ligne suivante à la fin du fichier. L'option nullok permet aux utilisateurs qui n'ont pas encore généré de code 2FA de se connecter, tandis que les codes sont requis si l'utilisateur a suivi l'étape 2 ci-dessus. Cette option est utile lors du déploiement. Une fois que tous les utilisateurs auront généré des codes, vous pourrez supprimer l'option nullok pour exiger la 2FA pour tous.
auth required pam_google_authenticator.so nullok
Enregistrez et fermez le fichier.
Modifiez le fichier de configuration du démon SSH :
sudo nano /etc/ssh/sshd_config
Vérifiez que les options suivantes sont définies comme indiqué, ou ajoutez-les si elles n'existent pas :
KbdInteractiveAuthentication yes
ChallengeResponseAuthentication yes
X11Forwarding no
UsePAM yes
Enregistrez et fermez le fichier.
- Redémarrez le service SSH.
sudo systemctl restart ssh
4. Accès
Accédez à la page d'administration via le navigateur web :
adresseipduserveur:9090
Désactivez le serveur SSH dans les services lorsque vous n'en avez pas besoin.
5. Mise à jour des paquets de sécurité
Activez les mises à jour automatiques à l'aide de la commande suivante, qui vous demandera si vous souhaitez activer les mises à jour automatiques. Sélectionnez Oui et appuyez sur Entrée, ce qui confirmera que le service unattended-upgrades est actif et prêt à gérer les mises à jour pour vous.
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
Par défaut, unattended-upgrades fonctionne tous les jours, pour vérifier ou modifier l'horaire, vérifiez la minuterie systemd :
sudo systemctl status apt-daily.timer
sudo systemctl status apt-daily-upgrade.timer
Pour vous assurer que tout fonctionne, simulez une mise à niveau sans surveillance. Si vous venez de faire une nouvelle installation ou si vous aviez déjà mis à jour récemment le système, vous ne devriez pas avoir de réponse :
sudo unattended-upgrade --dry-run
Activez les redémarrages automatiques après les mises à jour du noyau en ajoutant cette ligne :
echo 'Unattended-Upgrade::Automatic-Reboot "true";' | sudo tee -a /etc/apt/apt.conf.d/50unattended-upgrades
Vous pouvez également planifier des redémarrages à un moment précis :
echo 'Unattended-Upgrade::Automatic-Reboot-Time "02:00";' | sudo tee -a /etc/apt/apt.conf.d/50unattended-upgrades
Vous pouvez surveiller les mises à jour automatiques en vérifiant les journaux :
sudo less /var/log/unattended-upgrades/unattended-upgrades.log
Pour installer iptables sur Debian et configurer les règles pour ouvrir les ports 22 et 9090, suivez les étapes ci-dessous :
Installation du par-feu
Installez iptables :
sudo apt install iptables
Configuration des règles iptables
-
Ouvrez les ports 22 et 9090 :
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 9090 -j ACCEPT -
Enregistrez les règles pour qu'elles soient persistantes après un redémarrage :
sudo apt install iptables-persistent sudo netfilter-persistent save
Pour vérifier que les règles ont été appliquées correctement, utilisez la commande suivante :
sudo iptables -L -v
Pour ouvrir un port spécifique (par exemple, le port 8080) :
sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
sudo netfilter-persistent save
Pour fermer un port spécifique (par exemple, le port 8080) :
sudo iptables -D INPUT -p tcp --dport 8080 -j ACCEPT
sudo netfilter-persistent save
Explication des commandes
iptables -A INPUT -p tcp --dport <port> -j ACCEPT: Ajoute une règle pour accepter les connexions entrantes sur le port spécifié.iptables -D INPUT -p tcp --dport <port> -j ACCEPT: Supprime la règle pour accepter les connexions entrantes sur le port spécifié.netfilter-persistent save: Enregistre les règles actuelles pour qu'elles soient appliquées automatiquement au démarrage.
Installation de CrowdSec pour bloquer les IP malveillantes
Prérequis :
- iptables
CrowdSec est une solution open-source de sécurité qui protège les serveurs et les applications contre les attaques malveillantes en analysant les journaux et en détectant les comportements suspects. En utilisant des règles de détection et des listes de réputation, CrowdSec peut bloquer automatiquement les adresses IP malveillantes, partager ces informations avec une communauté mondiale, et ainsi améliorer collectivement la sécurité de tous les utilisateurs. Il s'intègre facilement avec divers services et plateformes, offrant une protection proactive et collaborative contre les cybermenaces.
sudo apt install -y curl && curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh | sudo bash
sudo apt install -y crowdsec crowdsec-firewall-bouncer-iptables
Description des paquets :
- crowdsec : CrowdSec est une solution de sécurité open-source qui aide à détecter et à bloquer les comportements malveillants en temps réel. Elle fonctionne en analysant les journaux (logs) pour identifier les comportements suspects et en prenant des mesures appropriées.
- crowdsec-firewall-bouncer-iptables : Ce paquet est un "bouncer" pour CrowdSec qui utilise iptables (une interface pour Netfilter, le pare-feu Linux) pour bloquer les adresses IP identifiées comme malveillantes par CrowdSec. Un "bouncer" est un composant qui applique les règles de blocage définies par CrowdSec.
sudo systemctl reload crowdsec
Redémarrez le système :
sudo reboot
Vérifiez si le service est lancez et fonctionne correctement :
sudo systemctl status crowdsec


