Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/01/2010, à 16:38

biskin81

[Résolu] problème utilisateurs virtuels VsFTPd

Bonjour à tous,

je précise tout de suite que j'ai déjà fait un post similaire à celui-ci ici, mais n'ayant aucune réponse et étant assez pressé je viens vous demander de l'aide. smile

je souhaite créer un serveur FTP. J'ai donc installé VsFTPd, étant très réputé pour sa sécurité.
J'ai suivi ce tutoriel, très bien fait.
J'ai simplement réalisé la 1ère partie qui consiste à configurer le FTP pour qu'une personne ayant un user sur ma machine puisse s'y connecter. Jusque-là tout fonctionnait bien.

Je me suis attaqué ensuite à la partie sur les utilisateurs virtuels. Tout d'abord, j'ai supprimé le contenu du fichier /etc/pam.d/vsftpd que j'ai remplacé par

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/login

J'ai ensuite créé le fichier /etc/vsftpd/login.txt (avec sur la 1ère ligne le nom d'utilisateur et la seconde le mot de passe associé) que j'ai transformé en db avec la commande

sudo db4.6_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

J'ai modifié les droits d'accès de ces 2 fichiers avec les commandes

sudo chmod 600 /etc/vsftpd/login.db
sudo chmod 600 /etc/vsftpd/login.txt

Et j'ai bien comme résultat de la commande ls -l :

total 16
-rw------- 1 root root 12288 jan  7 17:36 login.db
-rw------- 1 root root    13 jan  7 17:00 login.txt
drwxr-xr-x 2 root root  4096 jan  7 17:46 vsftpd_user_conf

J'ai ensuite mis à jour vsftpd.conf, que voici :

# Example config file /etc/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
#
# Run standalone? vsftpd can run either from an inetd or as a standalone
# daemon started from an initscript.
listen=YES
#
# Run standalone with IPv6?
# Like the listen parameter, except vsftpd will listen on an IPv6 socket
# instead of an IPv4 one. This parameter and the listen parameter are mutually
# exclusive.
#listen_ipv6=YES
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
#J'AI CHANGE LA LIGNE CI DESSOUS : J'AI MIS NO A LA PLACE DE YES
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
# J'AI DECOMMENTE LA LIGNE CI-DESSOUS
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
# J'AI DECOMMENTE LA LIGNE CI-DESSOUS
write_enable=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)
# J'AI DECOMMENTE LA LIGNE CI-DESSOUS, et j'ai mis accès en lecture et écriture (chown=600)
local_umask=077
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# 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
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# You may override where the log file goes if you like. The default is shown
# below.
#xferlog_file=/var/log/vsftpd.log
#
# If you want, you can have your log file in standard ftpd xferlog format
#xferlog_std_format=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=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
# J'AI DECOMMENTE LA LIGNE CI-DESSOUS
ftpd_banner=Bienvenue sur le serveur FTP de Florent. Enjoy ! ;)
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd.banned_emails
#
# You may restrict local users to their home directories. See the FAQ for
# the possible risks in this before using chroot_local_user or
# chroot_list_enable below.
# J'AI DECOMMENTE LA LIGNE CI DESSOUS
chroot_local_user=YES
#
# 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
#
# 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
#
#
# 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
#
# CE QUE J'Ai RAJOUTE CAR PARAMETRE INEXISTANT
# port d'accès au ftp :
listen_port=222
# Pour avoir un monitoring basic (voir les utilisateurs connectés) :
#setproctitle_enable=YES
# Ensuite, pour voir la liste des utilisateurs il suffit de taper la commande suivante dans un terminal : ps -aef | grep vsftpd
# ou pour suivre les connexions en continu : watch -n 1 'ps ax | grep vsftpd | grep -v grep'
# Attention, tous les utilisateurs du système ayant accès à la commande "ps" pourront également visualiser la liste des utilisateurs connectés.
# Monitoring d'après le fichier de log
# Aucun changement à effectuer dans vsftp.conf. Pas de problème de sécurité car la commande est accessible en mode super-utilisateur seulement. Tapez dans un terminal : sudo tail -f /var/log/vsftpd.log
#
# 'guest_enable' est très important: cela active les utilisateurs virtuels!
# 'guest_username' fait correspondre tous les utilisateurs virtuels à
# l'utilisateur 'ftp' que nous avons défini plus haut, et au home
# correspondant: '/home/ftp/'.
guest_enable=YES
guest_username=ftp
## Activer la configuration per-user
user_config_dir=/etc/vsftpd/vsftpd_user_conf

Puis j'ai créé le fichier /etc/vsftpd/vsftpd_user_conf/invite (puisque 'invite' est le nom de l'utilsateur virtuel que j'avais mis dans login.txt) dont voici le contenu :

## l'utilisateur est enfermé dans un dossier déterminé
local_root=/home/ftp/

## droit de lecture(download)
anon_world_readable_only=NO

## droit d'écriture(upload)
write_enable=YES
anon_upload_enable=YES

## créer des dossiers
anon_mkdir_write_enable=YES

## droit de renommer, supprimer...
anon_other_write_enable=YES

## pour gérer le chmod de l'utilisateur
## activer l'option
virtual_use_local_privs=YES
## définir l'option local_umask
local_umask=077
anon_umask=077

Pour finir, je redémarre le serveur en root avec la commande

invoke-rc.d vsftpd restart

Pour faire mon test, je me connecte depuis un PC sur mon réseau local qui est sous Windows avec FileZilla. Je me connecte avec mon nom d'utilisateur normal et j'ai l'erreur suivante qui apparaît :

530 : Login incorrect

Et quand je me connecte avec l'utilisateur virtuel 'invite', je réussis à me connecter mais je n'ai accès à rien du tout : je ne vois qu'un seul "dossier" dont le nom est ".."
Je vous laisse imaginer ce que cela veut dire... :x


Je ne sais pas si j'ai été assez clair ou confus, mais je ne sais pas où je me suis trompé. Pouvez-vous m'aider svp ?
N'hésitez pas à me demander des choses supplémentaires si besoin est.

Dernière modification par biskin81 (Le 12/01/2010, à 22:00)

Hors ligne

#2 Le 08/01/2010, à 19:08

Uggy

Re : [Résolu] problème utilisateurs virtuels VsFTPd

Je ne suis pas sur que tu puisses utiliser les users systemes "locaux" en + d'utilisateurs virtuels.

# 'guest_username' fait correspondre tous les utilisateurs virtuels à
# l'utilisateur ....

A priori ceci est faux car la doc ne dit pas exactement ca..
Elle dit:

#    guest_enable
#              If  enabled,  all  non-anonymous  logins  are classed as "guest"
#              logins. A guest login is remapped to the user specified  in  the
#              guest_username setting.          Default: NO

Autrement dit, tous les comptes non-anonymous (y compris donc des comptes "locaux ? non ?) sont classés comme "guest" et donc mappés vers le user défini en "guest_username"

Hors ligne

#3 Le 08/01/2010, à 19:44

biskin81

Re : [Résolu] problème utilisateurs virtuels VsFTPd

Cela voudrait donc dire que je ne pourrais me connecter avec un compte local ? (D'où la fameuse erreur 530 ?...)

Admettons que ce soit le cas, mon problème majeur est que lorsque je me connecte en tant qu' "invite" la connexion est acceptée et je me retrouve dans un dossier vide (celui dont j'ai parlé plus haut, je ne vois qu'un dossier dont le nom est "..").
Ne penses-tu pas qu'il s'agit d'une erreur dans le fichier /etc/vsftpd/vsftpd_user_conf/invite ?
En fait, je ne savais pas trop quoi mettre pour le paramètre local_root. Pour rappel j'ai mis

local_root=/home/ftp/

Ou peut-être est-ce une autre erreur ?

Merci en tout cas d'avoir pris le temps de lire mon post qui est... long ! tongue

Edit : sur ce lien, il est dit :

# '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/'.

Dernière modification par biskin81 (Le 08/01/2010, à 19:47)

Hors ligne

#4 Le 09/01/2010, à 01:52

Uggy

Re : [Résolu] problème utilisateurs virtuels VsFTPd

biskin81 a écrit :

mon problème majeur est que lorsque je me connecte en tant qu' "invite" la connexion est acceptée et je me retrouve dans un dossier vide .... local_root=/home/ftp/
Ou peut-être est-ce une autre erreur ?

Deja montre nous par un
ls -la/home/ftp/

que le répertoire n'est pas vide en vrai.
Apres je regarderais ta conf ...

sur http://www.andesi.org il est dit blablabla...

c'est bien...
sur http://vsftpd.beasts.org/vsftpd_conf.html il est dit quelquechose de différent.
Qui a raison ? Le développeur de vsftpd ? ou quelqu'un d'autre ?

Hors ligne

#5 Le 09/01/2010, à 15:24

biskin81

Re : [Résolu] problème utilisateurs virtuels VsFTPd

Uggy a écrit :

Deja montre nous par un
ls -la/home/ftp/

Bon je suis vraiment un abruti, il ne risquait rien d'avoir dans ce dossier, puisque je n'y avais rien mis ! En plus, le propriétaire du du dossier /home/ftp était root, je l'ai donc changé de propriétaire.
Maintenant quand je me connecte en tant qu' "invite", je vois bien le fichier que j'y ai créé en local. Je peux lire et écrire et en plus je suis bien restreint au dossier /home/ftp.
Olala mais quel abruti je suis... mad J'en reviens pas ! Tout ce temps perdu pour ça ! :'(

Maintenant il m'arrive un autre problème : si je crée un fichier.txt sur le pc qui est sous Windows et que je le copie sur le serveur, les droits de ce fichier sont les suivants :

-rw-------

donc si je veux lire ce fichier.txt sur le serveur, je ne peux pas :

Erreur lors de la lecteur de fichier.txt : permission non acordée

ce qui est normal...

moi@monpc:/home$ ls -l ftp/
total 8
-rw------- 1 ftp     nogroup 11 jan  9 14:18 fichier.txt

Comment faire ?


Uggy a écrit :

Qui a raison ? Le développeur de vsftpd ? ou quelqu'un d'autre ?

Je ferai évidemment plus confiance au développeur de vsftpd... Du coup, il faudrait prévenir l'auteur de la doc ubuntu que j'ai consulté de son erreur. Apparemment, seuls les utilisateurs virtuels peuvent s'y connecter et non les utilisateurs locaux de la machine... C'est bien ça ?
Comment prévenir l'auteur ?

Merci encore smile

Dernière modification par biskin81 (Le 09/01/2010, à 15:32)

Hors ligne

#6 Le 09/01/2010, à 20:03

Uggy

Re : [Résolu] problème utilisateurs virtuels VsFTPd

man vsftpd.conf

local_umask
The value that the umask for file creation is set to for local users. NOTE! If  you           want  to  specify octal values, remember the "0" prefix otherwise the value will be            treated as a base 10 integer!            Default: 077

Donc par exemple si tu mets local_umask=000    ca te donneras des fichiers en
-rw-rw-rw-

D'une manière génrérale, je te conseille de lire le man et/ou la doc officielle (plutot ou en + de/que des tutoriaux divers.. et variés )

Hors ligne

#7 Le 09/01/2010, à 20:10

Uggy

Re : [Résolu] problème utilisateurs virtuels VsFTPd

biskin81 a écrit :

Apparemment, seuls les utilisateurs virtuels peuvent s'y connecter et non les utilisateurs locaux de la machine... C'est bien ça ?

Je ne suis pas sur qu'on puisse utiliser en meme temps, a la fois les users locaux, et des users virtuels.
- C'est ce que je cromprend du man.
- C'est ce que j'ai constaté. / Je n'ai pas réussi a faire fonctionner les 2 en même temps

(De toute facon, l'utilisation de compte locaux est deconseillee en FTP pour des raisons de sécurité.)

Hors ligne

#8 Le 09/01/2010, à 21:20

biskin81

Re : [Résolu] problème utilisateurs virtuels VsFTPd

Uggy a écrit :

man vsftpd.conf

local_umask
The value that the umask for file creation is set to for local users. NOTE! If  you           want  to  specify octal values, remember the "0" prefix otherwise the value will be            treated as a base 10 integer!            Default: 077

Donc par exemple si tu mets local_umask=000    ca te donneras des fichiers en
-rw-rw-rw-

Tu as effectivement raison, je n'avais pas compris le rôle qu'avait ce masque. Merci beaucoup, c'est très clair à présent. Tout fonctionne correctement.

Tu vas me trouver chiant, mais j'ai maintenant une autre question.
Mon serveur marche comme je le souhaite sur mon réseau local. Par contre lorsque je veux m'y connecter depuis un autre PC situé à l'extérieur, FileZilla me répond gentiment ceci :

227 Entering passive mode (192,168,1,70,212,242)
Le serveur a envoyé une réponse passive avec une adresse non routable. Utilisation de l'adresse du serveur à la place

Je précise que j'ai redirigé dans ma livebox tout ce qui arrive sur le port 222 (puisque c'est le port que j'ai configuré dans vsftpd.conf) vers mon serveur (dont l'IP locale est 192.168.1.70) en TCP et en UDP. Je ne comprends pas ce que je dois faire de plus ? Qu'est-ce que cela change que je me connecte depuis l'extérieur ?

Uggy a écrit :

D'une manière générale, je te conseille de lire le man et/ou la doc officielle (plutot ou en + de/que des tutoriaux divers.. et variés )

Oui c'est vrai tu as raison, mais je dois reconnaître qu'en tant que novice sous Linux j'ai beaucoup plus facilement tendance à lire des tutoriels comme ceux que j'ai montrés plus haut. Le man vsftpd.conf donne certes la bonne explication mais ça n'est pas forcément très clair pour moi. Si j'étais tombé de but en blanc sur

local_umask
The value that the umask for file creation is set to for local users. NOTE! If  you           want  to  specify octal values, remember the "0" prefix otherwise the value will be            treated as a base 10 integer!            Default: 077

je n'aurai pas compris.

En tout cas, merci de ta précieuse aide et de la patience que tu m'accordes smile

Hors ligne

#9 Le 10/01/2010, à 00:43

Uggy

Re : [Résolu] problème utilisateurs virtuels VsFTPd

biskin81 a écrit :

227 Entering passive mode (192,168,1,70,212,242)
Le serveur a envoyé une réponse passive avec une adresse non routable

Oui c'est "normal" en Passif.
En passif, le serveur annonce au client sur quel IP/Port le client doit monter le canal DATA.
Ton serveur est en 19.168.1.70 et n'a pas forcement de base une idée de quelle est son adresse "publique".

Il suffit de modifier le parametre comme indiqué le dans man wink

pasv_address
              Use this option to override the IP address that vsftpd will advertise  in  response
              to  the  PASV  command.  Provide  a numeric IP address, unless pasv_addr_resolve is
              enabled, in which case you can provide a hostname which will be  DNS  resolved  for
              you at startup.
             
              Default: (none - the address is taken from the incoming connected socket)

Si des problemes de routes t'empeches d'utiliser l'IP publique depuis le LAN, il "suffit" d'utiliser le paremetre en question mais avec 2 IPs differentes (l'interne et la publique).
Pour cela il suffit de faire 2 fichiers de conf.. et d'utiliser tcpwrapper pour présenter une conf ou l'autre en fonction de qui se connecte.. le LAN.. ou pas...

Voila mon /etc/hosts.allow
vsftpd: 10.: setenv VSFTPD_LOAD_CONF /etc/vsftpd_tcp_wrap_private_ip.conf

Donc quand c'est un IP en 10.0.0.0 qui arrive, c'est le fichier de conf avec l'ip privée qui est présentée..
Sinon c'est le fichier par defaut.. qui lui a l'ip publique.

Hors ligne

#10 Le 10/01/2010, à 15:22

biskin81

Re : [Résolu] problème utilisateurs virtuels VsFTPd

En suivant ce que j'ai compris de tes explications j'ai rajouté dans vsftpd.cong les lignes suivantes :

pasv_enable=YES
pasv_addr_resolve=YES
pasv_address=mon_nom_de_domaine

Et maintenant que je veux me connecter sur le serveur ça ne fonctionne plus, même en local.
De plus en regardant dans le man vsftpd.conf (oui, je sais j'ai mis le temps ! tongue), je me suis aperçu qu'il n'était nullement parlé de l'option pasv_address. En revanche des explications sont données sur pasv_enable et pasv_addr_resolve. Je n'aurai pas une version trop "ancienne" de vsftpd par hasard ? Je ne l'ai pas précisé mais la distribution installée sur ma machine est une Debian (noyau 2.6.26-2-686) et la version de vsftpd est la 2.0.7-1.

Sinon, autre question, théorique cette fois : quand une requête arrive depuis l'extérieur sur ma livebox, elle est destinée à mon IP publique. Mais puisque je route tout ce qui arrive sur le port 222 vers le serveur ftp, l'en-tête du paquet TCP devrait être changée non ? L'adresse IP de destination ne devrait plus être mon IP publique mais bien 192.168.1.70, non ? Il y a encore beaucoup de choses que je ne maîtrise pas ! sad

Pour cela il suffit de faire 2 fichiers de conf.. et d'utiliser tcpwrapper pour présenter une conf ou l'autre en fonction de qui se connecte.. le LAN.. ou pas...

Voila mon /etc/hosts.allow
vsftpd: 10.: setenv VSFTPD_LOAD_CONF /etc/vsftpd_tcp_wrap_private_ip.conf

Donc quand c'est un IP en 10.0.0.0 qui arrive, c'est le fichier de conf avec l'ip privée qui est présentée..
Sinon c'est le fichier par defaut.. qui lui a l'ip publique.

Heu l'histoire des 2 fichiers de conf et tcpwrapper, je n'ai pas bien compris. Excuse-moi, mais je débute sous Linux et ça fait beaucoup de choses à engranger d'un coup...

Hors ligne

#11 Le 10/01/2010, à 20:54

Uggy

Re : [Résolu] problème utilisateurs virtuels VsFTPd

Et maintenant que je veux me connecter sur le serveur ça ne fonctionne plus, même en local.

Tu compliques encore plus a utiliser pasv_addr_resolve=YES dont je n'ai pas parlé.
Commence par ne pas utiliser pasv_addr_resolve=YES  et utilise des IPs au lieu de noms..


Deplus, tu ne donne pas les logs, les tests de résolution de nom, les messages d'erreur.. les logs client.. les logs serveur... donc pour t'aider ca va pas etre simple.

De plus en regardant dans le man vsftpd.conf (oui, je sais j'ai mis le temps ! tongue), je me suis aperçu qu'il n'était nullement parlé de l'option pasv_address.

Il est clair que dans ma version de vsftpd, c'est dans le man.
Très franchement, même en 2.0 il y a de grande chances que ca y soit... prouve nous que ca n'y est pas..par exemple avec un grep.

Dans tous les cas, il est recommandé de mettre la dernière version.

quand une requête arrive depuis l'extérieur sur ma livebox, elle est destinée à mon IP publique.

oui


Mais puisque je route tout ce qui arrive sur le port 222 vers le serveur ftp, l'en-tête du paquet TCP devrait être changée non ?

de la trame IP... oui.

L'adresse IP de destination ne devrait plus être mon IP publique mais bien 192.168.1.70, non ?

oui.. c'est le cas.
A condition que le client envoi le paquet.. vers l'ip publique...

Le probleme c'est qu'une fois que le client sur internet a commencer a parler avec ton serveur.. (comme tu l'a décris au dessus) si ils se mettent d'accord pour faire du passif, alors pour l'ouverture du canal data, le serveur va renvoyer au client a l'interieur des données dans la trame TCP/IP (donc pas visible par tous les FW.. mais certains oui) l'info
"moi serveur, je te dis a toi client, de venir sur mon IP pasv_address sur le port xxx"

Cette info sur l'IP est a l'interieur du paquet FTP.. c'est pas une IP destination.. donc ta livebox elle ne sait peut etre pas lire a l'interieur du paquet FTP.

Si cette IP est une adresse Privée, le client ne parviendra pas a renvoyer vers ta livebox.. qui donc elle n'aura rien a router.. etc...

Heu l'histoire des 2 fichiers de conf et tcpwrapper, je n'ai pas bien compris. Excuse-moi, mais je débute sous Linux et ça fait beaucoup de choses à engranger d'un coup...

Pas de problème..
Je reconnais que ca fait intervenir pas mal de notions notre petite discussion wink

Dernière modification par Uggy (Le 10/01/2010, à 20:58)

Hors ligne

#12 Le 11/01/2010, à 19:00

biskin81

Re : [Résolu] problème utilisateurs virtuels VsFTPd

Uggy a écrit :

Tu compliques encore plus a utiliser pasv_addr_resolve=YES dont je n'ai pas parlé.
Commence par ne pas utiliser pasv_addr_resolve=YES  et utilise des IPs au lieu de noms..

Bon ok, j'ai simplement mis la ligne suivante :

pasv_address=mon_ip_publique

Quand je me connecte depuis l'extérieur avec Firefox, on me demande le login et le mot de passe. Ensuite, ça charge jusqu'à obtenir l'erreur : "erreur 425 Failed to establish connection"
Si je me connecte depuis FileZilla :

Commande :	OPTS UTF8 ON

Réponse :	200 Always in UTF8 mode.

Statut :	Connecté

Statut :	Récupération du contenu du dossier...

Commande :	PWD

Réponse :	257 "/"

Commande :	TYPE I

Réponse :	200 Switching to Binary mode.

Commande :	PASV

Réponse :	227 Entering Passive Mode (mon_ip_publique,245,174)

Commande :	LIST

Erreur :	Délai d'attente expiré

Erreur :	Échec lors de la récupération du contenu du dossier

En regardant dans le log, j'obtiens ceci :

monpc:/home/moi# tail -f /var/log/vsftpd.log
Mon Jan 11 17:08:11 2010 [pid 2862] [anonymous] FAIL LOGIN: Client "ip_du_client"
Mon Jan 11 17:08:12 2010 [pid 2865] CONNECT: Client "ip_du_client"
Mon Jan 11 17:08:21 2010 [pid 2864] [invite] OK LOGIN: Client "ip_du_client"
Mon Jan 11 17:13:04 2010 [pid 2869] CONNECT: Client "ip_du_client"

donc la requête du client arrive, c'est déjà un bon début smile


Il est clair que dans ma version de vsftpd, c'est dans le man.
Très franchement, même en 2.0 il y a de grande chances que ca y soit... prouve nous que ca n'y est pas..par exemple avec un grep.

man vsftpd.conf | grep "pasv"
       pasv_addr_resolve
              address) in the pasv_address option.
       pasv_enable
       pasv_promiscuous
       pasv_max_port
       pasv_min_port
       pasv_address
              address, unless pasv_addr_resolve is enabled, in which case  you

Au temps pour moi, je croyais que tous les paramètres étaient rangés par ordre alphabétique. Or ils le sont par type de paramètre, et en l'occurence pasv_address est dans les paramètres de type string.

Dans tous les cas, il est recommandé de mettre la dernière version.

Ben je me contente des paquets disponibles dans les dépôts Lenny de Debian...


Voilà, si tu as besoin d'autres infos pour que tu puisses m'aider, n'hésite pas. smile

Dernière modification par biskin81 (Le 11/01/2010, à 19:02)

Hors ligne

#13 Le 12/01/2010, à 01:24

Uggy

Re : [Résolu] problème utilisateurs virtuels VsFTPd

biskin81 a écrit :

Réponse :    227 Entering Passive Mode (mon_ip_publique,245,174)

Le port 62894 est bien naté/routé/authorisé dans ton fw/routeur/box ?

245x256 +174
Tu peux forcer avec pasv_max_port / pasv_min_port

Hors ligne

#14 Le 12/01/2010, à 19:40

biskin81

Re : [Résolu] problème utilisateurs virtuels VsFTPd

Le problème, c'est qu'à chaque connexion les 2 derniers nombres de l'erreur 227 changent !
En plus, je ne comprends pas à quoi ils correspondent ?! Pourquoi fais-tu l'opération avant_dernier_nombre*256+dernier_nombre ? Moi tout ce que je comprends là-dedans c'est que 2^8=256... Il y a donc une histoire d'octet mais je ne vois pas plus loin que ça.

Je crois au moins comprendre qu'il faut que je spécifie les paramètres pasv_max_port / pasv_min_port.
Si par exemple, je mets :

pasv_max_port=62700
pasv_min_port=62800

cela imposerait les 2 derniers nombres de l'erreur citée plus haut ? Si oui, il faudrait je route tous les ports allant de 62700 à 62800 sur ma box ?
Désolé, j'ai beau faire des efforts je ne comprends vraiment pas le mécanisme...

Hors ligne

#15 Le 12/01/2010, à 19:49

biskin81

Re : [Résolu] problème utilisateurs virtuels VsFTPd

biskin81 a écrit :

Je crois au moins comprendre qu'il faut que je spécifie les paramètres pasv_max_port / pasv_min_port.
Si par exemple, je mets :

pasv_max_port=62700
pasv_min_port=62800

cela imposerait les 2 derniers nombres de l'erreur citée plus haut ? Si oui, il faudrait je route tous les ports allant de 62700 à 62800 sur ma box ?

Bon, c'est ce que je viens de faire et ça fonctionne ! Impec !
Merci beaucoup !

Alors, pour changer j'ai encore un problème :
si dans le paramètre pasv_address, je met l'adresse DNS de mon serveur plutôt que mon IP publique, ça fonctionne avec firefox, mais avec FileZilla j'obtiens l'erreur suivante :

Commande :	PASV
Réponse :	500 OOPS: invalid pasv_address
Commande :	PORT 192,168,0,5,14,242
Réponse :	500 OOPS: child died
Erreur :	Échec lors de la récupération du contenu du dossier
Erreur :	Connexion interrompue par le serveur

Qu'est-ce que j'ai encore fait de mal :'(

Edit : pour ce problème de DNS, il suffit de mettre le paramètre pasv_addr_resolve à YES comme indiqué dans le man :

pasv_addr_resolve   
           Set to YES if you want to use  a  hostname  (as  opposed  to  IP
              address) in the pasv_address option.

Donc, c'est ok tout fonctionne ! Néanmoins, je veux bien que tu m'expliques tout de même, quel est le mécanisme qui est mis en jeu parce que là... Je pige pas pourquoi ça fonctionne tongue

Merci encore smile

Dernière modification par biskin81 (Le 12/01/2010, à 20:32)

Hors ligne

#16 Le 12/01/2010, à 20:32

Uggy

Re : [Résolu] problème utilisateurs virtuels VsFTPd

à chaque connexion les 2 derniers nombres changent !

oui, a moins que tu ne definissent  pasv_max_port et pasv_min_port, ils ont une valeur aleatoire. (c'est dans le man)





En plus, je ne comprends pas à quoi ils correspondent ?! Pourquoi fais-tu l'opération avant_dernier_nombre*256+dernier_nombre ?

l'operation "avant_dernier_nombre*256+dernier_nombre" te donne le numero de port ouvert par le serveur.
Ce numero est donc dans la plage pasv_min_port->pasv_max_port



Si oui, il faudrait je route tous les ports allant de 62700 à 62800 sur ma box ?

Oui, d'ou ma question, "est ce que c'est bien ouvert sur ta box"

Je vois que tu cherches a comprendre le FTP... c'est parfait, mais peut etre tu trouveras des sites qui expliqueront bien mieux que moi comment le FTP fonctionne smile


avec FileZilla j'obtiens l'erreur suivante
Réponse :    500 OOPS: invalid pasv_address

Je dirais que le message est clair smile
Deja est ce que le hostname donné peut etre resolu ?

Dernière modification par Uggy (Le 12/01/2010, à 20:35)

Hors ligne

#17 Le 12/01/2010, à 20:34

Uggy

Re : [Résolu] problème utilisateurs virtuels VsFTPd

biskin81 a écrit :

Donc, c'est ok tout fonctionne ! Néanmoins, je veux bien que tu m'expliques tout de même, quel est le mécanisme qui est mis en jeu parce que là... Je pige pas pourquoi ça fonctionne tongue

Hein ?

Hors ligne

#18 Le 12/01/2010, à 20:48

biskin81

Re : [Résolu] problème utilisateurs virtuels VsFTPd

Excuse moi, j'ai édité mon dernier post il y a peu de temps. D'où ton incompréhension smile

Ce que je te demande de m'expliquer, c'est pourquoi cette fameuse opération ? (avant_dernier*256+dernier)
Mais comme tu l'as dit, je devrais trouver l'explication en cherchant sur le net... smile

En tout cas un grand merci pour ton aide précieuse. C'est vraiment sympa de pouvoir bénéficier de tout cette aide.
Je mets le post en "Résolu" mais je te tiens au courant de mes avancées sur les questions auxquelles je ne trouve pas de réponse.

Hors ligne

#19 Le 13/01/2010, à 00:47

Uggy

Re : [Résolu] problème utilisateurs virtuels VsFTPd

biskin81 a écrit :

pourquoi cette fameuse opération ? (avant_dernier*256+dernier)
Mais comme tu l'as dit, je devrais trouver l'explication en cherchant sur le net... smile

http://fr.wikipedia.org/wiki/File_Transfer_Protocol

p1 et p2 représentent le port TCP où le serveur attend la connexion, sous la forme de deux entiers entre 0 et 255 (port_TCP = p1 * 256 + p2).

Hors ligne

#20 Le 13/01/2010, à 12:38

biskin81

Re : [Résolu] problème utilisateurs virtuels VsFTPd

Uggy a écrit :

oui, a moins que tu ne definissent  pasv_max_port et pasv_min_port, ils ont une valeur aleatoire. (c'est dans le man)

D'accord, merci pr le lien sur Wikipedia. N'empêche que je ne comprends pas en quoi dans la configuration par défaut, ces ports min et max ont une valeur aléatoire. Je veux dire, quel est l'avantage niveau sécurité pour le serveur ? Je n'en comprends pas bien l'intérêt en fait.

Hors ligne

#21 Le 13/01/2010, à 21:54

Uggy

Re : [Résolu] problème utilisateurs virtuels VsFTPd

biskin81 a écrit :

Je n'en comprends pas bien l'intérêt en fait.

FTP ca date de 1985... je ne suis pas sur que si c'etait a refaire, on l'implenterais de la meme maniere.
En gros, il faut se remettre dans le contexe de l'époque... ca peux expliquer que des choses aujourd'hui nous semble "étrange"

Hors ligne

#22 Le 19/01/2010, à 12:08

biskin81

Re : [Résolu] problème utilisateurs virtuels VsFTPd

En tout cas un grand merci (une fois de + !) pour ton aide. Simplement pour terminer, comment prévenir les auteurs du tutoriel ubuntu que j'ai utilisé qu'il est impossible d'utiliser les utilisateurs "locaux" et des utilisateurs virtuels en même temps ?

Hors ligne

#23 Le 19/01/2010, à 15:23

Uggy

Re : [Résolu] problème utilisateurs virtuels VsFTPd

Si les auteurs sont référencés, tu peux les contacter ..mais c'est un wiki, c'est fait justement pour que chacun puisse modifier la page.

Hors ligne

#24 Le 19/01/2010, à 17:15

biskin81

Re : [Résolu] problème utilisateurs virtuels VsFTPd

Une fois de plus, je ne lis pas correctement c'est précisé dans ce fameux tutoriel :

Nous allons configurer VSFTPD pour utiliser seulement des utilisateurs virtuels et non pas les utilisateurs locaux de votre machine. Pour celà nous allons créer des dossiers afin d'y placer nos futurs fichiers de configuration:

Donc même si ce n'est pas donné de façon explicite, c'est dit...

Hors ligne

#25 Le 29/01/2010, à 12:04

Uggy

Re : [Résolu] problème utilisateurs virtuels VsFTPd

Uggy a écrit :
biskin81 a écrit :

Apparemment, seuls les utilisateurs virtuels peuvent s'y connecter et non les utilisateurs locaux de la machine... C'est bien ça ?

Je ne suis pas sur qu'on puisse utiliser en meme temps, a la fois les users locaux, et des users virtuels.
- C'est ce que je cromprend du man.
- C'est ce que j'ai constaté. / Je n'ai pas réussi a faire fonctionner les 2 en même temps

(De toute facon, l'utilisation de compte locaux est deconseillee en FTP pour des raisons de sécurité.)

Et je rajoute:
C'est aussi clairement dans la FAQ  ftp://vsftpd.beasts.org/users/cevans/untar/vsftpd-2.2.2/FAQ
Je cite:

Note - currently there is a restriction that with guest_enable enabled, local
users also get mapped to guest_username.

Hors ligne