iptables nova versão, não estou sabendo usar...

Iniciado por danielrsj, 02 de Julho de 2010, 12:00

tópico anterior - próximo tópico

danielrsj

Pessoal não estou conseguindo resolver isso....

Antigamente quando usava o iptables versão 1.4.0 ou anteriores eu usava o seguinte comando:

iptables -t nat -A PREROUTING -s 192.168.50.0/24 -p tcp --dport 443 -j DROP

E funcionava corretamente, ou seja, eu conseguia bloquear essa porta especíifica (somente como exemplo)

Porém agora que estou usando uma versão mais nova do iptables (v 1.4.8) não esse comando não funciona... retorna o seguinte erro:

The "nat" table is not intended for filtering, the use of DROP is therefore inhibited.

Tentei instalar a versão 1.4.0 no kernel 2.6.34 mas não consegui.


Alguém poderia me ajudar a instalar a versão 1.4.0 no kernel 2.6.34 ou então me explicar como bloquear as portas na tabela nat?

***URGENTE***

danielrsj@hotmail.com

sistematico

Amigo, sou novato com o IPTables, mas vou passar um link de um artigo que eu escrevi, nao sei se tem muito a ver mas quem sabe te ajude: http://wiki.forumdebian.com.br/index.php/Iptables
Lucas Saliés Brum
Ubuntu User #27150
http://sistematico.org

zekkerj

Citação de: danielrsj online 02 de Julho de 2010, 12:00
Pessoal não estou conseguindo resolver isso....

Antigamente quando usava o iptables versão 1.4.0 ou anteriores eu usava o seguinte comando:

iptables -t nat -A PREROUTING -s 192.168.50.0/24 -p tcp --dport 443 -j DROP

E funcionava corretamente, ou seja, eu conseguia bloquear essa porta especíifica (somente como exemplo)

Porém agora que estou usando uma versão mais nova do iptables (v 1.4.8) não esse comando não funciona... retorna o seguinte erro:

The "nat" table is not intended for filtering, the use of DROP is therefore inhibited.
Vou aproveitar e invadir esse espaço para tirar uma dúvida com amigo zekkerj.

Tentei instalar a versão 1.4.0 no kernel 2.6.34 mas não consegui.


Alguém poderia me ajudar a instalar a versão 1.4.0 no kernel 2.6.34 ou então me explicar como bloquear as portas na tabela nat?

***URGENTE***

danielrsj@hotmail.com


Ah, que ótimo! Finalmente fizeram o funcionamento bater com a documentação. Mas posso te dizer: você está enganado, isso nunca funcionou.

A tabela nat "não" bloqueia tráfego, só a tabela "filter". Portanto, seu comando é inútil.

Se você quer bloquear esse tráfego, seu comando deve ser assim:

iptables -A FORWARD -s 192.168.50.0/24 -p tcp --dport 443 -j DROP
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

danielrsj

Citação de: zekkerj online 02 de Julho de 2010, 12:11
Citação de: danielrsj online 02 de Julho de 2010, 12:00
Pessoal não estou conseguindo resolver isso....

Antigamente quando usava o iptables versão 1.4.0 ou anteriores eu usava o seguinte comando:

iptables -t nat -A PREROUTING -s 192.168.50.0/24 -p tcp --dport 443 -j DROP

E funcionava corretamente, ou seja, eu conseguia bloquear essa porta especíifica (somente como exemplo)

Porém agora que estou usando uma versão mais nova do iptables (v 1.4.8) não esse comando não funciona... retorna o seguinte erro:

The "nat" table is not intended for filtering, the use of DROP is therefore inhibited.
Vou aproveitar e invadir esse espaço para tirar uma dúvida com amigo zekkerj.

Tentei instalar a versão 1.4.0 no kernel 2.6.34 mas não consegui.


Alguém poderia me ajudar a instalar a versão 1.4.0 no kernel 2.6.34 ou então me explicar como bloquear as portas na tabela nat?

***URGENTE***

danielrsj@hotmail.com


Ah, que ótimo! Finalmente fizeram o funcionamento bater com a documentação. Mas posso te dizer: você está enganado, isso nunca funcionou.

A tabela nat "não" bloqueia tráfego, só a tabela "filter". Portanto, seu comando é inútil.

Se você quer bloquear esse tráfego, seu comando deve ser assim:

iptables -A FORWARD -s 192.168.50.0/24 -p tcp --dport 443 -j DROP


Obrigado pela resposta.

Só que se eu usar o comando que vc me passou a porta não é bloqueada.

iptables -A FORWARD -s 192.168.50.0/24 -p tcp --dport 443 -j DROP

E em um outro servidor que tenho aqui que tem o iptables versão 1.4.0 o comando abaixo funciona:

iptables -t nat -A PREROUTING -s 192.168.50.0/24 -p tcp --dport 443 -j DROP

só que na versão atual do iptables o comando não funciona.

Alguma sugestão?

zekkerj

Esse comando não funciona, a tabela "nat" não faz filtragem de tráfego.

Você está confundindo "funcionar" com "não acusar erro". O comando pode até não acusar erro, mas não funciona.

Se o tráfego não foi bloqueado, você tem que rever a situação do tráfego que você quer bloquear, e ajustá-lo ao que acontece em sua rede.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

danielrsj

ok, vou explicar o que tenho aqui na minha rede.

atualmente tenho um Debian rodando no kernel 2.6.25 com o iptables versão 1.4.0

para bloquear o ultrasurf eu criei três regras:

iptables -t nat -A PREROUTING -d ip-de-um-banco-qualquer -p tcp --dport 443 -j ACCEPT (Esse comando é para liberar a porta 443 somente para sites que eu especificar o IP)

iptables -t nat -A PREROUTING -p tcp --dport 443 -j LOG --log-prefix [https] (aqui eu faço um log só do que foi bloqueado na porta 443)

iptables -t nat -A PREROUTING -s ip-da-minha-rede-interna -p tcp --dport 443 -j DROP ( aqui em bloqueio a porta 443)

Essa regra acima não acusa erro e também consigo bloquear a porta 443.

Eu tenho essa regra acima em 6 servidores debian com o iptables na versão 1.4.0 e funciona, consigo bloquear a porta 443.

A minha intenção é bloquear o ultrasurf, como uso proxy transparente não posso bloquear no squid.

Interessante eu eu gero o log apenas dos ips que foram bloqueados, assim eu tenho como saber qual ip tenho que liberar.


Porém esse regra não funciona de jeito nenhum com o iptables 1.4.8

Tudo bem, pelo o que entendi essa regra não deveria funcionar no iptables, mas funciona nas versões mais antigas.

Qual seria então a regra correta para bloquear essa porta conforme o modelo que descrevi acima, ou seja, liberando a porta 443 para ips de destino que eu especificar e bloqueando a porta 443 para todos os outros ips de destino?

Obrigado!

zekkerj

Pois é, se está bloqueando é por outro motivo, não por essa regra com alvo "DROP", pois DROP não é um destino válido dentro de nenhuma cadeia da tabela nat.

O que deve estar acontecendo é que as outras regras "ACCEPT" que você colocou antes devem estar interferindo na forma como o seu firewall faz nat nos pacotes destinados à porta 443. Ou seja, não é que vc tenha "bloqueado" o ultrasurf, vc só desbloqueou os bancos.

Fica difícil te dizer exatamente onde mexer, sem ver o resto do teu firewall. Quando vc disse que tentou usar a regra na cadeia FORWARD e não funcionou, provavelmente o que aconteceu foi que vc colocou a regra no lugar errado, depois de outra regra que liberava o mesmo tráfego. Aí realmente não funciona.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

danielrsj

Citação de: zekkerj online 02 de Julho de 2010, 17:51
Pois é, se está bloqueando é por outro motivo, não por essa regra com alvo "DROP", pois DROP não é um destino válido dentro de nenhuma cadeia da tabela nat.

O que deve estar acontecendo é que as outras regras "ACCEPT" que você colocou antes devem estar interferindo na forma como o seu firewall faz nat nos pacotes destinados à porta 443. Ou seja, não é que vc tenha "bloqueado" o ultrasurf, vc só desbloqueou os bancos.

Fica difícil te dizer exatamente onde mexer, sem ver o resto do teu firewall. Quando vc disse que tentou usar a regra na cadeia FORWARD e não funcionou, provavelmente o que aconteceu foi que vc colocou a regra no lugar errado, depois de outra regra que liberava o mesmo tráfego. Aí realmente não funciona.

Oi meu amigo, muito obrigado pela ajuda.

Acho que me ensinaram esse negócio errado, hehehe.
Quando aprendi usar o iptabes ainda era a versão antiga, e essa regra funcionava, mas ninguém me disse que não era para funcionar.... sacanagem.

Mas achei aqui a danada...
Tinha essa regra atrapahando:
$IPT -I FORWARD -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

troquei para:
$IPT -I FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

Aí a regra
iptabes -A FORWARD -s 192.168.50.0/24 -p tcp --dport 443 -j DROP

Passou a funcionar conforme vc disse.

Valeu pela ajuda, agora é esperar para ver se alguma coisa vai parar de funcionar na rede já que eu tirei o NEW e quebrar a cabeça para arrumar da forma correta.


Valeu galera do fórum.......

Vou dormir.

zekkerj

Esteja atento principalmente para aplicações que não passam no firewall, como Outlook e Thunderbird (correio eletrônico), e consultas diretas ao DNS.

Mas isso também vai depender se o seu firewall é restritivo ou não (ou seja, se você bloqueia todo o tráfego que não seja explicitamente autorizado, com uma regra de DROP no final do script, ou com política DROP).
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D