Professional Documents
Culture Documents
VsFTPd est un serveur FTP conu avec la problmatique d'une scurit maximale. Contrairement aux autres serveurs FTP (ProFTPd, PureFTPd, etc.), aucune faille de scurit n'a jamais t dcele dans VsFTPd. Ce serveur est notamment utilis grande chelle par des entreprises telles que Red Hat. La configuration par dfaut de VsFTPd est trs restrictive : 1. Seul le compte anonyme est autoris se connecter au serveur 2. En lecture seule 3. Les utilisateurs ne peuvent accder leur compte Remarques Aussi scuris que soit un serveur ftp, le protocole ftp en lui mme n'est pas sr ! En effet l'change du nom d'utilisateur et du mot de passe transite en clair sur le rseau. Si vous utilisez ce serveur sur votre LAN pas de soucis, mais attention si vous comptez utiliser le serveur ftp depuis internet, de fait n'utilisez pas un compte qui a les droits via ftp (en fait n'utilisez de l'extrieur ce compte QUE via ssh ou tout autre protocole scuris, POPs, etc.)
Installation
apt-get install vsftpd dpkg -i vsftpd-version.deb
Configuration de vsftpd
La configuration de VsFTPd est centralise dans un seul et mme fichier /etc/vsftpd.conf. Choisissez votre diteur de texte favori (en mode super utilisateur) et appliquez les modifications suivantes en fonction du mode de fonctionnement de VsFTPd.
Pour permettre vos utilisateurs locaux (ceux qui ont un compte sur la machine) de se connecter au serveur et d'crire.
local_enable=YES write_enable=YES
Pour permettre la configuration du chmod par dfaut que prendront les fichiers et les dossiers.
local_umask=077
1. Valeur 002 : permet d'avoir un chmod des dossiers en 775 et fichiers en 664
(mis disposition selon les termes de la licence Creative Commons Paternit-Pas d'Utilisation Commerciale-Partage des Conditions Initiales l'Identique 2.0 France, 2008, Abdoulaye SALL)
2. Valeur 022 : permet d'avoir un chmod des dossiers en 755 et fichiers en 644 3. Valeur 077 : permet d'avoir un chmod des dossiers en 700 et fichiers en 600
Vous pouvez emprisonner certains utilisateurs dans leur dossier personnel grce la configuration suivante :
Les identifiants des utilisateurs concerns doivent tres renseigns dans /etc/vsftpd.chroot_list. Si vous voulez changer le port par dfaut (21) :
listen_port=222
setproctitle_enable=YES
Ensuite, pour voir la liste des utilisateurs il suffit de taper la commande suivante dans un terminal :
ps -aef | grep vsftpd
Attention, tous les utilisateurs du systme ayant accs la commande "ps" pourront galement visualiser la liste des utilisateurs connects. * Monitoring d'aprs le fichier de log Aucun changement effectuer dans vsftp.conf. Pas de problme de scurit car la commande est accessible en mode super-utilisateur seulement. Tapez dans un terminal :
tail -f /var/log/vsftpd.log
Aprs chaque changement sur la configuration, pensez relancer le serveur pour les prendre en compte :
/etc/init.d/vsftpd restart
(mis disposition selon les termes de la licence Creative Commons Paternit-Pas d'Utilisation Commerciale-Partage des Conditions Initiales l'Identique 2.0 France, 2008, Abdoulaye SALL)
vsftpd et SSL
Scurit FTP Un des dfauts principal du protocole ftp est que les couples nom d'utilisateur / mot de passe transitent en clair sur le rseau... Mais il est possible de mettre une couche supplmentaire, ssl pour chiffrer les changes d'authentification et/ou de donnes Utilisation des fichiers /etc/ftpusers On peut restreindre l'accs au serveur ftp certains utilisateurs. Ainsi nous dclarerons dans le fichier /etc/ftpusers tous les utilisateurs locaux qui n'auront pas le droit de se connecter au serveur FTP
Il faut crire le nom ou l'ip que les clients utiliseront. Il est possible de faire un certificat sign par sa propre authorit de certification et donc gnrer des certificats valides, une fois que vos clients ont reconnu votre authorite de certification : Creating and Using a self signed SSL Certificates in debian Un certificat, vsftpd.pem, a t gnr dans le dossier SSL-cert-vsftpd de votre dossier personnel. Copions le dans /etc/ssl/certs/ :
cp ~/SSL-cert-vsftpd/vsftpd.pem /etc/ssl/certs/
Scurisons le :
chown root:root /etc/ssl/certs/vsftpd.pem chmod 600 /etc/ssl/certs/vsftpd.pem
Note : vsftp s'execute avec les droits de l'utilisateur nobody mais il se lance en tant que root et donc lit le certificat en tant que root.
(mis disposition selon les termes de la licence Creative Commons Paternit-Pas d'Utilisation Commerciale-Partage des Conditions Initiales l'Identique 2.0 France, 2008, Abdoulaye SALL)
:
#/etc/init.d/vsftpd restart
Cration du fichier PAM : Il faut effacer le contenu du fichier /etc/pam.d/vsftpd et le remplacer par:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
(mis disposition selon les termes de la licence Creative Commons Paternit-Pas d'Utilisation Commerciale-Partage des Conditions Initiales l'Identique 2.0 France, 2008, Abdoulaye SALL)
Crons un fichier "login.txt" dans /etc/vsftpd , avec vos utilisateurs et mots de passe :
kane passekane mbaye passembaye
Les 2 utilisateurs sont donc ici '' kane et mbaye et leurs mots de passe respectifs 'passekane passembaye. Attention : le fichier login.txt doit imprativement se terminer par un saut de ligne pour que db4.4_load le lise et l'interprte correctement. Il faut maintenant le convertir au format "db":
db4.4_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db
# Debian customization # #################################### # Some of vsftpd's settings don't fit the Debian filesystem layout by # default. These settings are more Debian-friendly. # # This option should be the name of a directory which is empty. Also, the # directory should not be writable by the ftp user. This directory is used # as a secure chroot() jail at times vsftpd does not require filesystem # access. secure_chroot_dir=/var/run/vsftpd # # This string is the name of the PAM service vsftpd will use. pam_service_name=vsftpd # # This option specifies the location of the RSA certificate to use for SSL # encrypted connections. rsa_cert_file=/etc/ssl/certs/vsftpd.pem ## Activer la configuration per-user user_config_dir=/etc/vsftpd/vsftpd_user_conf
Relanons le serveur :
/etc/init.d/vsftpd restart
Name (localhost:to_): kane 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> pwd 257 "/" ftp> ls 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. 226 Transfer done (but failed to open directory). ftp> size hosts 213 147 ftp> quit 221 Goodbye.
(mis disposition selon les termes de la licence Creative Commons Paternit-Pas d'Utilisation Commerciale-Partage des Conditions Initiales l'Identique 2.0 France, 2008, Abdoulaye SALL)