- Fichier de configuration
- Fonctions avancées
- Pour les utilisateurs de gproftp
- Interface graphique simplifiée
Fichier de configuration
Exemple
Voici un exemple de config de ProFTPd pour le CRANS. On ne crée pas d'utilisateur spécial "crans", ce qui évite les problèmes de sécu avec ces utilisateurs supplémentaires.
Dans le fichier : /etc/proftpd.conf
ServerName "Lucas" ServerType standalone DeferWelcome off MultilineRFC2228 on DefaultServer on ShowSymlinks on AllowOverwrite on TimeoutNoTransfer 600 TimeoutStalled 600 TimeoutIdle 1200 DisplayLogin welcome.msg DisplayFirstChdir .message ListOptions "-l" DenyFilter \*.*/ TransferLog /var/log/xferlog # Uncomment this if you are using NIS or LDAP to retrieve passwords: #PersistentPasswd off # Port 21 is the standard FTP port. Port 21 # To prevent DoS attacks, set the maximum number of child processes # to 30. If you need to allow more than 30 concurrent connections # at once, simply increase this value. Note that this ONLY works # in standalone mode, in inetd mode you should use an inetd server # that allows you to limit maximum number of processes per service # (such as xinetd) MaxInstances 30 # Set the user and group that the server normally runs at. User ftp Group nogroup AuthUserFile /etc/proftpd.users AuthOrder mod_auth_file.c <Anonymous /global/ftp> AnonRequirePassword on User crans Group nogroup RequireValidShell off DirFakeUser On nobody DirFakeGroup On nobody DirFakeMode 0444 MaxClients 4 MaxClientsPerHost 2 <Limit LOGIN> Order deny,allow Deny from xxxxx.crans.org # Mass downloading Allow from 127.0.0. Allow from 10.0.0. Allow from 138.231.136. Allow from 138.231.137. Allow from 138.231.138. Allow from 138.231.139. Allow from 138.231.140. Allow from 138.231.141. Allow from 138.231.142. Allow from 138.231.143. Allow from 138.231.149. Allow from 138.231.150. Allow from 138.231.151. </Limit> TransferRate RETR 3000:2000 # Pas nécessaire à moins de savoir ce que l'on fait TransferRate STOR 6000:4000 <Directory *> HideUser root # cache les fichiers de root HideFiles lost\+found # cache les répertoires nommés lost+found <Limit WRITE> DenyAll </Limit> </Directory> <Directory upload> Umask 222 022 <Limit READ WRITE> DenyAll </Limit> <Limit STOR> AllowAll </Limit> </Directory> DisplayLogin welcome.msg DisplayFirstChdir .message </Anonymous>
Explications
Il faut changer le hostname.
Je fais tourner le mien en standalone, ceux qui utilisent inetd doivent adapter ici (en standalone, c'est mieux). Ensuite, il y a un répertoire d'upload : il faut que l'utilisateur ftp ait le droit d'écrire dedans. Il y a également une limite de débit à 3 Mo/s (TransferRate). J'ai également mis un exemple de Deny pour empêcher quelqu'un de se connecter.
Il ne faut pas oublier de créer l'utilisateur ftp avec pour shell /bin/false :
Dans le fichier : /etc/shell. (pour les nuls : $sudo gedit /etc/shell et rajouter /bin/false a la fin)
Il faut ensuite le désactiver : mettre une "*" à la place du mot de passe dans /etc/shadow
(Donc pour les nuls : $sudo gedit /etc/shadow)
Il faut adapter la racine du FTP : ici /global/ftp.
Enfin, il faut aussi le fichier /etc/proftpd.users qui contient ceci :
crans:Vy6tXHVKNbaPY:502:65534::/dev/null:/bin/false
Il s'agit du mot de passe "normal". Il faut remplacer 502 par l'id de l'utilisateur ftp (id ftp pour le savoir). On peut rajouter d'autres utilisateurs pour par exemple faire un ftp ClubEnsanime. On peut créer le mot de passe avec la commande
htpasswd -nb login mdp
qui renvoie en réponse login:mdp_codé.
Mise à jour de 1.2 en 1.3
Dans le cas de proftpd 1.3 ou plus récent sous Debian, il tente de faire de l'IPv6. Du coup, pour qu'il comprenne la limitation sur les adresses IP, il faut coller ::ffff: devant chacune d'entre elles : ::ffff:138.231.137. par exemple.
Pas eu besoin pour ma part. -- WikiMo² 2006-06-07 08:32:52 Mais je fais pas de test global comme toi, je me base sur les ips dans DNS qui sont écrites en IPv4 dans ma conf et ça passe.
Pour ma part, cela a été corrigé en suivant les étapes suivantes : (-- WikiMo² 2006-06-07 08:32:52)
ajouter le nom de ma machine en face de ::1 dans /etc/hosts
modifier la conf en remplaçant MaxClientsPerHost par MaxConnectionsPerHost. Le test a lieu ainsi en amont de l'authentification
- déplacer les fichiers dans /etc/proftpd et changer la conf en conséquence
Fonctions avancées
Lier des répertoires
Proftpd ne gère pas les liens symboliques. Il faut monter, dans le home choisi pour le login, le dossier que l'on veut lier.
Par exemple, prenons un login crans, dont le home serait /home/ftp/crans. Alors il faut monter des dossiers dans ce dossier, par la commande mount --bind /chemin /home/ftp/crans/rep.
On peut bien sûr monter ces partitions au démarrage par /etc/fstab. Cependant, si un espace se trouve dans les noms de répertoire, ce n'est plus possible. Le mieux est alors de faire un script lancé en root au démarrage. Par exemple, dans /etc/init.d/proftpd_montage.sh (écrire en root), mettez :
#! /bin/sh mount --bind /chemin /home/ftp/crans/rep
et mettez-en autant que vous le voulez.
Rendez-le exécutable en tapant en root
chmod 755 /etc/init.d/proftpd_montage.sh
Ensuite, pour que ce soit lancé au démarrage, il faut un lien dans /etc/rc2.d. Regardez et cherchez Sxxproftpd, où xx est un nombre à deux chiffres. Chez moi, c'est 50. Alors j'ai tapé
ln -s /etc/init.d/proftpd_montage.sh /etc/rc2.d/S50proftpd_montage
Pensez à créer bien sûr les répertoires où sont effectués les montages, sinon ça ne marchera pas... (/home/ftp/login/rep).
Pour que cela fonctionne sans redémarrer, vous pouvez lancer le script à la main, puis relancer proftpd par (en root) /etc/init.d/./proftpd_montage.sh && /etc/init.d/proftpd restart .
Gestion de blacklistes
Ce qui suit est assez primaire et demande un peu de connaissance et n'est pas vraiment documenté. Il n'y a pas de licence spécifiée (mais c'est GPLv2) et aucun commentaire pour le moment.
Pour se faciliter un peu la tache et gérer les connexions, on peut utiliser/adapter le script suivant : generate_conf.py associé à la configuration proftpd-save.conf
Pour la gestion des téléchargements et des différentes blacklistes, il faut créer une base de données dont le schéma est : schema_ftp.sql
Pour les utilisateurs de gproftp
Une petite astuce pour utiliser un mot de passe de moins de 6 caractères (prenons zamok comme exemple). Dans l'onglet utilisateurs, utilisez un mot de passe quelconque. Puis ouvrez le gestionnaire d'utilisateurs (système (>) gestionnaire d'utilisateurs) et modifiez le mot de passe de l'utilisateur crée par gproftp.
Interface graphique simplifiée
Pour ceux qui ont peur de se lancer dans la ligne de commande ou qui ont peur de gproftpd, il existe une interface graphique très simplifiée qui réalise les actions des lignes de commandes décrites ci-dessus.
Il suffit de télécharger le fichier :
Et de l'exécuter (en root) en se mettant dans le même répertoire :
sudo python GCransProftpd.py
Les informations préremplies devraient être correctes, il ne reste plus qu'à choisir les répertoires que l'on veut partager.








