Installer le serveur FTP vsFTPd sur Debian 4.0 Etch
Page 1 sur 1
Installer le serveur FTP vsFTPd sur Debian 4.0 Etch
vsFTPd est un serveur FTP conçu dans l'optique de la sécurité et de la rapidité. Il est très performant, supporte de nombreuses options, et est relativement simple à mettre en place. Ce guide vous explique comment le mettre en place sur Debian 4.0 Etch.
Installation
En premier lieu, nous installons les logiciels nécessaires:
/usr/bin/apt-get install vsftpd fail2ban mysql-client libpam-mysql openssl
Nous activeons la protection de vsFTPd par Fail2Ban:
/bin/sed -i -e '/\[vsftpd\]/, /filter/ {0,/^enabled.*/ s//enabled = true/ }' /etc/fail2ban/jail.conf
Et nous redémarrons Fail2Ban pour prendre en compte cette configuration:
/etc/init.d/fail2ban restart
Création de la base de données
Une fois ceci fait, nous créons la base de données destinée à contenir les utilisateurs de notre serveur FTP. Pour ce faire, je vous conseille de suivre mon guide MySQL sur Debian 4.0 Etch.
Attention : Si vous avez suivi mon guide, vous pouvez passer ces lignes de commandes, sinon, remplacer les informations en gras par celles correspondant à votre base de données MySQL :
MYSQL_HOST=localhost
MYSQL_DB=VSFTPD
MYSQL_USERNAME=vsftpd
MYSQL_USERPWD=vsftpd_password
Une fois la base de donnée créée, nous reprenons le court normal des choses. En premier lieu, nous plaçons une valeur par défaut pour le nom d'hôte du serveur de la base de données:
if [ -z "$MYSQL_HOST" ]; then
MYSQL_HOST=localhost
fi
Une fois la base de donnée créée, vous devez créer les tables. Cela se fait par la commande :
/usr/bin/wget http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-le-serveur-ftp-vsftpd-sur-debian-4-0-etch/vsftpd.sql \
--output-document=/tmp/vsftpd.sql
/usr/bin/mysql --user=$MYSQL_USERNAME --password=$MYSQL_USERPWD --host=$MYSQL_HOST $MYSQL_DB \
< /tmp/vsftpd.sql
Création du certificat SSL
Pour accéder à votre serveur FTP, je vous recommande de créer le sous-domaine suivant:
* ftp.domaine.com
Pour compléter ce sous-domaine, créez le certificat SSL correspondant en suivant mon guide:
Créer un certificat SSL multi-domaines
Une fois le certificats créé, placez-les dans le dossier /etc/ssl avec les noms de fichiers suivants:
* /etc/ssl/certs/ftp_cert.pem
* /etc/ssl/private/ftp_key.pem
Et nous rendons les clefs privées uniquement lisibles par le super-utilisateur:
/bin/chown root:root /etc/ssl/private/ftp_key.pem
/bin/chmod go-rwx /etc/ssl/private/ftp_key.pem
Configuration de vsFTPd
Nous configurons maintenant vsFTPd pour prendre en compte la base de données et le certificat SSL:
/bin/sed -i -e 's/^[#]*\(anonymous_enable=\).*/\1NO/' \
-e 's/^[#]*\(local_enable=\).*/\1YES/' \
-e 's/^[#]*\(write_enable=\).*/\1YES/' \
-e 's/^[#]*\(local_umask\)=.*/\1=022/' \
-e 's/^[#]*\(dirmessage_enable=\).*/\1YES/' \
-e 's/^[#]*\(xferlog_enable=\).*/\1YES/' \
-e 's/^[#]*\(connect_from_port_20=\).*/\1YES/' \
-e 's/^[#]*\(nopriv_user=\).*/\1ftp/' \
-e 's/^[#]*\(chroot_local_user=\).*/\1YES/' \
-e 's/^[#]*\(secure_chroot_dir=\).*/\1\/var\/run\/vsftpd/' \
-e 's/^[#]*\(pam_service_name=\).*/\1vsftpd/' \
-e 's/^[#]*\(rsa_cert_file=\).*/\1\/etc\/ssl\/certs\/ftp_cert.pem/' \
/etc/vsftpd.conf
Nous ajoutons les options qui ne sont pas déjà présentes dans le fichier de configuration:
/bin/echo '
# SSL configuration
ssl_enable=YES
rsa_private_key_file=/etc/ssl/private/ftp_key.pem
ssl_tlsv1=YES
force_local_logins_ssl=YES
force_local_data_ssl=YES
# Virtual Users configuration
guest_enable=YES
guest_username=ftp
local_root=/home/ftp/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd.d' \
| /usr/bin/tee -a /etc/vsftpd.conf
Et nous créons le dossier destiné à contenir les configurations spécifiques des utilisateurs:
/bin/mkdir /etc/vsftpd.d
Pour plus d'information, voici un extrait du manuel de vsFTPd:
user_config_dir
This powerful option allows the override of any config option specified in the manual page, on a per-user basis. Usage is simple, and is best illustrated with an example. If you set user_config_dir to be /etc/vsftpd_user_conf and then log on as the user "chris", then vsftpd will apply the settings in the file /etc/vsftpd_user_conf/chris for the duration of the session. The format of this file is as detailed in this manual page! PLEASE NOTE that not all settings are effective on a per-user basis. For example, many settings only prior to the user's session being started. Examples of settings which will not affect any behviour on a per-user basis include listen_address, banner_file, max_per_ip, max_clients, xferlog_file, etc.
Default: (none)
Nous configurons la section de PAM pour vsFTPd:
/bin/sed -i -e 's/^\(.*\)$/#\1/' /etc/pam.d/vsftpd
/bin/echo "# MySQL configuration for vsFTPd.
auth required pam_mysql.so user=$MYSQL_USERNAME passwd=$MYSQL_USERPWD host=$MYSQL_HOST db=$MYSQL_DB table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=$MYSQL_USERNAME passwd=$MYSQL_USERPWD host=$MYSQL_HOST db=$MYSQL_DB table=accounts usercolumn=username passwdcolumn=pass crypt=2" \
| /usr/bin/tee -a /etc/pam.d/vsftpd
Nous redémarrons vsFTPd pour prendre en compte la configuration:
/etc/init.d/vsftpd restart
Mode passif derrière un routeur NAT
Si votre serveur FTP se trouve derrière un routeur NAT, vous devez spécifier l'intervale de ports à utiliser pour le mode passif.
PASV_MIN_PORT=34560
PASV_MAX_PORT=35324
Vous devez aussi spécifier l'adresse IP de votre routeur sur Internet (l'adresse IP fixe que vous a donné votre fournisseur d'accès):
PASV_ADDRESS=83.231.23.11
Une fois ceci fait, appliquez la configuration:
/bin/echo "# Passive connections through NAT.
pasv_address=$PASV_ADDRESS
pasv_min_port=$PASV_MIN_PORT
pasv_max_port=$PASV_MAX_PORT" \
| /usr/bin/tee -a /etc/vsftpd.conf
Vous pouvez maintenant redémarrer votre serveur FTP pour prendre en compte la configuration:
/etc/init.d/vsftpd restart
Attention: N'oubliez surtout pas d'ouvrir les ports suivants sur votre routeur:
echo "Ouvrez les ports: 21, $PASV_MIN_PORT, $PASV_MAX_PORT"
Création des utilisateurs
Prérequis
Avant de vous lancer dans la création des utilisateurs, vous devez renseigner les paramètres de connexion à la base de données:
MYSQL_HOST=localhost
MYSQL_DB=VSFTPD
MYSQL_USERNAME=vsftpd
MYSQL_USERPWD=vsftpd_password
Création d'un utilisateur
Pour créer un utilisateur, commencez par renseigner son identifiant et son mot de passe:
FTP_USERNAME=my_username
FTP_PASSWORD=my_password
Une fois ceci fait, nous créons le dossier de l'utilisateur virtuel:
/bin/mkdir /home/ftp/$FTP_USERNAME
/bin/chown ftp:nogroup /home/ftp/$FTP_USERNAME
Et nous créons l'utilisateur dans la base de données:
/bin/echo "INSERT INTO accounts (username, pass) VALUES('$FTP_USERNAME', PASSWORD('$FTP_PASSWORD'));" \
| /usr/bin/mysql --user=$MYSQL_USERNAME --password=$MYSQL_USERPWD --host=$MYSQL_HOST $MYSQL_DB
Remarque: si vous souhaitez utiliser un emplacement différent pour le dossier de l'utilisateur, vous pouvez le faire en utilisant le dossier vsftpd.d. En premier lieu, renseignez le dossier que vous souhaitez utiliser:
FTP_PATH=/some/other/folder
Et au besoin, créez le et assignez lui les permissions adéquates:
/bin/mkdir --parent $FTP_PATH
/bin/chown -R ftp:nogroup $FTP_PATH
Vous pouvez ensuite créer le fichier de configuration spécifique à votre utilisateur:
/bin/echo "# Custom user path.
local_root=$FTP_PATH" | /usr/bin/tee /etc/vsftpd.d/$FTP_USERNAME
Utilisation du client FTP
Dans la configuration que je vous propose, les connexions au serveur FTP sont cryptées. Pour vous y connecter avec FileZilla, ajoutez votre site au gestionnaire de site, et choisissez le type de serveur FTPES.
Installation
En premier lieu, nous installons les logiciels nécessaires:
/usr/bin/apt-get install vsftpd fail2ban mysql-client libpam-mysql openssl
Nous activeons la protection de vsFTPd par Fail2Ban:
/bin/sed -i -e '/\[vsftpd\]/, /filter/ {0,/^enabled.*/ s//enabled = true/ }' /etc/fail2ban/jail.conf
Et nous redémarrons Fail2Ban pour prendre en compte cette configuration:
/etc/init.d/fail2ban restart
Création de la base de données
Une fois ceci fait, nous créons la base de données destinée à contenir les utilisateurs de notre serveur FTP. Pour ce faire, je vous conseille de suivre mon guide MySQL sur Debian 4.0 Etch.
Attention : Si vous avez suivi mon guide, vous pouvez passer ces lignes de commandes, sinon, remplacer les informations en gras par celles correspondant à votre base de données MySQL :
MYSQL_HOST=localhost
MYSQL_DB=VSFTPD
MYSQL_USERNAME=vsftpd
MYSQL_USERPWD=vsftpd_password
Une fois la base de donnée créée, nous reprenons le court normal des choses. En premier lieu, nous plaçons une valeur par défaut pour le nom d'hôte du serveur de la base de données:
if [ -z "$MYSQL_HOST" ]; then
MYSQL_HOST=localhost
fi
Une fois la base de donnée créée, vous devez créer les tables. Cela se fait par la commande :
/usr/bin/wget http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-le-serveur-ftp-vsftpd-sur-debian-4-0-etch/vsftpd.sql \
--output-document=/tmp/vsftpd.sql
/usr/bin/mysql --user=$MYSQL_USERNAME --password=$MYSQL_USERPWD --host=$MYSQL_HOST $MYSQL_DB \
< /tmp/vsftpd.sql
Création du certificat SSL
Pour accéder à votre serveur FTP, je vous recommande de créer le sous-domaine suivant:
* ftp.domaine.com
Pour compléter ce sous-domaine, créez le certificat SSL correspondant en suivant mon guide:
Créer un certificat SSL multi-domaines
Une fois le certificats créé, placez-les dans le dossier /etc/ssl avec les noms de fichiers suivants:
* /etc/ssl/certs/ftp_cert.pem
* /etc/ssl/private/ftp_key.pem
Et nous rendons les clefs privées uniquement lisibles par le super-utilisateur:
/bin/chown root:root /etc/ssl/private/ftp_key.pem
/bin/chmod go-rwx /etc/ssl/private/ftp_key.pem
Configuration de vsFTPd
Nous configurons maintenant vsFTPd pour prendre en compte la base de données et le certificat SSL:
/bin/sed -i -e 's/^[#]*\(anonymous_enable=\).*/\1NO/' \
-e 's/^[#]*\(local_enable=\).*/\1YES/' \
-e 's/^[#]*\(write_enable=\).*/\1YES/' \
-e 's/^[#]*\(local_umask\)=.*/\1=022/' \
-e 's/^[#]*\(dirmessage_enable=\).*/\1YES/' \
-e 's/^[#]*\(xferlog_enable=\).*/\1YES/' \
-e 's/^[#]*\(connect_from_port_20=\).*/\1YES/' \
-e 's/^[#]*\(nopriv_user=\).*/\1ftp/' \
-e 's/^[#]*\(chroot_local_user=\).*/\1YES/' \
-e 's/^[#]*\(secure_chroot_dir=\).*/\1\/var\/run\/vsftpd/' \
-e 's/^[#]*\(pam_service_name=\).*/\1vsftpd/' \
-e 's/^[#]*\(rsa_cert_file=\).*/\1\/etc\/ssl\/certs\/ftp_cert.pem/' \
/etc/vsftpd.conf
Nous ajoutons les options qui ne sont pas déjà présentes dans le fichier de configuration:
/bin/echo '
# SSL configuration
ssl_enable=YES
rsa_private_key_file=/etc/ssl/private/ftp_key.pem
ssl_tlsv1=YES
force_local_logins_ssl=YES
force_local_data_ssl=YES
# Virtual Users configuration
guest_enable=YES
guest_username=ftp
local_root=/home/ftp/$USER
user_sub_token=$USER
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd.d' \
| /usr/bin/tee -a /etc/vsftpd.conf
Et nous créons le dossier destiné à contenir les configurations spécifiques des utilisateurs:
/bin/mkdir /etc/vsftpd.d
Pour plus d'information, voici un extrait du manuel de vsFTPd:
user_config_dir
This powerful option allows the override of any config option specified in the manual page, on a per-user basis. Usage is simple, and is best illustrated with an example. If you set user_config_dir to be /etc/vsftpd_user_conf and then log on as the user "chris", then vsftpd will apply the settings in the file /etc/vsftpd_user_conf/chris for the duration of the session. The format of this file is as detailed in this manual page! PLEASE NOTE that not all settings are effective on a per-user basis. For example, many settings only prior to the user's session being started. Examples of settings which will not affect any behviour on a per-user basis include listen_address, banner_file, max_per_ip, max_clients, xferlog_file, etc.
Default: (none)
Nous configurons la section de PAM pour vsFTPd:
/bin/sed -i -e 's/^\(.*\)$/#\1/' /etc/pam.d/vsftpd
/bin/echo "# MySQL configuration for vsFTPd.
auth required pam_mysql.so user=$MYSQL_USERNAME passwd=$MYSQL_USERPWD host=$MYSQL_HOST db=$MYSQL_DB table=accounts usercolumn=username passwdcolumn=pass crypt=2
account required pam_mysql.so user=$MYSQL_USERNAME passwd=$MYSQL_USERPWD host=$MYSQL_HOST db=$MYSQL_DB table=accounts usercolumn=username passwdcolumn=pass crypt=2" \
| /usr/bin/tee -a /etc/pam.d/vsftpd
Nous redémarrons vsFTPd pour prendre en compte la configuration:
/etc/init.d/vsftpd restart
Mode passif derrière un routeur NAT
Si votre serveur FTP se trouve derrière un routeur NAT, vous devez spécifier l'intervale de ports à utiliser pour le mode passif.
PASV_MIN_PORT=34560
PASV_MAX_PORT=35324
Vous devez aussi spécifier l'adresse IP de votre routeur sur Internet (l'adresse IP fixe que vous a donné votre fournisseur d'accès):
PASV_ADDRESS=83.231.23.11
Une fois ceci fait, appliquez la configuration:
/bin/echo "# Passive connections through NAT.
pasv_address=$PASV_ADDRESS
pasv_min_port=$PASV_MIN_PORT
pasv_max_port=$PASV_MAX_PORT" \
| /usr/bin/tee -a /etc/vsftpd.conf
Vous pouvez maintenant redémarrer votre serveur FTP pour prendre en compte la configuration:
/etc/init.d/vsftpd restart
Attention: N'oubliez surtout pas d'ouvrir les ports suivants sur votre routeur:
echo "Ouvrez les ports: 21, $PASV_MIN_PORT, $PASV_MAX_PORT"
Création des utilisateurs
Prérequis
Avant de vous lancer dans la création des utilisateurs, vous devez renseigner les paramètres de connexion à la base de données:
MYSQL_HOST=localhost
MYSQL_DB=VSFTPD
MYSQL_USERNAME=vsftpd
MYSQL_USERPWD=vsftpd_password
Création d'un utilisateur
Pour créer un utilisateur, commencez par renseigner son identifiant et son mot de passe:
FTP_USERNAME=my_username
FTP_PASSWORD=my_password
Une fois ceci fait, nous créons le dossier de l'utilisateur virtuel:
/bin/mkdir /home/ftp/$FTP_USERNAME
/bin/chown ftp:nogroup /home/ftp/$FTP_USERNAME
Et nous créons l'utilisateur dans la base de données:
/bin/echo "INSERT INTO accounts (username, pass) VALUES('$FTP_USERNAME', PASSWORD('$FTP_PASSWORD'));" \
| /usr/bin/mysql --user=$MYSQL_USERNAME --password=$MYSQL_USERPWD --host=$MYSQL_HOST $MYSQL_DB
Remarque: si vous souhaitez utiliser un emplacement différent pour le dossier de l'utilisateur, vous pouvez le faire en utilisant le dossier vsftpd.d. En premier lieu, renseignez le dossier que vous souhaitez utiliser:
FTP_PATH=/some/other/folder
Et au besoin, créez le et assignez lui les permissions adéquates:
/bin/mkdir --parent $FTP_PATH
/bin/chown -R ftp:nogroup $FTP_PATH
Vous pouvez ensuite créer le fichier de configuration spécifique à votre utilisateur:
/bin/echo "# Custom user path.
local_root=$FTP_PATH" | /usr/bin/tee /etc/vsftpd.d/$FTP_USERNAME
Utilisation du client FTP
Dans la configuration que je vous propose, les connexions au serveur FTP sont cryptées. Pour vous y connecter avec FileZilla, ajoutez votre site au gestionnaire de site, et choisissez le type de serveur FTPES.
Sujets similaires
» Installer un chroot sur une Debian 4.0 Etch
» Installer phpMyVisites sur Debian 4.0 Etch
» Installer Gallery 2 sur Debian 4.0 Etch
» Installer et configurer Xen sur Debian 4.0 Etch
» Installer et configurer Samba sur une Debian 4.0 Etch
» Installer phpMyVisites sur Debian 4.0 Etch
» Installer Gallery 2 sur Debian 4.0 Etch
» Installer et configurer Xen sur Debian 4.0 Etch
» Installer et configurer Samba sur une Debian 4.0 Etch
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|