Teoría sobre o servizo FTP

De MediaWiki
Ir a la navegación Ir a la búsqueda

Obxetivos

  • Coñecer os protocolos empregados na transferencia de ficheiros a través da rede
  • Manexar os diferentes tipos de cliente do protocolo FTP
  • Diferenciar os modos de conexión dos servidores FTP
  • Identificar os axentes que interveñen na comunicación entre un cliente e un servidor FTP
  • Recoñecer os diferentes tipos de petición e resposta intercambiados entre clientes e servidores e os códigos máis coñecidos
  • Coñecer os modos de transferencia
  • Instalar e configurar servicios FTP

FTP

File Transfer Protocol (FTP) ou protocolo de transferencia de ficheiros é un protocolo da capa de aplicación sobre a capa TCP que permite a transferencia de ficheiros entre sistemas conectados entre sí.

Características e funcionamento

Está documentado no del RFC 959 e basease na arquitectura cliente-servidor; desde un cliente existe a posibilidade de conectar a un servidor para descargar ficheiros desde él ou para enviarlle os nosos propios ficheiros, independientemente do sistema de ficheiros do sistema operativo do cliente ou do servidor.

A transferencia de ficheiros pode ser de todo tipo: imáxenes, vídeos, páxinas web, texto, etc.

A interfaz de transferencia pode ser mediante liña de comandos ou modo gráfico (co propio explorador do sistema operativo, cos navegador ou con aplicacións específicas coma WinSCP).

Foi durante moito tempo un dos métodos más usados en Internet para a súa fin de transferencia de ficheiros; pero ten un gran inconvinte que fai que o seu uso esté cada vemnos recomendado. Non foi pensado para garantir a seguridade, e se non se configura correctamente buscando un cifrado noutras capas non se pode garantir que non haiba un acceso fraudulento á información que se transfire. Porén, é necesario usar este servizo acompañado dalgún protocolo de seguridade coma pode ser SSL.

No seu funcionamento, o cliente solicita a conexión para transferir os archivos e o servidor é o que ofrece ou almacena archivos dependendo da solicitude do cliente. Polo tanto, é un servicio orientado a conexión que necesita establecer una conexión para poder transferir archivos.

O servidor de FTP funciona a través dos seguintes portos configurables:

  1. Porto 21: control da conexión.
  2. Porto 20 ou maior de 65535: transferencia de datos.

Hai que ter en cuenta que estos puertos son modificables mediante os correspondentes ficheiros de configuración; pero eses son os portos por defecto.

Modos de conexión

Existen dous modos de conexión por parte do cliente para establecer a comunicación co servidor: modo activo e pasivo.

Modo activo

No modo activo o servidor crea sempre unha canle para datos polo porto 20, mentras que o cliente asocia un porto aleatorio maior que 1024. O cliente envía un paquete ó servidor, indicando o número de porto para transferir ficheiros.

Pódese observar na siguiente figura o modo activo en funcionamiento:

Modo pasivo

En modo pasivo é o cliente quen comeza a conexión co servidor para evitar bloqueos de conexión mediante configuracións NAT ou cortafuegos.

Neste modo, o cliente inicia ambas conexións, control e datos. Se non hai cortafuegos no haberá ningún problema.

E de existir o cortafuegos, o servidor, que intenta conectarse, devolve a resposta por un porto diferente, que fai que o cortafuegos bloquee a conexión.

Con cortafuegos o diagrama da conexión sería o seguiente:

Peticións, respostas e códigos de estado

Os comandos pódense ver no artigo da Wikipedia.

Os códigos de estado pódense consultar no apartado 4.2 do RFP 959 ou no artigo da Wikipedia, e tamén resumidos no artigo xeneral de FTP.

Accesos

Tipos de usuarios: anónimos, autenticados e virtuais

Existen tres grandes grupos de usuarios que se poden conectar ó servidor para almacenar ou recuperar información:

  1. Usuarios anónimos: teñen acceso pero os permisos están limitados polo sistema de ficheiros. Para conectarse o sistema usan unha conta simbólica como anonymous e como password unha conta de correo electrónico. Este tipo de usuarios poden supoñer un burato na seguridade polo que é preciso tomar as medidas oportunas para evitar posibles accesos non desexados á información.
  2. Usuarios autenticados: son aqueles que son propios do sistema operativo. Requieren dun usuario e contrasinal para entrar no servidor FTP.
  3. Usuarios virtuais: creanse independentemente do sistema operativo cos seus directorios home axeitados e creados para tal fin. Servidores coma proFTPd poseen este tipo de usuarios que permiten non comprometer a seguridade do sistema, xa que non están creados no mesmo. A validación destes usuarios non ten por qué realizala o sistema, sino que pode ser nun ficheiro de texto, nunha base de datos coma mariadb ou nun servizo de directorio coma LDAP.

Tipos de accesos ó servicio

Pódese acceder ó servicio de FTP desde un cliente de diferentes xeitos: desde unha rede local ou desde Internet.

Permisos, cuotas e límites de ancho de banda

Permisos

Os permisos e as cuotas son unha parte importante da configuración do servicio FTP; é habitual controlar o espazo e os permisos de lectura e escritura a usuarios que entran no sistema desde o exterior. De non facelo así aumenta o risgo de ameazas: desde entrar noutro directorio que non sexa o dedicado para o FTP ata que se caiga o sistema por falta de espazo.

É preciso coñecer cómo funcionan os permisos en Linux e cómo a un usuario se lle asignan os permisos.

Cando se crea un ficheiro ou carpeta en Linux existen tres niveiss de acceso que permiten controlar os seus accesos:

  1. Nivel propietario: son os permisos que se asignan o propietario do archivo ou directorio
  2. Nivel grupo: son aqueles que se asignan os grupos de usuarios (un grupo pode ter de 1 a n usuarios)
  3. Nivel usuarios: corresponde a todos os usuarios definidos no sistema operativo que no son dos anteriores niveis

Os permisos en Linux son tres:

  1. Lectura (r): o usuario poderá ver o contenido e visualizar un ficheiro ou directorio. Si está indicado con (-) non poderá visualizalo.
  2. Escritura (w): o usuario poderá modificar o contido do archivo ou directorio.
  3. Execución (x): o usuario poderá executar o archivo. Normalmente son aplicados estes permisos a archivos executables.

E se lle poden aplicar a cada un dos niveis anteriores. Por exemplo, cuando creamos un ficheiro ou directorio co usuario root, e listamos o directorio co comando ls -l, salería algo semellante:

O comando ls –l permite coñecer os permisos que tee cada ficheiro ou directorio. 

Cada unha das partes que acompañan a cada ficheiro ou directorio:

  • O primeiro carácter identifica os seguientes tipos de ficheiros:
    • (d): é un directorio.
    • (-): é un ficheiro.
    • (l): representa un enlace (link).
    • (b): indica que é un archivo binario.
    • (p): é un archivo especial de cauce (tubería ou pipe).
    • (c): é un archivo de caracteres especiais, como pode ser unha impresora.
  • Despois do primeiro carácter siguenlle rwxr-xr-x, que son os permisos correspondientes:
    • os seus primeiros tres caracteres o propietario do directorio ou ficheiro
    • os tres siguientes son os correspondentes ó grupo
    • os últimos tres caracteres están relacionados cos demás usuarios do sistema operativo
  • Después de los caracteres anteriores, aparece un número que indica el número de enlaces al archivo. – El primer root corresponde al usuario propietario del archivo o directorio.
    • El segundo root corresponde al grupo al que pertenece el archivo.
    • As seguientes columnas representan o tamaño, fecha e hora da última modificación do ficheiro ou directorio.
    • A última columna é o nome do directorio ou ficheiro.

Para asignar permisos en Linux úsanse os siguientes comandos: 1. chmod: este comando puede modificar o permiso do propietario (u), os grupos (g) e os outros (o). Pódese usar tamén o sistema octal para aplicar permisos. La sintaxe xeral do comando é a seguinte:

chmod [opciones] modo-octal ficheiro.

O modo octal relacionado cos permisos aplicados ás tres columnas sería o seguiente:

Permisos en octal
Número decimal Binario Permisos efectivos
0 000
1 001
2 010
3 011
4 100 r--
5 101 r-x
6 110 rw-
7 111 rwx

Por exemplo, se quremos asignar permisos de lectura (r) e escritura (w) ó ficheiro prueba.txt o usuario propietario unicamente:

chmod 600 proba.txt 
chmod u+rw proba.txt

2. chown: permite cambiar o propietario do ficheiro ou directorio. A estructura xeral do comando sería a seguiente:

chown [opciones] [usuario] [:grupo] cheros

Por exemplo, se queremos facer propietario a pepe do ficheiro proba.txt sería da seguinte forma:

chown pepe proba.txt

Cuotas

É preciso instalar o servizo quota no sistema operativo e realizar a súa configuración

  1. Instalación
    apt-get install quota
  2. Configuración
    Configurar o ficheiro /etc/fstab coas opcións usrquota e grpquota. Pódese aplicar a todo o sistema de ficheiros pero o aconsable é facelo no directorio /home dos usuarios
  3. Exeecutamos para que se apliquen os cambios:
    mount –o remount /home
    mount
  4. Comprobamos o funcionamento:
    quotacheck –augmv /home
  5. Por defecto as quotas están habilitadas. Podemos habilitar/deshabilitar:
    quotaon –ugv /home
    quotaoff –ugv /home
  6. Unha vez activado o servizo de cuota co comando quotaon, podemos crear cuota, por exemplo ó directorio proba e usuario do mesmo nome que se atopa dentro de home:
    setquota –u proba 2048 4096 0 0 /home
Permisos en octal
Comando Descrición
proba Usuario ó que se lle aplica a cuota
2048 Indica que o usuario proba tene 2048 bloques de 1k para almacenar información.
4096 Se o usuario usa más de 4095 bloques de 1k obtenrá unha mensaxe de aviso de que sobrepasou o límite e non poderá escribir máis no disco.
0 Indica que no hai límite para soft no inodos.
0 Indica que non hai límite para hard no inodos.
/home Áplica á partición de home.
  1. Almacenamos no directorio proba información que sobrepase o límite colocado anteriormente. E executamos:
    • edquota -u proba
      Se o fireramos por grupo, o comando sería:
      edquota -g NombreGrupo
Opcións de edquota
Comando Descrición
Filesystem Ruta de montaxe de /home.
Blocks Indica cal é o número de bloques posibles usados polo usuario en Kb.
Soft Indicar o número de bloques en Kb antes de recibir un warning.
Hard Indica o límite absoluto en Kb que non poderá sobrepasar en ningún caso.
Inodes Especifica o número de ficheiros que pode usar o usuario.
Soft Indica que non hai límite no número de inodos.
Hard Indica que non hai límite no número de inodos.
  1. Listamos a cuota do usuario en cuestión ou de todos:
    • quota –u proba (amosa a cuota do usuario proba)
      repquota –a (amosa a cuota de todos os usuarios)
      Pódese establecer un tempo de gracia (grace) que dalle o usuario un tempo para poder liberar espacio; por defecto na instalación é de 6 días (axústase en segundos). Establécense 180 segundos para o usuario proba

Tipos de trasferencia

É preciso distinguir dous dous tipos de ficheiros cando ímos facer unha transferencia para que a información que se traspase non sexa inconsistente:

  • Archivos binarios: son aqueles que nno son de texto e están codificados. Por exemplo: as imágenes, archivos de audio e vídeo, executables compilados, etc. O comando para poder cambiar o tipo de ficheiro é binary.
  • Archivos de texto: son ficheiros de tipo ASCII, lexibles totalmente. Represéntanse mediante 7 díxitos binarios en base decimal para representar a información. Exemplos deste tipo: os que terminan en .txt, .xml, .html, .ps, etc. O comando para poder cambiar ó tipo de fichero é o comando ascii.

O servizo FTP permite configurar as opcións axeitadas na transferencia de ficheiros cos comandos ascii e binary.

FTPS

Unha das debilidades do protocolo FTP é a seguridade. Por iso, máis de 50 anos despois da súa aparación, está chegando a súa morte. O primeiro paso foi o anuncio de que certos navegadores xa non lle van dar soporte, que cristalizou na versión 90 de Firefox.

Como dicíamos, o feito de que as comunicacións viaxen en claro dota de moi pouca seguridade ó uso de nome de usuario e contrasinal para autenticarse.

Pódese facer uso de FTPS (FTP Secure) para paliar estas limitacións. Esta extensión de FTP cifra as comunicacións mediante protocolos de cifrado SSL/TLS facendo a comunicación segura. Existen dous métodos:

  • Ímplicito ou FTPS. Funciona de xeito similar a HTTPS. A seguridade habilítase con SSL tan pronto coma se inicia a conexión. O porto predeterminado é o 990. Foi a primeira versión de FTP encriptado, e aínda que obsoleto todavía é usado ampliamente
  • Explícito ou FTPES. A comunicación comeza coma un FTP simple a través do porto 21, pero con comandos FTP especiales actualizase o cifrado a SSL/TLS. Esta actualización faise obviamente antes de enviar as credencais. É o método preferido.

Mais ningun dos navegadores web admite FTPS ou FTPES, polo que fará falta o uso dunha terceira ferramenta.

Finalmente, outra alternativa ó FTP tradicional é SFTP (Secure File Transfer Protocol ou Protocolo seguro de transferencia de ficheiros). SFTP, a diferenza de FTPS/FTPES, non é unha adaptación do protocolo FTP para que traballe de xeito seguro sobre SSL/TLS, se non unha implementación nova que se executa sobre SSH utilizando por defecto o porto 22.

As solucións SSL/TLS requiren de un certificado dixital para facer seguras as conexións.
Podes seguir estes pasos para obter un certificado dixital válido e utilizalo no teu servidor FTP.
Podes ver comparativa máis detallada entre as diferentes alternativas FTP.

TFTP

O protocolo TFTP (Trivial File Transfer Protocol ou Protocolo de transferencia de ficheiros trivial) é un protocolo de aplicación descrito na RFC 1350 que, xunto con `BOOTP, encárgase do arranque de máquinas sen disco nunha rede local.

Entre as súas características:

  • É un protocolo sinxelo sen autenticación (non se produce intercambio de usuario e contrasinal)
  • A implementación do protocolo é de reducido tamaño (normalmente grabado en memorias PROM).
  • Traballa sobre UDP (porto 69). Como UDP non é fiable, debe ser o propio TFTP quen xestione a perda e duplicado de paquetes.
  • Ten tres modos de transferencia:
    • NetASCII: Utiliza caracteres ASCII de 8 bits (o cliente que recibe os datos debe traducilos o seu propio formato)
    • Octet: Trata os datos coma bytes de 8 bits sen interpretación
    • Mail: Definido no RFC 783, actualmente obsoleto segundo a RFC 1350.

Resumo

  • FTP é un protocolo que foi deseñado para transferir ficheiros coa maior velocidade...
    • pero que non ten en conta a seguridade (o tráfico viaxa en claro sen cifrarse)
  • Os clientes FTP
    • deben enviar o seu login e password (acceso autenticado)
    • aínda que pode ser configurado o acceso anónimo
    • e existe un amplio repertorio de comandos para operar
  • A comunicacion pode establecerse
    • en modo activo
    • en modo pasivo
    É importante coñecer os modos de conexión do cliente ó servidor, sobre todo se hai unha devesa que controle a conexión de entrada e saida
  • O servidor mantén
    • unha canle de control para o intercambio de comandos e as súas respostas (formadas por código de estado e unha mensaxe informativa).
    • unha canle de datos para as transferencias, unha vez establecida a conexión mediante a canle de control
  • Cada conta de usuario
    • accederá a un directorio remoto do servidor cuns permisos determinados
      • que serán proporcionados polas directivas de acceso do servizo
      • e polos permisos propios do sistema de ficheiros
  • Pode ser convinte modificar o tipo de transferencia
    • binary para transferencia de ficheiros binarios
    • text/ascii para ficheiros de texto
  • TFTP é un protocolo simple de transferencia de ficheiros que se utiliza conxuntamente con BOOTP para permitir o arranque de máquinas a través da rede
  • FTPS ou SFTP son implementacións alternativas que dotan de seguridade ó protocolo FTP
    Debido as ameazas de interceptación de información,e prácticamente indispensable configurar un protocolo de comunicación seguro
  • Outras consideracións importantes de seguridade son
    valorar non permitir o acceso anónimo
    asegurar que os permisos de lectura, escritura e execución son axeitados
    asegurar o engaoilamento dos usuarios para que non accedan a outras rutas do servidor
    usar un sistema de cuotas para limitar os espazos de disco usados por cada usuario
    ter actualizada a última versión do servidor, e estar atento por se xurden vulnerabilidades

Bibliografía

Referencias