Fórum Ubuntu Linux - PT

Suporte Técnico => Internet, Redes e Segurança => Tópico iniciado por: velox256 em 10 de Julho de 2014, 20:45

Título: Iptables (ou Squid) bloqueando webserver
Enviado por: velox256 em 10 de Julho de 2014, 20:45
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:

Citar
modprobe 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:

Citar
http_port 3128 transparent

Alguma dica?
Título: Re: Iptables (ou Squid) bloqueando webserver
Enviado por: Arthur Bernardes em 10 de Julho de 2014, 21:20
Especifique com o "-i" a interface dos clientes!

Código: [Selecionar]
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.
Título: Re: Iptables (ou Squid) bloqueando webserver
Enviado por: zekkerj em 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.

Código: [Selecionar]
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".

Código: [Selecionar]
iptables -t nat -A PREROUTING -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-port 3128
Título: Resolvido - Re: Iptables (ou Squid) bloqueando webserver
Enviado por: velox256 em 11 de Julho de 2014, 10:07
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.

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

Código: [Selecionar]
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.
Título: Resolvido - Re: Iptables (ou Squid) bloqueando webserver
Enviado por: velox256 em 11 de Julho de 2014, 10:15
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.

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.

Código: [Selecionar]
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".

Código: [Selecionar]
iptables -t nat -A PREROUTING -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-port 3128