Iptables (ou Squid) bloqueando webserver

Iniciado por velox256, 10 de Julho de 2014, 20:45

tópico anterior - próximo tópico

velox256

Moçada, montei um servidor Squid + DHCP + Gateway de internet e tudo funcionou direitinho. Porém surgiram alguns problemas. O Squid, para funcionar, deve ser configurado nas máquinas clientes (o proxy) para serem usados, mas isso é impraticável pois basta ir nas configurações de rede das máquinas clientes, tirar o proxy e as máquinas navegam pela internet. Então procurei por aqui um modo de forçar o redirecionamento de portas pelo Iptables para que as máquinas clientes usassem "na marra" o Squid (nem precisa de autenticação) com ou sem configuração de proxy nas máquinas. Usei essa linha de comando:

Citar
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128

Funcionou, mas perdi o acesso ao meu webserver de fora de minha rede, ou seja, se eu digitar o meu endereço do NO-IP, dá que a configuração de controle de acesso impede que a sua requisição seja permitida nesse momento. Se eu tirar a linha e reiniciar a máquina o acesso externo volta a funcionar.
O meu script de gateway de internet completo é esse aqui:

Citarmodprobe iptable_nat
                echo 1 > /proc/sys/net/ipv4/ip_forward
                iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
                iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128

O meu Squid está como:

Citarhttp_port 3128 transparent

Alguma dica?
Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.

Arthur Bernardes

Especifique com o "-i" a interface dos clientes!

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 80 -j REDIRECT --to-port 3128


Substitua o "eth0" pela sua interface de rede local.

zekkerj

Duas sugestões...

1. Bloqueie o repasse direto de conexões. Mexeu na configuração de proxy? Seu navegador vai parar de funcionar, baby. Quem aprendeu a fazer, que aprenda a desfazer.

iptables -A FORWARD -p tcp -m multiport --dport 80,81,82,8080,443 -i eth0 -j REJECT


2. Continue fazendo proxy transparente, mas ao invés de especificar a interface com "-i" (ou, junto com), especifique o endereço de rede com "-s".

iptables -t nat -A PREROUTING -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-port 3128
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

velox256

Blz, testei a jogada e funcionou, mantive a "transparent" do squid e foi na boa, tendo acesso ao webserver e sem precisar configurar o proxy nas máquinas.

Citação de: Arthur Bernardes online 10 de Julho de 2014, 21:20
Especifique com o "-i" a interface dos clientes!

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i eth0 -p udp --dport 80 -j REDIRECT --to-port 3128


Substitua o "eth0" pela sua interface de rede local.
Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.

velox256

Zekkerj,

Não tive tempo para ver a sua solução, vou fazer isso mais tarde e posto aqui o que serviu (ou não). Acho que a opção 1 vai servir direitinho para uma segunda situação que estou montando, hehehehe... De qq maneira, consegui o que eu queria com a dica do Arthur, que foi forçar o uso do Squid sem a necessidade de configurar o proxy nas máquinas clientes E não perder o acesso externo ao meu webserver, que tem serviços de monitoramento e logs de acesso.

Citação de: zekkerj online 10 de Julho de 2014, 22:09
Duas sugestões...

1. Bloqueie o repasse direto de conexões. Mexeu na configuração de proxy? Seu navegador vai parar de funcionar, baby. Quem aprendeu a fazer, que aprenda a desfazer.

iptables -A FORWARD -p tcp -m multiport --dport 80,81,82,8080,443 -i eth0 -j REJECT


2. Continue fazendo proxy transparente, mas ao invés de especificar a interface com "-i" (ou, junto com), especifique o endereço de rede com "-s".

iptables -t nat -A PREROUTING -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-port 3128

Computador perereca, com disco perereca, monitor perereca e sistema super xuxu. Visitem a minha página em http://sidserra.k6.com.br ou meu blog em http://sidserra.blogspot.com.br.