FTP

De Guifi.net - Wiki Català

25px Aquesta wiki forma part dels materials d'un curs
Curs: Serveis_de_xarxa_LOE,LinuxAdministracioAvancada, DissenyXarxesLinux
Fitxers: gestioRemota.pdf (gestioRemota.odp)
Repositori SVN: https://anonymous@svn.projectes.lafarga.cat/svn/iceupc/ServeisXarxa/
Usuari: anonymous
Paraula de pas: sense paraula de pas
Autors: Josep Vilaplana, Sergi Tur Badenas

El protocol FTP

Algunes de les característiques principals del protocol FTP File Transfer Protocol són:

  • Dissenyat per que els usuaris puguin copiar fitxers entre dos computadors via internet. Té en compte que cada computador:
http://localhost/mediawiki/index.php?title=FTP&action=edit:*Pot tenir un sistema operatiu propi: No tenen per que ser iguals.
  • Els fitxers poden estar en sistemes d’emmagatzemament diferents.
  • Utilitza diferents codis de caràcters.
  • Probablement un dels protocols més antics d’Internet per transferir fitxers. Primera descripció en el RFC 114 (1971). Inicialment usat dins del M.I.T. Després adaptat a Arpanet i finalment en 1980 (RFC 765) es defineix sobre TCP/IP.

Ports i tipus de connexions

Tal com podeu observar si executeu:

$ cat /etc/services | grep ftp
ftp-data	20/tcp
ftp		21/tcp

El protocol FTP utilitza dos ports (al costat del servidor). Cada port s'utilitza per un tipus de connexió. FTP estableix dos connexions:

  • Connexió de control a través del port 21: S'utilitza per controlar el protocol, per exemple iniciar sessió, executar ordres de control, etc. Aquesta connexió l'estableix sempre el client
  • Connexió de dades a través del port 20: Quan s'executa (a través de la connexió de control) una ordre de transferència de dades, les dades s'envien al servidor FTP pel port 20. Aquesta connexió la pot iniciar el client (FTP passiu) o el servidor (FTP actiu).

FTP actiu vs FTP passiu

  • FTP Actiu
  • Connexió de control client servidor al Port 21 servidor
  • Connexió de dades iniciada des del servidor via port 21 a port sense privilegis (>1024) client
  • El FTP Actiu pot fallar en casos on el client està protegit d’Internet mitjançant un tallafocs. La majoria de encaminadors, com per exemple els encaminadors ADSL, utilitzen NAT (masquerade). El NAT no deixa iniciar connexions cap a l'interior de la xarxa del client.

NOTA: Tingueu en compte que a més tampoc pot servir de gaire obrir ports (DNAT) ja que a priori no sabeu quin és el port que utilitzarà el client

.
  • FTP Passiu
  • Connexió de control client servidor Port 21 servidor
  • Connexió de dades iniciada des del client mitjançant un port superior a 1024.
  • Com qui és el client qui inicia la connexió, funciona correctament amb xarxes amb NAT.

NOTA: Per defecte Linux (ordre ftp) treballa en mode passiu, en canvi Windows treballa en mode actiu

Protocol d'inici de sessió FTP

  • Servidor FTP obra port 21 esperant connexió client FTP.
  • Client FTP obra connexió des d’un port efímer (>1024) a port 21 del servidor.
  • Un cop s’ha establert la connexió, aquesta es manté durant tota la sessió FTP.
  • Client envia “USER” amb un nom d’usuari per poder entrar (log in)
  • Servidor envia codi 331 (=estic esperant contrasenya).
  • Client envia “PASS” amb la contrasenya corresponent.
  • S’inicia la sessió en el cas que l’usuari i contrasenya siguin correctes.

Protocol d'inici de sessió anònima FTP

  • Servidor FTP obra port 21 esperant connexió client FTP.
  • Client FTP obra connexió des d’un port efímer (>1024) a port 21 del servidor.
  • Client envia “USER” amb un nom d’usuari per poder entrar (log in)
  • Servidor envia codi 330 (=estic esperant contrasenya).
  • Client envia “PASS” amb el correu electrònic.
  • Freqüentment el servidor fa una cerca inversa de DNS per registrar la IP del client que es connecta. Si no es troba el nom de l’IP del client, el servidor pot prohibir l’accés.


Ordres

Ordres d'autenticació

  • open host <port>: Establim connexió amb el servidor localitzat a l’adreça d’internet host. Si hem especificat el paràmetre opcional port es connectarà al port esmentat del servidor. Automàticament inicia l’etapa d’usuari/contrasenya
  • user nom-usuari <contrasenya> <compte>: Després d’una connexió oberta ens identifiquem al servidor FTP. Si no posem la contrasenya ens la demanarà. Si el servidor ens demana un compte, s’ens demanarà també el compte amb la contrasenya.
  • account <contrasenya>: Aporta una altre contrasenya un cop hem fet login per accedir als recursos del servidor FTP. Si no podem la contrasenya ens la demanarà.
  • close o disconnect: Tanquem la connexió establerta i per tant la sessió FTP. Si hi han macros definides aquestes es perden.

Ordres de control

  • Llistar els continguts del servidor
  • Canviar el directori de treball del servidor
  • Obtenir fitxers del servidor.
  • Pujar fitxers del client al servidor.
  • Ordres Comandes locals com canviar el directori de treball del client (cd), etc.
  • Les comandes passen per la connexió de control (Port TCP 21)
  • Les comandes que demanen dades a retornar per part del servidor han d’establir una connexió de dades (Port TCP 20)

Navegació:

  • cd directori-remot: Canvia el directori de treball de la màquina remota a directori-remot.
  • cdup: Canvia el directori de treball de la màquina remota al directori pare.
  • lcd <directori-local>: Canvia el directori de treball de la màquina local a directori-local si aquest argument és present. En cas contrari, es posa al directori de treball per omissió de l’usuari.
  • pwd: Mostra el nom del directori actual de la màquina remota.
  • ls o nlist <directori-remot> <fitxer-local>: Mostra el contingut del directori de la màquina remota directori-remot. Si no

especifiquem directori-remot es mostra el contingut del directori de treball. Si <fitxer-local> és present s’enviarà la sortida de ls al fitxer especificat. Si aquest darrer argument és “-” ho enviarà a la pantalla. Si el darrer argument no està també s’enviarà a pantalla.

  • mdir o mls <fitxers-remots> <fitxer-local>: Comportament idèntic a ’ls’ excepte que podem especificar múltiples fitxers remots.

Ordres de gestió i transferència de fitxers

Transmissió de fitxers:

  • get o recv fitxer-remot fitxer-local: Rep el fitxer fitxer-remot de la màquina remota i guarda’l en la màquina local amb el nom de <fitxer-local> si és present. En cas contrari mantindrà el seu nom original.
  • newer: Rep el fitxer fitxer-remot de la màquina remota i guarda’l en la màquina local en el cas que la data de modificació de fitxer-remot sigui més recent que el fitxer de la màquina local. Si no existeix el fitxer en la màquina local es considerarà que és nou. Es guardarà amb el nom de <fitxer-local> si el paràmetre és present. En cas contrari mantindrà el seu nom original.
  • put o send fitxer-local <fitxer-remot>: Guarda el fitxer fitxer-local a la màquina remota amb el nom de fitxer <fitxer-remot> si és present. En cas contrari mantindrà el seu nom original.
  • mget fitxers-remots: Rep els fitxers resultants de l’expansió de fitxers-remots de la màquina remota i guarda’ls en la màquina local.
  • glob: commuta a actiu (on) o no actiu (off) l expansió dels noms dels fitxers. És a dir, si els metacaràcters com “*” són interpretats i expandits o es prenen de forma literal com a part del nom de fitxer.
  • mput fitxers-locals: Guarda el fitxers resultants de l’expansió de fitxers-locals a la màquina remota.

Transferències en mode text i transferències en mode binari

  • type tipus: estableix el tipus de fitxer en la transferència. tipus serà ascii o binari (image) ebcdic o “local byte size” (per PDP’s).
  • ascii = type ascii
  • binary = type binary
  • mode mode: Estableix el mode de transferència en la connexió (stream, block,compressed)
  • struct mode: Estableix l’estructura del fitxer en la transferència (file (cap estructura), record, page)
  • form format:

Servidor proftpd

Instal·lació

$ sudo apt-get install proftpd

Servidor FTPD

Instal·lació

La configuració d'un servidor FTP en Linux és, de forma anàloga al cas de Telnet, molt simple. Només cal instal·lar el paquet del dimoni ftp:

 $ sudo apt-get install ftpd

Els usuaris són els intrínsecs del sistema Unix. Per tant, per accedir al servidor FTP només cal entrar la següent url en un navegador (p.e. Firefox o Konqueror):

ftp://localhost 

o

ftp://ip-servidor_ftp

e introduir el nom d'un usuari del sistema i la clau i accedirem al home d'aquest usuari.

El gran inconvenient d'FTP és la seguretat, ja que les comunicacions entre client i servidor no són xifrades. Per aquesta raó, es va crear el protocol SFTP (secure-ftp) que utilitza xifratge en les comunicacions. A l'article Gestió remota parlarem de les diferents opcions d'accés remot de forma segura a servidors (incloent sftp).

Gestió d'usuaris i grups

Els usuaris del servidot FTP són els usuaris del sistema Linux on està instal·lat el sistema. Consulteu les ordres de gestió d'usuaris per tenir més informació sobre com gestionar comptes d'usuari Linux:

A sistemes Debian com Ubuntu a més podeu utilitzar:

Gàbies (jails)

Per qüestions de seguretat sovint s'utilitzen jails (gàbies) per tal de controlar l'accés dels usuaris al sistema. Cal tenir en compte que un compte d'usuari de Linux amb la configuració per defecte pot navegar per gran part del sistema. Consulteu l'ordre chroot.

Amb el servidor vsftpd és molt senzill configurar una gàbia:

$ sudo joe /etc/vsftpd/vsftpd.conf

Descomenteu la línia:

chroot_local_user=YES

Apliqueu els canvis:

$ sudo /etc/init.d/vsftpd restart

Permisos i quotes

Com ja hem comentat, els usuaris d'un servei FTP són usuaris intrínsecs del sistema Linux on s'instal·len i per tant la gestió dels permisos del usuaris d'FTP és la habitual gestió de permisos Linux. Consulteu les ordres:

Pel que fa a les quotes podeu utilitzar el sistema de quotes de Linux

Gestionar l'ample de banda

TODO

Configuració servidor FTP Anònim

Un cop instal·lat el dimoni FTP, per configurar un accés anònim s'ha de crear una compte d'usuari anomenada ftp. La home d'aquest usuari serà el directori base del repositori FTP i finalment s'ha de configurar el repositori ftp per tal de controlar la seguretat del servidor. Aquest link és indica les passes a seguir.

Enllaços:

Client FTP

Trivial FTP. tftp

$ sudo apt-get install tftp

Podeu consultar un exemple d'ús a:

Nanostation#Firmware_recovery

NOTA: També podeu instal·lar el paquet tftp-hpa

Script de còpies de seguretat automàtiques amb FTP

$ sudo joe /path/to/ftp.backup.script.sh
#!/bin/sh
USERNAME="your-ftp-user-name"
PASSWORD="your-ftp-password"
SERVER="your-ftp.server.com"
 
# local directory to pickup *.tar.gz file
FILE="/tmp/backup"
 
# remote server directory to upload backup
BACKUPDIR="/pro/backup/sql"
 
# login to remote server
ftp -n -i $SERVER <<EOF
user $USERNAME $PASSWORD
 cd $BACKUPDIR
mput $FILE/*.tar.gz
quit
EOF
$ chmod +x /path/to/ftp.backup.script.sh

Còpia tots els fitxers *.tar.gz d'una carpeta local a un servidor FTP. Configureu cron

15 30 * * * /path/to/ftp.backup.script.sh

Vegeu també

Eines de l'usuari