Linux:Serveur FTP
Un article de Djjnet.
Il faut d'abord choisir un serveur, par exemple wu-ftpd : www.wu-ftpd.org ou proftpd : www.proftpd.org/
Wu-ftpd
Je n'utilise plus Wu-ftpd depuis plusieurs années, les informations ne sont peut-être plus à jours.
Guest FTP
Le fichier de configuration est /etc/ftpaccess.
Ici, je n'utilise pas la méthode du "/./" très souvent utilisée.
Tous les utilisateurs seront dirigés vers un point commun :
guest-root /home/comptes
L'avantage est de nécessiter qu'une seule copie des fichiers nécessaires à la "navigation" ftp :
d--x--x--x /home/comptes/etc -r--r--r-- /home/comptes/etc/.notar -r--r--r-- /home/comptes/etc/passwd -r--r--r-- /home/comptes/etc/group d--x--x--x /home/comptes/bin -r--r--r-- /home/comptes/bin/.notar ---x--x--x /home/comptes/bin/ls d--x--x--x /home/comptes/dev -r--r--r-- /home/comptes/dev/.notar crw-rw-rw- /home/comptes/dev/null
/!\ Il est important de noter que les fichiers passwd et group ne sont pas les copies de vos fichiers système mais de nouveaux fichiers vides.
Vous pouvez ajouter selon votre choix les fichiers nécessaire au fonctionnement de tar ...
Pour mettre tout utilisateur en temps que guest utiliser :
guestuser *
Pour que les utilisateurs "anonimous" ne soient pas guest, ajouter le paramètre :
realuser ftp
(ceci est normalement plus utile dans les versions après 2.6.1)
Faire correspondre les utilisateurs ftp avec les utilisateurs "normaux" : Si vous avez par exemple dans /etc/passwd ceci :
djj:*:501:100:The webmaster:/home/comptes/djj:/bin/sh
Vous devez faire correspondre dans /home/comptes/etc/passwd :
djj::501:100::/djj:
Si vous utilisez le ftp pour vos comptes html, la correspondance logique à appliquer pour Apache est : djj::501:100::/djj/public_html:
Remarque :
Si vous souhaitez avoir un compte ftp alors qu'il ne possède pas de compte utilisateur sur votre machine, vous êtes obligé de lui créer un compte, définir un mot de passe puis faire la correspondance indiquée ci-dessus :
Les commandes sont :
adduser nom (pour les options, cf man adduser) passwd nom
Pour s'assurer que les utilisateurs n'accèdent pas aux dossiers ne leurs appartenant pas, il est possible de les bloquer dans leur dossier avec :
restricted-uid *
Ceci est appliqué à tous les utilisateurs.
Autres exemples :
restricted-gid users unrestricted-gid administrateurs unrestricted-uid moi
Voici maintenant des options facultatives :
Afin de limiter le nombre de personnes simultanées sur votre serveur :
limit all 10 Any /etc/ftpmsg.dead
Pour toutes les classes confondues 10 utilisateurs max. sont acceptés.
Si une onzième personne se connecte, elle verra s'afficher un message provenant du fichier /etc/ftpmsg.dead
Pour afficher une bannière une fois que la personne est loggée :
banner /home/comptes/bannerftp.txt
Pour que les transferts soient loggés :
log transfers guest inbound,outbound
Pour modifier le message de bienvenue :
message .message cwd=*
Avec cette ligne tous les paramètres figurent dans l’en-tête de bienvenue.
Les autres options de cwd= sont :
%T Heure local (forme Thu Nov 15 17:12:42 1990) %C Répertoire courrant %E L'adresse e-mail de l'administrateur spécifié dans le fichier /etc/ftpaccess %R Nom d'hôte du client %L Nom d'hôte du serveur %U Nom d'utilisateur donné %M Nombres d'utilisateurs maximum dans cette classe %N Nombres d'utilisateurs en ce moment dans cette classe %q Nombres d'inodes alloués.
Proftpd
Toute cette configuration se trouve dans le fichier : /etc/proftpd.conf ou /etc/proftpd/proftpd.conf
Definit le nom du serveur (affiche apres la version de proftpd a la connexion)
serverName "DjJServeur djj.homelinux.net"
Ne pas montrer la version du serveur pour éviter de dévoiler d'éventuels bugs de sécurité.
ServerIdent off
Choisir de démarrer un daemon spécifique (valeur : standalone) ou que inetd lance proftpd au moment voulu (valeur : inetd)
ServerType standalone
Option utile pour l'utilisation de serveurs virtuels
DefaultServer on
Email de l'admin :
ServerAdmin webmaster@dj-j.com
Choisir un arrangement des lignes entre la RFC 959 et la 2228. La RFC 2228 est plus compatible avec les navigateurs WEB.
MultilineRFC2228 on
Choisir si un utilisateur peut voir qu'un fichier ou un répertoire est un lien symbolique.
ShowSymlinks on
Afficher un message d'acceuil : le chemin est en relatif ou en absolu. Dans les deux cas, le fichier doit être dans l'arborescence accessible à l'utilisateur
DisplayLogin welcome.msg
Permettre la reprise des transferts
AllowStoreRestart on
Choix du port utilise (21 est le port standard).
Port 21
Umask 022 est un masque standard. Il permet que les autres utilisateurs ne puisse pas écrire.
Umask 022 022
Pour le mode standalone, il est préférable de limiter à 30 le nombre de processus fils créés pour éviter les attaques DoS.
De plus, plus votre configuration est petite, plus un nombre grand rendra votre machine instable.
MaxInstances 30
Utilisateur et groupe sous lesquels sont exécutes les processus du serveur ftp. Pour éviter les problèmes de sécurité, un utilisateur sans droits est utilisé.
User nobody Group nogroup
Temporisations :
Temps limite sans transfert
TimeoutNoTransfer 3600
Temps limite pour un transfert bloque
TimeoutStalled 600
Temps limite ou le client ne fait rien
TimeoutIdle 1800
Nombre maximum de clients connectés :
MaxClients 5
Ici, on autorise l'overwrite pour tous les fichiers situés dans le dossier /*, soit tous les fichiers si les droits l'autorisent.
<Directory /*> AllowOverwrite on </Directory>
En cas de NIS.
PersistentPasswd off
Par sécurité, on ne permet pas aux utilisateurs d'explorer en dehors de leur compte. C'est le principe du chroot, l'utilisateur est directement envoyé au dossier spécifié par DefaultRoot, ici ~ pour le "home".
Pour être plus simple, on spécifie le groupe users plutôt que par le login.
Attention que dans /etc/passwd, le groupe soit bien users, car de base sous Mandrake par exemple, l'utilisateur est créé avec pour groupe son login.
DefaultRoot ~ users
Les utilisateurs anonymes :
Ici, DefaultRoot n'est pas nécessaire car Anonymous limite automatiquement.
<Anonymous ~ftp>
Utilisateur ftp qui doit être créé s'il ne l'est pas avec le dossier home souhaité. (ex : /home/ftp/)
Si la directive "RequireValidShell off" n'est pas utilisée, il faut que l'utilisateur ftp est bien un shell de spécifie dans /etc/passwd.
User ftp Group nogroup
Permettre d'utiliser le login anonymous ou ftp
UserAlias anonymous ftp RequireValidShell off MaxClients 2 DisplayLogin welcome.msg
Limiter WRITE pour tous dans le chroot d'anonyme.
<Directory *> <Limit WRITE> DenyAll </Limit> </Directory> </Anonymous>


