Configurando ProFTPD atrás de um NAT com Iptables

proftpd


Após ter configurado um servidor FTP utilizando o ProFTPD, fiz um redirecionamento de portas no gateway e achei que tudo seria colorido igual o fundo do mar em desenhos animados, mas não foi bem assim. Pela rede local, o acesso era feito sem problemas. Já uma tentativa de acesso pela internet informou uma mensagem de erro. Compartilho uma solução para colocar em funcionamento um servidor FTP (ProFTPD) atrás de um NAT. É bem simples e será explicada nos passos abaixo:

Configurando o ProFTPD

No arquivo de configuração proftpd.conf, adicione a diretiva MasqueradeAddress para definir o nome público ou endereço IP do gateway. Por exemplo:

MasqueradeAddress ftp.geowany.com # Usando um nome DNS

ou

MasqueradAddress 123.45.67.89 # Usando um endereço IP

Agora o proftpd usará o endereço público do NAT ao invés do endereço local.

Entretanto, existe um grande problema. As conexões passivas utilizam portas acima de 1024, o que significa que você deve encaminhar todas as portas 1024-65535 do NAT para o servidor FTP! E você tem que permitir que muitas (possivelmente) portas perigosas em suas regras de firewall! Não é uma boa situação.

Para resolver isso, basta usar a diretiva PassivePorts no seu proftpd.conf para controlar quais portas proftpd serão para suas transferências passivas de dados:

PassivePorts 60000 65535 # Essas portas devem ser seguras …

Note que se o intervalo configurado de portas é muito pequeno, conectando os clientes podem sofrer atrasos ou ser completamente incapaz de operar quando eles solicitam transferências passivas de dados. Quando o daemon não pode usar uma das portas no intervalo configurado, ele passará a usar uma porta atribuída pelo kernel, e logar uma mensagem relatando o problema. A capacidade dos clientes para usar esta porta não configurada, então, depende de configurações do NAT, roteador ou firewall.

Agora inicie o daemon FTP e você deve ver algo como:

123.45.67.89 – Masquerading as ‘123.45.67.89’ (123.45.67.89)

nos arquivos de log.

Configurando o iptables no gateway

Observe as regras que utilizei no exemplo abaixo:

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -A PREROUTING –proto tcp -i eth0 –dport 21 -j DNAT –to 192.168.0.2:21

iptables -t nat -A PREROUTING –proto tcp -i eth0 –dport 60000:61000 -j DNAT –to 192.168.0.2

iptables -t nat -A POSTROUTING -d 192.168.0.2 -j MASQUERADE

Neste exemplo, a interface conectada à internet é “eth0” e ip do servidor ftp é “192.168.0.2”.

ftp-atras-nat

Pronto!

Fonte: http://www.proftpd.org/docs/howto/NAT.html