VsFTP – Chiffrer les communications du serveur

vsftpd

Comme vu dans le précèdent article, concernant la mise en œuvre d’un serveur FTP. La communication par défaut n’est pas chiffrée.

Nous allons augmenter le niveau de sécurité de notre serveur FTP en y activant le chiffrement.

Ainsi, même si les données sont interceptées, elles ne pourront être lu sans la clef privée.

 

Avant tout, nous devons générer nos clefs privée et publique :

openssl req -new -newkey rsa:4096 -x509 -sha256 -days 90 -nodes -out /etc/ssl/certs/vsftp_pub.crt -keyout /etc/ssl/certs/vsftp_priv.key
Générer clefs

Ensuite fournir les informations demandé :

Generating a 4096 bit RSA private key
...........................++
...............................++
writing new private key to '/etc/ssl/certs/vsftp_priv.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]: FR
State or Province Name (full name) []:Paris
Locality Name (eg, city) [Default City]:Paris
Organization Name (eg, company) [Default Company Ltd]:electrotuto
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:192.168.56.106
Email Address []:admin@electrotuto.com

La ligne la plus importante c’est COMMON NAME, dans notre cas on met un IP mais la bonne pratique serait de mettre un FQDN. exemple FTP.electrotuto.com

Modifier le fichier de configuration comme cela :

# Ceci configure vsFTPd en mode "standalone"
#listen=YES    
#listen_ipv6=NO

# On désactive les connexions anonymes
# et on active les non-anonymes (c'est le cas des utilisateurs virtuels)
anonymous_enable=NO
local_enable=YES

#Pour permettre à vos utilisateurs locaux (ceux qui ont un compte sur la machine) de se connecter au serveur et d'écrire. 
write_enable=YES

# permet de définir les droits par défaut lors de creation de fichier et répertoire
local_umask=022

# Pour des raisons de sécurité on interdit toute action d'écriture:
#les anonymes n'ont pas le droit de charger des fichiers sur le serveur
anon_upload_enable=NO

#les anonymes n'ont pas le droit de créer de répertoire
anon_mkdir_write_enable=NO

# message affiché aux utilisateurs s'ils vont dans un certain répertoire 
dirmessage_enable=YES

#cette option est activée, vsf affichera les listes des répertoires avec l'heure de votre fuseau horaire local.
use_localtime=YES

#active les logs lors de chargement ou téléchargement.
xferlog_enable=YES

#confirme que le port ftp est le 20
connect_from_port_20=YES



#destination du fichier de logsd
xferlog_file=/var/log/vsftpd.log

# Gestion des temps de connexion
idle_session_timeout=600
data_connection_timeout=120
connect_timeout=60
accept_timeout=60

#activez cette option et le serveur reconnaîtra les requêtes ABOR asynchrones.
async_abor_enable=YES
# mode ASCII non activé
ascii_upload_enable=NO
ascii_download_enable=NO

#bannière de bienvenu lors de l'identification
ftpd_banner=Bienvenue sur le serveur FTP de BOOKTIC

# On veut que les utilisateurs virtuels restent chez eux: '/home/ftp/'
chroot_local_user=YES

# ne pas emprisonner dans son répertoire home les utilisateurs
chroot_list_enable=NO

# Les prisonniers peuvent écrire dans leur propre répertoire    
allow_writeable_chroot=YES

secure_chroot_dir=/var/run/vsftpd

# Cette chaîne est le nom du service PAM que vsftpd utilisera.
pam_service_name=vsftpd
# Cette option spécifie l'emplacement du certificat RSA à utiliser pour SSL.
rsa_cert_file=/etc/ssl/certs/vsftp_pub.crt
rsa_private_key_file=/etc/ssl/certs/vsftp_priv.key
ssl_enable=YES

# Pour des raisons de sécurité on interdit toute action d'écriture:
anon_other_write_enable=NO

# on souhaite la lecture seule 
anon_world_readable_only=YES



#chemin du répertoire anonyme
anon_root=/srv/ftp/anon

Relancer le service VsFTPD

systemctl restart vsftpd

Maintenant essayons de nous y connecter avec FileZilla :

certificat_autosigné

On aura un message d’alerte nous indiquant que le certificat n’est pas reconnue. En effet, c’est un certificat que nous avons généré nous même. il n’est pas fournit par une autorité de certification reconnue et que Filezilla a le CA dans son trousseau.

Accepter le message…

Maintenant notre capture wireshark nous montre que tout est illisible. Car bien évidement tout est chiffré.

chiffrement_ok

Lorsqu’on souhaite initié une connexion via CLI on est rejeté :

need_encryption

 

 

 

PS : En cas de problème, vérifier votre firewall, et SElinux.

Passionné par les nouvelles technologie, notamment l’électronique et tout ce qui se rapporte de prés ou de loin a ce domaine. Arduino et photographie son mes passe temps favoris.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Post comment