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.

Tadpu

Amatrice éclairée de nouvelles technologies. J'espère que mes quelques articles vous distrairont et vous éclaireront. Rédactrice de tadpu.com

1 réponse

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *


*