Correo electrnico: darkshram en gmail punto com Sitio de Red: http://www.alcancelibre.org/ J abber ID: darkshram@jabber.org Creative Commons Reconocimiento-NoComercial-CompartirIgual 2.1 1999-2014 Joel Barrios Dueas. Usted es libre de copiar, distribuir y comunicar pblicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. b) No puede utilizar esta obra para fines comerciales (incluyendo su publicacin, a travs de cualquier medio, por entidades con fines de lucro). c) Si altera o transforma esta obra o genera una obra derivada, slo puede distribuir la obra generada bajo una licencia idntica a sta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los trminos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legtimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en castellano. La informacin contenida en este documento y los derivados de ste se proporcionan tal cual son y los autores no asumirn responsabilidad alguna si el usuario o lector hace mal uso de stos. Introduccin. Este documento requiere haber estudiado y comprendido previamente los documentos titulados Configuracin bsica de Shorewall, Configuracin de servidor DHCP y Configuracin de Squid: Opciones bsicas. Por qu utilizar WPAD? Gracias a que una gran cantidad de sitios de Internet ahora funcionan a travs de HTTPS, resulta poco prctico configurar servidores intermediarios (proxies) en modo transparente, pues stos solo permiten el modo transparente para el protocolo HTTP (puerto 80/TCP), obligando a los administradores de redes de rea local a configurar la salida del protocolo HTTPS (puerto 443/TCP) a travs de NAT en el muro cortafuegos. Una forma de enfrentar el problema y poder controlar y filtrar la actividad de los usuarios a travs de HTTPS, es olvidarse del modo transparente de Squid y utilizar una configuracin manual del servidor proxy. Sin embargo, sto representara una enorme cantidad de trabajo para los administradores de redes de rea local, quienes tendran que pasar anfitrin por anfitrin a realizar la configuracin. sta, sin embargo, se puede automatizar anunciando sta a travs de servidores DHCP y servidores DNS, utilizando WPAD. Eliminar la configuracin de proxy en modo trasparente y utilizar en su lugar el mtodo descrito en este documento, combinado con una configuracin del proxy-cache que permita el acceso hacia Internet utilizando slo a una lista blanca y el cierre de la salida por NAT hacia el puerto 443, adems de permitir bloquear servicios como Facebook, permite tambin bloquear de manera eficiente programas comoUltrasurf y Your Freedom. Si adems se cierra la salida hacia el puerto 22/TCP, tambin se puede bloquear con xito a programas comoTor Browser. Acerca de WPAD. WPAD (Web Proxy Auto-Discovery protocol) es un mtodo utilizado por los clientes de servidores Proxy para localizar el URI de un archivo de configuracin, valindose de mtodos de descubrimiento a travs de DHCP y DNS. Los clientes descargan y ejecutan un archivo, que debe denominarse wpad.dat, utilizando el formato de auto-configuracin de proxy (PAC,Proxy Auto-Config) diseado por Netscape en 1996 para Netscape Navigator 2.0. El borrador del protocolo WPAD, el cual expir en 1999, fue elaborado por un consorcio de empresas que incluan a Inktomi Corp., Microsoft, Real Networks Inc. y Sun Microsystems Inc. A pesar de tratarse de un borrador que ha expirado, la mayora de los navegadores modernos incluyen soporte para este protocolo. El anuncio del archivo wpad.dat hacia la red de rea local slo puede hacerse a travs de uno de los dos siguientes mtodos: a. A travs de un servidor DHCP. b. A travs de un servidor DNS. Se puede utilizar indistintamente uno u otro mtodo. Jams combine ambos mtodos porque los anuncios seran ignorados por los navegadores. El mtodo ms estndar es el anuncio a travs de un servidor DHCP. Ambos mtodos requieren aadir registros en zonas de reenvo estticas o dinmicas del servidor de DNS utilizado por la red de rea local. Equipamiento lgico necesario. Instale Apache en el servidor que utilice como muro cortafuegos/proxy. yum -y install httpd Inicie el servicio httpd. service httpd start Para que el servicio httpd inicie junto con el sistema, ejecute lo siguiente: chkconfig httpd on Ajustes en el muro cortafuegos. Es necesario abrir en el muro cortafuegos el puerto 80 por TCP (HTTP) para la red de rea local. Se asume que ya estn abiertos los puertos correspondientes al resto de los servicios involucrados, es decir los puertos 67 (bootps), 68 (bootpc) y 53 (domain) por TCP y UDP. Shorewall. Edite el archivo el archivo /etc/shorewall/rules: vim /etc/shorewall/rules Elimine la configuracin de proxy transparente deshabilitando las reglas correspondientes a la salida desde la zona correspondiente a la red de rea local hacia los puertos 20/TCP (ftp-data), 22/TCP (ssh), 21/TCP (ftp) y 443/TCP (https) en la zona correspondiente a la red pblica y la regla que redirige hacia el puerto 8080/TCP (webcache) las peticiones desde la red de rea local hacia el puerto 80/TCP (http): #ACTION SOURCE DEST PROTO DEST SOURCE # PORT PORT(S)1 #ACCEPT loc net tcp 20,21,443 #ACCEPT loc net tcp 22 #REDIRECT loc 8080 tcp 80 # Si necesita acceder hacia servidores SSH legtimos que utilicen el puerto 22/TCP, aada una regla similar a la mostrada en el siguiente ejemplo, en la cual se asume que el servidor SSH involucrado tiene direccin IP hipottica equivalente a 200.1.2.3: #ACTION SOURCE DEST PROTO DEST SOURCE # PORT PORT(S)1 #ACCEPT loc net tcp 20,21,443 #ACCEPT loc net tcp 22 #REDIRECT loc 8080 tcp 80 # ACCEPT loc net:200.1.2.3 tcp 22 Asumiendo que Squid escucha peticiones en el puerto 8080 y que slo se permitirn conexiones desde la red de rea local, la regla que habilita el acceso desde la red de rea local hacia los puertos 8080 (webcache) y 80 (http) del muro cortafuegos correspondera a algo similar a lo siguiente: #ACTION SOURCE DEST PROTO DEST SOURCE # PORT PORT(S)1 #ACCEPT loc net tcp 20,21,80,443 #ACCEPT loc net tcp 22 #REDIRECT loc 8080 tcp 80 # ACCEPT loc fw tcp 80,8080 Para aplicar los cambios en Shorewall, ejecute lo siguiente: service shorewall restart Servicio iptables. Asumiendo que Squid escucha peticiones en la puerto 8080 y que la red de rea local corresponde a 172.16.1.0/28, ejecute lo siguiente para abrir los puertos 80/TCP (http) y 8080/TCP (webcache) del servidor y cerrar la salida desde la red de rea local hacia los puertos 20 (ftp-data), 21 (ftp), 22 (ssh) y 443 (https) en el exterior: iptables -A INPUT -s 172.16.1.0/28 -m state --state NEW \ -m tcp -p tcp --dport 80 -j ACCEPT iptables -A INPUT -s 172.16.1.0/28 -m state --state NEW \ -m tcp -p tcp --dport 8080 -j ACCEPT iptables -A FORWARD -p tcp --dport 20:21 -j DROP iptables -A FORWARD -p tcp --dport 22 -j DROP iptables -A FORWARD -p tcp --dport 443 -j DROP
service iptables save O bien edite el archivo /etc/sysconfig/iptables: vim /etc/sysconfig/iptables Y aada lo siguiente: -A INPUT -s 172.16.1.0/28 -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -A INPUT -s 172.16.1.0/28 -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT -A FORWARD -p tcp --dport 20:21 -j DROP -A FORWARD -p tcp --dport 22 -j DROP -A FORWARD -p tcp --dport 443 -j DROP Y reinicie el servicio iptables: service iptables restart Procedimientos. Este documento asume que se tiene configurado un servidor proxy- cache con Squid, un servidor DHCP y un servidor DNS. Por favor, cambie todos los valores resaltados en el procedimiento por aquellos que correspondan al escenario de su red de rea local. Resolucin local del nombre de anfitrin. Edite el archivo /etc/hosts: vim /etc/hosts Asumiendo que la direccin IP del anfitrin es 172.16.1.1 y que el dominio de la red de rea local es red-local.net, aada la siguiente lnearesaltada en negrita y respetando el resto del contenido existente en este archivo: 127.0.0.1 localhost.localdomain localhost ::1 localhost6.localdomain6 localhost6 192.168.70.20 m20.alcancelibre.org.mx m20 172.16.1.1 servidor.red-local.net servidor 172.16.1.1 wpad.red-local.net wpad Modifique lo que sea necesario para que ajuste a la configuracin utilizada en su red de rea local. Generar archivo wpad.dat. Genere el directorio /var/www/wpad con permisos de acceso y escritura para usuario y de acceso para grupo y otros (rwxr-xr-x): mkdir -m 0755 /var/www/wpad Cualquier error en la sintaxis har que el archivo sea imposible de utilizar. Puede descargar un archivo plantilla desde AlcanceLibre.org ejecutando lo siguiente: wget http://www.alcancelibre.org/linux/secrets/wpad.dat \ -O /var/www/wpad/wpad.dat Edite el archivo /var/www/wpad/wpad.dat y modifique lo que sea necesario para que ajuste a la configuracin utilizada en su red de rea local. vim /var/www/wpad/wpad.dat Asumiendo que la red de rea local corresponde a 172.16.1.0/28 (172.16.1.0/255.255.255.240) y que Squid est funcionando en el anfitrin denimonado servidor.red-local.net, escuchando peticiones en el puerto 8080, aada el siguiente contenido: function FindProxyForURL(url, host) { if ( isInNet(host, "172.16.1.0", "255.255.255.240") || isInNet(host, "127.0.0.0", "255.0.0.0") || shExpMatch(host, "172.16.1.*") || shExpMatch(host, "127.*" ) || shExpMatch(host, "localhost") || shExpMatch(host, "*.red-local.net") || isPlainHostName(host) || dnsDomainIs(host, ".red-local.net") ) { return "DIRECT"; } else { return "PROXY servidor.red-local.net:8080"; } } Es indispensable que el archivo /var/www/wpad/wpad.dat tenga permisos de lectura para todos, de otro modo ser imposible compartirlo a travs del servicio httpd. chmod a+r /var/www/wpad/wpad.dat Configuracin de Apache. Genere el archivo /etc/httpd/conf.d/wpad.conf: vim /etc/httpd/conf.d/wpad.conf Aada el siguiente contenido: NameVirtualHost *:80 <VirtualHost *:80> ServerName wpad.red-local.net ServerAlias wpad DocumentRoot /var/www/wpad ErrorLog logs/wpad-error_log CustomLog logs/wpad-access_log combined <Directory "/var/www/wpad"> AddType application/x-ns-proxy-autoconfig .dat DirectoryIndex wpad.dat Order Deny,Allow Deny from all Allow from 127.0.0.0/8 172.16.1.0/28 </Directory> </VirtualHost> Modifique lo que sea necesario para que ajuste a la configuracin utilizada en su red de rea local. A fin de evitar problemas con algunos navegadores, se recomienda que ste sea el nico anfitrin virtual en el servidor o bien que cuando menos sea el anfitrin virtual predeterminado. Recargue o reinicie el servicio httpd. service httpd reload Anuncio del archivo wpad.dat a travs de servidor DNS con zona esttica. Se requiere configurar el servidor DNS para que incluya dos registros, uno que resuelva el nombre wpad.red-local.net y el otro que indique el URI del archivo wpad.dat. Asumiendo que tiene configurado y funcionando un servidor DNS con una zona esttica que resuelve los nombres de anfitrin y direcciones IP de la red de rea local, edite el archivo de zona correspondiente: vim /var/named/data/red-local.net.zone Cambie el nmero de serie de la zona y aada los siguientes dos registros en la zona de reenvo en el DNS utilizado por la red de rea local. En el ejemplo se asume que el servidor HTTP que hospeda al archivo wpad.dat corresponde a la direccin IP 172.16.1.1: wpad IN A 172.16.1.1 @ IN TXT "service: wpad:!http://wpad.red- local.net:80/wpad.dat" Reinicie el servicio named. service named restart Recuerde que este mtodo jams debe combinarse con el del anuncio del archivo wpad.dat a travs de servidor DHCP. Anuncio del archivo wpad.dat a travs de servidor DNS con zona dinmica. Si se trata de una zona de reenvo dinmica, ejecute nsupdate para conectarse al servidor DNS: nsupdate -k /etc/rndc.key Desde el intrprete de mandatos de nsupdate, ejecute lo siguiente para aadir los registros necesarios: server 127.0.0.1 update add wpad.red-local.net. 86400 A 172.16.1.1 update add red-local.net. 86400 TXT "service: wpad:!http://wpad.red- local.net:80/wpad.dat" send quit Utilizando este ltimo procedimiento, es innecesario reiniciar el servicio named. Recuerde que este mtodo jams debe combinarse con el del anuncio del archivo wpad.dat a travs de servidor DHCP. Anuncio del archivo wpad.dat a travs de DHCP. Se requirere aadir un registro en la zona de DNS correspondientea a a zona de reenvo utilizada para resolver los nombres de la red de rea local. Identifique primero si utiliza una zona de reenvo esttica o dinmica. Edite el archivo /etc/named.conf. vim /etc/named.conf Localice la zona de reenvo que corresponda a la red de rea llocal. Una zona esttica almacena sus archivos de zona dentro de una ruta relativa al directorio /var/named o bien el sub- directorio /var/named/datay prohibe realizar actualizaciones de los registros de la zona. Ejemplo: zone "red-local.net" { type master; file "data/red-local.net.zone"; allow-update { none; }; } Una zona dinmica almacena sus archivos de zona dentro del sub- directorio /var/named/dynamic y permite realizar actualizaciones de los registros de la zona a travs de una firma digital. Ejemplo: zone "red-local.net" { type master; file "dynamic/red-local.net.zone"; allow-update { key "rndc-key"; }; } Aadir registro TXT del archivo wpad.dat en servidor DNS con zona esttica. Se requiere configurar primero el servidor DNS para que incluya un registro que resuelva el nombre wpad.red-local.net el cual ser utilizado para hacer el anuncio del URI del archivo wpad.dat a travs del servidor DHCP. Asumiendo que tiene configurado y funcionando un servidor DNS con una zona esttica que resuelve los nombres de anfitrin y direcciones IP de la red de rea local, edite el archivo de zona correspondiente: vim /var/named/data/red-local.net.zone Cambie el nmero de serie de la zona y aada slo el siguiente registro en la zona de reenvo en el DNS utilizado por la red de rea local. En el ejemplo se asume que el servidor HTTP que hospeda al archivo wpad.dat corresponde a la direccin IP 172.16.1.1: wpad IN A 172.16.1.1 Reinicie el servicio named. service named restart Aadir registro TXT del archivo wpad.dat en servidor DNS con zona dinmica. Si se trata de una zona dinmica, ejecute nsupdate para conectarse al servidor DNS: nsupdate -k /etc/rndc.key Desde el intrprete de mandatos de nsupdate, ejecute lo siguiente para aadir el registro necesario: server 127.0.0.1 update add wpad.red-local.net. 86400 A 172.16.1.1 send quit Utilizando este procedimiento, es innecesario reiniciar el servicio named. Configuracin de servidor DHCP. Asumiendo que tiene configurado y funcionando un servidor DHCP para gestionar la asignacin de las direcciones IP utilizadas por la red de rea local, edite el archivo /etc/dhcp/dhcpd.conf: vim /etc/dhcp/dhcpd.conf Aada en la configuracin del servidor DHCP, las dos siguientes opciones: option ip-forwarding off; option domain-name "red-local.net"; option ntp-servers 0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org, 3.pool.ntp.org; option wpad-url code 252 = text; option wpad-url "http://wpad.red-local.net/wpad.dat\n";
include "/etc/rndc.key";
zone localdomain. { primary 127.0.0.1; key rndc-key; } Reinicie el servicio dhcpd. service dhcpd restart Recuerde que este mtodo jams debe combinarse con el del anuncio del archivo wpad.dat a travs de servidor DNS. Comprobaciones. Si todo lo anterior concluy sin errores, slo resta verificar que la configuracin de los anfitriones con Windows. Vaya a Opciones de Internet Conexiones Configuracin LAN y verifique que est habilitada la casilla Autodetectar configuracin de proxy. En algunos casos es posible que se tenga que definir tambin el URI del archivo de configuracin (http://wpad.red-local.net/wpad.dat).
Opciones de Internet - Configuracin de Proxy. Para los anfitriones con GNU/Linux con GNOME 2 como escritorio slo hay que establecer Configuracin automtica del Proxy en lasPreferencias de Proxy de la red. Deje vaco el campo de URL de configuracin automtica para forzar la deteccin del archivo wpad.dat anunciado.
Configuracin de Proxy de la red en GNOME 2. Tambin pude configurar las opciones de cada navegador que lo requiera para que auto-detecte la configuracin del servidor proxy.
Opciones de Firefox - autodetectar configuracin del proxy.