iptables captura em DENY, mas não em ACCEPT, antes dele na cadeia

iptables captura em DENY, mas não em ACCEPT, antes dele na cadeia

Eu tenho um problema estranho com meu firewall iptables: se eu definir duas regras idênticas consecutivas, a primeira ACCEPTe a segunda DENY, o pacote recebido será negado (e registrado como tal).

Como é possível que o pacote recebido seja ignorado pela primeira regra e capturado pela segunda?

A visualização do fwbuilder está aqui: insira a descrição da imagem aqui

Aqui está o iptablesdespejo:

Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state     RELATED,ESTABLISHED
In_RULE_0  all  --  0.0.0.0/0            0.0.0.0/0            state NEW
In_RULE_1  all  --  0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
In_RULE_0  all  --  0.0.0.0/0            0.0.0.0/0            state NEW
In_RULE_1  all  --  0.0.0.0/0            0.0.0.0/0           

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED

Chain In_RULE_0 (2 references)
target     prot opt source               destination         
LOG        all  --  0.0.0.0/0            0.0.0.0/0            LOG flags 0     level 6 prefix "FW RULE 0 -- ACCEPT "
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           

Chain In_RULE_1 (2 references)
target     prot opt source               destination         
LOG        all  --  0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 6 prefix "FW RULE 1 -- DENY "
DROP       all  --  0.0.0.0/0            0.0.0.0/0  

Também tentei ACCEPTapenas com a regra e não pega.

A única diferença que vejo é que a DENYregra não é state NEW, mas é a mesma para as dezenas de firewalls que já configurei e que estão funcionando bem.

Responder1

Você precisa saber que: Uma regra com a -Iopção iptables coloca uma regra no INÍCIO da lista; Uma regra com a -Aopção coloca uma regra no final da lista.

No seu caso: acho que você pode ter usado "-I" em ambas as regras do iptables (quase idênticas), a segunda regra é inserida no início da lista antes da primeira regra e, portanto, você criou uma lista de regras com as regras na ordem:

match -s x.x.x.x action DROP
match -s x.x.x.x action ACCEPT

Como o seu pacote corresponde a ambas as regras, a primeira ( DROP) na ordem da tabela operacional real (que reside na RAM) entraria em vigor. A ordem não tem nada a ver com a ordem no seu arquivo de configuração do iptable.

Troque o pedido e o resultado será diferente.

Responder2

OK, eu encontrei. Acontece que meu FW estava perfeitamente bom, mas o host virtual estava configurado incorretamente. Não tive nenhum erro, mas o iptables não foi permitido. Quando permiti, o FW ficou operacional... Não é à toa que não conseguimos encontrar o erro no nível do iptables... Obrigado por toda a ajuda :)

Responder3

Seu iptables In_RULE_0só se aplica a NOVAS conexões quando você usa o state NEW.

Ele também é definido na sua cadeia FORWARD (pacotes através do servidor), não na sua cadeia INPUT (pacotes para o servidor).

Como você está testando? Você está executando ping em uma interface específica do servidor?

Você pode postar a saída completa de:

iptables -vnL

Tente a seguinte regra para registrar o tráfego na cadeia INPUT (pings para a interface do servidor)

iptables -I INPUT 1 -j In_RULE_0

informação relacionada