Servizo FTP
Introdución
O servizo FTP (File Transfer Protocol) permite transferir ficheiros dun sistema a outro. Para iso, precísase dispoñer dunha conta na máquina que vai recibir os ficheiros. O protocolo está especificado no RFC 959.
É un servizo independente dos sistemas de ficheiros utilizados nas diferentes máquinas. Neste sentido, é transparente ao usuario.
Funcionamento
O FTP segue o modelo cliente/servidor onde o cliente é o extremo que inicia a transferencia dun ficheiro e o servidor é unha máquina remota que almacenará ese ficheiro.
O cliente FTP conéctase ao servidor FTP no porto 21, que é onde se executa o servizo, especificando TCP como protocolo de transporte. É precisamente mediante este porto, é dicir, mediante a conexión de control, co que o cliente consegue autorización. Unha vez autentificado o cliente visualiza ou navega polos cartafoles remotos enviando comandos mediante a conexión de control.
Con todo, o servidor utiliza tamén o porto 20 para a transferencia de ficheiros. Cando o servidor recibe un comando para realizar a transferencia dun ficheiro, o servidor abre unha conexión TCP nese porto para envialo ao cliente. Despois de transferir o ficheiro, o servidor pecha a conexión nese porto. Para transferir outro ficheiro o servidor ten que abrir unha segunda conexión TCP.
Á conexión de control separada da conexión de datos chámaselle conexión fóra de banda (“out of band”). O servidor FTP mantén o estado a través desta conexión: directorio actual, usuario, etc.
Máis información entre o modo de conexión FTP activo e FTP pasivo.
Instalación e configuración do cliente FTP
Dispoñemos en GNU/Linux de diversas aplicacións cliente.
Modo texto
En modo texto, o comando ftp que xa ven instalado co sistema (tamén en MS-Windows), permite establecer unha conexión cun servidor FTP. Por exemplo, se se quere iniciar unha sesión no servidor ftp.rediris.es:
ftp ftp.rediris.es
O servidor FTP solicitará o nome de usuario e clave para acceder ó equipo. O acceso dos usuarios aos directorios e ficheiros do servidor FTP depende dos permisos definidos para esa conta de usuario. Como normal xeral, o daemon FTP ocultará o directorio raíz do servidor e cambiarao ao directorio home do usuario, facendo inaccesibles o resto dos ficheiros.
En moitos casos, os servidores FTP permiten o acceso do usuario anonymous ou usuario invitado, que non precisa clave. Pola contra, ten privilexios moi limitados á hora de usar o servidor.
No cliente FTP podemos introducir distintos comandos que nos permitirán realizar as operacións sobre o servidor:
- ascii / binary. Comandos que establecen o tipo de transferencia a ASCII (para transferir ficheiros de texto) ou binary (para ficheiros binarios), respectivamente.
- bye / quit. Pechan a sesión co servidor e a consola FTP.
- close / disconnect. Pechan a sesión co servidor, pero a consola ftp permanece aberta.
- open servidor [porto]. Abre unha sesión co servidor indicado, podendo indicarse tamén o porto ao que conectarse (normalmente, úsase se o servidor non se está executando no porto por defecto).
- pwd. Mostra o directorio do servidor ftp no que nos atopamos.
- cd directorio. Cambia de directorio no servidor ftp.
- delete ficheiro. Borra un ficheiro no servidor.
- dir [directorio_remoto] [ficheiro_local]. Lista o contido do directorio do servidor e opcionalmente pode enviar a saída a un ficheiro local do cliente. Tamén se pode usar ls.
- !ls. Amosa o contido do directorio do cliente.
- mkdir directorio. Crea un directorio no servidor.
- rmdir directorio. Borra un directorio do servidor (baleiro).
- rename ficheiro novo_nome. Cambio o nome dun ficheiro no servidor.
- get ficheiro_remoto [ficheiro_local]. Obtén unha copia do ficheiro remoto do servidor indicado no directorio actual do cliente. Pódese indicar un novo nome para o ficheiro.
- mget ficheiros. Permite baixar múltiples ficheiros dun golpe. Podemos usar comodíns, como por exemplo mget *.txt.
- put ficheiro_local [ficheiro_remoto]. Sobe unha copia do ficheiro local ao directorio actual no servidor. Pode indicarse un novo nome para o ficheiro.
- mput ficheiros. Sobe múltiples ficheiros dun golpe. Podemos usar comodíns, igual que con mget.
- lcd directorio. Cambia o directorio actual no cliente FTP.
- help [comando]. Mostra a lista de comandos ou axuda sobre un comando concreto.
Modo gráfico
Existen tamén aplicacións en modo gráfico para GNU/Linux. Por exemplo, se usamos o contorno Gnome, pódese usar o gftp. Para instalalo hai que teclear o seguinte:
sudo apt-get install gftp
No contorno KDE, pódese utilizar o konqueror ou explorador de ficheiros de KDE para establecer sesións ftp.
Tamén é posible utilizar un navegador Web calquera para conectarnos a un servidor. Chega con introducir o URL na barra de direccións.
Instalación e configuración do servidor FTP
Existen múltiples programas que funcionan como servidor de FTP. Usarase nesta sección o vsftpd (Very Secure FTP Daemon) xa que é sinxelo de instalar e configurar, ademais de ser moi eficiente. De feito, úsase no proxecto Debian, no proxecto GNU e pola empresa Red-Hat, entre outros.
Para instalar o programa teclearase o seguinte:
sudo apt-get install vsftpd
A instalación crea un novo usuario ftp
no sistema, incluído no grupo nogroup
. No directorio home
do usuario (/home/ftp)
están os ficheiros que comparte o servidor para os usuarios anónimos.
O vsftpd utiliza o contorno chroot (change root
ou gaiola chroot) que permite configurar un directorio como raíz (/
) do sistema de ficheiros para un proceso e os seus fillos. Chámase gaiola chroot
porque o usuario non poderá saír do directorio marcado como chroot
. Por exemplo, o directorio onde se almacenan os ficheiros é o /home/ftp
pero mediante chroot
este directorio pasa a ser o directorio raíz.
O ficheiro executable atópase en /usr/sbin/vsftpd
pero para arrancar o servizo seguirase o procedemento habitual (aínda que ao instalar o programa xa o arranca o propio sistema operativo):
sudo /etc/init.d/vsftpd [start] [stop] [restart]
Os principais ficheiros de configuración son os seguintes:
/etc/vsftpd.conf
. É o ficheiro principal e contén todas as directivas de configuración. O seu formato é sempre directiva=valor, ondedirectiva
é o nome da propiedade que se vai configurar evalor
é o valor que se lle asigna. Non debe haber espazos antes e despois do signo=
./etc/ftpusers
. Contén unha lista de usuarios que non se poden conectar ao servizo FTP.
Existe ademais un ficheiro de rexistro de activididade (log) no cartafol /var/log/vsftpd.log
. As directivas correspondentes para habilitalo son:
xferlog_enable=YES xferlog_file=/var/log/vsftpd.log
Inconvenientes do FTP
O principal problema do FTP é que usa un mecanismo de autentificación baseado en texto plano, co que o servidor non pode garantir que o usuario é quen di ser (non hai certificados). Derivado disto, as claves pódense capturar cun sniffer comprometendo a seguridade do sistema. Por último, as transferencias dos ficheiros tamén son en texto plano.
Para evitar isto pódese crear un certificado e habilitar as directivas correspondentes no vsFTPd.
--Arribi 11:11 27 ene 2009 (GMT)