• 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.



    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.

     

     

     


    Tags Tags : , ,
  • Commentaires

    Aucun commentaire pour le moment

    Suivre le flux RSS des commentaires


    Ajouter un commentaire

    Nom / Pseudo :

    E-mail (facultatif) :

    Site Web (facultatif) :

    Commentaire :