OpenSSH est le principal outil de connectivité pour la connexion distante utilisant le protocole SSH. Il crypte tout le trafic pour éliminer les écoutes, le détournement de connexion et autres. De plus, OpenSSH offre la possibilité de créer des tunnels sécurisés, plusieurs méthodes d’authentification et d’autres options de configuration performantes.

Source : https://www.openssh.com/

SSH (Secure Shell) est un programme informatique et un protocole de communication sécurisé. Le protocole de connexion impose un échange de clés de chiffrement en début de connexion. Par la suite, tous les segments TCP sont authentifiés et chiffrés. Il devient donc impossible d’utiliser un sniffer pour voir ce que fait l’utilisateur.

Source : https://fr.wikipedia.org/wiki/Secure_Shell

Ce tutoriel explique comment installer et configurer OpenSSH 6.0 sur Debian 7.7.0. Si vous utilisez une distribution (ou version) différente il pourrait y avoir quelques divergences de paramétrage.

Ici ne sera présenté que quelques options parmi bien d’autres qui vous permettront de sécuriser vos accès SSH. Toute la configuration d’OpenSSH se fera dans son fichier de configuration sshd_config  (situé dans  /etc/ssh/) pour lequel je vous renvoie ici pour plus d’informations.

Toutes les manipulations à venir seront à effectuer en tant que super-utilisateur de la machine.


Installation de OpenSSH

Mettre à jour la distribution

Exécutez la commande suivante :

apt-get update -y && apt-get upgrade -y

Cette commande permet de mettre à jour la liste des paquets de Debian et de mettre à jour les paquets installés sur votre système Debian.

Installer OpenSSH

Exécutez la commande suivante :

apt-get install openssh-server

Sur les clients, vous devez installer le client :

apt-get install openssh-client

Configuration de OpenSSH

Pensez a redémarrez le service ssh a chaque modification :

service ssh restart

Limiter le nombre de tentatives d’authentification

2 méthodes sont possibles pour modifier cela, une en utilisant seulement d’OpenSSH et une autre qui demande l’ajout d’un service supplémentaire. Je vous conseil de lire les 2 méthodes avant de vous décider.

Avec OpenSSH

Cette méthode permet seulement de limiter le nombre de tentatives d’authentification et d’interrompre la connexion entre le serveur et le client si l’on atteint la limite autorisées.

Éditez le fichier sshd_config :

nano /etc/ssh/sshd_config 

Ajoutez l’option suivante à la fin du fichier :

## Indication du nombre de tentatives maximal de connexion
MaxAuthTries nb

nb correspond au nombre de tentatives autorisées (3 par exemple) ;

Enregistrez les modifications ;

Redémarrez le service ssh :

service ssh restart

Avec Fail2Ban

Fail2Ban permet de contrôler les tentatives de connexion et bloque les adresses IP des l’hôtes, pendant un certain temps si la limite est atteinte. Par défaut il intervient au boue de 3 échec de connexion et banni l’adresse IP de la source pendant 10 minutes.

Installez Fail2Ban :

apt-get install fail2ban

Éditez le fichier de configuration de Fail2Ban jail.conf :

nano /etc/fail2ban/jail.conf

Vous pouvez modifier le nom de tentatives autorisé à l’option suivante :

maxretry = 3

Vous pouvez également modifier la durée (en seconde) du bannissement à l’option suivante :

bantime  = 600

Enregistrez les modifications ;

Redémarrez le service fail2ban :

service ssh restart

Interdire les connexions SSH pour root

Utiliser le compte root pour se connecter en SSH à un serveur n’est pas recommandé mais possible. Depuis Debian 8.0 ce n’est plus possible par défaut mais, sur Debian 7.0 ça l’est encore.

Éditez le fichier sshd_config :

nano /etc/ssh/sshd_config 

Repérez la ligne suivante :

 PermitRootLogin yes 

Remplacez la valeur yes par no pour interdire l’accès SSH avec le compte root ;

Modifier le port utilisé par SSH

Si vous ne souhaitez par utilisez le port par défaut du protocole SSH qui est connu tous et donc « moins sécurisé », vous pouvez le changer.

Repérez la ligne suivante :

Port 22 

Remplacez la valeur 22 (port par défaut du protocole SSH) par un autre numéro de port. Faite attention à ne pas renseigner un port déjà utilisé par un logiciel lambda. Consultez ce site pour vous en assurer.

Réserver l’accès SSH à des groupes

Seul les utilisateurs du ou des groupes spécifiés pourront se connecter en SSH.

Ajoutez l’option suivante à la fin du fichier :

## Indication des groupes autorisés
## Chaque groupe est séparé par un espace
AllowGroups groupe1 groupe2 groupe3

En utilisant cette option tous les groupes non-renseignés seront interdit de connexion.

Réserver l’accès SSH des utilisateurs

En complément (ou pas) de la réservation de l’accès SSH à des groupes, vous pouvez spécifier les utilisateur de ces groupes qui ont le droit se connecter. Néanmoins, si vous utilisez aussi la réservation par groupe, vous ne pourrez pas autoriser la connexion avec un utilisateur faisant partie d’un groupe qui n’est pas renseigné à dans l’option AllowGroups.

Ajoutez l’option suivante à la fin du fichier :

## Indication des utilisateurs autorisés
## Chaque utilisateurs est séparé par un espace
AllowUsers utilisateur1 utilisateur2 utilisateur3

Réserver l’accès SSH des utilisateurs et leur IP

En complément de la réservation de l’accès SSH à des utilisateurs, vous pouvez spécifié les adresses IP autorisé pour se connecter. Vous pouvez très bien spécifier une adresse IP que pour certains utilisateur et autoriser l’accès à d’autre, quelque soit la source.

Pour attribuer une adresse IP source à un utilisateur vous devez procéder de la manière suivante :

utilsateur@AdresseIP

Par exemple, si l’on veux attribuer une IP à l’utilisateur 1 vue plus haut, on le fera de cette manière :

 AllowUsers utilisateur1@AdresseIP utilisateur2 utilisateur3

Enregistrez les modifications ;

Redémarrez le service fail2ban :

service ssh restart

Ce tutoriel est terminé. Pour poursuivre ce tutoriel, vous pouvez  sécuriser la connexion SSH par l’utilisation de clés d’authentification ou encore par l’utilisation de tunnels SSH.

Si vous avez des problèmes, où que vous trouvez que certains points sont mal expliqués (ou faux), n’hésitez pas à m’avertir.