Squid: Guía rápida de configuración del proxy Squid
Guía rápida de Configuración de Squid
------------------------------------------------- Autor : NaTaSaB (jmmerlos @ merlos . org) Web : http://www.merlos.org Fecha : Mayo 2003 ------------------------------------------------
Resumen
En este texto comentaremos cuales son las modificaciones básicas del fichero squid.conf para que funcione. Son modificaciones mínimas para una red local de ámbito casero. El rango de IPs que se utiliza es 192.168.0.0/255.255.255.0
Creando la Caché
Si no usas Debian, lo primero que tienes que hacer una vez instalado, a no ser que lo haga la propia instalación es crear la caché para eso ejecuta:
# squid -z
Si eres usuario Debian, puedes ahorrarte este paso, ya que durante la instalación se realiza de forma automática (y luego dicen que Debian es difícil!)
Modificaciones /etc/squid.conf
Básicamente son tres líneas las que tienes que modificar. El squid.conf es un fichero muy largo (más de 3000 líneas) así que utiliza alguna herramienta de búsqueda de tu editor de texto
Cambio de Puerto (al principio del fichero):
# Default: # http_port 3128 http_port 8080
Desactivar la comunicación con otros Squid (al principio del fichero):
#Default: # icp_port 3130 icp_port 0
Dar acceso a las IPs de la red Local (sección access controls aprox. línea 1300)
acl redlocal src 192.168.0.0/255.255.255.0 http_access allow redlocal
Proxy Transparente
Si quieres no tener que configurar cada uno de los clientes para que usen el proxy puedes utilizar la siguiente regla:
iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.1/255.255.255.0 -p tcp --dport 80 -j REDIRECT --to-port 8080
Además tendrás que modificar las siguientes opciones en el SQUID (aprox. línea 1700):
httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on
Autentificación
Squid permite realizar autentificación de usuarios antes de permitirles el acceso a sus recursos, esto puede ser útil si queremos permitir el acceso a nuestro proxy desde el exterior o queremos restringir la salida a internet de los usuarios de nuetra red local. Una cosa que tendremos que tener en cuenta es que esto no se puede usar en conjunto con un proxy transparente, es decir, los usuarios tendrán que configurar los navegadores para usar un proxy.
Hay varios métodos de autentificación de usuarios, básicamente lo único que hace falta es un programa que ejecute un bucle infinito que acepte por la entrada estándar una línea con el formato "username password" y devuelva "OK" o "ERR" ne caso de que sean o no correctos los datos. Dado que es muy sencillo este formato podemos crear nuestro propio autentificador.
En principio usaremos uno que trae por defecto el squid. Si estamos usando debian este fichero se encuentra en /usr/lib/squid/ncsa_auth p>
En la zona de External Programs del fichero de configuración
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/auth_users
En la zona de access control list (acl) añadimos:
acl regla_auth proxy_auth REQUIRED http_access allow regla_auth
En lugar de REQUIRED (solicitará login a todos los usuarios), podemos usar una lista separada por espacios de usuarios.
Ei fichero de usuarios se gestionará usando el comando htpasswd
phpSquidPass
Un interfaz escrito en PHP con el que los usuarios de nuestro sistema podrán cambiar su contraseña sin tener que notificárselo al administrador es el phpSquidPass. Este script no nos permitirá realizar una gestión como administradores de las cuentas, pero sí permitirá a los usuarios cambiar su contraseña. Esta utilidad GNU se puede descargar de:
http://sourceforge.net/projects/phpsquidpass/Una vez descomprimido (tar -xzvf phpsquidpass-0.6.tar.gz) haremos lo que sigue:
cd /etc/squid chgrp www-data auth_users # Cambiamos el grupo al que pertenece chmod 660 auth_users # Cambiamos los permisos para que www-data # pueda escribir chown proxy auth_users # Cambiamos el usuario para que ncsa_auth # pueda leerlo
Editamos /etc/groups y añadimos al usuario www-data al grupo proxy. Por ejemplo:
proxy:x:13:www-data
Configuramos el fichero de logs del phpsquid:
cd /var/log/squid touch squidauth.log #lo creamos chmod 640 squidauth.log #cambiamos los permisos chown www-data squidauth.log # El dueño del fichero será www-data chgrp proxy squidauth.log # y el grupo proxy
Configuramos el phpsquidpass. En nuestro caso lo dejamos de la siguiente forma:
// See the docs/TRANSLATIONS file $config['language'] = "en"; // Authentication files // Multiple password files are now supported! $config['auth_files'] = array( "/etc/squid/auth_users" ); // IPs allowed to change password // 192.168.0.1 - Only this IP can change // 192.168.0.0/255.255.0.0 - IPs from 192.168.0.1 to 192.168.255.254 // 192.168.0.0/16 - Same from 2 // 0.0.0.0/0 - Everyone can change $config['authip_range'] = array( "192.168.0.0/255.255.0.0" ); // Log actions by users? // 0 - No // 1 - Log only password changes // 2 - Log password changes and when user put incorrect current passwords $config['logging'] = "1"; // If you want logging support, write to what file? // (Remember to give permissions like the password file) $config['logging_file'] = "/var/log/squid/squidauth.log"; // Show plain passwords in the log? (Not recommended) // If not, don't show any passwords in the log. // 0 - No, 1 - Yes. $config['logging_plain_pass'] = "0"; // How much characters to use in the passwords (Min and Max) $config['charlength_min'] = 6; $config['charlength_max'] = 20; // Page title $config['page_title'] = 'Venus Proxy - Change Password'; // Background Color $config['page_bgcolor'] = 'white'; // Foreground Color $config['page_fcolor'] = 'black'; ? >