Configurer un serveur SFTP avec OpenSSH sous OmniosCE

Procédure de configuration d'un serveur SFTP sécurisé avec chroot des utilisateurs sous OmniOSce


1) Synchroniser l'heure du système

Par défaut, OmniOSce n'est pas à l'heure pour nous autres (Français).
Il est impératif de bien se synchroniser.

pkg install ntpsec && /usr/bin/ntpdate 0.fr.pool.ntp.org && date && svcadm enable svc:/network/ntp:default

2) Créer les groupes d'utilisateurs

- Groupe pour les utilisateurs SFTP autorisés :
Créez un groupe pour les utilisateurs qui seront autorisés à se connecter en SFTP :

groupadd sftpex

- Groupe pour désactiver l'accès SFTP
Créez un groupe pour désactiver l'accès SFTP d'un utilisateur en l'ajoutant à ce groupe

groupadd nosftp

3) Créer le répertoire racine pour le serveur SFTP

Le répertoire chroot principal doit être possédé par root avec des permissions appropriées pour des raisons de sécurité.

mkdir /SFTP

chown root:root /SFTP

chmod 755 /SFTP

4) Créer un utilisateur SFTP :

- Ajouter l'utilisateur.
Sur OmniOSce, il existAIT une limitation de 8 caractères pour la longueur des noms d'utilisateur.
Ce n'est plus le cas, néanmoins, nous sommes encore beaucoup à respecter cet usage.
Choisissez donc un nom d'utilisateur qui ne dépasse pas 8 caractères.

Créez un utilisateur myuser et ajoutez-le au groupe sftpex.
Définissez son shell sur /bin/false pour empêcher l'accès SSH classique.
Spécifiez son répertoire home dans /SFTP/myuser.

useradd -G sftpex -s /bin/false -m -d /SFTP/myuser myuser

- Définir le mot de passe de l'utilisateur :

passwd myuser

5) Configurer les permissions du répertoire chroot

Le répertoire chroot de l'utilisateur doit être possédé par root et avoir des permissions restrictives.

chown root:root /SFTP/myuser

chmod 755 /SFTP/myuser

6) Créer un répertoire pour les données de l'utilisateur

Puisque l'utilisateur ne peut pas écrire dans son répertoire chroot (car il est possédé par root), vous devez créer un sous-répertoire où il aura les permissions nécessaires.

mkdir /SFTP/myuser/DATA

chown myuser:sftpex /SFTP/myuser/DATA

chmod 700 /SFTP/myuser/DATA

7) Installer un éditeur de texte (facultatif pour les mordus de vi)

Si vous n'êtes pas à l'aise avec vi, vous pouvez installer nano :

pkg install nano

8) Configurer le fichier /etc/ssh/sshd_config

- Ouvrir le fichier de configuration SSH avec l'éditeur de texte de votre choix.

nano /etc/ssh/sshd_config

- Modifier la configuration SFTP

Trouvez la section ci-dessous et modifiez-la selon ce qui est écrit ici :

# no default banner path
Banner none

# override default of no subsystems
Subsystem sftp internal-sftp

Match Group nosftp
 ForceCommand /usr/bin/false

Match Group sftpex
 ChrootDirectory /SFTP/%u
 ForceCommand internal-sftp
 AllowTcpForwarding no
 X11Forwarding no

Sachez que l'ordre des blocs Match est important.
Le premier correspond au blocage de l'utilisateur lorsqu'il fait partie du groupe nosftp.
Il est donc fondamental qu'il soit placé en premier.


9) Redémarrer SSH

svcadm restart svc:/network/ssh:default

10) Vérifications de sécurité

Assurez-vous que les répertoires ont les bonne propriétés :

ls -ld /SFTP

doit afficher : drwxr-xr-x root root

ls -ld /SFTP/myuser

doit afficher : drwxr-xr-x root root

ls -ld /SFTP/myuser/DATA

doit afficher : drwx------ myuser sftpex

Votre serveur est en place pour l'utilisateur myuser.
Faîtes tous les essais de connexion nécessaires.


Gestion des groupes

Comment gérer l'accès SFTP des utilisateurs avec le groupe nosftp ?
Sous OmniOSce, la commande usermod ne comporte pas d'option -a, permettant de simplement ajouter un nouveau groupe sans avoir à réécrire tous les groupes dont doit faire partie l'utilisateur.
Il est donc plus courant de modifier directement le fichier /etc/group

Néanmoins, on peut utiliser la commande complète :

usermod -G sftpex,nosftp myuser

Cette méthode nécessite de connaître tous les groupes supplémentaires de l'utilisateur, car toute omission entraînera la suppression de l'utilisateur de ces groupes.
En étant membre à la fois de sftpex et nosftp, l'utilisateur est tout de même bloqué grâce à l'ordre d'exécution des blocs Match dans le fichier /etc/ssh/sshd_config.



↑ Haut de page