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

  1. Cambio de Puerto (al principio del fichero):

            
                       # Default: 
                       # http_port 3128 
                       http_port 8080
    
  2. Desactivar la comunicación con otros Squid (al principio del fichero):

           
                       #Default:
                       # icp_port 3130
                       icp_port 0
    
  3. 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

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';

? >

Más información