Iptables para permitir FTP de entrada

Iptables para permitir FTP de entrada

Quero permitir o tráfego FTP de entrada.

CentOS 5.4:

Este é o meu /etc/sysconfig/iptablesarquivo.

# Generated by iptables-save v1.3.5 on Thu Oct  3 21:23:07 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [133:14837]
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -p tcp -m tcp --sport 20 -j ACCEPT
COMMIT
# Completed on Thu Oct  3 21:23:07 2013

Além disso, por padrão, o módulo ip_conntrack_netbios_n está sendo carregado.

#service iptables restart

Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
Loading additional iptables modules: ip_conntrack_netbios_n[  OK  ]

Mas o problema não é com esse módulo, pois tentei descarregá-lo e ainda sem sorte.

Se eu desabilitar o iptables, poderei transferir meu backup de outra máquina para FTP. Se o iptables estiver sendo aplicado, a transferência falhou.

Responder1

Seu servidor FTP precisa de um canal para transferir dados. A porta 21é usada para estabelecer a conexão. Portanto, para tornar possível a transferência de dados, você 20também precisará ativar a porta . Veja a seguinte configuração

Primeiro carregue o seguinte módulo para garantir que as conexões FTP passivas não sejam rejeitadas

modprobe ip_conntrack_ftp

Permitir conexões FTP na porta 21de entrada e saída

iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED,NEW -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"

Permitir porta FTP 20para conexões ativas de entrada e saída

iptables -A INPUT  -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"

Finalmente, permita o tráfego de entrada passivo de FTP

iptables -A INPUT  -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow passive inbound connections"

Para obter mais informações sobre problemas de FTP e firewall, consulte:http://slacksite.com/other/ftp.html#active

Editar:Adicionado NEWà regra de entrada da porta 21.

Responder2

Já vi regras tão extensas em vários Blogs etc. e me perguntei por que não simplesmente usar

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

junto com o nf_conntrack_ftpmódulo. Isso é mais conciso e legível, o que geralmente é bom, especialmente com firewalls...

FWIW, parece que houve uma mudança no kernel 4.7, então você precisa configurar net.netfilter.nf_conntrack_helper=1via sysctl(por exemplo, colocá-lo em /etc/sysctl.d/conntrack.conf) ou usar

iptables -A PREROUTING -t raw -p tcp --dport 21 -j CT --helper ftp

(veraquipara mais detalhes)

Responder3

Cliente FTP:

lsmod | grep ftp
modprobe nf_conntrack_ftp
lsmod | grep ftp
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

SERVIDOR FTP:

lsmod | grep ftp
modprobe nf_conntrack_ftp
lsmod | grep ftp
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Para alternar entre o modo passivo e ativo no lado do cliente

ftp> passive
Passive mode on.
ftp> passive
Passive mode off.

Responder4

Se você precisa de conexões ativas e passivas e já aceita ESTABLISHEDconexões, como:

iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

Então você só precisa abrir a porta 21 e adicionar uma regra especial para portas passivas. Nenhuma regra é necessária para a porta 20, pois já é aceita pela ESTABLISHEDregra acima.

Primeiro aceite novas conexões em port 21:

iptables -A INPUT -p tcp --dport 21 -j ACCEPT

Em seguida, adicione o auxiliar CT para portas passivas 1024::

iptables -A PREROUTING -t raw -p tcp --dport 21 -j CT --helper ftp
iptables -A INPUT -p tcp -m conntrack --ctstate RELATED -m helper --helper ftp --dport 1024: -j ACCEPT

Veja também:

Observação:você deve definir 1024:como em seu servidor FTP: procure as portas passivas padrão em sua configuração de FTP. Caso contrário, você abriria muitas portas que podem não ser relativas ao FTP.

Nota importante:Eu não adicionei OUTPUTregras, pois meus padrões são iptables -P OUTPUT ACCEPT. O que significa que confio no que sai da minha caixa. Essa pode não ser uma boa opção, especialmente em uma configuração NAT.

Nota muito importante:O FTPS não funcionará com essa configuração, pois a porta passiva está oculta (criptografada), portanto, não há como iptablesadivinhar a porta correta. VerAlterando IPTables para permitir FTP sobre TLS usando portas passivasehttps://serverfault.com/questions/811431/are-my-iptables-for-ftps-with-tls-ok

informação relacionada