Instal·lació i administració de serveis de transferència de fitxers

Seguretat de la xarxa

En els orígens d’Internet, els usuaris eren part implicada i no els va passar pel cap que hi poguessin haver usuaris amb ànim d’“atacar” altres sistemes.

L’FTP (File Transfer Protocol o protocol de transferència de fitxers) és el protocol que proporciona el servei de transferència de fitxers més usat. Es basa en una arquitectura client/servidor i utilitza el protocol de transport TCP. Permet la transferència de fitxers de qualsevol tipus entre dos equips. El servidor actua a mode de repositori de fitxers i el client s’hi connecta per baixar (download) o pujar (upload) fitxers.

El protocol FTP (File Transfer Protocol o protocol de transferència de fitxers) és un protocol TCP que permet la transferència de fitxers en ambdós sentits entre un client i un servidor. Aquesta transferència és independent de la plataforma usada i del tipus de fitxers manejats.

La necessitat d’un mecanisme de transferència de fitxers sorgeix des de bon principi a Internet i el 1980 ja apareix la primera especificació de l’FTP. L’octubre de 1985 es publica l’RFC 959, que és la base del protocol actual. A aquest RFC se n’hi han afegit posteriorment d’altres per incorporar seguretat, internacionalització… Tractant-se d’un protocol tan “vell”, no és estrany que sigui insegur. De fet, la majoria de protocols originaris d’Internet ho són (HTTP, SMTP…).

Una de les virtuts del model FTP és que permet transferir fitxers (també modificar-los, esborrar-los, afegir-los…) independentment de la plataforma i del sistema on resideixen. És a dir, l’FTP amaga els detalls d’implementació. Un client (que funcioni amb sistema operatiu Unix, per exemple) baixa un fitxer de text d’un servidor FTP sense saber el tipus de màquina ni el tipus de sistema de fitxers del servidor (Windows, per exemple).

Els objectius del servei FTP són els següents:

  • Compartir fitxers tant de dades com de programes.
  • Permetre prosseguir les transferències de fitxers un cop interrompudes (reprendre les baixades).
  • Transferir dades de manera eficient i fiable.

La debilitat principal del protocol FTP és la falta de seguretat. Tot el flux de dades viatja en text pla, sense encriptar, fins i tot els noms d’usuari i les contrasenyes. Això ha obligat a adoptar noves estratègies per proporcionar confidencialitat a les transmissions.

Servei de transferència de fitxers

El servei FTP es basa en l’arquitectura client/servidor, de manera que caldrà descriure’l en cada un d’ells. En aquest apartat es descriuen els diferents modes d’operació d’un servidor FTP, les seves funcionalitats i els tipus d’accés permesos. Els servidors poden oferir els seus serveis a tota la comunitat d’Internet o a un entorn restringit, com per exemple una xarxa local. En el primer cas es parla d’un servidor d’accés públic global, en el segon cas, d’un servidor local o corporatiu. El servei pot ser ofert a qualsevol usuari, incloent usuaris anònims, o es pot restringir a usuaris i grups determinats.

El servidor FTP es pot classificar segons sigui:

  • D’accés públic / d’accés corporatiu
  • D’accés amb usuari identificat / d’accés amb usuari anònim
  • De mode de transferència ASCII / de mode de transferència binari

De forma inusual, el servei FTP utilitza dos ports del sistema. A través del port 21 es realitza la interpretació de les instruccions. El port 20 és destinat a la transferència de dades, tot i que es pot utilitzar un altre port dinàmic en el seu lloc. El mode real de funcionament de la transmissió de dades i els ports implicats depenen del mode de funcionament, que pot ser actiu o passiu.

El mode de funcionament de la transferència FTP pot ser actiu o passiu. La funcionalitat del servei es classifica en:

  • Mode intèrpret del protocol.
  • Mode de transferència de dades.

Tipus de clients i servidors

El servidor FTP és una màquina que executa un programari determinat que proporciona el servei FTP a clients FTP. Usualment, en entorns GNU/Linux aquest programa és un dimoni, anomenat usualment ftpd o similar. En funció del tipus d’usuaris que permet connectar i de l’àmbit d’accés que permet, el podem classificar de maneres diferents.

Segons el tipus de clients que accepta, podem classificar els servidors FTP de la manera següent:

  • Usuari identificat. El servidor requereix un nom d’usuari i una contrasenya vàlids per accedir al servei. Els comptes d’usuari poden ser gestionats directament per l’aplicació del servidor o se’n pot delegar l’autenticació al sistema operatiu.
  • Accés anònim. Un servidor que permet accessos anònims permet que qualsevol usuari pugui accedir al repositori de fitxers. Usualment cal indicar com a nom d’usuari “anonymous” i com a contrasenya s’accepta qualsevol text, però per convenció s’escriu el correu electrònic de l’usuari.

Alguns servidors FTP permeten l’accés anònim acceptant qualsevol nom d’usuari i qualsevol contrasenya o fins i tot sense contrasenya.

Segons l’àmbit del servei que proporciona, podem classificar els servidors FTP de la manera següent:

  • Servidor públic. Molts servidors FTP a Internet ofereixen servei d’accés anònim a mode de repositoris de programari perquè els usuaris el puguin utilitzar. N’hi ha que actuen com a rèpliques (miralls, mirrors) d’altres repositoris per tal d’apropar les baixades a l’usuari. Aquest servei és usualment només de lectura (pel client) i en sistemes GNU/Linux s’ubica sovint en els directoris /var/ftp o /var/ftp/pub.
  • Servidor corporatiu. No cal oferir per força els serveis FTP a Internet; l’administrador de xarxa pot configurar el servidor FTP per oferir els serveis als equips que cregui oportuns. Dins d’una xarxa corporativa es pot disposar d’un o més servidors FTP que permeten l’accés als usuaris de la xarxa (tant a usuaris identificats com a usuaris anònims de la xarxa corporativa).

Exemple de mirall

Si us voleu baixar un GNU/Linux Live, en lloc de contactar el servidor de Fedora o Ubuntu, ho podeu fer en un mirall de RedIRIS, que és més proper.

Evidentment, el servidor FTP pot combinar els models anteriors i proporcionar accés tant a usuaris identificats com a usuaris anònims, i pot diferenciar els recursos que ofereix en funció de si són usuaris interns de la xarxa corporativa o d’Internet.

El client FTP és el programari que s’utilitza per establir una connexió amb el servidor per tal de poder baixar o pujar fitxers al servidor. El client pot llistar, modificar i afegir fitxers al servidor, a més de realitzar altres accions, sempre que hi estigui autoritzat. L’aplicació client pot ser basada en text o d’entorn gràfic, però en qualsevol cas ha de poder establir connexió amb el servidor.

URL

Acrònim d’Uniform Resource Locator (en català, localitzador uniforme de recursos). Sovint és usat com a sinònim d’URI (Uniform Resource Identifier, identificador uniforme de recursos), tot i que no és el mateix.

La connexió FTP es pot indicar mitjançant un URL del tipus ftp://servidor/fitxer, on fitxer pot ser una trajectòria. De fet, l’URL pot ser més detallat:

ftp://usuari:contrasenya@servidor:port/fitxer

En aquest format s’indica l’usuari i la contrasenya, el servidor, el port d’accés i el fitxer al qual es vol accedir. En determinats sistemes operatius es pot usar aquesta sintaxi en la línia d’ordres per indicar un fitxer remot, igual que es faria per indicar un fitxer local.

El servidor proporciona un repositori de fitxers i una aplicació que permet que els clients s’hi connectin i facin ús dels fitxers (baixar-los o pujar-ne). L’URL per accedir a un fitxer per FTP es pot expressar així: ftp://usuari:contrasenya@servidor:port/fitxer.

Funcionament del servei FTP

El port 21 és el port del canal de control. El port 20 és el del canal de dades.

L’FTP és un protocol d’aplicació basat en TCP/IP que utilitza TCP com a capa de transport. El servidor escolta connexions entrants de clients pel port 21 i inicia una sessió si l’autenticació s’estableix correctament. El servidor pot funcionar com un servei per si mateix (stand-alone) o pot estar configurat per funcionar dins d’un superservei de xarxa com, per exemple, inetd o xinetd. Si funciona en mode de servei propi és el servidor qui escolta les connexions entrants i les atén. Si s’executa dins del superservei de xarxa, aquest és qui detecta les connexions entrants i activa el dimoni de l’FTP perquè les atengui. Un cop ateses, el dimoni de l’FTP acaba i torna a ser el superservidor de xarxa el que es queda escoltant.

Tipus de client

  • Identificat: té accés al sistema de fitxers complet.
  • Anònim: és engabiat en un punt de l’arbre de fitxers.

Serveis autònom i xinetd

En el servei autònom (stand-alone) el servidor escolta per si mateix les connexions entrants. En el servei xinetd o inetd, el servidor està dins d’un superservei de xarxa. inetd és un superdimoni de xarxa que escolta connexions entrants de diferents protocols i executa el dimoni del servei corresponent en rebre una connexió. xinetd n’és la versió millorada.

L’accés als recursos del servidor varia usualment en funció de si el client és anònim o està identificat. Els clients identificats poden navegar per l’estructura de fitxers segons els seus permisos. Els clients anònims usualment estan engabiats (chroot) en una part de l’arbre de fitxers i no en poden sortir. Usualment, el servidor fa correspondre el directori de publicació (/var/ftp o /srv/ftp en sistemes GNU/Linux) amb el directori arrel (/) d’accés del client. El client pot descendir a partir d’aquest punt, però no pot anar a directoris superiors.

Chroot

En sistemes GNU/Linux, chroot és una utilitat o una tècnica consistent a “engabiar” serveis en una part del disc com si fos el disc sencer, de manera que es fa correspondre un directori particular (on hi ha el servei) a una arrel de disc virtual. Els usuaris del servei creuen que naveguen per tot el disc, però en realitat estan “engabiats” en una estructura virtual.

ASCII

Acrònim d’American Standard Code for Information Interchange. En català, codi estàndard americà per a l’intercanvi d’informació.

Format del salt de línia

Penseu en el típic problema del salt de línia que varia segons el sistema operatiu. El servidor, per exemple, envia text usant el caràcter LF com a salt de línia (usa Unix) i el receptor els desa usant la combinació de caràcters CR+LF (que és el format usat pel seu sistema operatiu diferent d’Unix).

Els modes en què es transfereixen els fitxers entre el client i el servidor poden ser múltiples. Els dos més importants són aquests:

  • ASCII. El fitxer es transmet caràcter a caràcter. Els caràcters han de correspondre als caràcters del codi bàsic ASCII. Si el fitxer conté caràcters ASCII no vàlids, la transferència fallarà. Per tant, es tracta d’un mode vàlid únicament per transferir text net. El receptor farà les conversions de caràcter necessàries per desar les dades en el format que requereixi.
  • Binari (binary). Quan el mode de transferència és binari, el fitxer s’envia bit a bit sense interpretació de cap mena. És el mode que cal usar per transmetre programes, imatges, vídeo, so, dades binàries…

Especificació del protocol FTP

El protocol FTP és un protocol de capa d’aplicació basat en TCP com a capa de transport. Utilitza el port 21 per al canal de control i el port 20 per al canal de dades. És un dels pocs protocols actuals que encara utilitzen més d’un port per a la comunicació. El port 21 s’utilitza com a canal de comunicació entre client i servidor. És per on es transmeten les ordres, però no els fitxers. Aquests es transmeten per una connexió diferent, per un canal diferent, que en principi utilitza el port 20 del servidor.

Tant en el client com en el servidor hi ha dues entitats clarament diferenciades:

  • Intèrpret del protocol: és l’encarregat de l’intercanvi d’ordres i respostes entre client i servidor. Utilitza el canal de control establert entre el port de sortida del client i el port 21, on escolta el servidor. És l’encarregat d’interpretar les ordres de l’aplicació client convertint-les en instruccions FTP, executar-les en el servidor i retornar les respostes al client. No s’encarrega de la transferència de fitxers.
  • Transferència de dades: és la part encarregada d’intercanviar els fitxers i directoris entre client i servidor. En el funcionament bàsic, el canal de dades s’estableix entre un nou port del client (port dinàmic i específic per a la transmissió del fitxer) i el port 20 (ftp-data) del servidor.

Modes de connexió FTP

  • Actiu: el servidor usa el port 20. Correspon a l’ordre PORT del protocol.
  • Passiu: el servidor usa un port dinàmic (no el 20). Correspon a l’ordre PASV del protocol.

La connexió TCP del canal de dades entre client i servidor es pot establir de dues maneres diferents:

  • Mode actiu: generalment és el mode per defecte. Abans de fer una sol·licitud al servidor que impliqui transferir dades pel canal de dades, el client indica al servidor el port dinàmic que utilitzarà. Per tant, el canal de dades s’estableix entre aquest port dinàmic del client i el port 20 del servidor. Servidor i client estableixen una nova connexió TCP per aquest canal.
  • Mode passiu: el client fa una sol·licitud de mode passiu al servidor. Aquest respon enviant el seu port dinàmic, per on s’establirà el canal de dades (en lloc del port 20). Llavors el client inicia una nova connexió TCP entre un port dinàmic nou seu i el port dinàmic del servidor. Aquest és el canal de dades.

En resum, podríem dir que el client es posa en contacte amb el servidor connectant-se al port 21. Mitjançant aquest canal de comunicació, client i servidor governen tota la sessió FTP. Les transferències de fitxers es realitzen per una altra connexió que es pot crear i destruir al llarg de la sessió (per exemple, per a cada baixada o segons els períodes d’inactivitat). En la figura es pot veure l’esquema de connexió i de ports entre un client i un servidor FTP.

Figura Model funcional del protocol FTP

Ordres i respostes FTP

En el document RFC 959 hi ha la llista d’ordres i la taula de codis/missatges de resposta del protocol FTP. Aquest document és l’especificació de l’estàndard FTP.

El protocol FTP descriu diferents categories d’ordres que el client pot realitzar (no les confongueu amb les ordres concretes de l’aplicació client). Aquestes s’agrupen en tres grups:

  1. Ordres de control d’accés: les que gestionen l’accés al servei FTP. Per exemple, inici i finalització de la sessió, validació de l’usuari i la contrasenya, canvis de directori i de sistemes de fitxers…
  2. Ordres de paràmetres de transferència: gestionen les opcions relacionades amb la transferència de fitxers com, per exemple, el mode de transferència binari o ASCII, els ports, el tipus de mode passiu o actiu…
  3. Ordres de servei FTP: són les ordres d’allò que es vol fer en una sessió FTP com, per exemple, baixar un fitxer, pujar-lo, modificar-ne el nom…

Per a cada ordre del client, el servidor emet una resposta pel canal de control en què indica l’estatus de l’execució de l’ordre rebuda. Per exemple, el client envia el seu nom d’usuari i contrasenya, el servidor els valida i retorna una resposta positiva. Si l’ordre implica la transferència de dades, aquesta es realitza pel canal de dades.

Poseu observar en els exemples de sessió FTP d’aquest mòdul els codis de resposta que es donen a les diverses ordres que realitza el client. Els trobareu a l’apartat “2.6 Modes d’accés al servidor”.

El protocol FTP defineix un conjunt de respostes FTP consistents en un codi numèric de tres xifres i un text descriptiu de la resposta, com per exemple “250 Directory successfully changed”. Tot el diàleg client/servidor té forma d’ordres i respostes.

Instal·lació i configuració del servidor

Hi ha moltes aplicacions FTP en el mercat, tant per a clients com per a servidors. Al mateix temps, hi ha versions de text i gràfiques per a cada cas. Hi ha moltes aplicacions que són de font pública i que es poden baixar gratuïtament.

Aplicacions FTP recomanables

Més que fer una enumeració de les aplicacions FTP actuals, us suggerim que busqueu a Internet quines aplicacions estan “de moda” i esbrineu les característiques que les fan especials.

La majoria de sistemes GNU/Linux proporcionen l’aplicació client ftp o lftp (lftp és una versió més nova i simple). També disposen d’una aplicació servidor, entre d’altres, anomenada vsftpd (very secure FTP daemon o dimoni FTP molt segur).

Una de les eines més usades per fer baixades FTP de repositoris públics són els navegadors web. Els navegadors web permeten utilitzar el protocol FTP per realitzar baixades, però no proporcionen totes les prestacions que pot arribar a tenir un client FTP específic. Per accedir a un servidor FTP amb un navegador, n’hi ha prou d’indicar l’URL del protocol i el servidor al qual es vol accedir (per exemple: ftp://ftp.rediris.es).

Així, doncs, quan parlem d’instal·lar el servei FTP fem referència al procés d’instal·lació i configuració del programari del servidor. Això es fa de manera molt similar a la d’altres serveis de xarxa (com els serveis DHCP, DNS, HTTP…): es tracta d’instal·lar els paquets o tarballs (fitxers .tar) de l’aplicació servidor i fer-ne la configuració apropiada.

Per fer això cal plantejar-se els passos següents:

  • Quin programari proporciona aquest servei? Quines característiques té? Com es pot adquirir?
  • Obtenir l’aplicació que proporciona el servei FTP.
  • Observar l’estat de la xarxa actual. Està ja el servei en funcionament? Existeix ja un servidor FTP instal·lat i actiu?
  • Instal·lar l’aplicació servidor.
  • Comprovar que la instal·lació s’ha efectuat correctament.
  • Configurar el servei en el servidor i comprovar que els clients hi poden accedir.
  • Comprovar que el servei funciona correctament.

Cerca d'FTP a Internet

Usualment, l’administrador s’informa mitjançant el seu cercador preferit, per exemple Google, i de webs com la Viquipèdia. Proveu a buscar “FTP” o “FTP server” en aquests llocs web.

Usualment l’administrador acaba utilitzant l’aplicació servidor que li proporciona el mateix sistema operatiu que està utilitzant. Si utilitzeu Windows, l’empresa Microsoft ofereix una aplicació pròpia, però també en podeu trobar d’altres a Internet. Igualment, si utilitzeu GNU/Linux, segurament la mateixa distribució ja proporciona un servidor FTP o bé n’existeix algun de clàssic provinent d’Unix. De totes maneres en podeu obtenir d’altres a Internet.

L’eina que s’utilitzarà en aquesta unitat per oferir el servei FTP és l’aplicació vsftpd o very secure FTP daemon.

Instal·lació de l'aplicació servidor

Els usuaris de GNU/Linux poden buscar fàcilment per Internet paquets de servidor FTP usant eines com yum o apt-get i els repositoris de paquets apropiats segons quina sigui la distribució que utilitzin. A més, sempre poden usar els cercadors web per localitzar tot allò que els faci falta.

Un cop instal·lat el programari caldrà identificar què s’ha instal·lat. Quins paquets i què contenien. A vegades no s’instal·laran paquets sinó fitxers tarball, el contingut dels quals també caldrà saber examinar. És important saber identificar quins dels components instal·lats corresponen a fitxers executables, quins a fitxers de configuració i quins a fitxers de documentació.

Tot servei instal·lat s’ha de configurar apropiadament i posar en marxa. Per tant, caldrà saber gestionar l’estat del servei (engegar, aturar, reiniciar…) i definir l’estat que ha de tenir en els diferents runlevels (nivells d’execució) del sistema.

En definitiva, el procediment d’instal·lar inclourà usualment:

  • Buscar el programari del servei (sigui en format de paquets .deb, .rpm o .tar) i descarregar-lo utilitzant l’eina apropiada segons quina sigui la distribució que s’utilitzi.
  • Examinar el sistema per identificar quin programari, quins paquets, hi ha instal·lats relacionats amb el servei.
  • Identificar els components del servei. Quins són els fitxers executables, quins els de configuració i quins els de documentació.
  • Consultar i establir l’estat del servei (engegar i aturar) i saber establir l’estat per defecte per a cada runlevel.

Creació d'usuaris i grups

L’accés a un servidor FTP es pot considerar des de diferents angles. Des del punt de vista de la configuració de xarxes (ports, tallafocs, TCP wrappers…) es poden filtrar els amfitrions (hosts) que poden accedir al servidor FTP. Des del punt de vista dels usuaris, poden ser usuaris anònims, locals i virtuals.

Els usuaris es poden classificar en:

  • Usuaris anònims
  • Usuaris locals del sistema
  • Usuaris propis del servei FTP, anomenats usuaris virtuals

Podeu trobar més informació sobre els usuaris anònims en l’apartat “Configuració de l’accés anònim”.

L’accés anònim al servidor permet que qualsevol client pugui accedir a l’àrea pública del servidor FTP com a usuari “anonymous”. Aquest dret d’accés de lectura es pot concedir o restringir. També se li pot proporcionar a l’usuari anònim el dret a publicar documentació dins de directoris amb els permisos apropiats.

L’accés al servei com a usuaris locals del sistema permet accedir al servei FTP als usuaris que ho són també del sistema on s’executa el servei. És per això que s’anomenen usuaris locals, perquè són locals a l’amfitrió on s’executa el servei. Aquest accés es pot permetre o restringir segons es desitgi.

Finalment hi ha l’accés d’usuaris virtuals. Es tracta d’usuaris identificats (no anònims) que no són (o no necessàriament) usuaris del sistema. Són usuaris propis del servei FTP i caldrà portar-ne la gestió pròpia amb les típics fitxers d’usuaris i contrasenyes.

Usuaris locals

Permetre l’accés al servei FTP d’usuaris locals és ben simple: simplement cal activar la directiva local_enable. Fet això, els usuaris locals tindran accés de descàrrega. Per permetre’ls pujar documents caldrà configurar més directives.

Els usuaris del sistema accedeixen al seu directori d’inici (home), que és el directori de publicació, i en general tenen dret a navegar per tot el sistema de fitxers de manera similar a com ho farien en una sessió d’usuari del sistema. Es pot engabiar (chroot) els usuaris en el seu directori d’inici, de manera que aquest passarà a ser l’arrel del sistema de fitxers al qual poden accedir via FTP i, per tant, no en podran sortir.

Els usuaris locals accedeixen al seu directori per defecte de publicació. Poden moure’s únicament pel subarbre del seu home o per tot el sistema de fitxers segons si estan engabiats o no.

Usuaris virtuals

Generalment, tot servidor FTP permet un tercer tipus d’usuaris que no són ni els anònims ni els usuaris del sistema. Es tracta d’usuaris propis del servei FTP. L’avantatge d’aquest model és la separació entre els usuaris del servei i els usuaris del sistema. Això permet l’accés identificat a serveis FTP sense necessitat de crear comptes d’usuari en el sistema. També permet un grau més gran de portabilitat, ja que el servei es pot traslladar a un altre entorn (amb uns altres usuaris del sistema) i continuar mantenint els usuaris propis del servei. L’inconvenient d’aquest model és que generalment implica dur l’administració d’una gestió d’usuaris paral·lela a la del sistema i crear els fitxers o una base de dades d’usuaris FTP amb els noms i contrasenyes de cada un d’ells.

Els servidors FTP generalment permeten administrar usuaris específics del servei FTP (ni locals ni anònims). Això té l’avantatge de la independència respecte dels usuaris del sistema i presenta l’inconvenient de requerir una administració pròpia d’aquests usuaris.

En el servidor vsftpd aquests usuaris s’anomenen virtual users.

Els usuaris virtuals són comptes d’usuaris que no existeixen realment com a usuaris del sistema. Això proporciona un grau major de seguretat, ja que un compte d’usuari virtual compromès únicament pot explotar les debilitats del servei FTP. En canvi, un compte del sistema compromès pot intentar explotar debilitats de tot el sistema. Una de les finalitats principals de la possibilitat de crear usuaris virtuals és permetre l’accés a contingut que ha de ser accessible a usuaris no validats en el sistema, però que no es vol fer públic per a tothom.

El procés que cal seguir per generar usuaris virtuals en el servidor vsftpd és el següent:

  1. Crear la base de dades d’usuaris virtuals.
  2. Crear/editar el fitxer de configuració PAM per usar la base de dades creada anteriorment.
  3. Generar el directori de publicació de l’usuari virtual tot creant aquest usuari.
  4. Generar el fitxer de configuració apropiat per permetre l’ús d’usuaris virtuals.

Configuració de l’accés anònim

El client que accedeix a un servidor FTP ho pot fer com a usuari identificat (del sistema o del servidor) o amb accés anònim. Tradicionalment, els usuaris anònims tenen accés a un directori de publicació des d’on poden realitzar descàrregues però no pujar documents al servidor (tot i que es pot configurar per permetre-ho). Aquests usuaris s’identifiquen normalment amb el nom “anonymous” i com a contrasenya és costum que introdueixin el seu correu electrònic (vàlid o inventat).

L’accés d’usuaris anònims es fa usualment amb el nom d’usuari anonymous i una adreça de correu electrònic com a contrasenya. Sovint, els comptes anònims s’usen únicament per descarregar fitxers del directori de publicació, però també se’ls pot permetre publicar documents.

Quan els usuaris anònims poden publicar documents cal determinar en nom de qui ho fan, és a dir, quin és l’usuari, el grup i els permisos que s’assignen en el sistema de fitxers als documents pujats per aquests usuaris. També es pot configurar si se’ls permet crear directoris dins de l’arbre de publicació o no.

En general els elements que cal configurar en un servidor FTP relacionats amb els usuaris anònims són:

  • Determinar si es permet l’accés als usuaris anònims.
  • Determinar si se’ls concedeix el dret a pujar documents.
  • Concedir-los o no el dret a crear directoris en el servidor (en l’àrea de publicació).
  • Determinar l’usuari, el grup i la màscara amb els quals pujar els documents (si se’ls permet fer-ho).
  • Engabiar (chroot) o no l’usuari en el seu accés al sistema de fitxers.
  • Establir si cal demanar contrasenya als usuaris anònims.
  • Generar una llista de contrasenyes (correus electrònics) no acceptades pel sistema.
  • En el sistema de fitxers del servidor, establir els permisos a fitxers i directoris des dels quals es permeti descarregar documents i als quals es puguin pujar documents.

En fer-se la instal·lació del servidor FTP, usualment es crea de manera automatitzada un usuari anomenat ftp, que és l’usuari del sistema que representarà els usuaris anònims. Aquest usuari no té dret a realitzar sessions interactives amb el sistema, no té shell (nologin). Usualment el directori d’inici d’aquest usuari és el directori de publicació del servei FTP. Així, en el cas del servei vsftpd, aquest usuari ftp té com a directori d’inici /srv/ftp (tot i que pot variar en segons quines distribucions). És costum que dins d’aquest directori existeixi un directori anomenat pub, en el qual hi ha tota la documentació d’accés públic (les descàrregues permeses a tothom).

El codi següent mostra la línia que defineix l’usuari ftp en el fitxer d’usuaris del sistema:

root@server:/# grep "ftp" /etc/passwd
ftp:x:116:127:ftp daemon,,,:/srv/ftp:/usr/sbin/nologin
root@server:/# 

L’usuari del sistema ftp és l’usuari usat en les connexions anònimes. Aquest usuari té el directori d’inici /srv/ftp.

Limitacions d’accés

Directives

El llistat de totes les directives es pot consultar amb l’ordre:
man 5 vsftpdconf.

Existeixen diverses directives que permeten establir múltiples aspectes del funcionament del servei FTP. Aquest apartat se centra en les directives que afecten als aspectes següents:

  • Rendiment
  • Mode de transferència
  • Seguretat
  • Mode del servei: autònom o xinetd
  • Gestió dels logs
  • Bàners globals i missatges de directori

Rendiment

El rendiment o performance permet configurar aspectes com el nombre màxim de connexions que pot atendre el servidor concurrentment, el nombre de connexions que es permet a un mateix client, l’ample de banda màxim permès en les connexions locals i en les anònimes… Aquestes són algunes de les directives relacionades amb el rendiment del servei:

  • accept_timeout (60): estableix el timeout (o temps d’espera) en segons que té un client per establir connexions segures. Entre parèntesi se n’indica el valor per defecte
  • anon_max_rate (0): estableix la taxa màxima de transferència que es permet als clients anònims. S’estableix en bytes per segon i per defecte val zero, que significa il·limitat.
  • connect_timeout (60): estableix el temps màxim que té un client per respondre a una connexió de tipus PORT.
  • data_connection_timeout (300): estableix el nombre màxim de segons en què una sessió de transferència de dades pot estar inactiva. Si se supera aquest límit sense progressar en la transferència la sessió es tanca.
  • delay_failed_login (1): indica el nombre de segons de pausa abans d’indicar un error d’inici de sessió.
  • delay_successful_login (0): indica el nombre de segons de pausa abans de permetre una connexió correcta.
  • idle_session_timeout (300): estableix el nombre màxim de segons que una sessió pot estar inactiva. Passat aquest temps la sessió es tanca.
  • local_max_rate (0): especifica la taxa màxima de transferència (en bytes per segon) que pot usar un usuari local. Per defecte val zero, que significa il·limitada.
  • max_clients (0): estableix el nombre màxim de clients que es poden connectar concurrentment. Els clients següents rebran un missatge d’error informant que no es permeten més connexions. Per defecte pren el valor zero, que significa connexions il·limitades.
  • max_login_fails (3): indica el nombre màxim d’intents d’inici de sessió fallits. Quan s’arriba a aquest número es tanca la sessió.
  • max_per_ip (0): indica el nombre màxim de clients que es poden connectar simultàniament des de la mateixa adreça IP. Això permet establir límits al nombre de connexions d’un sol client basant-se en la seva adreça IP.
  • one_process_model (YES): activa el model de funcionament one process per connection, que proporciona més velocitat de processament de les peticions client.

Mode d'accés

Els servidors FTP permeten treballar en mode ASCII i binari. Actualment, el servei es configura en mode binari per defecte. El mode ASCII pot presentar algunes vulnerabilitats de seguretat en fer un ús més intensiu dels recursos. Aquestes són algunes de les directives que controlen els modes d’accés:

  • ascii_upload_enable (YES): estableix si es permet o no la transferència de dades en mode ASCII a més del mode binari. Activant aquesta directiva es permet pujar documents al servidor en mode ASCII.
  • ascii_download_enable (YES): és la directiva anàloga a l’anterior per permetre o no les descàrregues en mode ASCII.
  • async_abor_enable (NO): si s’activa, permet a clients FTP antics cancel·lar descàrregues a mig fer. D’altra manera, aquests clients es bloquejaven.

Seguretat

Hi ha diverses qüestions relacionades amb la seguretat d’un servei de xarxa a més de les connexions anònimes i els usuaris locals o virtuals. Algunes són aspectes com el rang de ports a usar, les connexions PASV i PORT, el permís per fer llistats, la configuració PAM a usar, els TCP wrappers

Algunes de les principals directives que tracten aspectes relacionats amb la seguretat són:

  • pasv_min_port (0): indica el mínim port permès per a connexions tipus PASV. Si s’utilitza conjuntament amb la opció pasv_max_port permet definir un rang (mínim-màxim) amb els valors de port dinàmic que es poden utilitzar en connexions passives.
  • pasv_max_port (0): indica el port màxim que es pot usar en connexions de tipus PASV. En aquestes connexions s’utilitza un port dinàmic que sempre serà igual o inferior a l’especificat aquí.
  • pasv_enable (YES): si es defineix a NO, no es permetran les connexions PASV, de tipus passiu. Per defecte pren el valor YES.
  • port_enable (YES): si s’estableix a NO no es permetrà la transferència de dades en mode actiu, és a dir, usant el mètode PORT. Per defecte pren el valor YES.
  • tcp_wrappers (NO): aquesta opció permet activar la seguretat de les connexions de xarxa usant TCP wrappers. Permet establir regles de connexió en funció dels noms d’amfitrions o de les seves adreces.
  • ls_recurse_enable (NO): per defecte es desactiva la propietat de poder fer llistats recursius amb l’ordre ls -R. Això generalment es fa per evitar riscos de seguretat, ja que aquesta ordre implica un gran comsum de recursos que pot fer caure el servidor.
  • local_umask (077): estableix el valor per defecte de la màscara de permisos per a aquells elements que publiquin els usuaris locals.
  • connect_from_port_20 (NO): indica si les connexions de transferència de dades de tipus PORT han d’usar obligatòriament el port 20 o no.
  • dirlist_enable (YES): especifica si es concedeix el permís de fer llistats. Si s’assigna el valor NO, els clients no podran llistar els directoris.
  • download_enable (YES). indica si es permet o no la descàrrega de continguts. Evidentment, el cas general és permetre la descàrrega, de manera que per defecte s’estableix a YES.
  • hide_ids (NO): aquesta opció permet ocultar la informació d’usuari i grup en els llistats dels directoris de manera que es mostri sempre el nom ftp.
  • hide_file (none): aquesta opció permet indicar patrons de noms de fitxer que seran exclosos dels llistats dels directoris. És a dir, els noms de fitxers i de directoris que coincideixin amb els patrons especificats no seran vistos pels clients.
  • pam_service_name (vsftpd): indica el nom del servei PAM que s’utilitza. Si usualment la configuració PAM utilitza el directori /etc/pam.d i aquesta directiva s’estableix a vsftpd, significa que espera trobar un fitxer amb aquest nom dins del directori.
  • ftp_username (ftp): especifica el nom de l’usuari real del sistema que s’utilitzarà quan es realitzin connexions anònimes. És a dir, els clients anònims són mapejats a aquest usuari.

Mode del servei: autònom o xinetd

El servidor vsftpd pot funcionar en mode autònom (stand-alone) o dins del superservei de xarxa xinetd. A més, es poden executar diverses instàncies del servidor per atendre diferents seus virtuals o per atendre amb més eficiència les peticions. Els següents són exemples de directives del mode autònom:

# Standalone mode
listen=YES

This tells vsftpd to run in standalone mode. Do NOT try and run vsftpd from
an inetd with this option set - it won't work, you may well get 500 OOPS:
could not bind listening socket.

One further note on standalone mode, regarding virtual IPs. This is very
easy - just run one copy of vsftpd per virtual IP (remembering to give each
a separate config file on the command line).
Distinguish which vsftpd is for which virtual IP with a setting like this
in the vsftpd.conf:

listen_address=192.168.1.2
  • listen (YES): és la directiva que indica al servidor que ha de funcionar en mode autònom.
  • listen_address (adreça IP): indica per quina adreça IP en concret escolta el servidor. Es poden engegar diversos servidors, cada un amb el seu propi fitxer de configuració i atenent a una adreça IP concreta. Així es poden implementar seus virtuals.

El fragment de codi següent mostra un exemple de fitxer de configuració del servei vsftpd dins del superdimoni de xarxa xinetd. Usualment, els serveis es configuren amb un fitxer amb el mateix nom que el servei dins del directori apropiat de xinetd, usualment /etc/xinetd.d.

# vsftpd is the secure FTP server.
service ftp
{
        disable                 = no
        socket_type             = stream
        wait                    = no
        user                    = root
        server                  = /usr/local/sbin/vsftpd
        per_source              = 5
        instances               = 200
        no_access               = 192.168.1.3
        log_on_success          += PID HOST DURATION
        log_on_failure          += HOST
}
  • disable (no): indica que el servei ha de ser escoltat per el xinetd. Si pren el valor YES, el servei queda inhabilitat.
  • socket_type (stream): indica que utilitza TCP.
  • wait (no): indica si el servei és amb un sol thread o multithread. És a dir, si s’executa una sola instància del servei per atendre totes les peticions o si xinetd pot llançar múltiples instàncies. El valor no permet ser multithread.
  • user (root): el servei s’executa en nom de l’usuari root.
  • server (/usr/local/sbin/vsftpd): especifica el nom de l’executable del servidor.
  • per_source (5): estableix un màxim de 5 connexions simultànies des d’un mateix client.
  • instances (200): permet un màxim de 200 connexions concurrents, un màxim de 200 clients simultànis.
  • no_access (192.168.1.3): denega l’accés al servidor a clients amb aquesta adreça IP origen.
  • log_on_success (+= PID HOST DURATION): especifica el format dels logs quan es realitzen connexions satisfactòries. Es desa l’adreça IP, el PID i el temps invertit en la connexió.
  • log_on_failure (+= HOST): especifica el format dels missatges de log per a les connexions fallides. Simplement s’enregistre l’adreça del client.

Logs

Els aspectes principals a descriure en les directives de logs són indicar si cal generar els logs de les connexions clients o no i establir el format que han de tenir els missatges. El següent és un llistat de les principals directives implicades:

# Activate logging of uploads/downloads.
xferlog_enable=YES

# 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.
# Note that the default log file location is /var/log/xferlog in this case.
xferlog_std_format=YES
  • xferlog_enable (YES/NO): indica si cal generar logs de les connexions que es realitzen.
  • xferlog_file (/var/log/vsftpd.log): indica la ubicació i el nom del fitxer on es desaran els logs.
  • xferlog_std_format (YES/NO): especifica que el format que han de tenir els missatges de log ha de ser l’estàndard.

Bàners i missatges

En el servidor FTP es poden especificar diversos bàners o missatges de capçalera, que es mostren segons convingui. Per exemple, és habitual mostrar un bàner de benvinguda als usuaris que inicien sessió en el servidor.

# You may fully customise the login banner string:
# This  string option allows you to override the greeting banner displayed by 
# vsftpd when a connection first comes in.
ftpd_banner=Welcome to blah FTP service.

# This  option is the name of a file containing text to display when someone 
# connects to the server. If set, it overrides the banner string provided by the
# ftpd_banner option.
banner_file=

Un element diferent dels bàners són els missatges (messages). En els directoris de publicació es poden posar fitxers anomenats .message que poden contenir, per exemple, una descripció dels continguts del directori. El servidor FTP mostra automàticament el contingut d’aquests fitxers en forma de capçalera quan l’usuari accedeix al directori.

# Messages, banners

# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES

# This option is the name of the file we look for when a new directory is
# entered. The contents are displayed to the remote user. This option is only
# relevant if the option dirmessage_enable is enabled.Default: .message
message_file=

Modes d'accés al servidor

Verificar el funcionament del servidor és tan senzill com tractar de connectar des d’un client FTP al servidor i fer diverses sol·licituds en una mateixa sessió. Des de l’entorn de text, el mecanisme més simple per verificar el funcionament sempre és:

  • Usar un client FTP text i realitzar les comprovacions.
  • Tractar de simular un diàleg FTP usant una sessió Telnet. Com que el protocol FTP té la particularitat que utilitza dos ports, això serà una mica més difícil. Caldrà un telnet per al diàleg de control i un altre per a cada transferència de dades.

A part de realitzar una sessió FTP de prova per verificar el funcionament del servei, un administrador també ha de saber:

  • Observar l’estat dels ports amb Nmap.
  • Observar l’estat del servei.
  • Monitorar el trànsit FTP amb utilitats tipus ss, netstat i IPTraf.
  • Monitorar el trànsit amb Wireshark.

Sessió FTP

En la secció “Annexos” del web d’aquest mòdul trobareu una captura del trànsit de xarxa corresponent a una comunicació (diàleg) FTP.

En aquest apartat es mostra un exemple de sessió FTP usant el client text FTP i un exemple de sessió simulant el diàleg amb diverses connexions TCP amb telnet. En una mateixa sessió es poden realitzar diverses ordres de consulta, descàrrega i pujada de fitxers. També es combina la transferència de dades en mode actiu i passiu.

Exemple de diàleg FTP

El diàleg client-servidor té forma d’ordres i respostes, tal com es pot veure a continuació, on es realitza una connexió FTP i s’executen diverses ordres. S’utilitza el client FTP per defecte i un servidor vsftpd instal·lat al localhost. En aquesta sessió es realitza transferència de dades tant en mode passiu com en mode actiu.

Ordre      ports    comanda/resposta
[root@portatil ~]# ftp localhost 
    c49962 - s21    ... establiment de la connexió TCP... 
    s21 - c4992     Connected to localhost (127.0.0.1). 
    s21 - c4992     220 (vsFTPd 2.0.5) 

Name (localhost): anonymous 
    c4992 - s21     ... enviar el nom d'usuari al servidor...
                    USER anonymous <CRLF>
    s21 - c4992     331 Please specify the password. 

Password: 
    c49962 - s21    ... enviar la contrasenya al servidor...
                    PASS usuari@fpoberta.cat
    s21 - c4992     230  Login successful. 
    s21 - c4992     Remote system type is UNIX. 
    s21 - c4992     Using binary mode to transfer files. 

ftp> cd pub
    c49962 - s21    ... canviar al directori pub...
                    CWD pub 
    s21 - c4992     250 Directory successfully changed.

ftp> dir
    c49962 - s21     ... indicar el port dinàmic client ...
                     PORT 127,0,0,1,137,108 <CRLF> 
    s21 - c49962     200 Port command succesfull
    c49962 - s21     ... llistar el directori ...
                     LIST <CRLF> 
*   s20 - c35180     ... establiment connexió canal dades...
*   c35180 - s20     ... connexió TCP client/servidor...
    s21 - c49962     150 Here comes the directory listing 
*   s20 - c35180     total 2
                     -rw-r--r-- 1 0 0 110 May 31 12:15 llistat 
                     -rw-r--r-- 1 0 0 362047 Feb 23 16:12 services 
                     ... tancament de la connexió de dades...
    s21 - c4992      226 Directory send OK.

ftp> get carta.txt
    c49962 - s21     ... descarregar el fitxer carta.txt...
    c49962 - s21     ... demanar el mode passiu al server... 
                     PASV
    s21 - c49962     227 Entering Passive Mode (127,0,0,1,142,120).
    c49962 - s21     RETR carta.txt
    s21 - c49962     150 Opening BINARY mode data connection 
                     for carta.txt (110 bytes)
*   c435181 - s36472 ... establiment connexió canal dades...
*   s36472 - c435181 ... connexió TCP client/servidor...
*                    ... transferència del contingut del fitxer...
*                    ... tancament de la connexió de dades...
    s21 - c4992      226 File send OK

ftp> quit
    c49962 - s21     QUIT <CRLF>
    s21 - c49962     221 Goodbye.

El seguiment de la sessió és el següent:

  • El client FTP es connecta al servidor via localhost i s’identifica com a usuari anonymous amb la contrasenya usuari@fpoberta.cat. Observeu que el servidor respon amb “230 Login successful”: indica que el sistema operatiu és Unix i que el mode de transferència és binari.
  • El client canvia al directori pub amb l’ordre d’usuari cd pub. Aquesta ordre correspon a l’ordre CWD pub del protocol FTP.
  • El client demana fer un llistat amb l’ordre dir. Internament, el client aplica aquesta ordre fent dues ordres al servidor: PORT i LIST. Amb l’ordre PORT 127,0,0,1,137,108, el client indica al servidor quin és el seu port dinàmic. La transferència del llistat es realitzarà del port 20 del servidor al port dinàmic del client. El mode de transferència és actiu.
  • Tot seguit l’usuari client demana descarregar un fitxer amb l’ordre GET carta.txt. El client FTP transforma aquesta petició GET en dues ordres al servidor: PASV i RETR. La primera demana al servidor que operi en mode passiu i el servidor ho fa responent “227 Entering Passive Mode (127,0,0,1,142,120)”. És a dir, el servidor informa de quin és el port (dinàmic) que utilitzarà per a la transferència de dades en lloc del port per defecte 20. Així, serà el client qui haurà de prendre la iniciativa d’iniciar la connexió de dades. L’ordre RETR fa que el servidor envii al client el fitxer sol·licitat. La comunicació, per tant, és en mode passiu del port dinàmic del servidor al port dinàmic del client.
  • Finalment el client tanca la sessió amb l’ordre quit.

Mode actiu i mode passiu

Per activar el mode actiu s’utilitza l’ordre PORT A, B, C, D, PH, PL.

El client indica el seu port de dades especificant la pròpia adreça IP: A.B.C.D i el port. El port s’indica en dos octets PL i PH tals que el número del port correspon a l’expressió port = PH 256 + PL.

Per activar el mode passiu s’utilitza l’ordre PASV.

El client sol·licita al servidor treballar en mode passiu. El servidor comunica quin és el seu port de dades (que usarà en lloc del port 20). Emet una resposta amb la informació A, B, C, D, PH, PL, que indica la IP del servidor (A.B.C.D) i el port del servidor en el format port = PH 256 + PL (el valor del port s’obté dels octets PL i PH aplicant l’expressió indicada).

Exemple de diàleg FTP usant Telnet

La majoria de protocols TCP inicials d’Internet es poden simular usant Telnet al port pertinent i simulant manualment les ordres del protocol. En el cas del protocol FTP això és molt difícil, ja que requereix dues connexions, una de control i una de dades.

Si el servidor treballa en mode actiu és ell el que estableix la comunicació de dades del seu port 20 a un port dinàmic del client. Per poder recrear aquest diàleg caldria una aplicació que escoltés en el port del client (un Telnet escoltant per aquest port).

Si el servidor treballa en mode passiu és el client el que genera la nova connexió de dades al port especificat pel servidor. Això sí que es pot recrear amb un altre Telnet.

Calen dos Telnets per simular una transferència FTP en mode passiu:

  • Un pel port 21, per realitzar el control de la comunicació (del client al servidor).
  • L’altre (també del client al servidor) per realitzar la transferència d’un port dinàmic del client a un port dinàmic del servidor.

Vegem-ne un exemple:

Sessió 1: canal de control

[user@host ~]# telnet localhost 21 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
220 (vsFTPd 2.0.5) 

USER pere 
331 Please specify the password. 

PASS pere 
230 Login successful. 

PWD 
257 "/home/pere"
	
LIST 
425 Use PORT or PASV first. 

PORT 127,0,0,1,231,175 
200 PORT command successful. Consider using PASV. 

LIST 
150 Here comes the directory listing. 
426 Failure writing network stream. 

PASV 
227 Entering Passive Mode (127,0,0,1,202,67) 
*** iniciar sessió 2 en un altre terminal ***

LIST 
150 Here comes the directory listing. 
226 Directory send OK. 

PASV 
227 Entering Passive Mode (127,0,0,1,165,50)
*** iniciar sessió 3 en un altre terminal ***

RETR pere.info 
150 Opening BINARY mode data connection for pere.info (70 bytes). 
226 File send OK.

QUIT 
221 Goodbye. 
Connection closed by foreign host. 

Sessió 2: llistat

[user@host ~]# telnet localhost 51779 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
-rw-r--r--    1 500      501          1695 Jun 01 17:19 nou.odt 
-rw-rw-r--    1 500      501            70 Jun 01 17:14 pere.info 
Connection closed by foreign host. 

Sessió 3: 'get’ del fitxer

[user@host ~]# telnet localhost 42290 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
per crear un usuari com per exemple pere: 
# useradd pere 
# passwd pere 
Connection closed by foreign host.

Per saber quines són les comandes possibles del protocol FTP cal consultar l’RFC del protocol.

El seguiment del diàleg és el següent:

  • Fer un Telnet al port 21 del servidor, identificar-se amb les ordres del protocol USER i PASS. Esbrinar quin és el directori per defecte amb l’ordre PWD.
  • En intentar fer un llistat del directori amb l’ordre LIST, el servidor contesta que primer cal executar l’ordre PORT o PASV. És a dir, que el client indiqui quin és el seu port de dades o que li mani al servidor treballar en mode passiu (perquè sigui el servidor qui indiqui el seu port dinàmic).
  • El client indica el seu port de dades amb l’ordre PORT 127,0,0,1,231,175. Aquesta ordre indica la IP del client (127.0.0.1) i el port de dades a usar, el 59311 (231 * 256 + 175 = 59.311). En aquest punt el servidor, intenta una nova connexió TCP entre el seu port 20 i el port indicat pel client. Com que el client no atén aquesta connexió, es produeix un error i el servidor no realitza la transferència.
  • En el tercer bloc del llistat Telnet, el client executa l’ordre PASV, que provoca que el servidor respongui indicant el port dinàmic de dades que utilitzarà en lloc del port 20. El servidor respon “227 Entering Passive Mode (127,0,0,1,202,67)”. Indica la seva IP (127,0,0,1) i el port que utilitzarà: 202 * 256 + 67 = 51.779.
  • En un altre terminal del client es pot iniciar una segona sessió Telnet a aquest port, tal com es pot veure a “Sessió 2: llistat”: telnet localhost 51779. En aquesta connexió es rebrà la transferència del canal de dades de l’ordre que es realitzi a continuació (si és de transferència).
  • En el canal de control es realitza l’ordre LIST i automàticament en la sessió 2 apareix el contingut del llistat i es tanca la connexió per part del servidor.
  • Tot seguit es realitza el mateix procés per descarregar el fitxer pere.info. El client realitza l’ordre PASV en el canal de control perquè el servidor indiqui el port de dades que utilitzarà.
  • Establir una tercera sessió fent un telnet al servidor al port que ha indicat (65 * 256 + 50 = 42.290). En fer l’ordre RETR pere.info (equivalent al GET del fitxer), el contingut del fitxer es transfereix a la sessió 3. El llistat que es mostra després de l’establiment de connexió correspon al contingut del fitxer.
  • Per acabar, es tanca la connexió del canal de control amb l’ordre QUIT (equivalent al BYE).

Comunicacions segures

Una característica fonamental del protocol FTP és que quan es va dissenyar no es va tenir en compte la seguretat, més enllà de l’usuari i la contrasenya (que és pròpia del sistema operatiu). Com en altres protocols, la informació que porten els paquets viatja per la xarxa com a text pla, sense encriptar. És a dir, que qualsevol persona amb uns mínims coneixements de xarxes, pot capturar aquests paquets i espiar les dades (usuaris, contrasenyes, informació sensible…). Si, a més, fem servir un medi sense fils, encara s’és més vulnerable.

Com d’altres protocols, s’han afegit extensions per tal de xifrar les comunicacions. En aquest cas hi ha dues maneres de fer-ho: a través del protocol FTPS i el SFTP.

El protocol FTPS

El protocol FTPS (FTP sobre SSL/TLS, FTP over SSL/TLS) utilitza el mateix mecanisme que altres protocols (HTTPS, etc.). Utilitza la capa de seguretat SSL/TLS per fer que les comunicacions siguin xifrades i proporcionar la confidencialitat i autenticació necessàries per a les comunicacions FTP. Utilitza els mateixos ports que el protocol FTP (20 i 21).

El programari vsftpd ja porta preparats uns certificats per tal de poder xifrar les comunicacions, tot i que es poden substituir per d’altres. Per tal d’activar el protocol FTPS cal descomentar les següents línies i reiniciar el servei:

ssl_enable=yes
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

Vegem amb més detalls les directives:

  • ssl_enable: habilita SSL per tal d’activar el protocol FTPS.
  • rsa_cert_file: conté el certificat públic.
  • rsa_private_key_file: conté la clau privada.

El client normal d’FTP que porten la majoria de distribucions no suporta SSL. Cal instal·lar algun client de text que ho suporti, com ftp-ssl o lftp.

usuari@client:~$ ftp 10.0.2.15
Connected to 10.0.2.15.
220 (vsFTPd 3.0.3)
Name (10.0.2.15:usuari): usuari
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp> quit
usuari@client:~$ ftp-ssl 10.0.2.15
Connected to 10.0.2.15.
220 (vsFTPd 3.0.3)
Name (10.0.2.9:usuari): usuari
234 Proceed with negotiation.
[SSL Cipher ECDHE-RSA-AES256-GCM-SHA384]
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Amb els clients gràfics també cal indicar que s’usa SSL, tal com es pot veure en la figura.

Figura Connexió a un servidor amb suport FTPS

El protocol SFTP

El protocol SFTP és una implementació diferent del protocol FTP. De fet, és una extensió del protocol SSH (Secure SHell), que és qui realment ofereix el xifrat. En aquest cas, el protocol utilitza el port 22, que és el d’SSH. Aquest protocol no és compatible amb l’FTPS.

No s’ha de confondre amb el protocol Simple File Transfer Protocol (protocol simple per a la transferència de fitxers), ja que coincideixen les sigles SFTP. Aquest era una versió lleugera del protocol FTP que utilitzava el port 115 (RFC 913) i que avui en dia no s’utilitza, ja que en el seu lloc es fa servir el TFTP (Trivial FTP).

Per poder utilitzar el protocol SFTP cal instal·lar un altre programari, com per exemple la suite openSSH, que incorpora un propi servidor FTP.

root@server:/# apt install openssh-server
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  openssh-sftp-server
Suggested packages:
  molly-guard monkeysphere rssh ssh-askpass ufw
The following NEW packages will be installed:
  openssh-server openssh-sftp-server
0 upgraded, 2 newly installed, 0 to remove and 182 not upgraded.
Need to get 397 kB of archives.
After this operation, 1609 kB of additional disk space will be used.
Do you want to continue? [Y/n] 

I des d’un client ja ens podem connectar al servidor amb la comanda sftp:

usuari@client:~$ sftp 10.0.2.15
The authenticity of host '10.0.2.15 (10.0.2.15)' can't be established.
ECDSA key fingerprint is SHA256:2cqYKzks+fFtaQutgx8jLfvy8X08lEzxgPdkXYg2DKw.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.2.15' (ECDSA) to the list of known hosts.
usuari@10.0.2.15's password: 
Connected to 10.0.2.15.
sftp>

En el cas de voler-se connectar amb un client gràfic com, per exemple, FileZilla, també cal indicar que s’usa SFTP, tal com es pot veure en la figura:

Figura Connexió a un servidor amb suport SFTP

Clients gràfics i de text

Abans de la popularització del World Wide Web, el servei FTP era profusament usat per a l’intercanvi d’informació i la transferència de fitxers, generalment en mode text o consola, ja que aquest era el mode més comú de treball. Més endavant van anar apareixent eines gràfiques que permetien gestionar còmodament, amb pocs clics, les descàrregues. Avui en dia les eines gràfiques han quedat superades pels omnipresents navegadors, la interfície amb la qual la majoria d’usuaris dialoguen amb el món.

Clients de text

Alguns dels clients més populars per treballar en mode text són:

  • ftp: el client FTP, utilitat incorporada en tots els sistemes GNU/Linux del món.
  • wget: una de les eines actualment més populars per a la descàrrega de continguts d’FTP i HTTP (entre d’altres).
  • SFTP: eina del paquet ofimàtic SSH que permet la connexió FTP segura.

Client FTP

Un client FTP es pot connectar molt fàcilment des del mode d’ordres de la majoria de sistemes operatius. Únicament s’ha d’executar l’ordre ftp <servidor>, i automàticament s’inicia una connexió entre el client i el servidor indicat. Usualment, l’aplicació client permet un ús interactiu i es poden obrir i tancar sessions i treballar en diferents servidors al gust del client.

Vegeu un exemple de sessió client:

$ ftp ftp.uoc.net            # inicia una sessió al servidor ftp.uoc.net 
> quit                       # finalitza la sessió al servidor ftp.uoc.net 

$ ftp                        # engega l'aplicació client
> open ftp.rediris.es        # connecta al servidor FTP de RedIRIS
> get carta.txt              # descarrega el fitxer carta.txt
> get file1.txt /tmp/nou.txt # desa file1.txt a /tmp amb el nom nou.txt
> quit                       # finalitza la sessió al servidor atual
> open servidor_nou          # inicia una connexió a un altre servidor
> put /tmp/nou.txt           # puja el fitxer al directori actiu amb el nom nou.txt
> cd dir1                    # canvia el directori de destinació a dir1
> put carta.txt              # puja el fitxer carta.txt al directori actual (dir1)

El client disposa de les ordres FTP que el servidor implementi. No necessàriament s’implementen totes les ordres descrites en el protocol. A més, l’usuari pot disposar de més ordres si el client i el servidor permeten extensions del protocol (utilitats addicionals).

Les ordres més usuals són get, mget, put i mput per baixar i pujar fitxers; cd i ls per canviar i llistar directoris; ascii i binary per indicar el mode de transferència; !ordre per executar una ordre de sistema operatiu en el servidor, i help per mostrar la llista d’ordres.

A continuació es mostra la llista d’ordres que implementa el servidor al qual ens hem connectat:

ftp> help 
Commands may be abbreviated. Commands are: 
! debug mdir  sendport  site 
$       dir     mget    put     size 
account disconnect mkdir pwd    status 
append  exit    mls     quit    struct 
ascii   form    mode    quote   system 
bell    get     modtime recv    sunique 
binary  glob    mput    reget   tenex 
bye     hash    newer   rstatus tick 
case    help    nmap    rhelp   trace 
cd      idle    nlist   rename  type 
cdup    image   ntrans  reset   user 
chmod   lcd     open    restart umask 
close   ls      prompt  rmdir   verbose 
cr      macdef  passive runique ? 
delete  mdelete proxy   send

Aquest és un altre exemple de sessió de text amb un client FTP:

[pere@host ~]# ftp localhost 
Name (localhost:root): pere 
Password: 

ftp> pwd 
257 "/home/pere" 
ftp> ls 
-rw-rw-r-- 1 500 501 70 Jun 01 17:14 pere.info 

ftp> cd /tmp 
ftp> ls 
-rw-rw-rw- 1 0 0 1695 Jun 01 17:15 fitxa.odt

ftp> !pwd 
/root 

ftp> get fitxa.odt 
local: fitxa.odt remote: fitxa.odt 

ftp> cd ~ 
250 Directory successfully changed. 

ftp> pwd 
257 "/home/pere" 

ftp> !pwd 
/root 
ftp> get pere.info 
local: pere.info remote: pere.info 

ftp> put fitxa.odt nou.odt 
local: fitxa.odt remote: nou.odt 

ftp> put pere.info /tmp/pere.txt 
local: pere.info remote: /tmp/pere.txt 

ftp> cd pub 
ftp> put pere.info 
local: pere.info remote: pere.info 
553 Could not create file. 

ftp> bye 
221 Goodbye. 

Ús del servei FTP

L’ús del servei FTP exigeix una bona gimnàstica mental, ja que l’usuari ha de ser conscient en tot moment de quin és el seu sistema de fitxers local i quin és el sistema remot. La majoria d’ordres tenen una versió per al sistema de fitxers local (lcd o “local cd”, per exemple) i una altra per al sistema remot (cd).

El seguiment del diàleg mostra les accions següents:

  • Connectar al servidor com a usuari identificat: pere. El directori actiu en el servidor FTP és el dirctori d’inici de l’usuari (en aquest exemple /home/pere), com mostra l’ordre pwd.
  • Canviar el directori actiu en el servidor amb l’ordre cd. Observar que en el client el directori actiu és un altre, de fet en el client sembla que som l’usurari root en el seu dirctori d’inici. L’ordre ”!pwd” executa en el shell del client l’ordre que se li mani.
  • La instrucció get fitxa.odt descarrega el fitxer d’aquest nom del servidor i el desa en el directori actiu del client amb el mateix nom.
  • Es torna a canviar de directori actiu en el servidor (es retorna al dirctori d’inici) i es descarrega el fitxer pere.info. Es desa novament amb el mateix nom en el directori actiu en el client.
  • L’ordre put fitxa.odt nou.odt permet desar el fitxer fitxa.odt que hi ha en el directori actiu del client amb un nom nou en el directori actiu del servidor.
  • Es pot pujar un fitxer indicant tant la ubicació origen en el client com la ubicació de destinació en el servidor. L’ordre put pere.info /tmp/pere.txt desa el fitxer pere.info que hi ha en el directori actiu del client a /tmp en el servidor amb el nom pere.txt.
  • L’últim exemple mostra que no es pot pujar un fitxer a una ubicació en què no es disposa de permisos per fer-ho.

Per obtenir informació d’una ordre en concret del client FTP es pot consultar la pàgina del manual del client, o també es pot usar l’ordre help dins de l’intèrpret client.

[user@host ~]$ ftp
ftp> help get
get       	receive file
ftp> help mget
mget      	get multiple files

Client Wget

La utilitat principal de Wget és descarregar un fitxer o un conjunt de fitxers d’un servidor FTP (també d’altres protocols) de forma desatesa, és a dir, sense fer-ho interactivament fitxer a fitxer. Si no indiquem l’usuari i la contrasenya amb els quals ens volem connectar, es realitza una connexió anònima.

root@server:/# wget ftp://ftp.rediris.es/welcome.msg
--2020-09-26 14:41:11--  ftp://ftp.rediris.es/welcome.msg
           => 'welcome.msg'
Resolving ftp.rediris.es (ftp.rediris.es)... 130.206.13.2, 2001:720:418:cafd::2
Connecting to ftp.rediris.es (ftp.rediris.es)|130.206.13.2|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done.    ==> PWD ... done.
==> TYPE I ... done.  ==> CWD not needed.
==> SIZE welcome.msg ... 93
==> PASV ... done.    ==> RETR welcome.msg ... done.
Length: 93 (unauthoritative)

welcome.msg                       100%[===========================================================>]      93  --.-KB/s    in 0s      

2020-09-26 14:41:12 (3.42 MB/s) - 'welcome.msg' saved [93]

root@server:/# 

El llistat següent mostra, d’entre totes les opcions de wget, les referides al servei FTP:

root@server:/# wget -h
GNU Wget 1.10.1, un baixador de xarxa no interactiu.
Forma d'ús: wget [OPCIÓ]... [URL]...
... output suprimit ...

Opcions de FTP:
       --ftp-user=USUARI       estableix l'usuari d'FTP a USUARI.
       --ftp-password=PASS     estableix la contrasenya d'FTP a PASS.
       --no-remove-listing     no suprimir els fitxers «.listing».
       --no-glob               inhabilita l'ús de comodins de fitxers per a FTP.
       --no-passive-ftp        inhabilita el mode de transferència passiu.
       --preserve-permissions  manté els permisos del fitxer remot
       --retr-symlinks         en mode de recursió, baixa els fitxers
                               apuntats per enllaços simbòlics que no siguen
                               directoris
... output suprimit ...

Client SFTP

La utilitat SFTP és molt potent i és utilitzada per navegadors de fitxers (per exemple, Nautilus) per poder mostrar sistemes de fitxers remots connectats per FTP. Aquest és el seu format:

root@server:/# sftp -h    
usage: sftp [-46aCfpqrv] [-B buffer_size] [-b batchfile] [-c cipher]
          [-D sftp_server_path] [-F ssh_config] [-i identity_file] [-l limit]
          [-o ssh_option] [-P port] [-R num_requests] [-S program]
          [-s subsystem | sftp_server] destination

Vegeu un exemple de sessió client usant SFTP per realitzar una transferència segura de fitxers:

root@server:/# sftp pere@localhost
Connecting to localhost... 
pere@localhost's password: 

sftp> pwd 
Remote working directory: /home/pere 

sftp> ls 
nou.odt    pere.info  

sftp> put pere.info /tmp/pere.bak 
Uploading pere.info to /tmp/pere.bak 
pere.info                                100%   70     0.1KB/s   00:00    

sftp> get /tmp/pere.bak 
Fetching /tmp/pere.bak to pere.bak 
/tmp/pere.bak                            100%   70     0.1KB/s   00:00 

Clients gràfics

Actualment hi ha una gran varietat de clients gràfics que tenen més o menys èxit. Un dels més populars és FileZilla. En la figura podem observar el client FileZilla connectat a la seu ftp.redhat.com.

Figura Pantalla del client gràfic FileZilla

En el sistema GNU/Linux usualment hi ha algun tipus d’aplicació per navegar pel sistema de fitxers, com Konqueror o Nautilus, depenent de l’escriptori instal·lat. Aquestes eines permeten no només navegar per sistemes de fitxers, sinó també connectar a recursos externs per FTP o SFTP. La figura mostra un exemple del funcionament:

Figura Pantalla del client Nautilus connectat a un recurs per SFTP

El navegador com a client

Avui dia una de les eines imprescindibles per als usuaris d’Internet és el navegador (normalment considerat navegador web). Cada usuari utilitza el que prefereix. Alguns dels més destacats actualment són Firefox i Chrome. Els navegadors permeten accedir a molts tipus de continguts diferents, entre els quals s’inclouen recursos FTP.

Simplement cal introduir l’URL indicant l’esquema (schema) adequat:

ftp://<url>

La figura mostra un exemple de mirall (mirror) de descàrregues per FTP per a diferents distribucions de Linux. Els usuaris poden descarregar-se sistemes operatius usant un client navegador qualsevol, com Firefox o Chrome.

Figura Pàgina de descàrregues per FTP de diferents distribucions de Linux
Anar a la pàgina anterior:
Annexos
Anar a la pàgina següent:
Activitats