Firewall Filter 'trancando tudo'

45 views
Skip to first unread message

Jessé

unread,
May 20, 2012, 11:37:50 AM5/20/12
to mtcna_mtc...@googlegroups.com
Olá a todos,

Tenho um problema com o firewall do MK. A situação é a seguinte:
Em uma bridge tenho um IP 192.168.32.1/24 e outro IP 172.17.1.5/30 na mesma bridge.
Nessa rede possuo uma regra de firewall que, ao que parece, deveria bloquear todas as portas destinadas ao IP 172.17.1.6 (ligado à rede 172.17.1.4/30), com exceção das portas 21, 4444 e 11000, que uso para hospedar serviços nesse PC com o IP 172.17.1.6
A regra é a seguinte:

        ip firewall filter add action=drop chain=forward protocol=tcp dst-address=172.17.1.6 dst-port=!11000,4444,21

A regra funciona perfeitamente bem, bloqueando todas as portas, exceto aquelas em dst-port com '!'. O problema é que ela bloqueia também todas as conexões que saem desse host (172.17.1.6).
Alguém sabe o que há de errado nessa regra que bloqueia tudo com 'src-address=172.17.1.6', embora na regra só esteja especificado 'dst-address=172.17.1.6'?

O que já tentei fazer e não resolveu:

  • Especificar in-interface=bridge1 e/ou out-interface=bridge1;
  • Mudar a chain para input e output (simplesmente não bloqueia nada).

Se alguém puder ajudar eu agradeço.

Att,
Jessé
Knet Provedor

Tiago Amorim

unread,
May 20, 2012, 12:50:39 PM5/20/12
to mtcna_mtc...@googlegroups.com
Boa tarde.

Como você sabe que ela bloqueia tudo que sai desse host?

Você deve estar enfrentando problemas com as respostas das requisições que você faz através desse host.

Com essa regra de firewall, acredito eu, que quando você executa uma solicitação http, através da porta 80, via tcp, por exemplo, você não vai conseguir obter a resposta, pois a resposta à sua requisição será barrada na regra de firewall existente.

Para contornar essa situação, você poderia, por exemplo, criar uma marcação das conexões que este host faz, Apontando-o como source e inserindo os destinatários na address list, e posteriormente colocando os endereços desta address list numa regra de accept, por exemplo.

Não tenho certeza plena, mas acredto que funcionaria dessa maneira.

[]s

Jessé

unread,
May 20, 2012, 4:05:48 PM5/20/12
to mtcna_mtc...@googlegroups.com
Olá de novo,

Muito obrigado por sua resposta, Tiago.
Usei sua sugestão e fiz uma análise de tráfego para ver o que estava acontecendo (usando o Torch no MK e os programas netcat e Essential NetTools), e realmente o firewall barrava as respostas dos hosts solicitados, e não o que saía do host 172.17.1.6 no caso acima mencionado.
Sua sugestão de regra também resolveu o problema.
Porém ainda fica uma dúvida:
'Seria possível no MK bloquear conexões de entrada fazendo com que as conexões que saem de um host sejam aceitas de volta com apenas uma regra?' Isso tornaria o firewall mais eficiente, pois foram necessárias 3 regras e o acesso a uma base de dados (Address List) para fazer funcionar desta maneira. Se alguém tiver uma sugestão é só deixar, vou testar algumas coisas aqui e se achar algo posto a resposta.

Mais uma vez muito obrigado,

Att,
Jessé
Knet Provedor

Tiago Amorim

unread,
May 21, 2012, 7:45:03 AM5/21/12
to mtcna_mtc...@googlegroups.com
Olha Jessé, eu acho que isso não é possível não.

Você quer algo do tipo: "tudo que sair de x, para qualquer destino, pode voltar a x, nos próximos 2 minutos"?
Só conheço através da marcação e adição à address list mesmo.
Tome cuidado para não esquecer de configurar o timeout na regra de firewall que adiciona os hosts à address list. Recomendo algo entre 15 segundos a 1 minuto.
Se você não configurar o timeout, vai ter uma lista de hosts imensas nessa address list, e além disso, vai estar desprotegido com relação a qualquer host que você já tenha se conectado.

Se você for pensar bem, as regras são bem simples e lógicas. Nâo é nada muito complicado, ainda mais se tratando de um filtro dinâmico.
Com certeza o pastel seria mais eficiente, mas desconheço sua existência.

[]s!

Jessé

unread,
May 21, 2012, 12:10:31 PM5/21/12
to mtcna_mtc...@googlegroups.com
Olá,

Pensei bem e essa maneira marcando conexão e jogando na Address List para liberar o acesso(ou marcando conexão e usando esta marca de conexão para liberar o acesso, esse eu não testei) é a maneira mais eficiente nesse caso; o outro seria fazer um NAT nesse ip para um ip da LAN 192.168.32.0/24, já que o NAT permitiria que as conexões permitidas ao host 172.17.1.6 continuassem entrando, e na saída o NAT troca o IP por um da outra rede e alcançaria o host desejado.
Usei a sua sugestão com timeout de 10s e está tudo em ordem (qualquer tempo em torno de 2s acho que é válido, já que conexões TCP são statefull).

Grato,
Jessé
Knet Provedor

Tiago Amorim

unread,
May 21, 2012, 12:23:18 PM5/21/12
to mtcna_mtc...@googlegroups.com
Se tudo deu certo, problema resolvido.

Fiquei tentando desenhar na cabeça essa idéia do nat do seu host para um endereço da rede 192.xxxxxxx e não ví vantagem nenhuma, apenas desvantagens.

Bom, é isso aí.
[]s
Reply all
Reply to author
Forward
0 new messages