Service FTP

Mise en situation

On désire pouvoir transférer des fichiers de manière sécurisée entre le LAN “Gestion” et le LAN “Production”.

Dans le cadre du système considéré, ces fichiers seront des ordres de fabrication.

Dans une entreprise, un ordre de fabrication est un document élaboré par les services de gestion suite à un ordre de vente. L’émission de ce document, à destination des chargés de production, déclenche un certain nombre d’évènements dont la mise en production d’une quantité donnée de produits dans un délai imparti.

Pour ce faire, vous allez installer puis configurer un serveur FTP sur la machine Linux virtualisée.

Ressources

Matériel(s)
  • un PC Windows 10

Logiciel(s)
  • solution de virtualisation VMWare v15

  • une machine virtuelle OpenSUSE 15.2 en mode “server”

Documentation(s)
  • pages de manuel Linux

Installation du serveur

L’installation du serveur se résume à l’installation de 2 paquets logiciels :

  1. vsftpd → paquet associé au serveur FTP nommé VsFTPd (pour Very Secure FTP daemon). Ce serveur privilégie la sécurité et est donc bien adapté à un contexte d’utilisation en entreprise.

  2. yast2-ftp-serverplugin de YaST qui propose une interface d’administration globale du serveur FTP

🖮 Travail n° 1 Installation du serveur

  1. Déterminer avec la commande zypper search vsftpd yast2-ftp-server si les paquets liés au serveur FTP sont déjà installés. Si la lettre ‘i’ apparait dans la colonne intitulée ‘S’, c’est que le paquet correspondant est installé

    Exemple d’affichage sur un système sur lequel aucun des 2 packages n’est installé
    localhost:~ # zypper search vsftpd yast2-ftp-server
    Loading repository data...
    Reading installed packages...
    
    S | Name             | Summary                                       | Type
    --+------------------+-----------------------------------------------+--------
      | vsftpd           | Very Secure FTP Daemon - Written from Scratch | package
      | yast2-ftp-server | YaST2 - FTP configuration                     | package
  2. Si nécessaire, installer les 2 packages avec la commande

    zypper install vsftpd yast2-ftp-server

Configuration du serveur

La configuration du serveur FTP est forcément plus complexe que celle d’un serveur TFTP car il offre plus de fonctionnalités.

Dans notre cas, on veut pouvoir dédier des espaces distincts pour les différentes catégories de personnel de l’entreprise ayant accès au service FTP :

  • les chargés de fabrication dont les noms d’utilisateurs sont fabmgr1 et fabmgr2

  • les chargés d’expédition dont les noms d’utilisateurs sont expmgr1 et expmgr2

  • les membres de l’équipe réseau dont les noms d’utilisateurs sont netadmin, nettech1 et nettech2

La configuration du serveur FTP s’effectue én 2 temps :

  1. par YaST pour la configuration globale

  2. par l’intermédiaire de fichiers de configuration pour la configuration “fine” notamment au niveau de la gestion des accès

🖮 Travail n° 2 Configuration du serveur par YaST

  1. Lancer YaST et configurer le serveur FTP comme illustré ci-dessous

    vsftpd yast config

🖮 Travail n° 3 Configuration “fine” du serveur

  1. Sauvegarder le fichier de configuration globale de VsFTPd avant toute modification.

    cp /etc/vsftpd.conf /etc/vsftpd.conf.ori
  2. Remplacer le contenu du fichier /etc/vsftpd.conf par :

    ##
    # CONFIG E5
    ##
    
    write_enable=YES
    
    pam_service_name=vsftpd
    
    anonymous_enable=NO
    
    local_enable=YES
    chroot_local_user=YES
    allow_writeable_chroot=YES
    
    pasv_enable=YES
    pasv_min_port=30000
    pasv_max_port=30100

    Ne pas mettre d’espace entre le nom de l’option, le signe ‘=’ et sa valeur.

  3. Dans cette configuration, seuls les utilisateurs possédant un compte sur la machine qui héberge le service pourront accéder au FTP.

    Posséder un compte sur un machine Linux ne veut pas forcément dire qu’on peut s’y connecter “directement” avec un terminal de commande pour y saisir des commandes.

    C’est d’ailleurs ce qui sera fait ici puisqu’on ne veut pas que les utilisateurs ayant accès au FTP puissent stocker des fichiers sur le serveur ou y exécuter des commandes.

    Cela concerne notamment les utilisateurs suivants :

    • Fabrication Manager 1

      • login : fabmgr1

      • password : fabmgr1

      • répertoire d’accueil : /srv/ftp-acme/fabrication

      • groupe par défaut : ftp-users

      • groupes additionnels : fabrication, users

    • Fabrication Manager 2

      • login : fabmgr2

      • password : fabmgr2

      • répertoire d’accueil : /srv/ftp-acme/fabrication

      • groupe par défaut : ftp-users

      • groupes additionnels : fabrication, users

    • Expeditions Manager 1 (login : expmgr1, password : expmgr1)

      • login : expmgr1

      • password : expmgr1

      • répertoire d’accueil : /srv/ftp-acme/expeditions

      • groupe par défaut : ftp-users

      • groupes additionnels : expeditions, users

    • Expeditions Manager 2 (login : expmgr2 password : expmgr2)

      • login : expmgr2

      • password : expmgr2

      • répertoire d’accueil : /srv/ftp-acme/expeditions

      • groupe par défaut : ftp-users

      • groupes additionnels : expeditions, users

    • Network Administrator

      • login : netadmin

      • password : netadmin

      • répertoire d’accueil : /srv/ftp-acme/netsquad

      • groupe par défaut : ftp-users

      • groupes additionnels : netsquad, users

    • Network Technician 1

      • login : nettech1

      • password : nettech1

      • répertoire d’accueil : /srv/ftp-acme/netsquad

      • groupe par défaut : ftp-users

      • groupes additionnels : netsquad, users

    • Network Technician 2

      • login : nettech2

      • password : nettech2

      • répertoire d’accueil : /srv/ftp-acme/netsquad

      • groupe par défaut : ftp-users

      • groupes additionnels : netsquad, users

        Créer ces utilisateurs/groupes depuis YaST ou la ligne de commande

        Exemple
        # useradd -d /srv/ftp-acme/fabrication -g ftp-users -G fabrication,users -M -N -c "Fabrication Manager 1" -s /bin/false fabmgr1 (1)
        # passwd fabmgr1
        New password:
        Retype new password:
        passwd: password updated successfully
        1 voir la page de manuel de useradd pour la signification des options. L’option -s /bin/false interdit à l’utilisateur de pouvoir se connecter directement sur le serveur en ne lui attribuant pas d’interpréteur de commandes.
  4. Utiliser le terminal (→ commandes chown & chgrp & chmod) pour que la structure ainsi que les droits d’accès du site ftp soient les suivants :

    # ls -l /srv
    drwxr-xr-x 1 root ftp-users 90 Feb  2 09:37 ftp-acme
    # ls -l /srv/ftp-acme
    total 0
    drwxrwx--- 1 root expeditions 42 Feb  2 11:13 expeditions
    drwxrwx--- 1 root fabrication 58 Feb  2 11:21 fabrication
    drwxrwx--- 1 root netsquad    16 Feb  2 10:23 netsquad
  5. Ajuster la configuration du pare-feu aux modifications apportées dans le fichier de configuration

    # firewall-cmd --add-port=21/tcp --permanent
    # sudo firewall-cmd --add-port=30000-30100/tcp --permanent
    # sudo firewall-cmd --reload

Test du serveur

Le test du serveur consiste à tenter de se connecter sous les différents profils existants (chargés de fabrications, membres de l’équipe réseau…​) et à vérifier que les droits d’accès sont conformes à ce qui est attendu.

🖮 Travail n° 4 Tests

  1. Redémarrer le serveur avec la commande :

    systemctl restart vsftpd.service
  2. Depuis un PC Windows, installer et exécuter le logiciel client FTP WinSCP link.

    Consultez si besoin l’article Premiers pas avec WinSCP link pour prendre en main WinSCP.

  3. Créer des connexions pour chaque utilisateur de façon à vérifier qu’ils ont accès à leurs répertoires respectifs sur le serveur

    winscp

    S’assurer que WinSCP est autorisée à communiquer à travers le pare-feu

    winscp firewall
  4. Télécharger/Téléverser un fichier depuis/vers le serveur pour s’assurer que les transferts — aussi bien en lecture qu’en écriture — sont opérationnels.

🞄  🞄  🞄