![]() Propósito de este manual: debian no hace mucho liberó su versión 4 (etch) y esto me hizo replantear la instalación del servidor proxy. Un upgrade de versión en debian es algo peligroso, si lo haces en un equipo que esta en producción y del cual dependen unos cien usuarios, ya se que no son muchos, pero hay que cuidarlos igual. Decidí volver a instalar el debian con squid, squidguard, apache 2 y sarg, vamos un servidor proxy de lo más profesional. Revisando la web de squid y algunos manuales descubrí que una alma caritativa había dedicado algo de su tiempo en crear un "helper" para integrar squid con ldap, la solución a mis problemas. Lo que me hizo plantearme el escribir todos los pasos para configurar un squid con integración con ldap,creo que funciona en cualquier ldap pero solo lo he probado en el de microsoft. Escenario:
Tres tipos de usuario:
Empezamos: En el grupo AccesoTotal añadiremos a todos los usuarios que puedan visitar casi todo el contenido de internet. En el grupo AccesoLimitado añadiremos a todos los usuarios que puedan visitar los websites que permita la empresa tales como bancos, servidores locales, web de la propia empresa, y cualquier otro sitio que se considere. Si el usuario no esta en cualquiera de estos grupos se le denegara el acceso a internet. ![]() Esto es todo lo que tenemos que hacer en windows. Pasamos al servidor debian etch 4, primero instalamos el squid, utilizamos apt para instalar la ultima versión, este manual esta escrito para squid (2.6.5-6) proxy:~# apt-get install squid squid-common winbindAhora solo tenemos que configurar el squid, se muestra linea a linea el archivo de configuración que se utiliza en este manual, pero recuerda que el archivo de configuración original consta de más de 4000 lineas entre comentarios y parámetros, utiliza esta configuración de base. Al final de este documentos podrás encontrar una copia sin comentar y lista para usar en tu squid. proxy:~# vi /etc/squid/squid.confUtilizamos el editor de textos vi para modificar squid.conf http_port 3128Puerto para el servidor proxy (Defecto 3128) icp_port 0no usamos icp forwarded_for offOcultamos la ip del cliente, para que en internet solo se muestre la ip del router hierarchy_stoplist cgi-bin ?Aquí puedes incluir todo aquello que squid no debe guardar en chache Ej. cgi-bin acl apache rep_header Server ^ApachePara los servidores que permiten resumir la sesión cuando se cancela una descarga de un archivo access_log /var/log/squid/access.log squidEsta linea se explica por si misma, donde guardamos el log de acceso emulate_httpd_log onPara emular el formato de log del apache, esto nos sirve para utilizar los analizadores de logs de apache hosts_file /etc/hosts¿Donde esta el fichero hosts? cache_dir aufs /var/spool/squid/ 2000 16 256Esta linea define el tipo de cache que utilizara squid, su ubicación, su tamaño, la cantidad de directorios y de subdirectorios respectivamente. cache_dir
cache_mem 128 MBLa cantidad de memoria asignada al squid, por defecto es de 8MB pero como que el pc tiene 1gb probamos con 128MB, esta memoria reservada por squid solo se usara para:
Hasta aquí todo es bastante sencillo y estándar, ahora se complica con la conexión con el LDAP de windwos auth_param basic program /usr/lib/squid/ldap_auth -R -b "dc=babilonics,dc=com" -D "cn=usuarioldap,ou=Internet,dc=babilonics,dc=com" -w "micontraseña" -f sAMAccountName=%s -h 192.168.74.2
Como esta linea es básica para que funcione, "el invento", se comenta punto por punto external_acl_type ldap_group %LOGIN /usr/lib/squid/squid_ldap_group -R -b "dc=babilonics,dc=com" -D "cn=usuarioldap,ou=Internet,dc=babilonics,dc=com" -w "micontraseña" -f "(&(objectclass=person) (sAMAccountName=%v) (memberof=cn=%a,ou=Internet,dc=babilonics,dc=com))" -h 192.168.74.2Ahora vamos con el otro "helper" este permite la utilización de grupos del ldap
Como esta linea es básica para que funcione, "el invento", se comenta punto por punto auth_param basic children 25Todo lo que escribas después del realm, se muestra al usuario cuando se le pide la contraseña. Ej. "Babilonics Proxy" auth_param basic credentialsttl 5 minutesEl tiempo que squid mantiene las credenciales de las web externas, donde el usuario se valida acl CONNECT method CONNECTEstos son los puertos "80 443" que squid permitirá conexiones. cualquier petición a un puerto que no este en esta linea sera rechazada. esta configuración es muy particular, cada red tiene sus aplicaciones y sus necesidades. Para añadir puertos como el de ftp, para descargas, solo tienes que añadirlo detrás del ultimo dejando un espacio. Ej. "acl Safe_ports port 80 443 21" si no sabes que puertos necesitan tus aplicaciones puedes utilizar una linea con todos los puertos altos y con los mas usuales pero no es muy recomendable. Ej. "acl Safe_ports port 80 443 21 1024-65535" acl SSL_ports port 443Los puertos que necesitan conexión ssl acl all src 0.0.0.0/0.0.0.0En esta acl definimos la red all, si tenemos varias redes o subredes las podemos definir con acls para darles un tratamiento distinto a cada una de ellas acl manager proto cache_objectSe incluye por defecto acl localhost src 127.0.0.1/255.255.255.255Esta acl define localhost y to_localhost acl purge method PURGESe incluye por defecto acl ldapSinAcceso external ldap_group SinAcceso Esta acl define el grupo SinAcceso, es el nombre del grupo en el AD y ldapSinAcceso es el nombre de la acl del squid acl ldapConAcceso external ldap_group ConAcceso Esta acl define el grupo ConAcceso, es el nombre del grupo en el AD y ldapConAcceso es el nombre de la acl del squid acl dstcomun dstdomain "/etc/squid/acl/comun.acl"En este archivo pondremos todos los dominios que consideremos accesibles para todos los usuarios. Al final de este documento se explica como crear este fichero. acl ldap-group proxy_auth REQUIREDEsta acl establece que todos los usuarios del ldap deben autenticarse offline_mode onPara cachear todo lo que pase por el proxy http_access deny !Safe_portsDenegamos el acceso a cualquier puerto diferente a los definidos en Safe_ports http_access deny CONNECT !SSL_portsDenegamos la conexión cifrada a los puertos que no son ssl http_access deny ldapSinAccesoNo permitimos el acceso a internet de los usuarios del grupo SinAcceso http_access allow ldapConAccesoPermitimos el acceso a internet de los usuarios del grupo ConAcceso http_access allow manager localhostPermitimos solo el acceso a cachemgr desde localhost http_access allow purge localhostSolo permitimos purgas desde localhost http_access allow localhostPermitimos el acceso al proxy http_access deny ally al final lo denegamos todo http_reply_access allow allPara que conteste a las peticiones de los clientes icp_access deny alldenegamos el icp header_access X-Forwarder-For deny allPara ocultar la máxima información del proxy, solo en las cabeceras header_access Accept-Language deny allPara remplazar las cabeceras, del proxy y de los navegadores #header_access User-Agent deny allModificamos la cabecera del navegador, este será el agente que se mostrara hacia internet, recuerda que cuanta menos información regales mejor esta opción esta comentada con un "#" para omitirla de la configuración, si descomentas estas lineas evitaras que se detecte la versión de nuestro navegador, evitando spyware, virus y otros bichos, pero es posible que no podamos utilizar aplicaciones web como las de los bancos, ya que necesitan detectar la versión de tu navegador Otra opción es falsear esta información, si en tu red se utiliza el interenet explorer puedes enviar la cabecera del firefox o viceversa, pero claro esto también puede darte problemas en otras webs refresh_pattern ^ftp: 1440 20% 10080Estas lineas no se para que sirven pero se incluyen por defecto y aquí están pero no las comento cache_effective_user proxyEl usuario y el grupo que utilizara squid coredump_dir /var/spool/squidCon esta linea le indicamos al squid donde guardar la cache error_directory /usr/share/squid/errors/SpanishEl idioma que utilizara squid cuando muestre un error al usuario, Ej. "Error 404" Hasta aquí todas las lines del archivo de configuración del squid, ubicado en /etc/squid/squid.conf, ahora solo tienes que añadir los usuarios en los grupos corespondientes del Active Directory de windows, configurar el navegador de los usurios con dirección ip y el puerto del proxy, puedes hacerlo con las politicas de windows 2000 o 2003 server (windows 2kx server). Ahora antes de reiniciar el squid, tenemos que crear el directorio acl y añadir el archivo comun.acl Creamos el directorio acl en el directorio de configuración del squid proxy:~# mkdir /etc/squid/aclCreamos el archivo comun.acl y lo llenamos con una lista de dominios permitidos como la que se muestra más abajo. proxy:~# vi /etc/squid/acl/comun.aclConcedemos permisos de escritura y lectura solo al usuario root proxy:~# chmod 600 /etc/squid/acl -REl archivo de dominios comunes, estos son los dominios donde los usuarios limitados pueden acceder. .babilonics.comYa podemos reiniciar nuestro nuevo proxy-cache squid proxy:~# /etc/init.d/squid restartUtiliza este codigo para copiar y pegar archivo de configuracion sin comentar
|
|||


Error con comun.acl
Saludos y anticipo mi felicitacion por este tutorial y las gracias por compartir tu conocimiento. He seguido paso a paso tu consejo y optuve este error.
/etc/init.d/squid start
Starting Squid HTTP proxy: squid* Creating squid spool directory structure
2008/11/25 13:14:34| aclParseAclLine: WARNING: empty ACL: acl dstcomun dstdomain "/etc/squid/acl/comun.acl"
FATAL: Bungled squid.conf line 2902: visible_hostname
Squid Cache (Version 2.6.STABLE5): Terminated abnormally.
2008/11/25 13:14:34| aclParseAclLine: WARNING: empty ACL: acl dstcomun dstdomain "/etc/squid/acl/comun.acl"
FATAL: Bungled squid.conf line 2902: visible_hostname
Squid Cache (Version 2.6.STABLE5): Terminated abnormally.
Muchas gracias y espero que no sea tarde para alguna ayuda..
Saludos
archivo comun.acl
Buenas y gracias por tu felicitación
no tiene secreto solo tienes que crear un archivo con un editor tipo vim o similar
como se explica en el manual con el vi creamos el archivo y en su interior ponemos los dominios
proxy:~# vi /etc/squid/acl/comun.acl
.babilonics.com
.etc etc
míralo bien no tiene nada de complicado seguro que te estas liando con alguna otra cosa
error
Primero agradecerte y felicitarte por tan buen tutorial, hice paso apaso cada una de tus recomendaciones sin embargo tengo este error, quizas esta en crear el archivo comun.acl
Si puedes explica como lo hiciste en detalle
Mucha Gracias
Starting Squid HTTP proxy: squid* Creating squid spool directory structure
2008/11/25 13:14:34| aclParseAclLine: WARNING: empty ACL: acl dstcomun dstdomain "/etc/squid/acl/comun.acl"
FATAL: Bungled squid.conf line 2902: visible_hostname
Squid Cache (Version 2.6.STABLE5): Terminated abnormally.
2008/11/25 13:14:34| aclParseAclLine: WARNING: empty ACL: acl dstcomun dstdomain "/etc/squid/acl/comun.acl"
FATAL: Bungled squid.conf line 2902: visible_hostname
Squid Cache (Version 2.6.STABLE5): Terminated abnormally.
Forma de Login
Muy Buen manual, me funciona perfecto tal y como lo explicas. pero quisiera hacer lo mismo que menciona el comentario anterior. Que el login se tome desde algun lugar, como para que el usuario no tenga que ingresarlo, o al menos que esa autenticacion se haga una sola vez por cada inicio de sesion de window$.
Gracias.
((( Luis )))
Re: Forma de Login
Hola Luis,
Pues la verdad no tengo ni idea de como hacer un "single sign-on" con el squid, pero esto te puede ayudar
http://wiki.squid-cache.org/SquidFaq/ProxyAuthentication#head-ca6c847dd2974a610ef8f6a0e44319cb325f92b4
OeX
Configuración en el Browser
Primero que nada agradecer tremendo HOWTO que hiciste, demasiado claro, pero te quiero hacer una consulta, y disculpa si parece tonta la pregunta, pero ¿como debo configurar el browser (IE - Firefox) para poder tener salida a internet con la configuración de proxy squid que tu hiciste?
Te agradeceria mucho me ayudaras.
buenas
no hay preguntas tontas, solo respuestas tontas
IE
Herramientas-->opciones de internet-->conexiones-->configuración lan
marca: usar un servidor proxy...
en la casilla dirección escribe la ip de tu servidor proxy y en el puerto pues eso el puerto de tu proxy
gracias por el comentario
--
Oex
Ayuda
Hola amigo OeX, no se si sera problema de capa 8 (por mi), o tengo mal armado el cuento, ya que he hecho todo como lo explicas en la configuración. Por eso queria consultarte acerca de la conexión de los equipos.
Sin proxy: La internet llega a un router Linksys BEFVP41, este router tiene IP 192.168.0.1, de ahi se va al switch de mi red.
A la maquina con el proxy le di IP 192.168.0.253 a eth0 y IP 192.168.0.254 a eth1. Desde la salida del router entre a eth0 y sali desde eth1 al switch de mi red ¿Esta bien o es de otra forma la conexión? Porque la verdad es que no me llega internet a la red.
En el archivo resolv.conf le tengo como DNS
domain RANCAGUA (que es el dominio de la red)
nameserver 192.168.0.1
Me podrias ayudar maestro por favor. Muchas gracias.
Re: Ayuda
Hola
El problema lo tienes en la asignación de ip en las ethernets, estas configurando el proxy con dos tarjetas en el mismo segmento de red, esto se puede hacer pero lo tienes que completar con algún software-driver de balanceo de carga y no creo que sea lo que buscas.
si quieres que todas las conexiones de tu red pasen por el proxy tienes dos opciones más sencillas.
Utiliza solo una tarjeta de red y en el router deniega todo lo que salga menos la ip del proxy y solo a los puertos que permites salir (80,443,21...) De esta forma solo el proxy podrá acceder a internet.
Dos redes o subneting (Ej. 192.168.0.254 eth0 y 192.168.1.254 eth1)
Utiliza un cable de red para unir eth0 con el router y eth1 al switch, todas las estaciones de trabajo de la red deberán utilizar una ip de la red 192.168.1.0
esto debería funcionar, dime que como acaba el tema, que ya es curiosidad
y por cierto maestro no, gracias pero no, con suerte aprendiz, que aun me queda mucho por aprender
thk
--
OeX
(SaYa) Exelente "How To" y solicito tu ayuda por favor
Te felicito, por la perfecta explicacion de todos los pasos no he encontrado ninguno how to mejor que me permitiera entender e implementar la autentificacion con AD para squid
Abusando de tu confianza, espero me puedas ayudar, pues apartir de seguir tu manual, quise ir un poko mas haya por lo cual me avente a probar con OPENLDAP y entonces he logrado instalarlo y configurarlo sobre un debian etch superando la autentificacion del admin cambiando:
auth_param basic program /usr/lib/squid/ldap_auth -R -b "dc=babilonics,dc=com" -D "cn=usuarioldap,ou=Internet,dc=babilonics,dc=com" -w "micontraseña" -f sAMAccountName=%s -h 192.168.6.2por esto
auth_param basic program /usr/lib/squid/ldap_auth -R -b "dc=babilonics,dc=com" -D "cn=usuarioldap,ou=Internet,dc=babilonics,dc=com" -w "micontraseña" -f uid=%s 192.168.6.2pero al momento de seleccionar a los grupos, :S
external_acl_type ldap_group %LOGIN /usr/lib/squid/squid_ldap_group -R -b "dc=babilonics,dc=com" -D "cn=usuarioldap,ou=Internet,dc=babilonics,dc=com" -w "micontraseña" -f "(&(objectclass=person) (sAMAccountName=%v) (memberof=cn=%a,ou=Internet,dc=babilonics,dc=com))" -h 192.168.6.2kreo ke no he hayado el problema pues lo que intente hacer es:
external_acl_type ldap_group %LOGIN /usr/lib/squid/squid_ldap_group -R -b "dc=babilonics,dc=com" -D "cn=usuarioldap,ou=Internet,dc=babilonics,dc=com" -w "micontraseña" -f "(objectclass=person) (uid=%v) (memberof=cn=%a,ou=Internet,dc=babilonics,dc=com)" -h 192.168.6.2sin niguna suerte, ojala puedas y quieras ayudarme, agradecere mucho tu ayuda ;), gracias de antemano
PD: mi openLDAP ya es funcional tanto ke puedo autenticar usuarios para el dominio de windows no tengo problemas con el openLDAP
Enviar un comentario nuevo