Qual é a maneira correta de abrir um intervalo de portas no iptables

56

Encontrei artigos que recomendam o seguinte:

iptables -A INPUT -p tcp 1000:2000 -j ACCEPT

E outros afirmando que o acima não funcionará e o iptables suporta apenas várias declarações de porta com a --multiportopção

Existe uma maneira correta de abrir muitas portas com o iptables?

Paul Whalley
fonte
Pergunta relacionada: iptables e várias portas
Cristian Ciupitu

Respostas:

60

Esta é a maneira correta:

iptables -A INPUT -p tcp --match multiport --dports 1024:3000 -j ACCEPT

Como um exemplo. Fonte aqui .

Nathan C
fonte
5
Se você não souber, o estado do conjunto de regras -Ié um pouco mais seguro que -A.
user9517 suporta GoFundMonica
@Iain, você poderia explicar o raciocínio por trás disso?
jayhendren
2
@jayhendren muitos conjuntos de regras terão uma regra padrão de descartar tudo, por exemplo, -A INPUT -j REJECT --reject-with icmp-host-prohibitedno final da INPUT e de outras tabelas. O uso -Aadiciona a regra no final da tabela, após a regra final, para que ela nunca seja considerada como o netfilter funciona na primeira vitória. Usar -Iinsere a regra no início da tabela e, como tal, sempre será considerada.
user9517 suporta GoFundMonica
4
@Iain, porém, alguns conjuntos de regras também têm regras no início que filtram ou limitam pacotes, por isso vale a pena ressaltar que -Inem sempre é mais seguro se você não conhece o conjunto de regras.
Jayhendren
3
@ Jayhendren eu acho que você acabou de fazer e também note que eu disse um pouco nem sempre .
user9517 suporta GoFundMonica
54

O que lhe foi dito está certo, embora você tenha escrito errado (você esqueceu --dport).

iptables -A INPUT -p tcp --dport 1000:2000 abrirá o tráfego de entrada para as portas TCP 1000 a 2000, inclusive.

-m multiport --dportsserá necessário apenas se o intervalo que você deseja abrir não for contínuo, por exemplo -m multiport --dports 80,443, o que abrirá apenas HTTP e HTTPS - e não os intermediários.

Observe que a ordem das regras é importante e (como Iain menciona em seu comentário em outro lugar), é seu trabalho garantir que qualquer regra adicionada seja em um local em que ela seja eficaz.

Chapeleiro Louco
fonte
11
Eu poderia fazer alusão aqui também, se você quiser;)
user9517 suporta GoFundMonica
11
Hee hee hee! Continue, então, vale a pena repetir a mensagem!
MadHatter
2
Essa é a resposta correta; é mais completo.
Andrew Kozak
10

TL; DR, mas ...

Gama de portas pura sem módulo multiport: iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT

Exemplo de multiportas equivalente: iptables -A INPUT -p tcp -m multiport --dports 1000:2000 -j ACCEPT

... e variação sobre várias portas com vários intervalos (sim, isso também é possível): iptables -A INPUT -p tcp -m multiport --dports 1000,1001,1002:1500,1501:2000 -j ACCEPT

... e exemplo de várias portas equivalente de várias portas com negação: iptables -A INPUT -p tcp -m multiport ! --dports 0:999,2001:65535 -j ACCEPT

Tenha phun.

BloodMan
fonte