Le système d'exploitation GNU-Linux/Le serveur de fichiers FTP

Un livre de Wikibooks.
Aller à : Navigation, rechercher
Le système d'exploitation GNU-Linux
Tux.svg
Plan
  1. Qu'est-ce qu'un système d'exploitation ?
  2. Unix et Linux
  3. Partitionnement du disque
  4. Installation
    1. Installer Debian via le réseau
  5. Utilisateur Unix
    1. Le login
    2. Commandes de base
    3. L'aide en ligne man
    4. L'éditeur de texte vi
    5. Les shells
    6. La complétion
    7. Les jokers
    8. Les répertoires importants
    9. Redirection des entrées/sorties
    10. Invoquer un programme en tâche de fond
    11. Propriétaires et droits d'accès
    12. Processus
  6. Administration du système
    1. Configuration du réseau
    2. Les utilisateurs et groupes
    3. Le processus d'initialisation
    4. Les systèmes de fichiers
    5. Le système virtuel /proc
    6. Les périphériques /dev
    7. L'ordonnanceur de travaux cron
    8. Le backup : tar et gzip
    9. ghost avec partimage
    10. sauvegarde de fichiers avec rsync
    11. Les fichiers journaux syslog
    12. Installation de nouveaux logiciels
    13. Le noyau Linux et les modules
    14. Autres commandes utiles
    15. Installation RAID1 logiciel + LVM + XFS
    16. Scripts de surveillance
    17. Réseaux sans fil
  7. Administration des services réseaux
    1. Le serveur de noms Bind
    2. Le serveur de configuration réseau DHCP
    3. Le serveur de shell distant SSH
    4. Le partage de fichiers Samba
    5. Le partage de fichiers NFS
    6. Le serveur d'impression CUPS
    7. Le serveur de mails Postfix
    8. Le serveur de fichiers FTP
    9. La base de données Mysql
    10. Le serveur Web Apache
    11. Les annuaires LDAP
    12. L'outil d'administration Webmin
    13. Le routage avec iptables et route
    14. La supervision
  8. Sécurisation d'un serveur Linux
    1. Installation d'un service en mode chroot
    2. Protection avec iptables
  9. Médiagraphie
  10. Auteurs
Modifier ce modèle

Sections

Introduction [modifier]

Le protocole FTP (File Transfer Protocol) permet d'échanger des fichiers volumineux. Il utilise le port 21 (canal de contrôle) et le port 20 (canal des données) en protocole TCP.

Il existe plusieurs serveurs FTP : wu-ftpd, proftpd, muddleftpd, pure-ftpd, vsftpd, etc ... chacun se différencie des autres par ses fonctionnalités et sa facilité (ou non) a être configuré.

Nous avons choisi Proftpd car il dispose de nombreuses fonctionnalités et sa configuration est très simple car proche de celle d'Apache.

Site Internet : www.proftpd.org.

Installation de Proftpd [modifier]

Pour installer Proftpd sous Debian, il suffit de taper la commande suivante :

 # apt-get install proftpd

Configuration de Proftpd [modifier]

Le fichier de configuration de Proftpd est /etc/proftpd/proftpd.conf :

 $ cat /etc/proftpd/proftpd.conf
 
 # Nom du serveur
 ServerName                      "Serveur FTP du Creufop"
 
 # Fonctionne en mode autonome (daemon) et non via inetd
 ServerType                      standalone
 
 # Affiche le message de bienvenue que lorsque l'utilisateur s'est authentifié
 DeferWelcome                    on
 
 # Permet de voir les liens symboliques
 ShowSymlinks                    on
 
 # a commenter 
 MultilineRFC2228                on
 DefaultServer                   on
 
 # Efface un fichier si il est déjà présent
 AllowOverwrite                  on
 
 # Options liés aux expirations avant déconnexion
 TimeoutNoTransfer               600
 TimeoutStalled                  600
 TimeoutIdle                     1200
  
 # Fichier à afficher lors de la connexion
 DisplayLogin                    welcome.msg
 
 # Affiche le fichier .message si celui-ci est présent dans le répertoire visité
 DisplayFirstChdir               .message
 
 # Affiche par défaut le format long de la commande ls
 ListOptions                "-l"
 
 # A commenter
 DenyFilter                      \*.*/
 
 # A décommenter si on utilise NIS ou LDAP
 #PersistentPasswd               off
 
 # Le port standard de contrôle
 Port                            21
 
 # Nombre maximum de connexions simultannées
 MaxInstances                    30
 
 # Login et groupe utilisé par le daemon proftpd
 User                            nobody
 Group                           nogroup
 
 # Masque par défaut des fichiers et des répertoires
 Umask                         022  022
 
 # On autorise explicitement les logins autorises au FTP :
 <Limit LOGIN>
       AllowUser alex
       AllowUser pierre
       AllowUser alain
       DenyAll
 </Limit>

Dans ce fichier on peut rajouter les lignes suivantes :

 # permet à l'utilisateur même si il ne dispose pas d'un shell valide (ex: /bin/false)
 RequireValidShell    off
  
 # Verrouille l'utilisateur dans son répertoire par défaut
 DefaultRoot          ~
 
 # Pour ne pas afficher le nom du serveur FTP et son numéro de version
 ServerIdent          off
 # on peut également afficher une autre chaîne de caractères :
 #ServerIdent          on "Serveur FTP du Creufop"

Une fois les modifications faites sur le fichier de configuration, ne pas oublier de relancer le service:

 # /etc/init.d/proftpd restart


Accés FTP anonyme [modifier]

Pour faire un serveur FTP anonyme, il suffit de rajouter les lignes suivantes dans /etc/proftpd/proftpd.conf :

 <Anonymous ~ftp>
    User                               ftp
    Group                              nogroup
    # We want clients to be able to login with "anonymous" as well as "ftp"
    UserAlias                  anonymous ftp
 
    RequireValidShell          off
 
    # Limit the maximum number of anonymous logins
    MaxClients                 10
 
    # We want 'welcome.msg' displayed at login, and '.message' displayed
    # in each newly chdired directory.
    DisplayLogin                       welcome.msg
    DisplayFirstChdir          .message
 
    # Limit WRITE everywhere in the anonymous chroot
    <Directory *>
      <Limit WRITE>
        DenyAll
      </Limit>
    </Directory>
 
    # Uncomment this if you're brave.
    # <Directory incoming>
    #   # Umask 022 is a good standard umask to prevent new files and dirs
    #   # (second parm) from being group and world writable.
    #   Umask                          022  022
    #            <Limit READ WRITE>
    #            DenyAll
    #            </Limit>
    #            <Limit STOR>
    #            AllowAll
    #            </Limit>
    # </Directory>
 
 </Anonymous>

Fichier de log [modifier]

Proftpd stocke ses logs dans le fichier /var/log/proftpd/xferlog. En voici un extrait :

 Wed Feb  6 12:16:12 2008 1 lns-bzn-51f-85-78-78-5.adsl.proxad.net 1129 /home/user1/fichier1.txt a _ i r user1 ftp 0 * c
 Thu Feb  6 15:23:49 2008 1 84-74-216-148.dclient.hispeed.ch 11743 /var/www/index.html a _ i r user2 ftp 0 * c
 Fri Feb  6 23:46:02 2008 1 69.183.30.97.adsl.snet.net 4572542 /home/user2/toto.pdf a _ i r user2 ftp 0 * c
 ...

Création d'un utilisateur FTP [modifier]

Pour créer un utilisateur, on saisit la commande suivante :

 # adduser --shell /bin/false --home /var/www/site bob

Cacher un dossier / fichier [modifier]

Pour rendre un dossier invisible un fichier / dossier(ex Maildir), il faut ajouter au proftpd.conf :

 <Directory ~>
     Hidefiles Maildir
 </Directory>