19
0
Fork 0
wiki/HowtoProFTPD.md

13 KiB

Name: foo Quota Type: User Uploaded bytes: 182536110080.00 Downloaded bytes: 0.00 Transferred bytes: 0.00 Uploaded files: 0 Downloaded files: 0 Transferred files: 0

ftpquota --show-records --type=limit


Name: foo Quota Type: User Per Session: False Limit Type: Hard Uploaded bytes: 214748364800.00 Downloaded bytes: unlimited Transferred bytes: unlimited Uploaded files: unlimited Downloaded files: unlimited Transferred files: unlimited


Via FTP, vous pourrez voir les données de quota ainsi :

ftp> quote SITE QUOTA 200-Quota pour la session actuelle [courant / limite]: 200-Nom: foo 200-Type quota: Utilisateur 200-Par session : Faux 200-Type de limite : matérielle 200- bytes: 182536110080.00/193273528320.00 envoyés 200- bytes: unlimited reçus 200- bytes: unlimited téléchargés 200- files: unlimited envoyés 200- files: unlimited reçus 200- files: unlimited téléchargés 200 Veuillez contacter ftpmaster@example.com si ces données sont inexactes


Enfin, on peut réinitialiser un compteur (tous les jours par exemple) :

ftpquota --update-record --type=tally --name=foo --quota-type=user


Ou même effacer toutes les données de quota d'un utilisateur :

ftpquota --delete-record --type=limit --name=foo --quota-type=user

ftpquota --delete-record --type=tally --name=foo --quota-type=user



## FTPS

On peut activer SSL/TLS en editant le fichier suivant pour y activer ces directives :

vim /etc/proftpd/tls.conf

TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 TLSRSACertificateFile /etc/proftpd/ssl/proftpd.crt TLSCACertificateFile /etc/proftpd/ssl/proftpd.ca.crt TLSRSACertificateKeyFile /etc/proftpd/ssl/proftpd.key


Il y aura besoin de renseigner les bon certificats et clé privé et il faudra vérifier que le fichier est bien chargé par la configuration principale. Sinon ajouter cette directive :

vim /etc/proftpd/proftpd.conf

Include /etc/proftpd/tls.conf


Recharger le service et vérifiez que ça fonctionne bien :

systemctl restart proftpd.service

$ lftp domaine.com lftp domaine.com:~> set ftp:ssl-force true lftp domaine.com:~> login utilisateur Mot de passe : lftp utilisateur@domaine.com:~> ls


Si l'on peut lire le contenu du dossier, alors c'est fonctionnel.

## SFTP

On peut configurer FTP over SSH ainsi :

LoadModule mod_tls.c

SFTPEngine on Port 2222 DefaultRoot ~

SFTPLog /var/log/proftpd/sftp.log

SFTPAuthMethods password publickey SFTPHostKey /etc/ssh/ssh_host_dsa_key SFTPHostKey /etc/ssh/ssh_host_ecdsa_key SFTPHostKey /etc/ssh/ssh_host_rsa_key

SFTPAuthorizedUserKeys file:/etc/sftp/authorized_keys/%u

SFTPCompression delayed

~~~

Si on veut faire du SFTP over SSH avec les comptes virtuels, on crée une configuration comme celle-ci dans /etc/proftpd/conf.d/sftp.conf :

LoadModule mod_tls.c

<IfModule mod_sftp.c>

SFTPEngine   on
Port         2222
DefaultRoot  ~

SFTPLog      /var/log/proftpd/sftp.log

SFTPAuthMethods password publickey
# ProFTPD doesn't support ed25519 yet
#SFTPHostKey /etc/ssh/ssh_host_ed25519_key
SFTPHostKey /etc/ssh/ssh_host_ecdsa_key
SFTPHostKey /etc/ssh/ssh_host_rsa_key

SFTPAuthorizedUserKeys file:/etc/proftpd/sftp.passwd.keys/%u
AuthOrder       mod_auth_file.c
AuthUserFile /etc/proftpd/vpasswd

RequireValidShell off

</IfModule>

Note: Il faudra sans doute mettre en place un VirtualHost car proftpd écoute sur un port en plus.

On peut soit se connecter avec le mot de passe du compte virtuel, soit ajouter une clé ssh au format de la RFC 4716 dans /etc/proftpd/sftp.passwd.keys/ en faisant ainsi :

# ssh-keygen -e -f ~/.ssh/id_rsa.pub

Ou créé le compte sftp avec la commande classique :

# ftpasswd --file=/etc/proftpd/vpasswd --name=foo --home=/home/example/foo --shell=/bin/false --uid=1664 --gid=1664 --passwd

Le fichier /etc/proftpd/vpasswd doit avoir les droits en 600, sinon Proftpd refuse de se lancer.

Il faut vérifier que le dossier racine possède les bons droits (775), sinon il y a une erreur d'authentification dans les logs proftpd.

Logs

fichier xferlog

Troubleshooting

Problème d'envoi de fichier, avec erreur "open for write: permission denied"

L'erreur est provoqué lorsque l'on veux écraser un fichier existant, il faut rajouter la directive AllowOverwrite on dans le VirtualHost de la configuration, par exemple en sftp.

On la positionne dans une balise <Directory> comme ceci :

<Directory /home/*>
    AllowOverwrite      on
</Directory>