IPtables - novo vs novo, estabelecido, relacionado

6

Vamos dar um exemplo, vamos supor que eu permitiria que apenas o tráfego HTTP [S] de saída passasse pelo firewall. Eu sei que eu também precisaria permitir o tráfego de DNS de saída em um cenário do mundo real, mas isso é apenas um exemplo. Eu teria escrito as regras do iptable assim:

:INPUT DROP
:FORWARD DROP
:OUTPUT DROP

-A INPUT -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

Isso está correto? Eu me pergunto porque eu vi pessoas que escreveram as mesmas regras de firewall assim:

:INPUT DROP
:FORWARD DROP
:OUTPUT DROP

-A INPUT -p tcp -m multiport --sports 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT
-A OUTPUT -p tcp -m multiport --dports 80,443 -m state --state NEW -j ACCEPT

Qual é a diferença entre NEW e NEW,ESTABLISHED,RELATED para uma regra de saída? É suficiente escrever NEW e deixar o firewall fazer alguma mágica misteriosa? Ou é necessário escrever NEW,ESTABLISHED,RELATED ?

    
por BufferOverflow 12.07.2015 / 16:48

1 resposta

3

A segunda configuração não funcionará (tente!). Como sua política padrão é DROP na cadeia OUTPUT , o terceiro pacote do handshake de três vias TCP será bloqueado pelo firewall, já que esse não se enquadra em NEW , portanto a conexão nunca será estabelecido.

Funcionaria se sua política OUTPUT padrão fosse ACCEPT ou se você tivesse outra regra OUTPUT depois, o que permitiria ESTABLISHED e RELATED state.

Em conclusão, o primeiro conjunto de regras é o correto, se você quiser ter DROP como sua política padrão.

    
por 14.07.2015 / 11:02

Tags