Thursday, September 23, 2010

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

3 comentarios:

caosdr said...

EXISTE UN ERROR EN LA REGLA acl autorizacion auth_proxy REQUIRED

TIENES proxy_auth alreves

caosdr said...

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????

Dickxon's said...

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.

Post a Comment