You are on page 1of 7

Serveur FTP

: Very secure FTPd

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 personnaliser le texte de connexion au serveur

ftpd_banner=Bienvenue sur le serveur ftp de BCM

Vous pouvez emprisonner certains utilisateurs dans leur dossier personnel grce la configuration suivante :

chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list

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

Pour avoir un monitoring basic (voir les utilisateurs connects) :

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

Partage de dossier et chroot


Les utilisateurs tant chroots dans leur home (ce n'est pas obligatoire mais conseill) il faut trouver un moyen de leur permettre de naviguer dans un dossier a l'exterieur de leur home. ls pour faire un lien symbolique ne fonctionne pas : problme de droit. La commande utiliser est mount avec l'option bind
mount --bind dossier_source dossier_ftp

(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)

Pour l'avoir au boot diter /etc/fstab et ajouter :


/dossier_ftp_source /dossier_ftp_cible none bind,defaults,auto 0 0

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

Cration du certificat Il vous faut le paquet openssl


mkdir ~/SSL-cert-vsftpd && cd ~/SSL-cert-vsftpd openssl req -x509 -nodes -days 730 -newkey rsa:1024 -keyout vsftpd.pem -out vsftpd.pem

Openssl va vous poser quelques questions, la plus critique est celle ci :


Common Name (eg, YOUR name) []:

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)

Configuration de vsftpd.conf / Partie SSL A la fin de votre fichier /etc/vsftpd.conf


# Options for SSL # encrypted connections. ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=NO <--- vous pouvez mettre "YES" si vous utilisez kasablanca force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=YES ssl_sslv3=YES rsa_cert_file=/etc/ssl/certs/vsftpd.pem

:
#/etc/init.d/vsftpd restart

pour redmarrer le serveur.

Configurer VSFTPD pour utiliser des utilisateurs virtuels


Nous allons configurer VSFTPD pour utiliser seulement des utilisateurs virtuels et non pas les utilisateurs locaux de votre machine. Pour cel nous allons crer des dossiers afin d'y placer nos futurs fichiers de configuration:
mkdir /etc/vsftpd mkdir /etc/vsftpd/vsftpd_user_conf

Sauvegardons nos fichiers de configuration actuels :


cp /etc/vsftpd.conf /etc/vsftpd.conf.default.bak cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.default.bak

Crer la base de donnes des utilisateurs virtuels


apt-get install libdb4.4 db4.4-util db4.4-doc

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

on scurise notre fichier :


chmod 600 /etc/vsftpd/login.db

Configuration du fichier /etc/vsftpd.conf


# Ceci configure vsFTPd en mode "standalone" listen=YES # On dsactive les connexions anonymes # et on active les non-anonymes(c'est le cas des utilisateurs virtuels): anonymous_enable=NO local_enable=YES # Pour des raisons de scurit on interdit toute action d'criture: write_enable=NO anon_upload_enable=NO anon_mkdir_write_enable=NO anon_other_write_enable=NO # 'guest_enable' est trs important: cela active les utilisateurs virtuels! # 'guest_username' fait correspondre tous les utilisateurs virtuels # l'utilisateur 'ftp' que nous avons dfini plus haut, et au home # correspondant: '/home/ftp/'. guest_enable=YES guest_username=ftp # On veut que les utilisateurs virtuels restent chez eux: '/home/ftp/' chroot_local_user=YES # On dfini le nombre maximum de sessions 200(les nouveaux clients recevront # un message du genre: "erreur: serveur occup"). # On dfini le nombre maximum de sessions par IP 4 max_clients=200 max_per_ip=4 #################################### (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)

# 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

Grer les droits des utilisateurs virtuels


Par dfaut les utilisateurs virtuels n'ont aucun droit, il faut donc les dfinir pour chacun d'entre eux : Pour cel il faut crer un fichier de configuration pour chacun de vos utilisateurs dans le dossier /etc/vsftpd/vsftpd_user_conf/ Par exemple pour 'util1' il faut configurer le fichier /etc/vsftpd/vsftpd_user_conf/util1 Exemple de fichier :
## l'utilisateur est enferm dans un dossier dtermin local_root=/chemin_du_dossier/ ## droit de lecture(download) anon_world_readable_only=NO ## droit d'criture(upload) write_enable=YES anon_upload_enable=YES ## crer des dossiers anon_mkdir_write_enable=YES ## droit de renommer, supprimer... anon_other_write_enable=YES

$ ftp localhost 21 Connected to localhost.localdomain. 220 (vsFTPd 2.0.3)


(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)

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)

You might also like