Você está na página 1de 3

Deteco de Proxy Transparente (SQUID e IPTABLES) - Mini Tutorial

Colaborao: Silmar A. Marca Data de Publicao: 07 de Janeiro de 2005 Segue um mini Tutorial/HOWTO:

Identificao de proxy
A identificao de um proxy, seja transparente ou no depende do envio (pelo prprio proxy) de alguns headers (criados por ele mesmo) de identificao. No caso do squid, para evitar tal identificao basta adicionar as seguintes linhas no squid.conf:
#---/etc/squid/squid.conf (squid verso squid-2.5.7 ou superior) # TAG: header_access ... header_access Via deny all header_access X-Forwarded-For deny all header_access Proxy-Connection deny all header_access Accept-Encoding deny all # TAG: header_replace ...

Auto-Configurao usando DHCP


feita atravs do informe do parametro numero 252 do dhcp. necessrio configurar tanto o DHCP, quanto um servidor Web (no meu caso o APACHE). Veja que eu informo na opo 252 o ip onde est o servidor APACHE com o arquivo "wpad.dat". Este arquivo quem ir informar o proxy e outros. O browser deve ter a opo "Detectar configuraes automaticamente" setada.
#---/etc/dhcpd.conf (dhcpd verso 3.x) ... option wpad code 252 = text ; ... subnet 10.0.0.0 netmask 255.0.0.0 { ... option wpad "http://10.0.0.1/wpad.dat\000"; ... } subnet 172.16.0.0 netmask 255.240.0.0 { ... option wpad "http://172.16.0.1/wpad.dat\000"; ... } subnet 192.168.0.0 netmask 255.255.0.0 { ... option wpad "http://192.168.0.1/wpad.dat\000"; ... }

#--/etc/apache/conf/conf.d/proxy.conf (apache verso 2.x)


<VirtualHost *:80> DirectoryIndex wpad.dat ServerAlias proxy.* wpad.* DocumentRoot "/srv/www/default/proxy/" <Location "/"> ForceType application/x-ns-proxy-autoconfig

</Location> </VirtualHost> <Directory "/srv/www/default/proxy/"> Order allow,deny Allow from 10. 192.168. 172.16. 127. AllowOverride FileInfo AuthConfig Limit ForceType application/x-ns-proxy-autoconfig # Options +ExecCGI </Directory> # AddHandler cgi-script .cgi AddType application/x-ns-proxy-autoconfig .dat AddType application/x-ns-proxy-autoconfig .pac Alias /wpad.dat "/srv/www/default/proxy/wpad.dat" Alias /wpad.da "/srv/www/default/proxy/wpad.dat" Alias /proxy.pac "/srv/www/default/proxy/wpad.dat" #---/srv/www/default/proxy/wpad.dat (Browsers Iexplorer, Netscape etc...) function FindProxyForURL(url, host) { var domlocal = ".grupogsn.com.br"; var netlocal = "200.181.255.20"; var msklocal = "255.255.255.255"; var proxyaddr = "PROXY proxy.grupogsn.com.br:3128; DIRECT"; var proxyaddra = "PROXY 10.0.0.1:3128;"; var proxyaddrb = "PROXY 172.16.0.1:3128;"; var proxyaddrc = "PROXY 192.168.0.1:3128;"; if (dnsDomainIs(host, domlocal)) { return "DIRECT"; } else if (isPlainHostName(host)) { return "DIRECT"; } else if (isInNet(host, netlocal, msklocal)) { return "DIRECT"; } else if (isInNet(host, "127.0.0.0", "255.0.0.0")) { return "DIRECT"; } else if (isInNet(host, "10.0.0.0", "255.0.0.0")) { return "DIRECT"; } else if (isInNet(host, "172.16.0.0", "255.240.0.0")) { return "DIRECT"; } else if (isInNet(host, "192.168.0.0", "255.255.0.0")) { return "DIRECT"; } else if (isInNet(myIpAddress(), "10.0.0.0", "255.0.0.0")) { return proxyaddra; } else if (isInNet(myIpAddress(), "172.16.0.0", "255.240.0.0")) { return proxyaddrb; } else if (isInNet(myIpAddress(), "192.168.0.0", "255.255.0.0")) { return proxyaddrc; } else { return proxyaddr; } }

Proxy Transparente
Ocorre no ultimo caso: o cliente no tem a opo "Detectar configurao automaticamente" ou no est via DHCP (e neste caso no recebe a opo 252)
#---/etc/squid/squid.conf (squid verso squid-2.5 ou superior) ... httpd_accel_host virtual httpd_accel_with_proxy on httpd_accel_uses_host_header on ie_refresh on ...

#---firewall echo "0" > /proc/sys/net/ipv4/tcp_ecn #Evita problemas de resposta de tamanho zero <<<desvio de paginas que no podem ter proxy transparente>>> # 200.201.174.0/24 #Caixa Federal 0800 561041 # 200.255.42.0/24 #Agencia Nacional de Saude (Diops - www.ans.gov.br) iptables -t nat -A PREROUTING -s 0.0.0.0/0 -d 200.201.174.0/24 -j RETURN iptables -t nat -A PREROUTING -s 0.0.0.0/0 -d 200.255.42.0/24 -j RETURN <<direcionamento para o proxy transparente>> iptables -t nat -A PREROUTING -p tcp -s 10.0.0.0/8 -d 0.0.0.0/0 80 -j DNAT --to-destination 10.0.0.1:3128 iptables -t nat -A PREROUTING -p tcp -s 192.168.0.0/16 -d 0.0.0.0/0 80 -j DNAT --to-destination 192.168.0.1:3128 iptables -t nat -A PREROUTING -p tcp -s 172.16.0.0/12 -d 0.0.0.0/0 80 -j DNAT --to-destination 172.16.0.1:3128

Vale a pena lembrar que as regras sao genricas e apresentadas para as 3 classes de rede internas mais comum. Adaptar os endereos conforme necessrio for...
Cordialmente, Silmar A. Marca GrupoGSN - Desenvolvimento, Implantao e Verificao de Servidores Profissionais baseados em Linux/Novell http://www.grupogsn.com.br/~marca/

Você também pode gostar