Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
sysadmin:vsftpd_virtual [2012/10/17 18:16] james [Configuration du login des utilisateurs virtuels FTP] typo |
sysadmin:vsftpd_virtual [2013/11/20 18:07] (Version actuelle) james ajout tags |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag>sysadmin serveur ftp vsftpd utilisateur virtuel chroot installation howto}} | ||
+ | |||
====== Installer un serveur FTP avec utilisateurs virtuels ====== | ====== Installer un serveur FTP avec utilisateurs virtuels ====== | ||
Ligne 12: | Ligne 14: | ||
* Les utilisateurs pourront déposer des fichiers (écrire) | * Les utilisateurs pourront déposer des fichiers (écrire) | ||
- | ====== Installation initiale ====== | + | ===== Installation initiale ===== |
L'installation se limite à : <code># apt-get install vsftpd</code> | L'installation se limite à : <code># apt-get install vsftpd</code> | ||
Ligne 20: | Ligne 22: | ||
</code> | </code> | ||
- | ====== Configuration initiale ====== | + | ===== Configuration initiale ===== |
La configuration s'effectue dans le fichier /etc/vsftpd.conf : | La configuration s'effectue dans le fichier /etc/vsftpd.conf : | ||
* Écouter en IPv6 : pour que vsftpd écoute en IPv6 il est faut en aussi commenter "listen=YES", il va alors écouter en IPv4 et IPv6 :<code> | * Écouter en IPv6 : pour que vsftpd écoute en IPv6 il est faut en aussi commenter "listen=YES", il va alors écouter en IPv4 et IPv6 :<code> | ||
Ligne 55: | Ligne 57: | ||
# configuration utilisateurs virtuels | # configuration utilisateurs virtuels | ||
+ | # si guest_enable est active, tous les logins non anonymes sont classes en tant que 'guest' | ||
guest_enable=YES | guest_enable=YES | ||
- | guest_username=virtual | + | local_enable=YES |
+ | # utilisateur réel auquel tous les utilisateurs 'guest' sont associés | ||
+ | guest_username=ftp | ||
# permettre aux utilisateurs virtuels d'avoir les droits d'utilisateurs locaux (vs anonymes) leur permettant donc d'ecrire | # permettre aux utilisateurs virtuels d'avoir les droits d'utilisateurs locaux (vs anonymes) leur permettant donc d'ecrire | ||
virtual_use_local_privs=YES | virtual_use_local_privs=YES | ||
Ligne 62: | Ligne 68: | ||
# configuration du mode passif (utile pour limiter l'ouverture de la fenetre des firewalls, ici les ports 48152 à 49192) | # configuration du mode passif (utile pour limiter l'ouverture de la fenetre des firewalls, ici les ports 48152 à 49192) | ||
- | #pasv_enable=YES valeur par defaut | + | #pasv_enable=YES #valeur par defaut |
pasv_enable=YES | pasv_enable=YES | ||
pasv_min_port=48152 | pasv_min_port=48152 | ||
Ligne 68: | Ligne 74: | ||
</code> | </code> | ||
- | ====== Configuration des utilisateurs virtuels ====== | + | ===== Configuration des utilisateurs virtuels ===== |
Pour gérer les utilisateurs virtuels, deux méthodes s'offrent a vous : | Pour gérer les utilisateurs virtuels, deux méthodes s'offrent a vous : | ||
Ligne 84: | Ligne 90: | ||
J'ai choisi d'utiliser un fichier au format htpassword, choisissez la méthode que vous voulez. | J'ai choisi d'utiliser un fichier au format htpassword, choisissez la méthode que vous voulez. | ||
- | ===== Gestion des utilisateurs virtuels htpasswd ===== | + | ==== Gestion des utilisateurs virtuels htpasswd ==== |
Si vous souhaitez utiliser un fichier htpasswd pour gérer vos utilisatuers virtuels (solution conseillée) : | Si vous souhaitez utiliser un fichier htpasswd pour gérer vos utilisatuers virtuels (solution conseillée) : | ||
- | ==== Installation des logiciels requis ==== | + | === Installation des logiciels requis === |
<code># apt-get install apache2-utils libpam-pwdfile</code> | <code># apt-get install apache2-utils libpam-pwdfile</code> | ||
- | ==== Création de la base et du premier utilisateur ==== | + | === Création de la base et du premier utilisateur === |
- | Nous allons stocker les mots de passe au format md5 (option -m). | + | Nous allons stocker les mots de passe au format <del>md5 (option -m)</del> crypt (option -d) voir note plus bas. |
Pour créer le fichier :<code> | Pour créer le fichier :<code> | ||
- | # htpasswd -m -c /etc/vsftpd/passwd utilisateur1</code> | + | # htpasswd -d -c /etc/vsftpd/passwd utilisateur1</code> |
Cette commande vous demande alors le mot de passe a affecter. Vous auriez cependant pu le spécifier sur la ligne de commande en utilisant à la place la commande <code> | Cette commande vous demande alors le mot de passe a affecter. Vous auriez cependant pu le spécifier sur la ligne de commande en utilisant à la place la commande <code> | ||
- | # htpasswd -m -b -c /etc/vsftpd/passwd utilisateur1 motdepasse1</code> | + | # htpasswd -d -b -c /etc/vsftpd/passwd utilisateur1 motdepasse1</code> |
Ne pas oublier de restreindre les droits d'accès à ce fichier :<code> | Ne pas oublier de restreindre les droits d'accès à ce fichier :<code> | ||
Ligne 106: | Ligne 112: | ||
</code> | </code> | ||
- | ==== Opérations courantes sur les utilisateurs ==== | + | === Opérations courantes sur les utilisateurs === |
* Pour ajouter un nouvel utilisateur avec demande de mot de passe :<code> | * Pour ajouter un nouvel utilisateur avec demande de mot de passe :<code> | ||
- | # htpasswd -m /etc/vsftpd/passwd utilisateur2</code> | + | # htpasswd -d /etc/vsftpd/passwd utilisateur2</code> |
* Pour ajouter un nouvel utilisateur en spécifiant le mot de passe sur la ligne de commande:<code> | * Pour ajouter un nouvel utilisateur en spécifiant le mot de passe sur la ligne de commande:<code> | ||
- | # htpasswd -m -b /etc/vsftpd/passwd utilisateur2 motdepasse2</code> | + | # htpasswd -d -b /etc/vsftpd/passwd utilisateur2 motdepasse2</code> |
* Pour supprimer l'utilisateur utilisateur1:<code> | * Pour supprimer l'utilisateur utilisateur1:<code> | ||
# htpasswd -D /etc/vsftpd/passwd utilisateur1</code> | # htpasswd -D /etc/vsftpd/passwd utilisateur1</code> | ||
<note>Les commandes d'ajout fonctionnent aussi pour mettre à jour le mot de passe de l'utilisateur concerné</note> | <note>Les commandes d'ajout fonctionnent aussi pour mettre à jour le mot de passe de l'utilisateur concerné</note> | ||
- | ==== Configuration du login des utilisateurs virtuels FTP ==== | + | === Configuration du login des utilisateurs virtuels FTP === |
Cette configuration s'effectue dans le fichier /etc/pam.d/vsftpd . Utilisez la commande suivante pour remplacer son contenu actuel :<code> | Cette configuration s'effectue dans le fichier /etc/pam.d/vsftpd . Utilisez la commande suivante pour remplacer son contenu actuel :<code> | ||
# cat << EOF > /etc/pam.d/vsftpd | # cat << EOF > /etc/pam.d/vsftpd | ||
+ | # interdire le login des utilisateurs systeme definis dans le fichier /etc/ftpusers | ||
+ | auth required pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed | ||
+ | |||
+ | # autoriser les utilisateurs virtuels | ||
auth required pam_pwdfile.so pwdfile /etc/vsftpd/passwd | auth required pam_pwdfile.so pwdfile /etc/vsftpd/passwd | ||
- | account required /usr/lib/pam_permit.so | + | # pam_pwdfile ne fourni pas account, donc on autorise juste si succes: |
+ | account required pam_permit.so | ||
EOF | EOF | ||
</code> | </code> | ||
- | ===== Gestion des utilisateurs virtuels Berkeley DB ===== | + | |
+ | <note important>L'utilisation de mots de passe md5 ne fonctionne plus, il faut donc utiliser crypt qui était le format par défaut de htpasswd mais qui ne l'est plus, d’où l'utilisation de l'option -b pour forcer "au cas où"...</note> | ||
+ | <note>de part le stockage des mots de passe en crypt, seuls les 8 premiers caractères des mots de passe seront réellement utilisés, attention a choisir des mots de passe suffisamment robustes sur les 8 premiers caractères</note> | ||
+ | |||
+ | Vous pouvez maintenant sauter la section suivante pour aller directement à "Gestion des droits des utilisateurs virtuels" | ||
+ | ==== Gestion des utilisateurs virtuels Berkeley DB ==== | ||
Si vous avez choisi d'utiliser une base Berkeley DB pour stocker les utilisateurs virtuels : | Si vous avez choisi d'utiliser une base Berkeley DB pour stocker les utilisateurs virtuels : | ||
- | ==== Installation des logiciels requis ==== | + | === Installation des logiciels requis === |
<code> # apt-get install db4.2-util</code> | <code> # apt-get install db4.2-util</code> | ||
<note> cela fonctionne aussi sûrement avec des versions plus récentes, comme par exemple db4.7-util, adaptez au besoin la suite</note> | <note> cela fonctionne aussi sûrement avec des versions plus récentes, comme par exemple db4.7-util, adaptez au besoin la suite</note> | ||
- | ==== Création de la base et des premiers utilisateurs ==== | + | === Création de la base et des premiers utilisateurs === |
On commence par créer un fichier vide qui contiendra les utilisateurs et mot de passe avec des permissions restreintes :<code> | On commence par créer un fichier vide qui contiendra les utilisateurs et mot de passe avec des permissions restreintes :<code> | ||
# touch /etc/vsftpd/users | # touch /etc/vsftpd/users | ||
Ligne 145: | Ligne 161: | ||
</code> | </code> | ||
- | ==== Génération de la base Berkeley DB ==== | + | === Génération de la base Berkeley DB === |
Pour générer la base BDB il faut utiliser la commande suivante pour générer le fichier "/etc/vsftpd/users.db" depuis le fichier plat "/etc/vsftpd/users" : <code> | Pour générer la base BDB il faut utiliser la commande suivante pour générer le fichier "/etc/vsftpd/users.db" depuis le fichier plat "/etc/vsftpd/users" : <code> | ||
- | db4.2_load -T -t hash -f /etc/vsftpd/users /etc/vsftpd/users.db</code> | + | # db4.2_load -T -t hash -f /etc/vsftpd/users /etc/vsftpd/users.db</code> |
Penser a sécuriser aussi ce fichier :<code> | Penser a sécuriser aussi ce fichier :<code> | ||
# chown root:root /etc/vsftpd/users.db | # chown root:root /etc/vsftpd/users.db | ||
Ligne 160: | Ligne 176: | ||
</note> | </note> | ||
- | ==== Configuration du login des utilisateurs virtuels FTP ==== | + | === Configuration du login des utilisateurs virtuels FTP === |
Cette configuration s'effectue dans le fichier /etc/pam.d/vsftpd . Utilisez la commande suivante pour remplacer le contenu :<code> | Cette configuration s'effectue dans le fichier /etc/pam.d/vsftpd . Utilisez la commande suivante pour remplacer le contenu :<code> | ||
Ligne 174: | Ligne 190: | ||
EOF | EOF | ||
</code> | </code> | ||
- | <note>Cela va bien utiliser la base /etc/vsftpd/users.db, le suffie .db sera ajouté automatiquement</note> | + | <note>Cela va bien utiliser la base /etc/vsftpd/users.db, le suffixe .db sera ajouté automatiquement</note> |
- | ====== Gestion des droits des utilisateurs virtuels ====== | + | ===== Gestion des droits des utilisateurs virtuels ===== |
Dans la configuration initiale, nous avons défini un répertoire pour y stocker les droits des utilisateurs, il faut donc le créer : | Dans la configuration initiale, nous avons défini un répertoire pour y stocker les droits des utilisateurs, il faut donc le créer : | ||
<code># mkdir /etc/vsftpd/user_conf</code> | <code># mkdir /etc/vsftpd/user_conf</code> | ||
- | TODO | + | On peut ensuite définir des options propres à chaque utilisateur en déposant des fichiers dans ce répertoire, par exemple pour dire que l'utilisateur utilisateur2 aura comme répertoire de base /export/ftp/partage1 mais n'aura pas le droit d'écrire, créer un fichier /etc/vsftpd/user_conf/utilisateur2 avec le contenu suivant :<code> |
- | + | write_enable=no | |
- | ====== Pour aller plus loin ====== | + | local_root=/export/ftp/partage1</code> |
+ | <note>On peut spécifier dans ce fichier utilisateur les directives de configuration que l'on peut trouver dans le fichier /etc/vsftpd.conf</note> | ||
+ | <note>On pourrait affecter un répertoire "par défaut" pour chaque utilisateur (/var/www/$LOGIN) en ajoutant dans le fichier de configuration globale /etc/vsftpd.conf les lignes suivantes :<code> | ||
+ | user_sub_token=$USER | ||
+ | local_root=/var/www/$USER</code> | ||
+ | </note> | ||
+ | ===== Pour aller plus loin ===== | ||
- | ===== Chiffrement des communications avec SSL ===== | + | ==== Chiffrement des communications avec SSL ==== |
TODO | TODO | ||
- | ====== Références ====== | + | ===== Références ===== |
* http://www.debiantutorials.com/installing-vsftpd-using-text-file-for-virtual-users/ | * http://www.debiantutorials.com/installing-vsftpd-using-text-file-for-virtual-users/ | ||
* http://blog.pastoutafait.org/billets/Configuration-de-VsFTPd-sous-Ubuntu | * http://blog.pastoutafait.org/billets/Configuration-de-VsFTPd-sous-Ubuntu | ||
* http://www.admin-debian.com/ftp/vsftpd-un-serveur-ftp-hautement-securise/ | * http://www.admin-debian.com/ftp/vsftpd-un-serveur-ftp-hautement-securise/ | ||