Existem vários modos com SSL e FTP:
- SSL implícito, que é SSL desde o início (geralmente porta 990) e nunca texto simples. Nesse caso, você não obtém informações de texto claro no firewall sobre as portas de dados dinâmicas e, portanto, não pode restringir a comunicação apenas a essas portas.
- SSL explícito com o comando "AUTH TLS" antes do login para ativar o SSL, mas sem o CCC após o login para desativar o SSL. Aqui você tem o mesmo problema que com o SSL implícito, ou seja, você não pode ler quais portas de dados estão em uso.
- SSL explícito como antes, mas com o comando CCC após o login. Nesse caso, o login é protegido por SSL, mas o restante da conexão de controle usa texto simples. A transferência de dados ainda pode ser protegida por SSL. Você deve ativar este modo no cliente, como com
ftp:ssl-use-ccc
withlftp
. Não há como impor este modo no servidor ftp.
Se você não conseguir as portas de dados exatas porque os comandos relevantes são criptografados, você pode pelo menos tornar o firewall um pouco menos restritivo:
- No modo ativo ftp o servidor irá originar as conexões de dados da porta 20 para que você possa ter uma regra iptables permitindo essas conexões, ou seja, algo como
iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
e adicionalmente aceitar conexões estabelecidas. - No ftp do modo passivo, você pode restringir o intervalo de portas oferecido pelas configurações
vsftpd
compasv_max_port
epasv_min_port
e adicionar uma regra correspondente comoiptables -A INPUT -p tcp --dport min_port:max_port -j ACCEPT
. Isso não é muito restritivo, mas pelo menos mais restritivo do que desativar o firewall.