Skip to content

Hardening SSH

Configuration SSH appliquée à toutes les VMs via le rôle Ansible common.


Configuration

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

Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
MaxSessions 2
ClientAliveInterval 300
ClientAliveCountMax 0
AllowUsers mounik

Gestion des clés

  • Une seule clé SSH par administrateur (pas de authorized_keys partagé)
  • La clé publique est injectée via cloud-init à la création de chaque VM
  • Ansible utilise la même clé pour la configuration
  • Aucun mot de passe défini sur les comptes utilisateurs

Port non standard (2222)

Le port SSH est 2222 pour réduire le bruit des scanners automatiques sur le port 22. Ce port est :

  • Limité via UFW (ufw limit 2222/tcp)
  • Surveillé par Fail2Ban (max 3 tentatives, bannissement 1h)
  • Accessible uniquement depuis le réseau local (192.168.1.0/24)

Déploiement Ansible

# Premier passage (port 22 — cloud-init par défaut)
ansible-playbook -i inventory/homelab.yml playbooks/00-hardening.yml \
    -e 'ansible_port=22'

# Passages suivants (port 2222)
ansible-playbook -i inventory/homelab.yml playbooks/00-hardening.yml

Le rôle common applique également :

  • UFW (default deny, allow 2222 limit, ICMP)
  • Fail2Ban (jail SSH — port 2222, maxretry 3, bantime 3600)
  • Swap désactivé
  • Paquets communs (curl, htop, git, jq)
  • /etc/hosts avec toutes les VMs

Pour aller plus loin