Pesquisa de site

Conexões ProFTPD seguras usando protocolo TLS/SSL no RHEL/CentOS 7


Por sua natureza, o protocolo FTP foi projetado como um protocolo inseguro e todos os dados e senhas são transferidos em texto simples, tornando muito fácil o trabalho de terceiros para interceptar todas as transações cliente-servidor FTP, especialmente nomes de usuários e senhas usadas no processo de autenticação.

Requisitos

  1. Instalando o servidor ProFTPD no RHEL/CentOS 7
  2. Habilitar conta anônima para servidor Proftpd no RHEL/CentOS 7

Este tutorial irá guiá-lo sobre como proteger e criptografar a comunicação FTP no servidor ProFTPd no CentOS/RHEL 7 , usando TLS (Transport Layer Security) com extensão FTPS explícita (pense em FTPS como HTTPS é para protocolo HTTP).

Etapa 1: Criar arquivo de configuração do módulo Proftpd TLS

1. Conforme discutido no tutorial anterior do Proftpd sobre conta anônima, este guia também usará a mesma abordagem no gerenciamento de arquivos de configurações futuras do Proftpd como módulos, com a ajuda de enabled_mod e < b>disabled_mod, que hospedarão todos os recursos estendidos do servidor.

Portanto, crie um novo arquivo com seu editor de texto favorito chamado tls.conf no caminho disabled_mod Proftpd e adicione as seguintes diretivas.

nano /etc/proftpd/disabled_mod/tls.conf

Adicione o seguinte trecho de configuração do arquivo TLS.

<IfModule mod_tls.c>
TLSEngine                               on
TLSLog                                  /var/log/proftpd/tls.log
TLSProtocol                             SSLv23
 
TLSRSACertificateFile                   /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile                /etc/ssl/private/proftpd.key

#TLSCACertificateFile                                     /etc/ssl/certs/CA.pem
TLSOptions                      NoCertRequest EnableDiags NoSessionReuseRequired
TLSVerifyClient                         off
TLSRequired                             on
TLSRenegotiate                          required on
</IfModule>

2. Se você usa navegadores ou clientes FTP que não suportam conexões TLS, comente a linha TLSRequired on para permitir conexões TLS e não-TLS ao mesmo tempo e evite a mensagem de erro como na imagem abaixo.

Etapa 2: Criar arquivos de certificado SSL para TLS

3. Depois de criar o arquivo de configuração do módulo TLS. que permitirá FTP sobre TLS no Proftpd, você precisa gerar o certificado e a chave SSL para usar a comunicação segura através do servidor ProFTPD com a ajuda do pacote OpenSSL.

yum install openssl

Você pode usar um único comando longo para gerar certificados SSL e pares de chaves, mas para simplificar as coisas, você pode criar um script bash simples que gerará pares SSL com o nome desejado e atribuirá as permissões corretas para o arquivo de chave.

Crie um arquivo bash chamado proftpd_gen_ssl em /usr/local/bin/ ou em qualquer outro caminho de sistema executável (definido pela variável ` PATH ).

nano /usr/local/bin/proftpd_gen_ssl

Adicione o seguinte conteúdo a ele.

#!/bin/bash
echo -e "\nPlease enter a name for your SSL Certificate and Key pairs:"
read name
 openssl req -x509 -newkey rsa:1024 \
          -keyout /etc/ssl/private/$name.key -out /etc/ssl/certs/$name.crt \
          -nodes -days 365\

 chmod 0600 /etc/ssl/private/$name.key

4. Depois de criar o arquivo acima, atribua-lhe permissões de execução, certifique-se de que o diretório /etc/ssl/private exista e execute o script para criar o certificado e a chave SSL pares.

chmod +x /usr/local/bin/proftpd_gen_ssl
mkdir -p /etc/ssl/private
proftpd_gen_ssl

Forneça ao certificado SSL as informações solicitadas necessárias que sejam autoexplicativas, mas preste atenção ao Nome comum para corresponder ao Nome de domínio totalmente qualificado do seu host – FQDN.

Etapa 3: Habilite TLS no servidor ProFTPD

5. Como o arquivo de configuração TLS criado anteriormente já aponta para o certificado SSL e arquivo de chave corretos, a única coisa que resta é ativar o módulo TLS criando um link simbólico de tls.conf para o diretório enabled-mod e reinicie o daemon ProFTPD para aplicar as alterações.

ln -s /etc/proftpd/disabled_mod/tls.conf  /etc/proftpd/enabled_mod/
systemctl restart proftpd

6. Para desativar o módulo TLS, basta remover o link simbólico tls.conf do diretório enabled_mod e reiniciar o servidor ProFTPD para aplicar as alterações.

rm /etc/proftpd/enabled_mod/tls.conf
systemctl restart proftpd

Etapa 4: Abra o Firewall para permitir a comunicação FTP sobre TLS

7. Para que os clientes acessem o ProFTPD e transfiram arquivos com segurança no Modo Passivo você deve abrir todo o intervalo de portas entre 1024 e 65534 no Firewall RHEL/CentOS, usando os seguintes comandos.

firewall-cmd --add-port=1024-65534/tcp  
firewall-cmd --add-port=1024-65534/tcp --permanent
firewall-cmd --list-ports
firewall-cmd --list-services
firewall-cmd --reload

É isso. Agora seu sistema está pronto para aceitar comunicação FTP por TLS do lado do cliente.

Etapa 5: Acesse ProFTPD por TLS de clientes

8. Os navegadores da Web geralmente não têm suporte integrado para FTP sobre o protocolo TLS, portanto, todas as transações são entregues por FTP não criptografado. Um dos clientes FTP mais excelentes é o FileZilla, que é totalmente de código aberto e pode ser executado em quase todos os principais sistemas operacionais.

Para acessar FTP sobre TLS do FileZilla, abra o Site Manager, escolha FTP em Protocolo e Exigir FTP explícito sobre TLS em No menu suspenso Criptografia, selecione seu Tipo de login como Normal, insira suas credenciais de FTP e clique em Conectar para se comunicar com o servidor.

9. Se for a primeira vez que você se conecta ao servidor ProFTPD, um pop-up com o novo certificado deverá aparecer, marque a caixa que diz Sempre confiar no certificado para o futuro sessões e clique em OK para aceitar o certificado e autenticar no servidor ProFTPD.

Se você planeja usar outros clientes além do FileZilla para acessar recursos FTP com segurança, certifique-se de que eles suportam FTP sobre protocolo TLS. Alguns bons exemplos de clientes FTP que podem falar FTPS são WinSCP para plataformas Windows e gFTP ou LFTP (linha de comando) para NIX.