iptables cenário rulematch

0

suponha que você tenha uma regra iptables da seguinte forma: fonte A ------ > a fonte B aceita fonte B ------ > source A drop.

eu observo que: - um primeiro pacote tcp de A para B é aceito - o pacote de resposta de B é descartado.

por que o pacote de resposta está sendo descartado? desde o primeiro pacote de A - > B foi permitido e aceito, deveria ter sido adicionado à tabela de conexões. quando o pacote de B - > A está entrando, uma pesquisa deveria ter sido feita antes de executar a regra e aceitar sem executar a base de regra que decide descartar. Por que o iptables não faz uma pesquisa?

Obrigado.

    
por Avi Nehori 08.03.2017 / 15:51

2 respostas

0

Sim, adicionei e nenhuma alteração. Eu observo isso como um comportamento geral e quando eu olho através Código-fonte Iptables é o comportamento esperado. Eu me pergunto como o iptables pode ser usado, já que isso é totalmente ridículo para adicionar regra reversa. É impossível gerenciar essa base de regra. Espero que possamos esclarecer isso. Obrigado.

    
por 08.03.2017 / 19:38
0

iptables é muito baixo nível, e quando você está escrevendo regras iptables, você está lidando com pacotes IP brutos. Isso tem várias implicações, uma das quais você encontrou.

Existem casos de uso perfeitamente válidos para quando o tráfego de saída deve ser permitido, mas qualquer tráfego de entrada correspondente não deve passar pelo firewall; ou o contrário, o tráfego de entrada permitido, mas a saída não é permitida. Um exemplo comum para isso são os servidores de armazenamento de logs (que, por sua vez, são úteis para auditoria): o tráfego de log deve ser permitido em , mas nenhum deve ser permitido fora . No caso extremo, o tráfego de log deve ser permitido em , mas nada mais deve ser permitido dentro ou fora .

Por iptables não fazer suposições sobre o que você quer, você não apenas aumenta a segurança, mas também o desempenho, porque o conjunto de regras pode ser otimizado para exatamente o que você quer que o firewall realmente faça.

Se você quiser permitir o tráfego de entrada que está relacionado a uma conexão ou sessão já estabelecida, basta informá-lo:

sudo iptables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

ou para IPv6:

sudo ip6tables -I INPUT 1 -m state --state RELATED,ESTABLISHED -j ACCEPT

Ajuste a parte -I INPUT 1 conforme necessário (por exemplo, se você tiver outras regras que devem ter precedência sobre a regra geral de permitir tráfego relacionado a uma conexão ou sessão estabelecida).

    
por 08.03.2017 / 19:52