Vsftpd

De Wiki de Nelly & Richard
Sauter à la navigation Sauter à la recherche

Présentation

vsftpd Very Secure FTP daemon : est un serveur FTP simple et sécurisé fonctionnant sous UNIX/LINUX. Il est inclus dans les meilleures distributions LINUX comme RedHat, fedora core ou encore SuSe, on le trouve sur UNIX ou plus précisément openBSD.

http://vsftpd.beasts.org/

Installation

  • Pour la plupart des distributions :
$ apt-get install vsftpd
  • sinon :
$ yum -y install vsftpd
  • ou :
http://vsftpd.beasts.org/#download

Configuration

simple anonyme

exemple de fichier /etc/vsftpd/vsftpd.conf

# LOGIN
#
# choix de l'utilisateur anonyme
ftp_username=ftp_user
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=YES
#
# Uncomment this to allow local users to log in.
local_enable=NO
#
# Permissions (anonymes)
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
#

# SECURITY
#
pam_service_name=vsftpd
#userlist_enable=YES
#userlist_deny=YES
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#

# MESSAGE ACCUEIL ET MESSAGE.LOG
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/xferlog.log
#
# If you want, you can have your log file in standard ftpd xferlog format
xferlog_std_format=YES
#
# 2 log vsftp et xferlog
dual_log_enable=YES
#
# You may fully customise the login banner string:
ftpd_banner=Bienvenue sur le serveur ftp de ftp_user (postmaster@domaine.com).
#

# CONNECTION
#
max_clients=50
max_per_ip=2
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
#connect_from_port_20=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
nopriv_user=ftp_user
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
 #chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
chroot_local_user=YES
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
#enable for standalone mode
listen=YES
#tcp_wrappers=YES
# adresses ecoutés
#listen_adress = xxx.xxx.xxx.xxx
$ /etc/init.d/vsftpd start

n.b. attention à SElinux pour les utilisateurs de la fedora

multi-utilisateurs

Serveur ftp avec utilisateur virtuels

Merci à la page : http://www.andesi.org/index.php?node=121

  • création d'un utilisateur unique qui servira à se connecter au pc
  • crétion d'un fichier du nom que vous souhaitez dans /etc/pam.d
  • création d'un ficher.txt dans /etc/vsftpd au format
login
pass
login1
pass1
  • transformez ce fichier en base berkeley
yum -y install db4-utils
$ db_load -T -t hash -f fichier.txt fichier.db
  • changement des droits du fichier
$ chmod 600 /etc/vsftpd/fichier.db
  • création du fichier d'authentification pam /etc/pam.d/vsftpd_auth
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login
  • création d'un utilisateur qui nous servira d'utilisateur virtuel (attention aux permissions des dossiers utilisés)
par ex:
$ groupadd ftp_virt
$ useradd -m -d /home/ftp_virt -s /bin/false -c "user virtuel ftp" -g ftp_virt ftp_virt
  • création d'un dossier pour chrooter l'utilisateur ftp_virt
$ mkdir /var/run/vsftpd
  • création d'un dossier pour définir les permissions de chaque utilisateurs virtuels
$ mkdir /etc/vsftpd/permissions
$ vim /etc/vsftpd/permissions/login
#Dossier de l'utilisateur virtuel /home/ftp_virt/login_fld
local_root=login_fld

#Permissions
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
#creation de dossiers
anon_mkdir_write_enable=YES
#suppression et renomer
anon_other_write_enable=YES
  • fichier.conf à réaliser comme ftp.conf
# 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

# fichier d'authentification pam
pam_service_name=vsftpd_auth

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

# dossier de permission des utilisateurs virtuels
user_config_dir=/etc/vsftpd/permissions

# 'guest_enable' est très important: cela active les utilisateurs virtuels!
# 'guest_username' fait correspondre tous les utilisateurs virtuels à
# l'utilisateur 'virtual' que nous avons défini plus haut, et au home
# correspondant: '~virtual/'.
guest_enable=YES
guest_username=ftp_user

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

# dossier d'emprisonnement de vsftpd
secure_chroot_dir=/var/run/vsftpd
  • démarrage de vsftpd et test avec la commande ftp serveur port
  • chrootage individuel décommenter la ligne user_config_dir=...

créer un dossier dont le chemin sera celui que vous avez indiquez créer des fichiers correspondant aux logins à l'intérieur et annoncer les différents droits anon... mettre pour le chroot la ligne local_root=login

sécurisé SSL

Securisé SSL

http://doc.ubuntu-fr.org/vsftpd

Copyright

Copyright © Richard DUMAIS