Autor Tópico: Iptables (ou Squid) bloqueando webserver  (Lida 3462 vezes)

Offline velox256

  • Usuário Ubuntu
  • *
  • Mensagens: 1.915
  • Debian é Debian... :)
    • Ver perfil
    • Linux Inside
Iptables (ou Squid) bloqueando webserver
« Online: 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?
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.

Offline Arthur Bernardes

  • Usuário Ubuntu
  • *
  • Mensagens: 4.692
    • Ver perfil
Re: Iptables (ou Squid) bloqueando webserver
« Resposta #1 Online: 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.

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Iptables (ou Squid) bloqueando webserver
« Resposta #2 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.

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
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

Offline velox256

  • Usuário Ubuntu
  • *
  • Mensagens: 1.915
  • Debian é Debian... :)
    • Ver perfil
    • Linux Inside
Resolvido - Re: Iptables (ou Squid) bloqueando webserver
« Resposta #3 Online: 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.
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.

Offline velox256

  • Usuário Ubuntu
  • *
  • Mensagens: 1.915
  • Debian é Debian... :)
    • Ver perfil
    • Linux Inside
Resolvido - Re: Iptables (ou Squid) bloqueando webserver
« Resposta #4 Online: 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
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.