Squid+iptables: como permito que os HTTPs passem e contornem a lula?
-
25-09-2019 - |
Pergunta
Basicamente começou com a lula e os iptables hoje (o Google é seu amigo). Esse material vai ser a minha morte.
Tenho a configuração do Squid3 no Ubuntu 9.04 Server como proxy transparente. Funciona docemente quando eu uso a caixa proxy como meu gateway padrão etc. As regras iptable para essa configuração faziam parte do tutorial. : P
Infelizmente, não posso acessar sites HTTPS (como Gmail ou qualquer coisa na porta 443 basicamente). Isso ocorre porque a lula não gosta do que não pode armazenar em cache, que neste caso é o tráfego HTTPS.
Gostaria de adicionar uma regra iptable para que eu possa acessar basicamente sites HTTPS e usar o Skype. Basicamente, permita que esses tipos de tráfego passem sem passar por um proxy da lula? (ignorando por assim dizer)
Alguém talvez soubesse como fazer isso ou ter um link para quaisquer fontes que me ajudassem a descobrir isso?
Obrigada.
Solução
Depois de realmente considerar mastigar meus próprios pulsos e sonhar com IPS a noite toda long + Força bruta Google/tentando qualquer coisa que eu pudesse colocar meus dedos digitais, consegui montar algo que realmente funciona. Não conheço as razões técnicas por que, se você pode fornecer explicações definidas, faça -o! : D
PS: Tudo na explicação é feito via linha de comando
PS: Esta não é uma solução final, mas está funcionando em resposta à minha própria pergunta.
Aqui está:
Etapa 1: teve que ativar o encaminhamento de IP na caixa:
vim /etc/sysctl.conf
// Encontre e descommentando o seguinte
net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=1
Etapa 2: Adicione a regra de traseiro do loop (isso é mais para quando todas as portas são cobertas, aparentemente muitos aplicativos precisam dela?
iptables -I INPUT -i lo -j ACCEPT
Etapa 3. Adicione regras para o desvio da porta 443: (Eth1 é interface da Internet e xxxx/eth0 é interface LAN)
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -t filter -A FORWARD -i eth0 -p tcp --dport 443 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source x.x.x.x
Etapa 4. Então, finalmente
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination x.x.x.x:3128
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
Outras dicas
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source x.x.x.x
Isso esta errado. Significa que cada pacote TCP/UDP/etc
O fato de você enviar da sua LAN estagiária para a Internet usará como IP de origem do IP privado da LAN (provavelmente 192.178.xx), em vez do IP público.
Pode ser que ajude você:
PREROUTING == DestinationNAT -> From Internet to Intern LAN
POSTROUTING == SourceNAT -> From Intern LAN to Internet
iptables -t nat -A PREROUTING -i intern -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i intern -p tcp --dport 3128
iptables -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o extern -p tcp --dport 80
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i extern -p tcp --sport 80
iptables -A OUTPUT -j ACCEPT -m --state ESTABLISHED,RELATED -o intern -p tcp --sport 80
Para ignorar 443 seria suficiente com:
iptables -I FORWARD -p tcp --dport 443 -j ACCEPT
E se você é system/squid/firewall
também é o roteador da sua rede para a internet, não se esqueça:
iptables -t nat -A POSTROUTING -o extern -j SNAT --to-source Public_external_IP
Para essas explicações ...
A etapa 1 configura a máquina como um roteador. Isso é necessário para qualquer máquina Linux que aceite ou encaminhe o tráfego IP destinado a outras máquinas que não sejam si. Sem isso, os níveis mais baixos da pilha de redes rejeitarão o tráfego e o NAT nem terá a chance de fazer suas coisas.
A etapa 2 não é relevante para o problema que está sendo perguntado. Pode ou não ser necessário para as operações do roteador não relacionadas ao proxy.
Etapa #3 permite que a porta do relé da máquina 443 normalmente como roteador. A regra pós -turista pode ser melhorada usando o Masquerade em vez do Snat.
Etapa 4 Ambas as linhas fazem a mesma coisa de maneiras diferentes. A primeira linha pode levá -lo a problemas no futuro, se você não souber quais são as diferenças entre o DNAT e o redirecionamento. Para simplificar, use apenas o redirecionamento.
Leitura http://wiki.squid-cache.org/configexamples/intercept/linuxDirect Poderia ter economizado muitos problemas.
Há também uma regra crítica da tabela de mangle ausente na sua configuração que é explicada nessa página do wiki.