Pagina 1 di 1

Accesso FTP da remoto

Inviato: ven 24 mar 2006, 17:28
da Burroughs
Utilizzo un PC desktop con su una Slackware current, kernel 2.6.15.3.
Più che altro la macchina viene utilizzata come File Server per un laptop che si connette in modalità wireless.
Bene, ho scelto vsftpd per gestire il mio server FTP; in locale va tutto bene, anche dal punto di vista della risoluzione dei nomi no problem, i guai cominciano quando cerco di connettermi da remoto, usando l'IP pubblico del router.
Premettendo che ho già aperto le porte 20 e 21 sul router, vi posto innanzitutto il mio vsftp.conf:

Codice: Seleziona tutto

root@steely:/# cat /etc/vsftpd.conf
# 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.
#
# 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=YES
#
# Uncomment this to enable any form of FTP write command.
#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)
local_umask=022
#
# 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 turning on ascii_download_enable enables malicious remote parties
# to consume your I/O resources, by issuing the command "SIZE /big/file" in
# ASCII mode.
# These ASCII options are split into upload and download because you may wish
# to enable ASCII uploads (to prevent uploaded scripts etc. from breaking),
# without the DoS risk of SIZE and ASCII downloads. ASCII mangling should be
# on the client anyway..
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
ftpd_banner=Welcome to Burroughs' FTP service
#
# 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 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
#
# To run vsftpd in standalone mode (rather than through inetd), uncomment
# the line below.
#listen=YES
Bene, questo è quanto accade se avvio una sessione:

Codice: Seleziona tutto

alutri@steely:~$ ftp xxx.www.yyy.zzz
Connected to xxx.www.yyy.zzz.
220 Welcome to Burroughs' FTP service
Name (xxx.www.yyy.zzz:alutri): anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
425 Failed to establish connection.
Come si può vedere, mi connetto tranquillamente (almeno all'inizio), ma non riesco a scaricare l'elenco delle directory.
Ho provato ad abilitare il "passive mode", ma la situazione non è cambiata di una virgola.
Qualche idea?

Burroughs.

Inviato: ven 24 mar 2006, 20:02
da masalapianta
probabilmente hai tirato su un firewall facendo passare il traffico verso la 21 per il PI ma non considerando il traffico che serve al DTP

Inviato: ven 24 mar 2006, 23:09
da Luci0
Credo che non basti aprire le porte del router ma devi anche forwardarle verso il server ftp della rete interna ...

Inviato: ven 24 mar 2006, 23:33
da notsafe
FTP pubblico dietro a un router? in bocca al lupo... ( sottotitolo: brutta scelta)

Prima cosa, direi di avere ben in chiaro come funziona il protocollo FTP, perlomeno come comunicano tra di loro client e server:
http://slacksite.com/other/ftp.html

Nel tuo caso specifico, l'ftp passivo non potrà funzionare( a meno che il tuo router non faccia una sorta di inspection del traffico e permette un NAT "al volo" in dipendeza di esso), in quanto tale modalità comporta l'esigenza da parte del client di aprire una sessione tcp ad una porta > 1023 del server.

L'esempio di sessione che hai riportato richiede però la modalità passiva ( che dal client può essere richiamato tramire il comando "pass" ) in quanto, immagino, è dietro una connessione che non permette di aprire una sessione tcp da internet verso il client ( classico esempio di un client ftp dietro ad una LAN nattata o dietro un firewall ) ...quindi..siamo in un circolo vizioso? SI. Il consiglio è di usare un protocollo meno "bastardo" e intrisicamente più sicuro ( qualcuno fischietta sftp ... )

Nel caso tu volessi comunque usare caparbiamente FTP,a meno che tu non possa creare una DMZ ( disposizione di un secondo IP pubblico sul quale viene nattato una seconda LAN dove collochi la macchina dove gira l'ftp server ) per "abilitare" il trasferimento in modalità passiva, puoi provare ad usare il classico trucco di assegnare un range di porte da allocare per tale modalità. In vsftpd è fattibile tramite un buon uso delle direttive pasv_max_port e pasv_min_port, tramite le quali definisci il range in questione.
dal man di vsftpd.conf:
pasv_max_port
The maximum port to allocate for PASV style data connections.
Can be used to specify a narrow port range to assist fire-
walling.

Default: 0 (use any port)

pasv_min_port
The minimum port to allocate for PASV style data connections.
Can be used to specify a narrow port range to assist fire-
walling.

Default: 0 (use any port)
Ovviamente devi configurare il router in modo tale che rigira le richieste delle porte definite alle corrispondenti del server ( un pò come hai fatto per la 20 e 21, per intenderci )

In questo modo *DOVREBBE* funzionare.

Buon divertimento ;)[/quote]

Inviato: ven 24 mar 2006, 23:53
da Luci0

Inviato: sab 25 mar 2006, 13:15
da Burroughs
Grazie, Luci0, il tuo suggerimento ha funzionato!
Ho aperto (e forwardato) le porte dalla 1025 alla 1030, abilitando il passive mode.
Ovviamente, la mia era solo una prova: per trasferire files uso SSH.
Ciao!

Burroughs.