Configurar Squid Basico (con autentificacion de usuarios)
Squid es un proxy caché, funciona como intermediario para nuestra coneccion a internet, guardando las paginas visualizadas en un cache, el cual su tamaño puede ser modificado por el administrador del proxy, Squid es un proxy cache muy adaptable, nos permite configurar muchos parametros para llegar a la solucion que queremos implementar.
Les escribo una pequeña, y basica guia para configurar Squid con autentificacion de usuarios via NCSA, es aplicable a cualquier distribucion, yo lo instale en Fedora 13, a continuacion los pasos para su configuracion e intalacion.
Para su instalacion:
Con yum:
yum install squid
Con apt:
apt-get install squid
Si quieres compilarlo desde el fuente dirigete a http://www.squid-cache.org
Luego de instalarlo, podemos configurarlo, editamos el archivo de configuracion /etc/squid/squid.conf
Y modificamos los siguientes parametros basicos:
http_port 3128
Por defecto es el 3128, lo podemos modificar a nuestro antojo, este es el puerto por donde escuchara nuestro servidor proxy cache.
cache_mem 100 MB
Especificamos la memoria que tendra nuestro cache, en Fedora tendremos que añadir la linea, ya que no esta en la configuracion predeterminada.
cache_dir ufs /var/spool/squid 700 16 256
Aqui especificamos el directorio y la capacidad de almacenamiento que tendra nuestro cache, el primer numero despues de la ruta es el tamaño, en mi caso 700 megabytes.
Luego de tener nuestros parametros basicos seteados, podemos definir de que tipos de redes permitir el acceso a nuestro proxy, y eso lo especificamos en la seccion acl (Access Control List) de la siguiente manera:
Si por ejemplo en el lugar donde lo implementaremos, tenemos una IP clase C, debemos especificar:
acl (nombre de lista) src 192.168.1.0/24
O por ejemplo si fuese clase A, seria de la siguiente manera:
acl (nombre de lista) src 10.0.0.0/8
Por defecto Squid recibe peticiones de cualquier red, asi que solo tendremos que comentar las que no queremos que puedan acceder.
Luego de definir nuestras Listas de control, podemos continuar especificando que hacer con estas listas de control, y esto lo definimos con el parametro http_access, por ejemplo:
http_access allow (nombre de lista)
http_access allow deny all
Aqui estamos permitiendo el acceso a todos los que tengan una IP de la clase especificada, y denegando a todos los que no la tengan.
Un ejemplo de como quedaria todo el proceso que e explicado hasta el momento:
##########################################################
http_port 3128 #Puerto en el cual escucha
cache_mem 100 MB #Memoria de el cache
cache_dir ufs /var/spool/squid 700 16 256 #Directorio y capacidad de cache
acl RedLocal src 192.168.1.0/24 #Red Clase C
acl RedLocal src 10.0.0.0/8 #Red Clase A
#acl RedLocal src 172.22.0.0/16 #Red Clase B
http_access allow RedLocal #Permite acceso a acl
http_access deny all #Deniega acceso a acl
###########################################################
En ese ejemplo Squid permitira solo a los de Ip de clase A y C, escuchara por el puerto 3128, tendra una memoria de 100MB y almacenara 700 Megas de datos, el en directorio especificado.
Luego reiniciamos Squid, /etc/init.d/squid restart
Y probamos si funciona, simplemente configuramos nuestro navegador con la Ip y el puerto de el servidor donde instalamos Squid, para poner a prueba el proxy.
Configuracion de autorizacion de usuarios:
Lo primero que tenemos que hacer es crear el archivo que tendra nuestros usuarios y contraseñas, y lo crearemos con el siguiente comando, y automaticamente añadiremos un usuario.
htpasswd -c /etc/squid/passwd ramphis
Aqui generamos un archivo llamado passwd, en el directorio /etc/squid/ con nombre ramphis, luego de el comando nos pedira la contraseña para el usuario ramphis.
Para añadir mas usuarios, simplemente hacemos lo mismo sin la opcion -c, ejemplo:
htpasswd /etc/squid/passwd rosa —> Le asignamos contraseña
Ya tenemos dos usuarios creados para nuestro proxy, en esta guia utilizaremos NCSA para la autorizacion de usuarios.
Editamos nuevamente /etc/squid/squid.conf, y añadimos las siguientes lineas.
auth_param basic /usr/lib/squid/ncsa_auth /etc/squid/passwd
Con el siguiente parametro especificamos la ruta de el ncsa y el archivo que contiene los usuarios y contraseñas.
auth_param basic realm Mensaje que aparecera al pedir autorizacion
Con el siguiente parametro especificamos lo que aparecera al pedir autorizacion, escribimos despues de realms.
auth_param basic children 5
Especificamos los procesos de autentificacion a correr.
auth_param basic basic credentialsttl 1 hours
Especificamos el tiempo para que vuelva a pedir autorizacion en otra maquina del mismo usuario.
Luego de tener estos parametros definidos, podemos continuar creando un nuevo acl.
acl autorizacion proxy_auth REQUIRED
Y luego agregandole al final de nuestro http_access, el nombre de el acl definido.
http_access allow RedLocal autorizacion
http_access deny all
Esto se lee de la siguiente manera:
«Permiteme el acceso a todos los que esten en red local, luego de identificar que esten en red local pidele su usuario y contraseñá»
Y listo, podemos reiniciar nuestro servicio, y tendremos nuestro proxy cache funcionando con autorizacion de usuarios.
Gracias
EXISTE UN ERROR EN LA REGLA acl autorizacion auth_proxy REQUIRED
TIENES proxy_auth alreves
mira el error que me lanza al reiniciar el servicio.
Stopping squid: [FAILED]
Starting squid: [FAILED]
2011/04/24 17:25:52| Processing Configuration File: /etc/squid/squid.conf (depth 0)
2011/04/24 17:25:52| WARNING: Netmasks are deprecated. Please use CIDR masks instead.
2011/04/24 17:25:52| WARNING: IPv4 netmasks are particularly nasty when used to compare IPv6 to IPv4 ranges.
2011/04/24 17:25:52| WARNING: For now we will assume you meant to write /24
2011/04/24 17:25:52| aclIpParseIpData: WARNING: Netmask masks away part of the specified IP in '192.168.1.1/255.255.255.0'
2011/04/24 17:25:52| Can't use proxy auth because no authentication schemes are fully configured.
FATAL: ERROR: Invalid ACL: acl autorizacion proxy_auth REQUIRED
Squid Cache (Version 3.1.10): Terminated abnormally.
CPU Usage: 0.146 seconds = 0.026 user + 0.120 sys
Maximum Resident Size: 19408 KB
Page faults with physical i/o: 0
que cress que pueda ser????
Excelente tutorial. Sencillo y fácil de comprender. Sin embargo me nació una duda al hacer las pruebas. Veamos: El usuario se autentica con el squid y yo le puse "auth_param basic basic credentialsttl 2 hours", sin embargo el usuario se retira de la PC. Como puede cerrar la sesión de Squid para que otra persona no navegue con su usuario y contraseña? Gracias de antemano.