Configurando ProFTPD atrás de um NAT com Iptables
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”.
Pronto!
Fonte: http://www.proftpd.org/docs/howto/NAT.html
WAN to LAN proftpd redirect rule
Greetings.
Have a nice day.
I am currently studying and doing a virtualized lab on my entire CentOS-7 PC and I need some help with CentOS Firewalld I will describe my doubt.
The WAN network of my firewall is 192.168.10.0/24 and the LAN network is 10.10.10.0/24.
So my firewall share internet on LAN, and on this same LAN I have a WEB server, DNS, dhcp and a server “proftpd IP 10.10.10.7” where is causing me the only doubt. Proftp is a dedicated server for ftp and web only. So I would like to know which Firewall Redirect rule I have that I have to create to redirect and allow FTP server access coming from WAN IP addresses?
On my LAN I was able to get users to authenticate to FTP, I even added a rule to redirect WAN traffic to LAN to get ftp://10.10.10.7, but I was unsuccessful.
can you help me with this, please?
I added this firewall redirect to the FTP server IP.
firewall-cmd –permanent –zone=external –add-forward-port=port=21:proto=tcp:toport=21:toaddr=10.10.10.7
however I still cannot have WAN access to the ftp service.
Firewall rules currently.
[root@firewall ~]# firewall-cmd –zone=external –list-all
external (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: ssh openvpn
ports:
protocols:
masquerade: yes
forward-ports: port=80:proto=tcp:toport=80:toaddr=10.10.10.7
port=2222:proto=tcp:toport=22:toaddr=10.10.10.7
port=2220:proto=tcp:toport=22:toaddr=10.10.10.2
port=2221:proto=tcp:toport=22:toaddr=10.10.10.3
port=2223:proto=tcp:toport=22:toaddr=10.10.10.4
port=2224:proto=tcp:toport=22:toaddr=10.10.10.5
port=21:proto=tcp:toport=21:toaddr=10.10.10.7
source-ports:
icmp-blocks:
rich rules:
[/code]
Ftp / web server rules currently.
[root@web ~]# firewall-cmd –zone=external –list-all
external
target: default
icmp-block-inversion: no
interfaces:
sources:
services: ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@web ~]# firewall-cmd –zone=public –list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens32
sources:
services: ftp http dhcpv6-client ssh https mysql
ports: 22/tcp 21/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@web ~]#
firewall-cmd –permanent –zone=external –add-forward-port=port=30000:proto=tcp:toport=61000:toaddr=10.10.10.7 –set-description=”pemite conexões externas no server ftp/web”
Good afternoon everyone.
So it’s something I’m very interested in.
I would like to know how to get access to ftp server from external network as said.
I thank everyone.
[root@web ~]# iptraf-ng
[root@web ~]# tailf /var/log/proftpd/proftpd.log
2019-08-31 17:59:54,396 web proftpd[12672] 10.10.10.7 (192.168.10.8[192.168.10.8]): Passive data transfer failed, possibly due to network issues
2019-08-31 17:59:54,396 web proftpd[12672] 10.10.10.7 (192.168.10.8[192.168.10.8]): Check your PassivePorts and MasqueradeAddress settings,
2019-08-31 17:59:54,396 web proftpd[12672] 10.10.10.7 (192.168.10.8[192.168.10.8]): and any router, NAT, and firewall rules in the network path.
2019-08-31 17:59:54,396 web proftpd[12672] 10.10.10.7 (192.168.10.8[192.168.10.8]): FTP no transfer timeout, disconnected
2019-08-31 17:59:54,396 web proftpd[12672] 10.10.10.7 (192.168.10.8[192.168.10.8]): FTP session closed.
2019-08-31 18:00:14,525 web proftpd[12673] 10.10.10.7 (192.168.10.8[192.168.10.8]): Passive data transfer failed, possibly due to network issues
2019-08-31 18:00:14,525 web proftpd[12673] 10.10.10.7 (192.168.10.8[192.168.10.8]): Check your PassivePorts and MasqueradeAddress settings,
2019-08-31 18:00:14,525 web proftpd[12673] 10.10.10.7 (192.168.10.8[192.168.10.8]): and any router, NAT, and firewall rules in the network path.
2019-08-31 18:00:14,525 web proftpd[12673] 10.10.10.7 (192.168.10.8[192.168.10.8]): FTP no transfer timeout, disconnected
2019-08-31 18:00:14,526 web proftpd[12673] 10.10.10.7 (192.168.10.8[192.168.10.8]): FTP session closed.