OUTPUT é somente para a conexão, que é INITIATED do servidor, não afeta a conexão iniciada pelo cliente em todos. Normalmente, OUTPUT é NÃO FILTRADO , a menos que você tenha um requisito especial para bloquear algo que saia.
INPUT é a parte que você deve filtrar.
As partes ESTABLISHED e RELACIONADAS são para conexão, que já é iniciada e deve continuar funcionando (por exemplo, como TCP após handshake) e geralmente há correspondência maior do que em outras regras .
Podemos dividir a conexão FTP em três tipos:
- FTP ativo (simples)
- FTP passivo (simples)
- FTP com SSL (qualquer criptografado)
No caso do FTP Ativo, você precisa abrir as portas TCP 20 e TCP 21 de entrada e esse tipo de conexão raramente é usado, ou seja, duas conexões são iniciadas a partir do cliente.
No caso de situação de FTP passivo ser pior, o FTP passivo usa a porta TCP 21 para comandos e a porta RANDOM TCP para transferência de dados para qualquer conexão, qual porta será especificada na resposta FTP do servidor, portanto, o firewall deve " escute "o tráfego de FTP, que requer inspeção mais profunda de pacotes e depois abre dinamicamente a porta - esta é uma situação normal. Neste caso, ajudantes de rastreamento de conexão FTP / módulos do kernel são usados e isso resolve o problema - você só precisa abrir a porta TCP 21.
No caso de SSL - é ainda mais louco, porque os dados sobre a porta RANDOM também são criptografados e os firewalls não conseguem adivinhar qual porta abrir, nesse caso alguns caras especificam o número de portas aleatórias nas configurações do servidor FTP e abrem todas essas portas no firewall.
Normalmente, a ordem das regras para a tabela de filtros geralmente se parece com isso:
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 22,80,443 -j ACCEPT
-A INPUT -i eth1 -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 22,53,80,1234 -j ACCEPT
-A INPUT -i eth1 -p udp -m conntrack --ctstate NEW -m udp -m multiport --dports 53,67,123 -j ACCEPT
COMMIT
Para SSL, você pode adicionar a seguinte regra em algum lugar
-A INPUT -p tcp -m conntrack --ctstate NEW -m tcp -m multiport --dports 21,15000:15050 -j ACCEPT