Alterando o IPTables para Permitir FTP sobre TLS Usando Portas Passivas

1

Estou usando o Arch Linux. Eu segui um tutorial para alterar /etc/iptables/iptables.rules para permitir apenas as portas básicas para o meu servidor web. Eu também usei /etc/modules-load.d/nf_conntrack_ftp.conf para habilitar esse módulo e alterei a porta FTP padrão que eu uso em /etc/modprobe.d/ip_conntrack_ftp.conf. Eu tenho dois problemas. O FTP não está funcionando, pois estou recebendo um "500 Illegal Port Command" e um "ERRCONNREFUSED". Se eu usar o modo ativo em vez disso e por cima do FTP simples, ele deve. Então, é algo errado com o iptables. Além disso, o iptables não permite conexões IPv6, mesmo que eu as permita. Eu tenho que mudar outro arquivo? Te agradece. Aqui está uma imagem de tela do iptables.rules:

Claro, mudei a porta FTP antes de postar isso.

    
por Kenneth Clark 01.05.2016 / 01:50

1 resposta

2

TL; TR: FTP é um protocolo quebrado e FTPS mais. Devido a uma combinação de design de protocolo e criptografia, ele é muito ruim junto aos firewalls. Tente usar o SFTP (ou seja, transferência de arquivos pelo protocolo SSH).

O FTP consiste em uma conexão de controle (geralmente a porta 21) e as conexões de dados. Quais portas são usadas pelas conexões de dados são trocadas dinamicamente dentro da conexão de controle. No modo ativo, os clientes ouvem o IP / porta fornecido dentro do comando PORT ou EPRT e o servidor se conecta ao cliente. No modo passivo, o servidor escuta em IP / port dada em resposta ao comando PASV ou EPSV e o cliente se conecta ao servidor.

Uma maneira de lidar com esse tipo de porta dinâmica em uma configuração de firewall é manter uma ampla variedade de portas abertas. Isso obviamente contradiz a idéia de usar um firewall para restringir a superfície de ataque o máximo possível. Assim, a maioria dos firewalls oferece alguns "ajudantes" que inspecionam a conexão de controle e descobrem quais portas são usadas para as conexões dinâmicas, para que possam criar regras de filtro de pacote correspondentes sob demanda. Com o iptables isso é feito dentro de ip_conntrack_ftp. Isso é o que você está tentando agora.

Infelizmente, o uso de tais ajudantes significa que o firewall deve ser capaz de ler o tráfego dentro da conexão de controle. Se você não usar FTP simples não criptografado, isso é possível. Mas com FTP + TLS, a conexão de controle é criptografada e, portanto, o auxiliar não consegue extrair as informações necessárias para abrir as portas sob demanda. Em teoria, há uma maneira de lidar com isso usando o TLS somente para transferir a parte de autorização, mas depois desativar a criptografia novamente (comando FTPS CCC), mas isso precisaria ser suportado e usado pelo cliente.

Assim, se possível, evite FTP e FTPS e use SFTP. Esta é a transferência de arquivos através do protocolo SSH e usa apenas uma única porta, o que facilita a configuração restritiva do firewall.

    
por 01.05.2016 / 07:18