Shellnode
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment : -20%
-20% Récupérateur à eau mural 300 ...
Voir le deal
79 €

Installer le serveur FTP vsFTPd sur Debian 4.0 Etch

Aller en bas

Installer le serveur FTP vsFTPd sur Debian 4.0 Etch Empty Installer le serveur FTP vsFTPd sur Debian 4.0 Etch

Message  Romeo Dim 24 Aoû - 21:56

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.

Romeo
Admin

Messages : 82
Date d'inscription : 28/07/2008
Age : 52
Localisation : Quebec

https://shellnode.forumactif.org

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser