Skip to main content

Ubuntu Server - Paramétrer SSH

image.png

Difficulté : Intermédiaire


Notions : SSH, ubuntu server, linux, sécurité.


I. Introduction


Il est intéressant d'un point de vue sécurité de procéder à quelques modifications de la configuration par défaut de SSH.



II. Paramétrage


2.1 Renforcer la sécurité


Cette étape est optionnelle mais vivement conseillée pour optimiser la sécurité du système.

Stopper le service SSH.

sudo service ssh stop


Éditer le fichier de configuration "/etc/ssh/sshd_config".

Il est intéressant de dé-commenter/modifier les directives suivantes :

image.png
  • Port <numéro de port>
  • AdressFamily <any | inet | inet6>
  • Listen address <ip d'écoute>

- Ne pas utiliser le port par défaut.

- Limiter l'écoute à une famille d'adresse.

- Limiter l'écoute à une interface.

image.png


  • SyslogFacility AUTHPRIV
  • LogLevel VERBOSE


- Permet de loguer de manière sécurisée.

- Permet de loguer les echecs de connexion.

Attention : Sur ubuntu server, à partir de la version 23.04, le port d'écoute SSH n'est plus modifié dans le fichier de configuration. Suivre la procédure ci-dessous pour changer le port d'écoute.

Ubuntu 23.04+ changer le port d'écoute SSH.

Depuis la version 23.04, le serveur SSH n'est plus lancé en tant que service à proprement parler mais en tant que socket.

Il faut donc désormais le modifier dans le fichier "/lib/systemd/system/ssh.socket" et modifier la directive ListenStream.

image.png

Puis recharger les sockets avec :

systemctl daemon-reload
systemctl restart ssh

Les Échecs de connexion sont consultables avec la commande ci-dessous.

grep "Failed password" /var/log/auth.log

image.png

  • LoginGraceTime 30s
  • PermitRootLogin no
  • MaxAuthTries 3
  • MaxSessions 10

- Limite le temps pour la saisie des logins.

- Interdire la connexion en tant que 'root'.

- Nombres de tentatives avant le Log.

- Maximum de connexions par session TCP.


image.png

  • MaxStartups 5:50:10

- à partir de 5 tentatives, 50% de chance que la connexion soit dropée. Augmente linéairement jusqu’à 10 connexions où le taux atteints 100%.

image.png

  • Banner /etc/ssh/banner.txt

- chemin vers la bannière de connexion ssh.

Conseil : Pour des exemples de banner, voir BANNER - Exemple

2.2 Limiter l'accès à SSH


Il peut être inintéressant de limiter l'accès au SSH uniquement à certains utilisateurs.

Cela peut se faire à travers la mise en place d'un groupe comme suit :

groupadd sshusers

Puis ajouter le(s) utilisateur(s) au groupe

usermod -a -G sshusers <username>

Ajouter ensuite en fin de fichier "/etc/ssh/sshd_config" la directive suivante :

image.png

- nom des groupes autorisés à se connecter en SSH


2.3 paramétrer le SFTP & chroot


Dans le cadre de l'utilisation du service pour faire du SFTP, il peut également être intéressant de brider les utilisateurs SFTP dans leur répertoire utilisateur afin que ceux-ci n'est pas accès aux dossiers du système.

Pour cela il faut créer un groupe d'utilisateurs du SFTP auxquels la stratégie va s'appliquer :

addgroup sftpusers

Puis créer un répertoire qui servira de racine. Par exemple :

mkdir /sftp

Puis éditer les directives du fichier "/etc/ssh/sshd_config" le bloc d'instructions qui activera le subsystem SFTP et permettra le chroot.

Commenter la ligne :

image.png

Et la remplacer par :

Subsystem sftp internal-sftp
Match Group sftpusers
	ChrootDirectory /sftp/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no

image.png


  • Utilise le subsystem interne au lieu de celui par défaut
  • Pour les utilisateurs dans les groupes énumérés
    • Chroot sur /sftp/<NomUtilisateur>
    • forcer la commande sftp et interdire ssh cli
    • interdire le forwarding
    • interdire le X11

Redémarrer SSH.

service ssh restart

Créer enfin les utilisateurs avec leur répertoire et les intégrer au groupe sftpusers, utiliser les commandes :

useradd -m -g sftpusers -s /usr/sbin/nologin -d /sftp/<nomUtilisateur>/<NomRepertoireHome> <NomUtilisateur>
passwd <NomUtilisateur>

Attention : si utilisé conjointement avec la directive 'AllowGroups', penser à ajouter le groupe sftpusers à cette ligne.

image.png

image.png

sans chroot
avec chroot



III. Redémarrer le service


Relancer le service.

sudo service ssh start

Pour vérifier le status du service :

sudo service ssh status

image.png