Installer vsFTPD

Après avoir réfléchie à la structure des dossiers de notre installation d’un serveur Debian on va pouvoir configurer un serveur FTP.

Installation

Différents serveurs FTP sont disponibles, les principaux sont proFTPD, pureFTPD et vsFTPD. On va prendre ce dernier. Comme d’habitude on commence par installer les paquetages nécessaires :

apt-get install vsftpd libpam-pwdfile

On modifie sa configuration :

nano /etc/vsftpd.conf

Voici en gros à quoi doit ressembler le fichier :

virtual_use_local_privs=YES
guest_enable=NO
user_sub_token=$USER
local_root=/home/$USER/www/public
hide_ids=YES

listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
xferlog_file=/var/log/vsftpd.log
idle_session_timeout=600
data_connection_timeout=120
async_abor_enable=NO
ascii_upload_enable=NO
ascii_download_enable=NO
ftpd_banner=Welcome to scribox FTP service
chroot_local_user=YES
chroot_list_enable=NO
secure_scroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem

Pour résumer, on interdit tout ce qui était connexion anonyme, on autorise les utilisateurs locaux et on régle quelques options de sécurité et de bien-être ! Les 5 première lignes du fichier de configuration correspondent à notre utilisation spécifique de sous répertoire par utilisateur vu comme un utilisateur virtuel par le serveur FTP comme décrite dans notre réflexion sur la structure en sous domaines.

Structure

On créé un premier répertoire de test pour notre compte :

mkdir -p /home/jcdenis/www/public

On assigne les bons droits aux répertoires :

chmod -R 755 /home/jcdenis/www
chown jcdenis:jcdenis -R /home/jcdenis/www

On créé un mot de passe utilisateur pour notre compte, comme on a installé Apache on se sert de son utilitaire pour encoder le mot de passe :

mkdir /etc/vsftpd
htpasswd -c /etc/vsftpd/passwd jcdenis

A noter que pour les prochains mot de passe l’option -c (create file) de la commande htpasswd ne sera pas nécessaire.
On indique à PAM d’utiliser les mots de passe de vsFPTD :

nano /etc/pam.d/vsftpd

Son contenu devrait ressembler à cela :

auth required pam_pwdfile.so pwdfile /etc/vsftpd/passwd
account required pam_permit.so

Par défaut vsFTPD a créé des règles pour utiliser les mots de passe du groupe FTP mais ce n’est pas ce qu’on veut donc si ce fichier contient déjà quelque chose il faut tout effacer et ne mettre que ces deux lignes.
On prend en compte le changement de configuration :

/etc/init.d/vsftpd restart

On tente directement sur notre machine de se connecter en FTP et de créer un dossier puis de valider qu’il est au bon endroit :
test_ftp.png C’est parfait on retrouve le comportement qu’on souhaitait.

Protection

Maintenant si on essaye depuis un ordinateur distant, on va avoir un joli : Délai d’attente expiré ou une erreur de ce genre. Si c’est le cas, c’est que vous avez suivi l’étape sur la configuration d’un pare-feu, c’est bien, sauf que maintenant il faut le ré ouvrir aux accès FTP. Pour cela on retourne modifier notre fichier firewall :

nano /etc/init.d/firewall

On ajoute à la fin du fichier les règles nécessaires au protocole FTP :

# FTP
iptables -t filter -A OUTPUT -p tcp –dport 20:21 -j ACCEPT
iptables -t filter -A INPUT -p tcp –dport 20:21 -j ACCEPT
iptables -t filter -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT

Et on prend en compte les changements :

/etc/init.d/firewall

On modifie également la configuration de fail2ban pour surveiller vsFTPD :

nano /etc/fail2ban/jail.local

Il faut juste activer la section vsftpd qui devrait alors ressembler à cela :

[vsftpd]

enable = true
port = ftp,ftp-data,ftps,ftps-data
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 6

On n’a pas modifié la configuration des logs et ports donc ce qui était proposé par défaut convient et le filtre existe. Plus qu’à relancer le service :

service fail2ban start

Test

On fait un essai depuis un ordinateur distant :
test_ftp_b.png

Au suivant

Voila, notre configuration du serveur FTP est terminé pour l’instant, on reviendra la compléter lorsqu’on aura installé Dotclear.

Sources

Atbildēt

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti kā *