Installation de Proftpd avec utilisateurs enregistrés
Je me suis installé proftpd pour transférer quelques fichiers. Je voulais la configuration suivante : - pas d'utilisateur anonymous (accès login/pass) - un compte chrooté - un répertoire racine bloqué en lecture seule - un répertoire d'upload ouvert aux utilisateurs enregistrés en lecture/écriture
Installation de Proftpd :
Lors de l'installation, il vous sera demandé inetd ou indépendamment. Cette méthode décrit la version indépendamment. A vous de voir
$ sudo apt-get install proftpd $ sudo nano /etc/proftpd.conf
Création du groupe ftpusers :
$ sudo addgroup ftpusers
Edition du fichier de configuration /etc/proftpd.conf :
(voici à quoi ressemble le mien. Jetez un oeil aux 4 lignes sous DefaultRoot ~ ftpusers)
ServerName "Mon ftp" ServerType standalone DeferWelcome off MultilineRFC2228 on DefaultServer on ShowSymlinks on DenyFilter *.*/ # Port utilisé Port 21 # Nombre de connexions concurrentes maximum MaxInstances 30 AllowOverwrite on # Autorise les clients à reprendre les Uploads vers vous. # A déactiver si on n'autorise pas les Uploads. AllowStoreRestart on # Autorise la reprise des téléchargements. AllowRetrieveRestart on # Active un arrangement des lignes pour plus de compatibilité. MultilineRFC2228 on # Evite le blocage de ProFTPd pendant le temps de réponse de résolution DNS. UseReverseDNS off # Option de logging pour cette zone vers ce fichier. TransferLog /var/log/proftpd/proftpd.log # Formats des logs. LogFormat default "%h %l %u %t "%r" %s %b" LogFormat auth "%v %P %h %t "%r" %s" LogFormat write "%h %l %u %t "%r" %s %b" # Permet de chrooter les utilisateurs FTP locaux dans leur home directory. DefaultRoot ~ AuthUserFile /etc/ftpd.passwd # chroot des users ftp et interdiction d'accès aux autres groupes DefaultRoot ~ ftpusers <Limit ALL> DenyGroup !ftpusers </Limit> # le global est défini pour TOUS les utilisateurs <global> # défini le umask pour le user et son groupe (fonctionne à l'envers d'un chmod. 022 = 744 Umask 022 022 # Enregistre les accès sur les fichiers et répertoires. ExtendedLog /var/log/proftpd/access.log WRITE,READ write # Enregistre tout les logins. ExtendedLog /var/log/proftpd/auth.log AUTH auth # Force l'option de directory listings (NLST, LIST et STAT) à -l ListOptions "-l" # Interdit l'overwrite pour le répertoire /home/ftp # ainsi que la suppression et l'écriture <Directory /home/ftp/ > AllowOverwrite off <Limit DELE WRITE > DenyAll </Limit> </Directory> # Autorise toutes les actions lecture/ecriture pour le répertoire /home/ftp/upload <Directory /home/ftp/upload > AllowOverwrite on <Limit READ WRITE DELE DIRS> AllowAll </Limit> </Directory> # Permet de ne pas donner d'informations sur le serveur. DeferWelcome off # On indique au serveur FTP d'utiliser ou non le fichier /etc/ftpusers pour savoir qui a le droit de se connecter. # Par défaut ce fichier est utilisé par ProFTPd. UseFtpUsers on # Le premier message qui sera affiché quand quelqu'un se connectera ServerIdent on "Server FTP ready" # Message d'accueil AccessGrantMsg "Bienvenue %u sur ftp machin" # Autorise le téléchargement ou upload distant directement depuis un autre serveur FTP sans passer par le PC de l'user. AllowForeignAddress on # Permet de déconnecter le client au bout de "x" secondes : # # S'il n'y a aucune activité de son coté. TimeoutIdle 600 # S'il n'y a aucune activité entre la saisie du login et du passwd. TimeoutLogin 300 # S'il n'opère aucun transfert. TimeoutNoTransfer 300 # S'il a stoppé le transfert. TimeoutStalled 3600 # Autorise seulement les noms de fichiers normaux (caractères alphanumérique) et non des codes shell. PathAllowFilter "[a-zA-Z0-9]" # Refuse l'upload de fichiers .ftpaccess ou .htaccess PathDenyFilter "(.ftp)|(.hta)[a-z]+$" # N'autorise pas de passer des printf-Formats. AllowFilter "^[a-zA-Z0-9@~ /,_.-]*$" DenyFilter "%" # Cache les liens symboliques. ShowSymlinks off </global>
Création des répertoires du ftp :
Mettez le où vous voulez. Personnellement, je colle ça dans /home/ftp. [1]
Souvenez vous, /home/ftp est en lecture seule et /home/ftp/upload doit être en lecture/ecriture. Même si votre répertoire /home/ftp a été créé, il vous faut ajouter le répertoire /home/ftp/upload
$ cd /home $ sudo mkdir /home/ftp $ sudo mkdir /home/ftp/upload
Configuration du répertoire ftp :
Le répertoire doit appartenir au groupe ftpusers et n'être accessible qu'en lecture pour les utilisateurs (nous créerons ultérieurement un répertoire accessible en lecture/ecriture)
$ sudo chgrp ftpusers /home/ftp $ sudo chmod 766 /home/ftp $ sudo chown -R ftp:ftpusers /home/ftp
Création des utilisateurs du ftp :
Les utilisateurs ne doivent pouvoir accéder qu'en ftp. Nous allons leur assigner le shell à /bin/false. Assurez vous préalablement que cette option est possible :
$ sudo nano /etc/shells
- Vérifiez dans le fichier que vous venez d'ouvrir que la ligne /bin/false est présente. Si ce n'est pas le cas, ajoutez la en fin de fichier et enregistrez votre modification.
Maintenant, pour éviter de créer un compte à chaque nouvel utilisateur, vous allez créer des utilisateurs virtuels qui accèderont au ftp via votre user ftp. (Pour l'exemple, vous allez créer l'utilisateur toto)
- Déterminez en premier lieu le uid du compte ftp et le gid du groupe ftpusers en vérifiant respectivement les fichiers /etc/passwd et /etc/group
$ grep ftp /etc/passwd
vous fournit l'UID 108
ftp:x:108:65534::/home/ftp:/bin/false
$ grep ftpusers /etc/group
vous donne en résultat
ftpusers:x:1001:
qui correspond au GID 1001
$ cd /etc $ sudo ftpasswd --passwd --name=toto --uid=108 --gid=1001 --home=/home/ftp --shell=/bin/false
Vous aurez ici à fournir le mot de passe de votre nouvel utilisateur. (ftpasswd crée un fichier /etc/ftpd.passwd gérant vos utilisateurs virtuels équivalent à /etc/passwd)
Bravo ! Votre utilisateur est créé [2]
Redémarrage du serveur :
Si vous avez suivi ce tuto à la lettre, vous avez un ftp quasi fonctionnel. Ne reste qu'à relancer le service :
$ sudo /etc/init.d/proftpd restart
C'est tout. Enjoy 
Notes
[1] ATTENTION : Je ne connais pas le comportement des autres distributions mais sous Ubuntu Dapper, le répertoire /home/ftp est créé automatiquement ainsi que le compte ftp. Ne vous occupez pas du mkdir si vous êtes dans ce cas.
[2] Refaite ce point pour un groupe donné autant de fois que vous avez d'utilisateurs.
lundi 21 août 2006 :: farf :: 0 commentaire :: lu 4147 fois

Les détenteurs de iPod vont dorènavant pouvoir s'affiner les rides du cou où qu'ils soient, le rythme en prime. 




