Protocolos SFTP e FTPS

Prefacio

Hai xusto unha semana estaba a escribir unha redacción sobre o tema indicado no título e estaba ante o feito de que, digamos, non hai tanta información educativa en Internet. Principalmente feitos secos e instrucións de configuración. Por iso, decidín corrixir lixeiramente o texto e publicalo como artigo.

Que é FTP

FTP (File Transfer Protocol) é un protocolo para transferir ficheiros a través dunha rede. É un dos protocolos básicos de Ethernet. Apareceu en 1971 e traballou inicialmente nas redes DARPA. Actualmente, como HTTP, a transferencia de ficheiros baséase nun modelo que consiste nun conxunto de protocolos TCP/IP (Transmission Control Protocol/Internet Protocol). Definido en RFC 959.

O protocolo define o seguinte:

  • Como se levará a cabo a comprobación de erros?
  • Método de empaquetado de datos (se se usa empaquetado)
  • Como indica o dispositivo de envío que rematou unha mensaxe?
  • Como indica o dispositivo receptor que recibiu unha mensaxe?

Comunicación entre cliente e servidor

Vexamos máis de cerca os procesos que ocorren durante a operación FTP. A conexión é inicializada polo intérprete de protocolo do usuario. O intercambio é controlado a través dunha canle de control no estándar TELNET. Os comandos FTP son xerados polo intérprete de protocolo do usuario e enviados ao servidor. As respostas do servidor tamén se envían ao usuario a través da canle de control. En xeral, o usuario ten a posibilidade de establecer contacto co intérprete de protocolo do servidor e por medios distintos ao intérprete do usuario.

A principal característica do FTP é que usa conexións duais. Un deles úsase para enviar comandos ao servidor e prodúcese por defecto a través do porto TCP 21, que se pode cambiar. A conexión de control existe mentres o cliente se comunique co servidor. A canle de control debe estar aberta ao transferir datos entre máquinas. Se está pechado, detense a transmisión de datos. A través do segundo, prodúcese a transferencia directa de datos. Ábrese cada vez que se produce unha transferencia de ficheiros entre o cliente e o servidor. Se se transfiren varios ficheiros á vez, cada un deles abre a súa propia canle de transmisión.

FTP pode funcionar en modo activo ou pasivo, cuxa elección determina como se establece a conexión. No modo activo, o cliente crea unha conexión de control TCP co servidor e envía o seu enderezo IP e un número de porto de cliente arbitrario ao servidor, e despois agarda a que o servidor inicie unha conexión TCP con este enderezo e número de porto. No caso de que o cliente estea detrás dun firewall e non poida aceptar unha conexión TCP entrante, pódese usar o modo pasivo. Neste modo, o cliente utiliza o fluxo de control para enviar un comando PASV ao servidor e, a continuación, recibe do servidor o seu enderezo IP e o seu número de porto, que despois o cliente utiliza para abrir un fluxo de datos desde o seu porto arbitrario.

É posible que os datos sexan transferidos a unha terceira máquina. Neste caso, o usuario organiza unha canle de control con dous servidores e organiza unha canle de datos directa entre eles. Os comandos de control pasan polo usuario e os datos pasan directamente entre os servidores.

Cando se transmiten datos a través dunha rede, pódense utilizar catro representacións de datos:

  • ASCII - usado para texto. Os datos convértense, se é necesario, desde a representación de caracteres no servidor emisor a "ASCII de oito bits" antes da transmisión e (de novo, se é necesario) á representación de caracteres no host receptor. En particular, cámbianse os caracteres de nova liña. Como resultado, este modo non é adecuado para ficheiros que conteñan algo máis que texto simple.
  • Modo binario: o dispositivo emisor envía cada ficheiro byte a byte e o destinatario almacena o fluxo de bytes ao recibir. Recoméndase a compatibilidade con este modo para todas as implementacións de FTP.
  • EBCDIC: úsase para transferir texto simple entre hosts na codificación EBCDIC. En caso contrario, este modo é semellante ao modo ASCII.
  • Modo local: permite que dous ordenadores con idéntica configuración envíen datos no seu propio formato sen converterse en ASCII.

A transferencia de datos pódese realizar en calquera dos tres modos:

  • Modo de fluxo: os datos envíanse como un fluxo continuo, liberando a FTP de realizar calquera procesamento. Pola contra, todo o procesamento realízao TCP. O indicador de fin do ficheiro non é necesario excepto para separar os datos en rexistros.
  • Modo de bloqueo: FTP divide os datos en varios bloques (bloque de cabeceira, número de bytes, campo de datos) e despois transmíteos a TCP.
  • Modo de compresión: os datos comprimen mediante un único algoritmo (normalmente codificando lonxitudes de execución).

O servidor FTP é un servidor que ofrece a posibilidade de utilizar o protocolo de transferencia de ficheiros. Ten certas características que o distinguen dos servidores web convencionais:

  • Requírese autenticación de usuario
  • Todas as operacións realízanse dentro da sesión actual
  • Capacidade para realizar varias accións co sistema de ficheiros
  • Utilízase unha canle separada para cada conexión

O cliente FTP é un programa que permite conectarse a un servidor remoto mediante FTP e tamén realizar as accións necesarias nel con elementos do sistema de ficheiros. O cliente pode ser un navegador, na barra de enderezos do cal debes introducir o enderezo, que é o camiño a un directorio ou ficheiro específico no servidor remoto, de acordo co diagrama de bloques de URL xeral:

ftp://user:pass@address:port/directory/file

Non obstante, o uso dun navegador web neste contexto só permitirá ver ou descargar os ficheiros de interese. Para aproveitar plenamente todas as vantaxes do FTP, debes utilizar un software especializado como cliente.

A autenticación FTP usa un esquema de nome de usuario/contrasinal para conceder acceso. O nome de usuario envíase ao servidor co comando USER e o contrasinal co comando PASS. Se a información proporcionada polo cliente é aceptada polo servidor, entón o servidor enviará unha invitación ao cliente e comeza a sesión. Os usuarios poden, se o servidor admite esta función, iniciar sesión sen proporcionar credenciais, pero o servidor só pode conceder un acceso limitado para tales sesións.

O servidor que proporciona o servizo FTP pode proporcionar acceso FTP anónimo. Os usuarios adoitan iniciar sesión con "anónimo" (pode distinguir entre maiúsculas e minúsculas nalgúns servidores FTP) como nome de usuario. Aínda que normalmente se lles pide aos usuarios que proporcionen o seu enderezo de correo electrónico en lugar dun contrasinal, non se realiza ningunha verificación. Moitos servidores FTP que proporcionan actualizacións de software admiten o acceso anónimo.

Diagrama de protocolo

A interacción cliente-servidor durante unha conexión FTP pódese visualizar do seguinte xeito:

Protocolos SFTP e FTPS

FTP seguro

O FTP non estaba pensado orixinalmente para ser seguro, xa que estaba destinado a comunicacións entre varias instalacións e axencias militares. Pero co desenvolvemento e difusión de Internet, o perigo de acceso non autorizado aumentou moitas veces. Había que protexer os servidores de varios tipos de ataques. En maio de 1999, os autores da RFC 2577 resumiron as vulnerabilidades na seguinte lista de problemas:

  • Ataques ocultos (ataques de rebote)
  • Ataques de parodia
  • Ataques de forza bruta
  • Captura de paquetes, olfateo
  • Roubo de porto

O FTP normal non ten a capacidade de transferir datos en forma cifrada, polo que os atacantes poden interceptar nomes de usuario, contrasinais, comandos e outra información de xeito sinxelo e sinxelo. A solución habitual a este problema é utilizar versións "seguras" protexidas por TLS do protocolo vulnerable (FTPS) ou outro protocolo máis seguro, como SFTP/SCP, provisto coa maioría das implementacións do protocolo Secure Shell.

FTPS

FTPS (FTP + SSL) é unha extensión do protocolo estándar de transferencia de ficheiros que engade á súa funcionalidade básica a creación de sesións cifradas mediante o protocolo SSL (Secure Sockets Layer). Hoxe, a protección é proporcionada polo seu TLS analóxico máis avanzado (Transport Layer Security).

SSL

O protocolo SSL foi proposto por Netscape Communications en 1996 para garantir a seguridade e privacidade das conexións a Internet. O protocolo admite a autenticación de cliente e servidor, é independente da aplicación e é transparente para os protocolos HTTP, FTP e Telnet.

O protocolo SSL Handshake consta de dúas etapas: autenticación do servidor e autenticación do cliente opcional. Na primeira fase, o servidor responde á solicitude do cliente enviando o seu certificado e os seus parámetros de cifrado. A continuación, o cliente xera unha chave mestra, cífraa coa clave pública do servidor e envíaa ao servidor. O servidor descifra a chave mestra coa súa clave privada e autentícase ante o cliente devolvendo unha mensaxe autenticada pola chave mestra do cliente.

Os datos posteriores cífranse e autentícanse con claves derivadas desta chave mestra. No segundo paso, que é opcional, o servidor envía unha solicitude ao cliente, e o cliente autentica-se ante o servidor devolvendo a solicitude coa súa propia sinatura dixital e un certificado de clave pública.

SSL admite unha variedade de algoritmos criptográficos. Durante o establecemento da comunicación, utilízase o sistema criptográfico de clave pública RSA. Despois do intercambio de claves, utilízanse moitos cifrados diferentes: RC2, RC4, IDEA, DES e TripleDES. Tamén se usa MD5, un algoritmo para crear un resumo de mensaxes. A sintaxe dos certificados de clave pública descríbese en X.509.

Unha das vantaxes importantes de SSL é a súa completa independencia software-plataforma. O protocolo desenvólvese sobre os principios de portabilidade, e a ideoloxía da súa construción non depende das aplicacións nas que se utilice. Ademais, tamén é importante que outros protocolos poidan ser superpostos de forma transparente sobre o protocolo SSL; ben para aumentar aínda máis o grao de protección dos fluxos de información de destino ou para adaptar as capacidades criptográficas de SSL para algunha outra tarefa ben definida.

Conexión SSL

Protocolos SFTP e FTPS

A canle segura proporcionada por SSL ten tres propiedades principais:

  • A canle é privada. O cifrado úsase para todas as mensaxes despois dun diálogo sinxelo que serve para determinar a clave secreta.
  • A canle está autenticada. O lado do servidor da conversa sempre está autenticado, mentres que o lado do cliente é opcionalmente autenticado.
  • A canle é fiable. O transporte de mensaxes inclúe a comprobación da integridade (usando o MAC).

Características do FTPS

Existen dúas implementacións de FTPS, que utilizan diferentes métodos para proporcionar seguridade:

  • O método implícito implica usar o protocolo SSL estándar para establecer unha sesión antes de enviar datos, o que, á súa vez, rompe a compatibilidade cos clientes e servidores FTP habituais. Para a compatibilidade con clientes que non admiten FTPS, utilízase o porto TCP 990 para a conexión de control e para a transferencia de datos úsase o 989. Isto mantén o porto estándar 21 para o protocolo FTP. Este método considérase obsoleto.
  • Explícito é moito máis cómodo, xa que usa comandos FTP estándar, pero cifra os datos ao responder, o que permite utilizar a mesma conexión de control tanto para FTP como para FTPS. O cliente debe solicitar explícitamente a transferencia de datos segura do servidor e, a continuación, aprobar o método de cifrado. Se o cliente non solicita unha transferencia segura, o servidor FTPS ten dereito a manter ou pechar a conexión non segura. Engadiuse un mecanismo de autenticación e negociación de seguridade de datos baixo RFC 2228 que inclúe o novo comando FTP AUTH. Aínda que este estándar non define de forma explícita os mecanismos de seguridade, si especifica que o cliente debe iniciar unha conexión segura mediante o algoritmo descrito anteriormente. Se o servidor non admite conexións seguras, debe devolverse un código de erro de 504. Os clientes FTPS poden obter información sobre os protocolos de seguranza admitidos polo servidor mediante o comando FEAT; apoios. Os comandos FTPS máis comúns son AUTH TLS e AUTH SSL, que proporcionan seguridade TLS e SSL, respectivamente.

SFTP

SFTP (Secure File Transfer Protocol) é un protocolo de transferencia de ficheiros de capa de aplicación que se executa enriba dunha canle segura. Non se debe confundir con (Simple File Transfer Protocol), que ten a mesma abreviatura. Se FTPS é simplemente unha extensión de FTP, entón SFTP é un protocolo separado e non relacionado que usa SSH (Secure Shell) como base.

Concha segura

O protocolo foi desenvolvido por un dos grupos do IETF chamado Secsh. A documentación de traballo para o novo protocolo SFTP non se converteu nun estándar oficial, senón que comezou a utilizarse activamente para o desenvolvemento de aplicacións. Posteriormente, lanzáronse seis versións do protocolo. Non obstante, o aumento gradual da funcionalidade nel levou a que o 14 de agosto de 2006 se decidiu deixar de traballar no desenvolvemento do protocolo debido á finalización da tarefa principal do proxecto (desenvolvemento SSH) e á falta de cun nivel de experto suficiente para pasar ao desenvolvemento dun protocolo de sistema de ficheiros remoto completo.

SSH é un protocolo de rede que permite o control remoto do sistema operativo e o túnel de conexións TCP (por exemplo, para a transferencia de ficheiros). Similar en funcionalidade aos protocolos Telnet e rlogin, pero, a diferenza deles, cifra todo o tráfico, incluídos os contrasinais transmitidos. SSH permite escoller diferentes algoritmos de cifrado. Os clientes SSH e os servidores SSH están dispoñibles para a maioría dos sistemas operativos de rede.

SSH permítelle transferir de forma segura case calquera outro protocolo de rede nun ambiente non seguro. Así, non só pode traballar de forma remota no seu ordenador a través do shell de comandos, senón que tamén pode transmitir un fluxo de audio ou vídeo (por exemplo, desde unha cámara web) a través dunha canle cifrada. SSH tamén pode usar a compresión dos datos transmitidos para o cifrado posterior, o que é conveniente, por exemplo, para lanzar de forma remota os clientes X WindowSystem.

A primeira versión do protocolo, SSH-1, foi desenvolvida en 1995 polo investigador Tatu Ulönen da Universidade Tecnolóxica de Helsinki (Finlandia). SSH-1 foi escrito para proporcionar unha maior privacidade que os protocolos rlogin, telnet e rsh. En 1996, desenvolveuse unha versión máis segura do protocolo, SSH-2, que é incompatible con SSH-1. O protocolo gañou aínda máis popularidade e no ano 2000 tiña aproximadamente dous millóns de usuarios. Actualmente, o termo "SSH" adoita significar SSH-2, porque A primeira versión do protocolo agora practicamente non se utiliza debido a importantes deficiencias. En 2006, o grupo de traballo IETF aprobou o protocolo como estándar de Internet.

Hai dúas implementacións comúns de SSH: comercial privada e de código aberto gratuíto. A implementación gratuíta chámase OpenSSH. En 2006, o 80% dos ordenadores en Internet utilizaban OpenSSH. A implementación propietaria está desenvolvida por SSH Communications Security, unha subsidiaria totalmente propiedade de Tectia Corporation, e é gratuíta para uso non comercial. Estas implementacións conteñen case o mesmo conxunto de comandos.

O protocolo SSH-2, a diferenza do protocolo telnet, é resistente aos ataques de espionaxe de tráfico ("sniffing"), pero non é resistente aos ataques man-in-the-middle. O protocolo SSH-2 tamén é resistente aos ataques de secuestro de sesión, xa que é imposible unirse ou secuestrar unha sesión xa establecida.

Para evitar ataques de man-in-the-middle ao conectarse a un host cuxa clave aínda non é coñecida polo cliente, o software do cliente móstralle ao usuario unha "pegada dixital clave". Recoméndase comprobar coidadosamente a "instantánea clave" que mostra o software cliente coa instantánea da clave do servidor, preferiblemente obtida a través de canles de comunicación fiables ou en persoa.

O soporte SSH está dispoñible en todos os sistemas tipo UNIX, e a maioría ten un cliente e un servidor ssh como utilidades estándar. Hai moitas implementacións de clientes SSH para sistemas operativos non UNIX. O protocolo gañou gran popularidade tras o desenvolvemento xeneralizado de analizadores de tráfico e métodos para interromper o funcionamento das redes locais, como solución alternativa ao protocolo Telnet inseguro para xestionar nodos importantes.

Comunicación mediante SSH

Para traballar a través de SSH, necesitas un servidor SSH e un cliente SSH. O servidor escoita as conexións das máquinas cliente e, cando se establece unha conexión, realiza a autenticación, despois de que comeza a dar servizo ao cliente. O cliente úsase para iniciar sesión nunha máquina remota e executar comandos.

Protocolos SFTP e FTPS

Comparación con FTPS

O principal que distingue SFTP do estándar FTP e FTPS é que SFTP cifra absolutamente todos os comandos, nomes de usuario, contrasinais e outra información confidencial.

Tanto os protocolos FTPS como SFTP utilizan unha combinación de algoritmos asimétricos (RSA, DSA), algoritmos simétricos (DES/3DES, AES, Twhofish, etc.), así como un algoritmo de intercambio de claves. Para a autenticación, FTPS (ou, para ser máis precisos, SSL/TLS sobre FTP) usa certificados X.509, mentres que SFTP (protocolo SSH) usa claves SSH.

Os certificados X.509 inclúen unha clave pública e algunha información sobre o certificado do propietario. Esta información permite, por outra banda, verificar a integridade do propio certificado, a autenticidade e o propietario do certificado. Os certificados X.509 teñen unha clave privada correspondente, que normalmente se almacena por separado do certificado por motivos de seguridade.

A clave SSH contén só a clave pública (a clave privada correspondente gárdase por separado). Non contén ningunha información sobre o propietario da chave. Algunhas implementacións de SSH usan certificados X.509 para a autenticación, pero en realidade non verifican toda a cadea de certificados; só se usa a clave pública (o que fai que dita autenticación sexa incompleta).

Conclusión

O protocolo FTP, sen dúbida, aínda xoga un papel importante no almacenamento e distribución de información na rede a pesar da súa venerable idade. É un protocolo cómodo, multifuncional e estandarizado. Sobre a súa base construíronse moitos arquivos de arquivos, sen os cales o traballo técnico non sería tan eficaz. Ademais, é fácil de configurar e existen programas de servidor e cliente para case todas as plataformas actuais e non tan actuais.

Á súa vez, as súas versións protexidas solucionan o problema da confidencialidade dos datos almacenados e transmitidos no mundo moderno. Ambos os novos protocolos teñen os seus pros e contras e teñen papeis lixeiramente diferentes. Naquelas áreas nas que se necesita un arquivo de ficheiros, é preferible utilizar FTPS, especialmente se o FTP clásico xa se utilizou antes. SFTP é menos común pola súa incompatibilidade co protocolo antigo, pero é máis seguro e ten máis funcionalidades, xa que forma parte do sistema de xestión remota.

Lista de fontes

Fonte: www.habr.com

Engadir un comentario