iptables: usando os módulos “conntrack” e “recent” para bloquear pacotes não solicitados

4

Quando eu só permito RELATED e ESTABLISHED pacotes, e DROP todo o resto, minhas regras de firewall funcionam perfeitamente e não tenho problemas:

### VARIANT A
-A INPUT -i wlan0 -m conntrack   --ctstate RELATED,ESTABLISHED       -j ACCEPT
-A INPUT -i wlan0                                                    -j   DROP

No entanto, quero dar um passo além e colocar em blacklist qualquer IP que tenha me enviado um pacote "não solicitado". Eu modifiquei minha regra:

### VARIANT B
-A INPUT -i wlan0 -m recent --name PORTSCAN --update --seconds 3600  -j   DROP
-A INPUT -i wlan0 -m conntrack   --ctstate RELATED,ESTABLISHED       -j ACCEPT
-A INPUT -i wlan0 -m recent --name PORTSCAN --set                    -j   DROP

As regras funcionam assim:

Rule 1: checks whether IP address is already blacklisted and drops it if yes
Rule 2: allows RELATED,ESTABLISHED packets
Rule 3: all other packets which fail RELATED,ESTABLISHED test are blacklisted

Essas regras funcionam como planejadas em 99,9% dos casos, mas apenas em alguns sites eu tenho problemas. Os sites do Stack Exchange são um desses exemplos. Parece que o stackexchange.com está me enviando pacotes, que o módulo conntrack não reconhece como relacionado ou estabelecido. Portanto, esses pacotes não passam rule 2 e estão na lista negra por rule 3 .

Isso acontece normalmente quando estou no modo de edição (ou seja, fazendo uma pergunta ou editando uma pergunta existente).

Nesse caso, preciso liberar a lista negra:

echo / >/proc/net/xt_recent/PORTSCAN

e depois tudo funciona de novo.

Pode haver duas explicações para esse problema:

a) the conntrack module is deficient, in that it does not recognize
   legitimate packets as being RELATED/ESTABLISHED
b) SE websites are indeed sending unsolicited packets

Acredito que b seja mais provável de ser verdade, devido ao seguinte raciocínio:

variante Uma das regras do iptables descarta todos os pacotes que ele não reconhece como RELATED/ESTABLISHED . Como tudo funciona perfeitamente bem, esses pacotes não eram necessários para minha sessão. Estes eram de fato pacotes não solicitados, que não deveriam ser enviados para mim em primeiro lugar.

A variante B das minhas regras iptables vai um pouco mais longe, pois "pune" o IP ofensivo e adiciona-o à lista negra.

P: Como posso modificar minhas regras do iptables, para que também funcione com sites SE?

Também gostaria de receber comentários sobre minha análise do problema

aqui está minha postagem relacionada no meta.unix.stackexchange.com:   stackexchange.com está me enviando pacotes não solicitados (e consequentemente são bloqueados pelo firewall)

    
por Martin Vegter 02.01.2015 / 14:24

0 respostas