Squid: reglas ACL, autenticación por contraseña y proxy transparente con IPTables

Informática y TelecomunicacionesActualizado el 5,37 KB

Resumen

Este apunte explica cómo configurar Squid con reglas ACL basadas en direcciones MAC, autenticación por usuario y contraseña, y listas de control de acceso con tiempo y URL. También describe cómo montar un proxy transparente con reglas de IPTables para redirigir el tráfico HTTP y otros servicios. Incluye una tabla de puertos comunes de red.

Puntos clave

  • Las ACL de tipo arp permiten administrar Squid mediante direcciones MAC de los clientes.
  • La autenticación por contraseña usa un archivo de claves protegido (chmod 600, propietario proxy) creado con htpasswd y el programa ncsa_auth.
  • Una regla ACL con proxy_auth required activa la autenticación por contraseña.
  • Una ACL precedida de '!' coincide con los paquetes que no cumplen la regla.
  • Para un proxy transparente se usa http_port con la opción transparent y se activa el reenvío de paquetes (ip_forward).
  • La regla iptables -t nat PREROUTING con REDIRECT envía el tráfico de un puerto (por ejemplo 80) al puerto 3128 de Squid.
  • Cada servicio adicional requiere su propia regla de redirección cambiando el valor de --dport.

Ponte a prueba

Configuración Avanzada de Squid: Reglas y Autenticación

Regla por Dirección MAC

La regla tipo MAC Address nos permite administrar Squid por medio de las direcciones MAC. Por ejemplo, esta regla se llama adminmac y en ella proporcionamos las direcciones MAC de las máquinas clientes:

acl adminmac arp 09:00:2b:23:45:67 00:1f:3c:5f:fd:b1 00:1e:ec:70:7e:24

Regla por Contraseña (Password)

La regla tipo Password permite controlar el acceso a internet por medio de un usuario y contraseña. Para poder habilitar este método, tendremos que seguir los siguientes pasos de configuración:

  1. Creación del archivo de claves

    Creamos el archivo que contendrá las claves. Lo creamos oculto para mayor seguridad:

    touch .claves
  2. Asignación de permisos

    Le asignamos permisos de lectura/escritura y el usuario encargado del archivo:

    chmod 600 .claves

    y

    chown proxy:proxy .claves
  3. Creación de usuario y contraseña

    Creación de usuario y contraseña para el acceso a internet:

    htpasswd .claves clientes
  4. Habilitación en el fichero de configuración de Squid

    Habilitaremos las siguientes opciones dentro del fichero de configuración del servidor Squid:

    auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/.claves

    o

    authenticate_program /usr/lib/squid/ncsa_auth /etc/squid/.claves

    Estamos indicando la aplicación que controla la autenticación y dónde se encuentra el archivo que contiene las cuentas de los usuarios.

  5. Habilitación de la regla ACL

    Por último, tendremos que habilitar la regla ACL encargada de la autenticación de contraseña:

    acl password proxy_auth required

Control de Acceso (ACLs)

Las reglas de control de acceso (ACLs) definen si se permite o no el acceso. Las reglas pueden ser negadas con un "!" delante; en esos casos, los paquetes que cumplen la regla serán los no recogidos en la misma.

Ejemplo 1: Acceso básico

acl all src 0.0.0.0/0.0.0.0
acl jefes src 192.168.1.23 192.168.1.25
http_access allow jefes
http_access deny all

Ejemplo 2: Acceso avanzado con tiempo y URL

acl all src 0.0.0.0/0.0.0.0
acl jefes src 192.168.1.23 192.168.1.25
acl red-local src 192.168.1.0/255.255.255.0
acl laboral time mtwhf 09:00-15:00
acl no-permitido url_regex "/etc/squid/listas/paginas.txt"
http_access allow jefes
http_access allow red-local laboral !no-permitido
http_access deny all

Servidor Proxy Transparente con Squid

Configurar Squid como proxy transparente permite que las conexiones sean enrutadas al proxy sin hacer ninguna configuración en los clientes para que tengan salida a internet. Los clientes se conectarán a internet pasando por el proxy sin darse cuenta de ello.

Configuración del parámetro http_port

Solamente tenemos que configurar este parámetro para que sea un proxy transparente:

http_port 192.168.1.254:3128 transparent

Reglas de Firewall (IPTables) para Proxy Transparente

Para que el proxy transparente funcione correctamente, es necesario configurar reglas en el firewall (IPTables) para redirigir el tráfico.

Activación del reenvío de paquetes

Es fundamental activar el reenvío de paquetes en el sistema:

echo 1 > /proc/sys/net/ipv4/ip_forward

Reglas de enmascaramiento (NAT Masquerade)

Estas reglas permiten que los paquetes de la red interna salgan a internet a través de la interfaz externa del servidor:

iptables -t nat -A POSTROUTING -o eth0 -s 192.168.10.0/24 -j MASQUERADE

Redirección de servicios al proxy

Redireccionamos el tráfico de servicios específicos hacia el puerto del proxy (3128). Hay que poner la siguiente línea para que funcione de manera transparente; debemos aplicar la siguiente regla en iptables:

iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

Con esto ya tenemos redireccionadas todas las conexiones HTTP (puerto 80) hacia el proxy (puerto 3128). Si nos piden otra conexión (FTP, SSH, SMTP, POP3, etc.), debemos incluir la misma regla pero cambiando el puerto, una vez por cada conexión que nos pidan (ej. --dport 25 para SMTP).

Ejemplos de redirección de servicios:
  • Servicio Web (HTTP):
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
  • Servicio SMTP:
    iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 25 -j REDIRECT --to-port 3128

Puertos Comunes de Red

A continuación, se listan algunos puertos comunes y sus servicios asociados:

  • FTP: 20-21
  • SSH: 22
  • Telnet: 23
  • SMTP: 25
  • DNS: 53
  • HTTP (Web): 80
  • POP3: 110
  • IMAP: 143
  • HTTPS: 443

Descargar

PDF Word HTML

Preguntas frecuentes

¿Cómo se activa la autenticación por contraseña en Squid?

Se crea un archivo de claves con htpasswd, se asignan permisos 600 y propietario proxy, se configuran auth_param basic con ncsa_auth y authenticate_program, y se añade la ACL 'acl password proxy_auth required'.

¿Qué opción de http_port convierte Squid en proxy transparente?

La opción transparent, indicada tras la dirección y el puerto, por ejemplo http_port 192.168.1.254:3128 transparent.

¿Cómo se redirige el tráfico SMTP al proxy?

Con la regla iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 25 -j REDIRECT --to-port 3128, cambiando el puerto de destino del servicio.

Ponte a prueba

Tarjetas de repaso

Pulsa una tarjeta para ver la respuesta.

Test

1. ¿Qué tipo de ACL permite administrar Squid mediante direcciones MAC?
2. ¿Qué permisos se asignan al archivo de claves?
3. ¿Qué hace el símbolo '!' delante de una ACL?
4. ¿Qué puerto usa Squid en el ejemplo de proxy transparente?
5. ¿Qué servicio utiliza el puerto 443 según la tabla del apunte?
6. ¿Qué opción de iptables redirige el tráfico entrante a un puerto local?
7. ¿Para qué sirve la regla MASQUERADE en el apunte?

Preguntas generadas con IA a partir del documento: comprueba las respuestas con el texto.