Qual ordem de regras iptables usar para IPs SRC específicos?

1

Eu gostaria de bloquear o tráfego de um endereço específico durante algumas horas. Eu uso firehol para gerenciar minhas regras.

A regra a seguir bloqueia todo o tráfego durante minhas horas de destino

ACCEPT     all  --  anywhere          anywhere             ctstate NEW,ESTABLISHED TIME from 06:00:00 to 16:00:00 UTC

A mesma regra modificada para um IP específico

ACCEPT     all  --  10.10.10.21          anywhere             ctstate NEW,ESTABLISHED TIME from 06:00:00 to 16:00:00 UTC
ACCEPT     all  --  anywhere             anywhere             ctstate NEW,ESTABLISHED

não bloqueia o tráfego para 10.10.10.21 . O pedido parece correto (de mais específico para mais geral), então eu me pergunto o que poderia estar faltando?

(note que este é apenas o extrato de iptables -L relevante para o limite de tempo - as regras que mudam ao adicionar uma regra específica para um IP específico (em oposição à regra de trabalho que bloqueia todo o tráfego fora de as horas mencionadas)

    
por WoJ 02.04.2016 / 21:16

1 resposta

1

Se você tiver apenas as regras ACCEPT, mas algum tráfego acabar sendo bloqueado, isso significa que a política da sua regra é DROP. Portanto, sua primeira tentativa nega todo o tráfego que não esteja explicitamente autorizado. Sua segunda tentativa também nega todo o tráfego que não é explicitamente autorizado, mas a segunda regra permite a maioria do tráfego (bloqueia apenas algumas coisas que devem ser permitidas, como erros de ICMP - você deve sempre permitir RELATED a).

A primeira partida é aplicada. A regra 1 permite o tráfego de 10.10.10.21 durante uma determinada janela de tempo. A regra 2 permite (quase) todo o tráfego em todos os momentos. Como a regra 1 é um subconjunto da regra 2, ela é redundante.

Para negar o tráfego de 10.10.10.21 fora da janela de tempo especificada, você precisa modificar a regra 2 para excluir o tráfego de 10.10.10.21 ou adicionar uma regra entre negar tráfego. Eu acho que a segunda opção é mais clara.

iptables -A INPUT -j ACCEPT -s 10.10.10.21 -m conntrack --ctstate NEW,ESTABLISHED,RELATED -m time --timestart 06:00:00 --timestop 16:00
iptables -A INPUT -j REJECT -s 10.10.10.21 -m conntrack --ctstate NEW,ESTABLISHED,RELATED
iptables -A INPUT -j ACCEPT -m conntrack --ctstate NEW,ESTABLISHED,RELATED
iptables -A INPUT -j REJECT

Note que você deve quase sempre usar REJECT no tráfego bloqueado, não DROP . Você não pode definir uma política em cadeia para DROP, e é por isso que adicionei uma regra REJECT explícita no final.

    
por 03.04.2016 / 01:34

Tags