Proxy Não Transparente

1. Proxy Não Transparente

Francisco Wótila C. Cruz
Wotila_Carneiro

(usa Ubuntu)

Enviado em 30/03/2012 - 08:03h

Prezados, bom dia.
Minha rede usava proxy transparente, mas como todos sabem, ele não trata HTTPS. Então resolvi deixar ele no modo 'não transparente'. Configurei uma GPO no Windows 2003 (apenas como teste) para que as máquinas na rede recebem as configurações do proxy. Mas a rede não acessa a internet. Surge a mensagem:


ERROR
The requested URL could not be retrieved

Invalid Request error was encountered while trying to process the request:

Quando eu verifico o log do squid com o tail -f /var/log/squid/access.log e tento acessar alguma coisa aparece isso:

0 172.18.0.113 TCP_DENIED/400 2272 GET NONE:// - NONE/- text/html

Creio que a máquina esteja pegando o proxy, pois as tentativas de conexão passam pelo squid, como mostra no log, mas porque não navega?


  


2. Re: Proxy Não Transparente

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 30/03/2012 - 08:22h

Squid (proxy autenticado) no AD precisa colocar essa linha
auth_param basic program /usr/local/bin/smb_auth -W dominio -u ip_do_servidor_ad

Caso essa linha já exista, então especifique melhor em detalhes...
Se possível posta todos os arquivos (.confs) necessários para integração do Squid com AD, assim fica mais fácil analisarmos.


3. Re: Proxy Não Transparente

Francisco Wótila C. Cruz
Wotila_Carneiro

(usa Ubuntu)

Enviado em 30/03/2012 - 08:59h

O Proxy não é autenticado não. Eu quero bloquear https (facebook, orkut, etc...) no modo não transparente. Eu comentei a linha do iptables:

#PROXY TRANSPARENTE
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to 3128

#PROXY
#iptables -A INPUT -p tcp -s 10.1.10.0/24 -j ACCEPT
#iptables -A INPUT -p tcp -s 172.18.0.0/24 -j ACCEPT

Mas agora tá liberando tudo!!!! O.o


http_port 3128
visible_hostname filial

cache_mem 32 MB
maximum_object_size_in_memory 128 KB
maximum_object_size 512 MB
error_directory /usr/share/squid/errors/Portuguese
cache_swap_low 95
cache_swap_high 90
cache_dir ufs /var/spool/squid 2048 16 256
cache_access_log /var/log/squid/access.log

# DNS_NAMESERVER
dns_nameservers 172.18.0.230
dns_nameservers 172.18.0.1
cache_log /var/log/squid/cache.log

#DEFINIÇÃO DAS ACL'S

acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
acl redelocal src 172.18.0.0/255.255.255.0
acl acesso_download src "/etc/squid/acesso_download"
acl liberado src "/etc/squid/acesso_livre"
acl lan src 172.18.0.0/255.255.255.0
acl palavras_bloqueadas url_regex "/etc/squid/palavras_bloqueadas"
#acl porno url_regex "/etc/squid/porno_br"
acl bloqueados url_regex "/etc/squid/bloqueados"

#always_direct allow all

#EXTENSOES POR MIME TYPES
acl audio req_mime_type -i ^audio
acl video req_mime_type -i ^video

#EXTENSOES POR REGEX
acl com url_regex -i \.com$
acl com2 url_regex -i \.com\?$
acl pif url_regex -i \.pif$
acl pif2 url_regex -i \.pif\?$
acl scr url_regex -i \.scr$
acl scr2 url_regex -i \.scr\?$
acl mpeg url_regex -i \.mpeg$
acl mpeg2 url_regex -i \.mpeg\?$
acl mp3 url_regex -i \.mp3$
acl mp32 url_regex -i \.mp3\?$
acl avi url_regex -i \.avi$
acl avi2 url_regex -i \.avi\?$
acl wav url_regex -i \.wav$
acl wav2 url_regex -i \.wav\?$
acl mpe url_regex -i \.mpe$
acl mpe2 url_regex -i \.mpe\?$
acl exe url_regex -i \.exe$
acl exe2 url_regex -i \.exe\?$
acl zip url_regex -i \.zip$
acl zip2 url_regex -i \.zip\?$

#BLOQUEIA O DOWNLOAD P/ TODOS DESSAS EXTENSOES ABAIXO
#http_access deny com
http_access deny com2
http_access deny pif
http_access deny pif2
http_access deny scr
http_access deny scr2

#LIBERA O ACESSO A TUDO (EXCETO O QUE ESTA ACIMA DESSA LINHA) P/ "LIBERADO"
http_access allow liberado

#BLOQUEIA O ACESSO A SITES IMPROPRIOS (EXCETO P/ "LIBERADO")
#http_access deny porno
http_access deny palavras_bloqueadas
http_access deny bloqueados

#LIBERA O DOWNLOAD DAS EXTENSOES ABAIXO P/ "ACESSO_DOWNLOAD"
#http_access allow acesso_download com
http_access allow acesso_download pif
http_access allow acesso_download scr
http_access allow acesso_download mpeg
http_access allow acesso_download mp3
http_access allow acesso_download avi
http_access allow acesso_download wav
http_access allow acesso_download mpe
http_access allow acesso_download exe
http_access allow acesso_download zip
http_access allow acesso_download audio
http_access allow acesso_download video

#BLOQUEIA O DOWNLOAD DAS EXTENSOES ABAIXO P/ TODOS EXCETO "ACESSO_DOWNLOAD"
http_access deny mpeg
http_access deny mpeg2
http_access deny mp3
http_access deny mp32
http_access deny avi
http_access deny avi2
http_access deny wav
http_access deny wav2
http_access deny mpe
http_access deny mpe2
http_access deny exe
http_access deny exe2
http_access deny zip
http_access deny zip2
http_access deny audio
http_access deny video

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

http_access allow localhost
http_access allow redelocal

http_access deny all



IPTABLES:




#!/bin/bash

iniciar(){

#COMPARTILHAR A CONEXÃO
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 172.18.0.0/24 -o eth0 -j MASQUERADE
echo "Compartilhamento ativado!"

#TRÁFEGO ILIMITADO NAS INTERFACES DE LOOPBACK
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT


#POLÍTICA PADRÃO-DROPAR OS PACOTES
iptables -P OUTPUT DROP
iptables -P INPUT DROP
iptables -P FORWARD DROP

#REMOVE QUALQUER CHAINS CRIADA
iptables --delete-chain
iptables -t nat --delete-chain

iptables -N DROPAR
iptables -N BLOCKLAB
iptables -t nat -N BLOCKLAB

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

#DROPA PACOTES SYN+FIN
iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j LOG --log-level 6 --log-prefix "FLAG - "
iptables -A INPUT -p tcp --tcp-flags ALL SYN,FIN -j DROP

#ADICIONA ROTA PARA REDE CPD
route del -net 10.1.0.0 netmask 255.255.0.0 gw 10.6.0.254 2> /dev/null > /dev/null
route add -net 10.1.0.0 netmask 255.255.0.0 gw 10.6.0.254 2> /dev/null > /dev/null

#LIBERA TUDO PELA INTERFACE ADMINISTRATIVA
iptables -A FORWARD -i eth2 -j ACCEPT
iptables -A FORWARD -o eth2 -j ACCEPT
iptables -A OUTPUT -o eth2 -j ACCEPT
iptables -A OUTPUT -o eth2 -j ACCEPT

#LIBERA TUDO PARA CPD
iptables -A FORWARD -s 10.1.10.0/24 -j ACCEPT
iptables -A FORWARD -d 10.1.10.0/24 -j ACCEPT

#LIBERA TUDO MATRIZ
iptables -A FORWARD -s 10.1.0.0/16 -j ACCEPT
iptables -A FORWARD -d 10.1.0.0/16 -j ACCEPT
iptables -A INPUT -s 10.1.0.0/16 -j ACCEPT
iptables -A OUTPUT -s 10.1.0.0/16 -j ACCEPT

#REDE VALIDA MATRIZ
iptables -A INPUT -s 10.1.10.0/1
iptables -A INPUT -d 10.1.10.0/24

#NAT LABORATÓRIO PARA REDE ADMINISTRATIVA
ifconfig eth2:0 10.6.1.230 netmask 255.255.0.0
ifconfig eth2:1 10.6.1.231 netmask 255.255.0.0
ifconfig eth2:3 10.6.1.185 netmask 255.255.0.0
ifconfig eth2:4 10.6.1.57 netmask 255.255.0.0
ifconfig eth2:5 10.6.1.49 netmask 255.255.0.0
iptables -t nat -A PREROUTING -d 10.6.1.230 -i eth2 -j DNAT --to 172.18.0.230
iptables -t nat -A PREROUTING -d 10.6.1.231 -i eth2 -j DNAT --to 172.18.0.231
iptables -t nat -A PREROUTING -d 10.6.1.185 -i eth2 -j DNAT --to 172.18.0.185
iptables -t nat -A PREROUTING -d 10.6.1.57 -i eth2 -j DNAT --to 172.18.0.57
iptables -t nat -A PREROUTING -d 10.6.1.49 -i eth2 -j DNAT --to 172.18.0.49
iptables -t nat -A POSTROUTING -s 172.18.0.230 -o eth2 -j SNAT --to 10.6.1.230
iptables -t nat -A POSTROUTING -s 172.18.0.231 -o eth2 -j SNAT --to 10.6.1.231
iptables -t nat -A POSTROUTING -s 172.18.0.185 -o eth2 -j SNAT --to 10.6.1.185
iptables -t nat -A POSTROUTING -s 172.18.0.57 -o eth2 -j SNAT --to 10.6.1.57
iptables -t nat -A POSTROUTING -s 172.18.0.49 -o eth2 -j SNAT --to 10.6.1.57
iptables -A FORWARD -s 172.18.0.230 -j ACCEPT
iptables -A FORWARD -d 172.18.0.230 -j ACCEPT
iptables -A FORWARD -s 172.18.0.231 -j ACCEPT
iptables -A FORWARD -d 172.18.0.231 -j ACCEPT
iptables -A FORWARD -s 172.18.0.185 -j ACCEPT
iptables -A FORWARD -d 172.18.0.185 -j ACCEPT
iptables -A FORWARD -s 172.18.0.57 -j ACCEPT
iptables -A FORWARD -d 172.18.0.57 -j ACCEPT
iptables -A FORWARD -s 172.18.0.49 -j ACCEPT
iptables -A FORWARD -d 172.18.0.49 -j ACCEPT

#DHCP
iptables -A INPUT -p udp --dport 67 -j ACCEPT
iptables -A INPUT -p udp --dport 68 -j ACCEPT
iptables -A OUTPUT -p udp --sport 67 -j ACCEPT
iptables -A OUTPUT -p udp --sport 68 -j ACCEPT

#DNS
iptables -A INPUT -p udp --sport 53 --dport 1024:65535 -j ACCEPT
iptables -A INPUT -s 172.18.0.0/24 -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -s 172.18.0.0/24 -p udp --dport 53 -j ACCEPT
iptables -A FORWARD -s 172.18.0.0/24 -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -s 172.18.0.0/24 -p udp --dport 53 -j ACCEPT
iptables -A OUTPUT -s 172.18.0.0/24 -p tcp --dport 53 -j ACCEPT
iptables -A OUTPUT -s 172.18.0.0/24 -p udp --dport 53 -j ACCEPT



#PROXY TRANSPARENTE
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to 3128

#PROXY
#iptables -A INPUT -p tcp -s 10.1.10.0/24 -j ACCEPT
#iptables -A INPUT -p tcp -s 172.18.0.0/24 -j ACCEPT

#SSH
iptables -A INPUT -p tcp --dport 22 -s 10.1.10.0/24 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 172.18.0.0/24 -m state --state NEW -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 10.1.0.0/16 -m state --state NEW -j ACCEPT

#TRÁFEGO DE SAÍDA
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dport 21,80,443 -m state --state NEW -j ACCEPT

#TRÁFEGO DE SAÍDA DA LAN
iptables -A FORWARD -p tcp -s 172.18.0.0/24 -o eth0 -m state --state NEW -j ACCEPT
iptables -A FORWARD -p udp -s 172.18.0.0/24 -o eth0 -j ACCEPT
iptables -A FORWARD -p udp -s 172.18.0.0/24 -o eth0 -j ACCEPT


}

parar(){
iptables -F
iptables -t nat -F
echo "Regras de Firewall e Compartilhamento Desativados!"
}

case "$1" in
"start") iniciar;;
"stop") parar;;
"restart") parar; iniciar;;
*) echo "Use os parâmetros start ou stop"
esac



4. Re: Proxy Não Transparente

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 30/03/2012 - 09:20h

Com certeza. O q vc tem q fazer é bloquear requisições nas portas 80 e 443 para a Internet. Ex.:


iptables -I FORWARD -p tcp --dport 80 -j DROP
iptables -I FORWARD -p tcp --dport 443 -j DROP


Neste caso, ninguém pode acessar as portas 80 e 443 na Internet. Se vc liberar apenas a máquina do Squid, ae todos serão obrigados a acessar o proxy para navegar.


5. Re: Proxy Não Transparente

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 30/03/2012 - 09:32h

Exatamente como o Renato comentou, as portas 80 e 443 NÃO pode esta liberado no FORWARD, e sim no OUTPUT, e mais a regra que faz o redirecionamento da porta 80 para 3128(squid) forçando assim os usuários navegarem pelo proxy.

E com isso o Ultrasurf deixa de conectar também...



6. Re: Proxy Não Transparente

Renato Carneiro Pacheco
renato_pacheco

(usa Debian)

Enviado em 30/03/2012 - 09:42h

Complementando, o q eu disse é apenas as regras mínimas d bloqueio d acesso direto. A maneira da liberação do proxy pra acessar fora depende d onde ele foi instalado (se tá junto com o firewall ou em máquina separada).


7. Re: Proxy Não Transparente

Francisco Wótila C. Cruz
Wotila_Carneiro

(usa Ubuntu)

Enviado em 30/03/2012 - 09:45h

renato_pacheco escreveu:

Com certeza. O q vc tem q fazer é bloquear requisições nas portas 80 e 443 para a Internet. Ex.:


iptables -I FORWARD -p tcp --dport 80 -j DROP
iptables -I FORWARD -p tcp --dport 443 -j DROP


Neste caso, ninguém pode acessar as portas 80 e 443 na Internet. Se vc liberar apenas a máquina do Squid, ae todos serão obrigados a acessar o proxy para navegar.


Mas se eu bloquear a porta 443 ele vai bloquear tudo que for HTTPS?


8. Re: Proxy Não Transparente

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 30/03/2012 - 10:02h

Não, porque libera as portas 80,443 na chain OUTPUT e jamais no FORWARD, assim ninguém "burla" o proxy com https://facebook.com
E nem Ultrasurf conecta...




9. Re: Proxy Não Transparente

Francisco Wótila C. Cruz
Wotila_Carneiro

(usa Ubuntu)

Enviado em 30/03/2012 - 12:06h

saitam escreveu:

Não, porque libera as portas 80,443 na chain OUTPUT e jamais no FORWARD, assim ninguém "burla" o proxy com https://facebook.com
E nem Ultrasurf conecta...



Acabou bloqueando tudo!!!
Deixa eu resumir aqui o que quero.
Tenho essas configurações acima (proxy transparente).
Temos:
• Um laboratório de informática com 26 máquinas;
• Um Airport Extreme para distribuir internet sem fio;

Com o proxy transparente não dá para ter controle sobre https. Não posso bloquear tudo o que for https, pois os professores deverão acessar emails, etc. Eu Preciso deixar as configurações como estão acima, tentar enviar o proxy automaticamente para as máquina. Tentei com o WPAD via DHCP, mas não rolou.



10. Re: Proxy Não Transparente

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 30/03/2012 - 13:01h

wotila escreveu:
Acabou bloqueando tudo!!!
Deixa eu resumir aqui o que quero.
Tenho essas configurações acima (proxy transparente).
Temos:
• Um laboratório de informática com 26 máquinas;
• Um Airport Extreme para distribuir internet sem fio;

Com o proxy transparente não dá para ter controle sobre https. Não posso bloquear tudo o que for https, pois os professores deverão acessar emails, etc. Eu Preciso deixar as configurações como estão acima, tentar enviar o proxy automaticamente para as máquina. Tentei com o WPAD via DHCP, mas não rolou.



A regra que postei funciona perfeitamente no proxy autenticado, forçando todos usar o proxy...
Nem Ultrasurf conecta mais, mas ainda tem o TOR, porém tenho um meio de bloquear também...

26 máquinas só, então pode configurar manualmente o IP:PORTA nos navegadores da estação.
Também pode integrar o Squid no AD ou OpenLDAP, que já autentica no domínio e proxy.


Maiores informações: http://mundodacomputacaointegral.blogspot.com/


11. Re: Proxy Não Transparente

Francisco Wótila C. Cruz
Wotila_Carneiro

(usa Ubuntu)

Enviado em 30/03/2012 - 13:25h

saitam escreveu:
26 máquinas só, então pode configurar manualmente o IP:PORTA nos navegadores da estação.
Também pode integrar o Squid no AD ou OpenLDAP, que já autentica no domínio e proxy.


O squid não possui autenticação. E as 26 máquinas são tranquilas, o problema será nos notebooks que se conectarão pelo Airport Wireless.




12. Re: Proxy Não Transparente

Francisco Wótila C. Cruz
Wotila_Carneiro

(usa Ubuntu)

Enviado em 30/03/2012 - 16:29h

Tentei configurar o wpad.dat para que as máquinas recebem o proxy automaticamente via DHCP, mas não consegui:

Criei um arquivo wpad em /var/www com as seguinte informações:

function FindProxyForURL(url, host)
{
return "PROXY 172.18.0.1:3128";
}

Em seguida configurei o DHCP

ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;
option wpad-url code 252 = text;

subnet 172.18.0.0 netmask 255.255.255.0 {
range 172.18.0.100 172.18.0.150;
option routers 172.18.0.1;
option domain-name-servers 208.67.222.222;
option broadcast-address 172.18.0.255;
option wpad-url "http://172.18.0.1/wpad.dat\n";
}

Mas as máquinas não recebem o proxy






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts