Meu cenário atual envolve permitir várias regras, mas eu preciso que o ftp esteja acessível de qualquer lugar. O sistema operacional é o Cent 5 e estou usando o VSFTPD. Não consigo entender a sintaxe correta. Todas as outras regras funcionam corretamente.
## Filter all previous rules
*filter
## Loopback address
-A INPUT -i lo -j ACCEPT
## Established inbound rule
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
## Management ports
-A INPUT -s x.x.x.x/24 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/24 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -s x.x.x.x/23 -p icmp -m icmp --icmp-type any -j ACCEPT
-A INPUT -s x.x.x.x/23 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -i lo -j ACCEPT
## Allow NRPE port (Nagios)
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
-A INPUT -s x.x.x.x -p tcp -m state --state NEW -m tcp --dport 5666 -j ACCEPT
##Allow FTP
## Default rules
:INPUT DROP [0:0]
:FORWARD DROP
:OUTPUT ACCEPT [0:0]
COMMIT
A seguir estão as regras que eu tentei.
##Allow FTP
-A INPUT --dport 21 any -j ACCEPT
-A INPUT --dport 20 any -j ACCEPT
-A INPUT -p tcp --dport 21 -j ACCEPT
-A INPUT -p tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 20 -j ACCEPT
-A INPUT -p tcp -s 0/0 -d 0/0 --destination-port 21 -j ACCEPT
-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A INPUT -s 0.0.0.0/0 -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
Respostas:
Aqui está o documento ao qual indico as pessoas para que possam seguir o protocolo FTP: http://slacksite.com/other/ftp.html
Você não tem nada re: sua cadeia de SAÍDA em sua postagem, por isso vou incluí-la aqui também. Se a sua cadeia OUTPUT for drop-default, isso será importante.
Adicione estas regras à sua configuração do iptables:
Para oferecer suporte ao FTP no modo passivo, é necessário carregar o módulo ip_conntrack_ftp na inicialização. Remova o comentário e modifique a linha IPTABLES_MODULES no arquivo / etc / sysconfig / iptables-config para ler:
Salve a configuração do iptables e reinicie o iptables.
Para descartar completamente o VSFTPD como um problema, pare o VSFTPD, verifique se ele não está escutando na porta 21 com um "netstat -a" e execute:
Isso iniciará a escuta do netcat na porta 21 e ecoará a entrada no seu shell. De outro host, TELNET para a porta 21 do servidor e verifique se você obtém uma conexão TCP e se vê saída no shell ao digitar a conexão TELNET.
Por fim, traga o VSFTPD de volta, verifique se está escutando na porta 21 e tente conectar-se novamente. Se a conexão com o netcat funcionou, as regras do iptables estão corretas. Se a conexão com o VSFTPD não funcionar após o netcat, então algo está errado com sua configuração do VSFTPD.
fonte
Tente esta regra. Nota:
$EXTIP
é o seu endereço IP externo para o servidor FTP.fonte
No meu caso, estava faltando o módulo do kernel ip_conntrack_ftp. Ele precisa ser carregado. Então você pode tentar isso:
E também adicione ip_conntrack_ftp em / etc / modules para que funcione após a reinicialização
fonte