UFW (firewall) não está bloqueando o UDP imediatamente

1

Eu tenho um PBX (sistema de telefonia chamado Astersik ) que funciona com o udp e o tcp. Às vezes recebo solicitações inválidas de alguns endereços IP que gostaria de bloquear. Não consigo bloquear essas solicitações até que eu reinicie o computador. Acho que o motivo é porque o UFW não bloqueia conexões estabelecidas .

Vamos fingir que estou recebendo uma solicitação mal-intencionada do endereço IP 1.2.3.4 . Então eu preciso bloquear esses pedidos executando o comando:

sudo ufw insert 1 deny from 1.2.3.4 to any

Eu preciso do insert 1 para que a regra seja executada antes dos outros.

De qualquer forma, mesmo que eu execute esse comando, ainda vejo que meu computador responde de volta a 1.2.3.4 . O problema é que já existe uma conexão estabelecida, portanto, o ufw não soltará esses pacotes até que essas conexões sejam fechadas.

Encontrei uma solução temporária:

1) Eu abro nano /etc/ufw/before.rules

2) Comente as linhas:

(Na foto as linhas não são comentadas. Mas comente tudo que estiver dentro do círculo vermelho)

3) Reinicie o firewall ufw disable then ufw enable

Se eu comentar essas linhas, meu firewall funcionará como eu quero. Ele bloqueará as conexões imediatamente!

O problema é que comentar essas linhas faz com que meu DNS pare de funcionar Em outras palavras, quando executo ping google.com , vejo uknown host google.com

Por que o dns para de funcionar quando eu comento essas linhas? Resumindo, preciso que quando executo sudo ufw insert 1 deny from 1.2.3.4 to any não receba mais solicitações desse IP !. Eu não posso dar ao luxo de reiniciar o computador toda vez que eu quiser bloquear um endereço IP.

    
por Tono Nam 02.03.2017 / 17:41

2 respostas

2

O UDP é um protocolo sem estado, mas o kernel do Linux ainda rastreia os números de IP e porta para ele por 30 segundos, para determinar o tráfego estabelecido e relacionado. (30 segundos ou o valor em /proc/sys/net/netfilter/nf_conntrack_udp_timeout ) - Link ServerFault: Iptables: "-p udp - state ESTABLISHED"

O DNS funciona em UDP, por isso, se você enviar uma consulta de DNS e tiver comentado a regra que permite o tráfego de retorno relacionado, não receberá resposta. > > DNS quebrado.

Como o 'estado' do UDP é rastreado por 30 segundos, sua tentativa de inserir uma nova regra de bloqueio na parte superior do INPUT não tem nenhum efeito. "ufw-before-input" acontece primeiro e permite o tráfego ESTABLISHED, antes que sua regra INPUT consiga ver e DROP.

Para corrigir, você precisa:

  • Use algo como 'conntrack' para remover a entrada UDP rastreada do host que você deseja bloquear e adicione a regra de bloqueio ao firewall. Não haverá uma conexão estabelecida ou relacionada, portanto o bloqueio deve ter efeito imediato. por exemplo. Exclui entradas específicas do conntrack?

  • Rework suas regras de firewall para que você faça a regra ESTABLISHED, RELACIONADA nas regras INPUT após seus DROPs, em vez de fazê-lo primeiro.

I cannot afford to reboot the computer every time I want to block an ip address

Mas você pode filtrar 4 bilhões de endereços IP, um de cada vez, bloqueando-os manualmente? Isso não parece uma coisa razoável de se fazer. Use um dispositivo IPS, use o fail2ban.

    
por 13.03.2017 / 23:53
2

Tono,

ufw é um front-end para o iptables. O que você está perguntando essencialmente é por que o DNS falha quando você para de aceitar Conexões Relacionadas, Estabelecidas. conntrack mantém o controle de suas conexões. Se o tráfego corresponder a uma entrada no conntrack, ela será Estabelecida. Se uma conexão Estabelecida criar uma nova conexão, ela estará Relacionada. Se o tráfego é novo e não é estabelecido ou relacionado, então é novo.

Se já houver uma conexão estabelecida, você precisará inserir uma instrução de queda no início da cadeia. Edite /etc/ufw/before.rules para que você tenha uma seção de bloco antes das regras que você comentou. Adicione uma entrada de -A ufw-before-input -s 1.2.3.4 -j DROP lá. Então use sudo ufw reload .

Se você ainda tem problemas com isso, pense em usar o iptables ao invés do ufw, porque o ufw é um front-end para o iptables e não inclui todas as suas seleções.

link

link

link

digite descrição do link aqui

    
por 13.03.2017 / 23:56