Installation de base
Nous allons configurer un serveur ftp avec le support sftp et tls. Pour cela, nous allons installer les paquets suivants:
apt install proftpd proftpd-mod-crypto
Ensuite nous nous rendons dans le répertoire /etc/proftpd
. Les fichiers de configuration sont très bien documentés, cependant, nous allons créer nos propres fichiers de configuration dans le répertoire conf.d
.
Créons le fichier /etc/proftpd/conf.d/00-extra.conf
:
ServerName "My FTP Server"
RequireValidShell on
AuthOrder mod_auth_pam.c* mod_auth_unix.c
DefaultRoot ~
Configuration du SFTP
Nous allons générer le fichier dhparams4096.pem (ou 2048 si vous le souhaitez), attention cela prend un certain temps !
openssl dhparam -out /etc/proftpd/dhparams4096.pem 4096
Passons maintenant au fichier /etc/proftpd/conf.d/01-sftp.conf
:
LoadModule mod_sftp.c
LoadModule mod_sftp_pam.c
<IfModule mod_sftp.c>
<VirtualHost 0.0.0.0>
SFTPEngine on
Port 2233
SFTPLog /var/log/proftpd/sftp.log
# On utilise les même clefs ssh que celles du serveur openssh
SFTPHostKey /etc/ssh/ssh_host_rsa_key
SFTPHostKey /etc/ssh/ssh_host_dsa_key
SFTPDHParamFile /etc/proftpd/dhparams4096.pem
SFTPAuthMethods password
RequireValidShell off
SFTPCompression delayed
</VirtualHost>
</IfModule>
Configuration du TLS
Pour pouvoir utiliser le TLS, nous devons disposer de certificats ssl. Soit vous disposez déjà de vos propres certificats (via letsencrypt par exemple), soit vous créez vos certificats auto-signés, c’est ce que nous allons faire ici:
openssl req -x509 -newkey rsa:4096 -sha256 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt -nodes -days 3650
On modifie les droits sur ces fichiers:
chmod 600 /etc/ssl/private/proftpd.key
chmod 600 /etc/ssl/certs/proftpd.crt
Intéressons nous enfin à la configuration du TLS, pour cela, créons le fichier /etc/proftpd/conf.d/02-tls.conf
:
LoadModule mod_tls.c
LoadModule mod_tls_fscache.c
LoadModule mod_tls_shmcache.c
LoadModule mod_tls_memcache.c
<IfModule mod_tls.c>
TLSEngine on
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
TLSLog /var/log/proftpd/tls.log
TLSRequired on
TLSOptions EnableDiags NoSessionReuseRequired
TLSVerifyClient off
</IfModule>
Modification SSH
Si vous avez déjà un serveur openssh qui tourne sur votre config, il est nécessaire de désactiver/commenter la ligne suivante dans le fichier /etc/ssh/sshd_config
:
# override default of no subsystem
# Subsystem sftp /usr/lib/openssh/sftp-server
Redémarrage des services
Il ne reste plus qu’à redémarrer les services proftpd et ssh:
service ssh restart
service proftpd restart
et de contrôler le bon fonctionnement:
journalctl -xeu proftpd.service
Reste à tester cette configuration en sftp et ftp explicite sur TLS avec votre client ftp favori.