-
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 groupegroupadd 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 noSachez 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.
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/groupNé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.
Tags : sftp, openssh, omnios
-
Commentaires