K

- Base de connaissances

Accueil > Projets Open Source > OpenSSH > Sécuriser un serveur OpenSSH

Sécuriser un serveur OpenSSH

jeudi 1er décembre 2016, par webmestre

Lire aussi :

Cet article explique comment paramétrer convenablement un serveur SSH et comment le sécuriser un minimum étape par étape.

Le fichier de configuration à modifier pour le serveur SSH sur une distribution LINUX est /etc/ssh/sshd_config .

Le pré-requis minimum pour réaliser ce paramétrage et comprendre les principes sécuritaires de base est d’avoir créé un un compte utilisateur sur le système serveur SSH nommé user dans cet article.

Quelques commandes utiles

Pour appliquer des modifications ou de nouvelles configurations, il est nécessaire de relancer le serveur SSH :

/etc/init.d/ssh restart

Etape 1 : Modification du port par défaut 22

Pour modifier le port port par défaut (ce qui évite de nombreuses attaques automatiques du type force brute sur le port 22) :

Port 2016

Etape 2 : Modification du protocole par défaut

Préférer l’utilisation du Protocol 2 :

Protocol 2

Etape 3 : Sécuriser l’accès root

Désactiver le login root :

PermitRootLogin no

A la fin de cette étape 3, redémarez le serveur SSH, et l’ouverture d’une session SSH se fera via la commande suivante :

ssh user@mon_serveur_ssh -p 2016

Etape 4 : Connexion par clef de cryptage asymétrique DSA

Allons plus loin ! Se connecter en entrant un identifiant utilisateur et son mot de passe associé n’est pas une méthode fiable ou robuste car ces informations peuvent être interceptées dans un mail, dans un snif (Exemple : keylogger matériel...), ou autre...
Interdisons l’authentification par mot de passe. Et, pour se connecter dans ce cas, on utilisera une paire de clefs publique/privée dite asymétrique.

Pour se faire, on crée sur le serveur SSH et le poste client SSH le répertoire .ssh . Ce répertoire contient les informations de configurations de connexions et clefs de cryptage pour le processus SSH spécifique à un utilisateur :

mkdir ~/.ssh
chmod 0700 ~/.ssh

Pour générer les clefs, il suffit de taper la commande suivante sur notre poste client (il est vivement recommandé de mettre un mot de passe sur ces clefs) :

ssh-keygen -t dsa -f ~/.ssh/id_mon_serveur_ssh

Une fois fait, nous sommes en présence de deux fichiers dans notre répertoire .ssh  :

id_mon_serveur_sshclef privée qui ira sur les postes clients
id_mon_serveur_ssh.pubclé publique qui ira sur le serveur id_mon_serveur_ssh

On transfère alors notre clef publique vers notre serveur mon_serveur_ssh  :

scp -P 2016 ~/.ssh/id_mon_serveur_ssh.pub user@mon_serveur_ssh:~/.ssh/authorized_keys

Puis, on supprime la clef publique sur notre poste client (Il est recommandé d’avoir différentes paires de clefs d’authentification pour chaque serveur SSH) :

rm -f ~/.ssh/id_mon_serveur_ssh.pub

Et ensuite, on verrouille l’accès en écriture sur le répertoire .ssh sur le serveur SSH et le poste client :

chmod 0600 ~/.ssh/*

Enfin, on va indiquer au serveur SSH que l’on utilise uniquement la méthode d’authentification par clef et où se trouvent les clefs à utiliser pour cette authentification (pour tous nos utilisateurs) :

PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
RSAAuthentication no
UsePAM no
KerberosAuthentication no
GSSAPIAuthentication no
PasswordAuthentication no

Etape 5 : Restreindre l’utilisation du service SSH

Pour renforcer la sécurité, on va créer un groupe regroupant les utilisateurs ayant le droit d’utiliser le service SSH. Pour se faire on créé le groupe sshusers par exemple :

groupadd sshusers

Puis, on ajoute l’utilisateur (les utilisateurs) ayant le droit d’’accéder à notre serveur mon_serveur_ssh  :

usermod -a -G sshusers user

Enfin, on indique au service SSH que nous autorisons uniquement les utilisateurs du groupe sshusers à se connecter sur notre serveur en ajoutant la ligne dans le fichier de configuration /etc/ssh/sshd_config  :

AllowGroups sshusers

Etape 6 : Empreinte du serveur SSH

Dans le fichier de configuration /etc/ssh/sshd_config , commentez toutes les lignes HostKey et décommentez la lignesuivante :

HostKey /etc/ssh/ssh_host_dsa_key

Etape 7 : Quelques paramètres à ajuster

Mettre le paramètre LoginGraceTime à 20s. C’est la durée pendant laquelle une connexion sera ouverte sans être authentifiée :

LoginGraceTime 20s

Mettre le nombre maximum à 1 essai avant de se faire jeter par le serveur :

MaxAuthTries 1

Mettre Le paramètre MaxStartups à 2 qui indique le nombre de connexions ssh non authentifiées qu’il est possible de lancer simultanément :

MaxStartups 2

Répondre à cet article

Plan du site | Suivre la vie du site RSS 2.0 | powered by NYSTEK-EDITIONS and NYSTEK-CONSULTING