19 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 :
~~~{bash}
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 (FTP over SSL/TLS)
Note : A Evolix, nous ne proposons pour l'instant pas, sauf exception, les protocoles SFTP et FTPS.
On peut activer SSL/TLS en créant un fichier /etc/proftpd/tls.conf
contenant les directives suivantes :
# 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
Vérifiez que les certificats et la clé privé existent bien.
Il faut vérifier que le fichier est bien chargé par la configuration principale /etc/proftpd/proftpd.conf
:
# vim /etc/proftpd/proftpd.conf
Include /etc/proftpd/tls.conf
Testez la configuration et rechargez la configuration :
# proftpd -t && systemctl reload proftpd.service
Testez la connexion :
# host=... # IP ou domaine
# lftp $host
lftp host:~> set ftp:ssl-force true
lftp host:~> login $ftp_user
Mot de passe :
lftp $ftp_user@host:~> ls
Si l'on peut lire le contenu du répertoire, alors la connexion est fonctionnelle.
SFTP (FTP over SSH)
Note : A Evolix, nous ne proposons pour l'instant pas, sauf exception, les protocoles SFTP et FTPS.
OpenSSH propose aussi le protocole SFTP.
Généralement, on souhaite conserver un service FTP "classique" en parallèle de SFTP. On met donc sa configuration dans un VirtualHost, pour pouvoir écouter sur un deuxième port :
$ vim /etc/proftpd/conf.d/sftp.conf
LoadModule mod_sftp.c
<VirtualHost 0.0.0.0>
<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>
</VirtualHost>
Les clés SSH doivent être au format de compatibilité défini dans la RFC 4716, qui n'est pas le format par défaut de SSH.
Pour créer les clés privées compatibles côté serveur :
# ssh-keygen -f /etc/ssh/ssh_host_rsa_key -t rsa -N '' -m PEM
# ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key -t ecdsa -N '' -m PEM
Testez la configuration et rechargez la configuration :
# proftpd -t && systemctl reload proftpd.service
Testez la connexion via un mot de passe :
# host=... # IP ou domaine
# lftp $host
lftp host:~> set ftp:ssl-force true
lftp host:~> login $ftp_user
Mot de passe :
lftp $ftp_user@host:~> ls
Si l'on peut lire le contenu du répertoire, alors la connexion est fonctionnelle.
Authentification par clé SSH
On peut gérer des clés SSH avec la directive SFTPAuthorizedUserKeys et vérifier que la directive suivante contient bien l'option publickey
:
SFTPAuthMethods password publickey
SFTPAuthorizedUserKeys file:/etc/proftpd/sftp.authorized_keys/%u
Attention, la clé publique à mettre dans le fichier doit être au format RFC4716, on peut convertir une clé ainsi :
$ ssh-keygen -e -f ~/.ssh/id_rsa.pub
Il faut ajuster les droits :
# chmod 700 /etc/proftpd/sftp.authorized_keys/
# chmod 600 /etc/proftpd/sftp.authorized_keys/foo
Les fichiers de clés doivent être accessible par l'utilisateur sous lequel proftpd tourne, donc si il y a une directive User il faut ajuster les droits, par exemple avec
User=proftpd
etGroup=proftpd
dans la config proftpd, il faut (au minimum) que le dossier soit enroot:proftpd 0750
et les fichiers soient enroot:proftpd 0640
.
Enfin vérifier que la directive SFTPAuthMethods inclus publickey et que l'utilisateur soit dans la liste des AllowUser
Logs
Troubleshooting
Problème d'envoi de fichier avec erreur open for write: permission denied
L'erreur est provoquée lorsque l'on veut écraser un fichier existant, il faut rajouter la directive AllowOverwrite on
dans le la configuration de ProFTPD ou du VirtualHost concerné.
On la positionne dans une balise <Directory>
comme ceci :
<Directory /home/*>
AllowOverwrite on
</Directory>
Problèmes d'accès
En cas d'erreurs d'accès, bien vérifier que les ports 20 et 21 sont ouverts, ainsi que les ports passifs :
iptables -A INPUT -p tcp --dport 60000:61000 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
En cas d'erreurs de permission, il vérifier que l’UID et le GID sont bien mis explicitement (en chiffres) comme propriétaires des répertoires et fichiers auxquels l'utilisateur FTP est censée avoir accès. En effet, ProFTPd n’est pas capable de lire les noms des utilisateurs Unix dans /etc/passwd
.