Credit : Illustration backtotheweb.fr
Securiser SSH : configuration avancee de sshd_config
Securiser SSH : configuration avancee de sshd_config
Bon, on va pas se mentir, c'est un sujet qui revient souvent.
SSH est la porte d'entree principale de votre serveur. Sur un VPS IONOS expose a Internet, les tentatives de connexion par brute force commencent dans les minutes qui suivent la mise en ligne. Voici comment verrouiller votre configuration.
1. Generer une paire de cles SSH
Sur votre machine locale :
ssh-keygen -t ed25519 -C "admin@monsite.fr"
Copiez la cle publique sur le serveur :
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@ip_serveur
Testez la connexion par cle avant de desactiver les mots de passe.
2. Modifier sshd_config
Editez le fichier de configuration principal :
nano /etc/ssh/sshd_config
Voici les directives essentielles a modifier :
# Changer le port par defaut
Port 2222
# Desactiver la connexion root
PermitRootLogin no
# Desactiver l'authentification par mot de passe
PasswordAuthentication no
PubkeyAuthentication yes
# Limiter les utilisateurs autorises
AllowUsers deployer admin
# Desactiver les methodes inutiles
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding no
# Timeout et tentatives
LoginGraceTime 30
MaxAuthTries 3
MaxSessions 3
# Garder la connexion active
ClientAliveInterval 300
ClientAliveCountMax 2
# Protocole et algorithmes
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org
HostKeyAlgorithms ssh-ed25519
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com
Validez la syntaxe et redemarrez :
sshd -t
systemctl restart sshd
Attention : gardez votre session actuelle ouverte et testez dans un nouveau terminal avant de fermer.
3. Configurer le pare-feu
Autorisez le nouveau port SSH dans UFW :
apt install ufw -y
ufw allow 2222/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status
4. Installer Fail2ban
Fail2ban surveille les logs et bannit les IP apres plusieurs echecs de connexion :
apt install fail2ban -y
Creez une configuration locale :
nano /etc/fail2ban/jail.local
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
banaction = ufw
[sshd]
enabled = true
port = 2222
logpath = /var/log/auth.log
maxretry = 3
Retour d'expérience : on utilise cette config sur tous nos serveurs clients.
systemctl enable fail2ban
systemctl restart fail2ban
Verifiez l'etat de la jail :
fail2ban-client status sshd
5. Banniere d'avertissement
Ajoutez une banniere legale qui s'affiche avant la connexion :
echo "Acces non autorise interdit. Toute activite est journalisee." > /etc/issue.net
Dans sshd_config :
Banner /etc/issue.net
6. Authentification a deux facteurs (optionnel)
Pour une securite maximale, ajoutez Google Authenticator :
apt install libpam-google-authenticator -y
google-authenticator
Puis configurez PAM dans /etc/pam.d/sshd :
auth required pam_google_authenticator.so
Et dans sshd_config :
AuthenticationMethods publickey,keyboard-interactive
KbdInteractiveAuthentication yes
7. Surveiller les connexions
Quelques commandes utiles pour l'audit :
# Dernières connexions
last -a | head -20
# Tentatives echouees
journalctl -u sshd | grep "Failed"
# Connexions actives
ss -tnp | grep 2222
# IP bannies par Fail2ban
fail2ban-client status sshd
Recapitulatif
Une configuration SSH securisee repose sur trois piliers : authentification par cle uniquement, restriction des acces (port, utilisateurs), et detection d'intrusion avec Fail2ban. Sur un serveur IONOS, ces mesures reduisent considerablement la surface d'attaque et protegent efficacement contre les tentatives de brute force.
Cet article sera mis à jour régulièrement. Pensez à le bookmarker.