Guía de tecnologías

Configurar el servidor proxy Squid con DansGuardian y NTLM en Ubuntu

7 min read Redes Actualizado 11 Oct 2025
Proxy Squid + DansGuardian: guía NTLM
Proxy Squid + DansGuardian: guía NTLM

Qué cubre este documento

  • Preparación y copias de seguridad
  • Configuración de Squid para proxy transparente y NTLM
  • Ajustes para DansGuardian y exclusiones de antivirus
  • Script para permisos de winbind
  • Reglas de ipmasq para redirección y DNAT
  • Instalación del módulo Webmin para DansGuardian
  • Pruebas, solución de problemas y criterios de aceptación

Importante: define términos en una línea

  • NTLM: protocolo de autenticación de Microsoft usado en dominios Windows.
  • winbind: componente de Samba que permite que Linux valide usuarios de dominio.

1. Preparación y copias de seguridad

Antes de editar, haz una copia de seguridad del archivo principal de Squid. Siempre trabaja con privilegios de administrador.

cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
nano -c /etc/squid/squid.conf

Nota: nano -c muestra números de columna; puedes usar tu editor preferido.

2. Configurar Squid

Edita /etc/squid/squid.conf y aplica estos cambios concretos (líneas referidas según el archivo original):

  • Cambia la línea 73 a:

http_port 127.0.0.1:3128 transparent

  • Cambia la línea 74 a:

http_port 8080

  • Cambia la línea 593 a:

cache_peer 127.0.0.1 parent 8081 0 no-query login=*:nopassword

  • Descomenta las líneas 1783 a 1791 y reemplaza el marcador por:

/usr/bin/ntlm_auth –helper-protocol=squid-2.5-ntlmssp

  • Descomenta las líneas 1800 a 1803 y reemplaza el marcador por:

/usr/bin/ntlm_auth –helper-protocol=squid-2.5-basic

  • Cambia la línea 2449 a:

acl ntlm_auth proxy_auth REQUIRED

  • Cambia la línea 2579 a:

http_access allow ntlm_auth

  • Cambia la línea 3161 a:

forwarded_for off

Guarda el archivo.

Nota importante: la directiva forwarded_for off evita que Squid reenvíe la IP interna de los clientes a los sitios web externos. Si se deja por defecto, tu IP interna podría filtrarse a los servidores remotos.

3. Permisos para winbind (ntlm_auth)

Squid/ntlm_auth necesita acceso a /var/run/samba/winbindd_privileged. Los permisos pueden restablecerse al reiniciar, por eso añadiremos un script que los ajuste en cada arranque.

Crea o edita /etc/init.d/winbind-ch.sh y pega exactamente lo siguiente:

#!/bin/sh
#set -x
WINBINDD_PRIVILEGED=/var/run/samba/winbindd_privileged
chmodgrp() {
chgrp proxy $WINBINDD_PRIVILEGED || return 1
chmod g+w $WINBINDD_PRIVILEGED || return 1
}
case "$1" in
start)
chmodgrp
;;
restart|reload|force-reload)
echo "Error: argument '$1' not supported" >&2
exit 3
;;
stop)
;;
*)
echo "Usage: $0 start|stop" >&2
exit 3
;;
esac
#EOF

Registra el script para que se ejecute en el arranque:

update-rc.d winbind-ch.sh start 21 2 3 4 5 .

Explicación breve: el script cambia el grupo del socket winbind a proxy y añade permiso de escritura al grupo. Esto permite que ntlm_auth (ejecutado por Squid) use el socket.

4. Configurar DansGuardian

Edita /etc/dansguardian/dansguardian.conf y realiza los ajustes:

  • Comenta la línea 3 (si la configuración original lo requiere).
  • Ve a la línea 62 y cambia el puerto 8080 por 8081 (DansGuardian escuchará en 8081 y Squid lo reenviará).
  • Cambia filtergroups = 1 en la línea 102 a filtergroups = 2 y crea el archivo de configuración para el segundo grupo.

Crea la copia del grupo 1 como grupo 2:

cp /etc/dansguardian/dansguardianf1.conf /etc/dansguardian/dansguardianf2.conf
nano -c /etc/dansguardian/dansguardianf2.conf

En /etc/dansguardian/dansguardianf2.conf, ve a la línea 29 y cambia a:

naughtynesslimit = 100

Excepciones de antivirus: las definiciones de AV no deben bloquearse. Añade los dominios de actualización de tu AV a la whitelist de virus y, opcionalmente, a la lista de sitios excepcionados.

Ejemplo: agrega activeupdate.trendmicro.com a /etc/dansguardian/exceptionvirussitelist

Y agrega trendmicro.com a /etc/dansguardian/exceptionsitelist (nota: conserva la ruta tal cual).

Reinicia DansGuardian para aplicar cambios:

/etc/init.d/dansguardian restart

5. Configurar el firewall con ipmasq

Ipmasq simplifica reglas NAT/forwarding. Instálalo:

apt-get install ipmasq -y

Para habilitar el proxy transparente, redirigimos todas las solicitudes HTTP salientes al puerto 8081 (puerto de DansGuardian). Copia una regla de ejemplo:

cp /usr/share/doc/ipmasq/examples/basics/I89tproxy.rul /etc/ipmasq/rules/I89tproxy.rul

Si necesitas reenviar puertos a un servidor interno, revisa:

/usr/share/doc/ipmasq/examples/dnat/C50dnat.rul

6. Instalar el módulo de DansGuardian para Webmin

Abre tu navegador en https://192.168.1.1:10000/ (ajusta la IP a la de tu servidor) e inicia sesión como root. Ve a Webmin > Webmin Configuration > Webmin Modules. Selecciona “From ftp or http URL” e instala el módulo con este URL:

http://internap.dl.sourceforge.net/sourceforge/dgwebminmodule/dg-0.5.10-pr5.wbm

7. Pruebas finales y verificación

  1. Reinicia el servidor.
  2. Configura el navegador de un equipo miembro del dominio para usar la IP del servidor y el puerto 8080 como proxy.
  3. Si el equipo está unido al dominio, la autenticación NTLM debería ocurrir automáticamente y verás acceso a Internet.
  4. En Internet Explorer, si NTLM falla, es posible que necesites introducir dominio\usuario en el diálogo de autenticación.
  5. Prueba desde otro equipo que NO esté unido al dominio y que no use proxy. Navega y comprueba los registros.

En Webmin, revisa los registros de DansGuardian. Deberías ver el nombre de usuario del equipo de dominio y el sitio visitado. Observa también cómo la solicitud del equipo no unido al dominio aparece con la IP del equipo de dominio (127.0.0.1 en este escenario), porque el flujo es: equipo dominio -> squid -> dansguardian -> squid -> destino. El equipo no dominio va directo a dansguardian -> squid -> destino.

Si algo falla, consulta /var/log/syslog y los registros de Squid y DansGuardian para mensajes de error.

8. Solución de problemas común

  • Problema: ntlm_auth devuelve errores de conexión al socket.

    • Verifica que winbind esté en ejecución: service winbind status
    • Verifica permisos en /var/run/samba/winbindd_privileged
    • Revisa que el script winbind-ch.sh haya sido instalado en /etc/init.d y añadido a los runlevels
  • Problema: usuarios no autenticados o credenciales incorrectas.

    • Asegura que el servidor Linux esté unido al dominio (net ads testjoin o realm list según método).
    • Revisa que ntlm_auth esté en la ruta /usr/bin/ntlm_auth y sea ejecutable.
  • Problema: páginas bloqueadas por falsos positivos de AV.

    • Añade los dominios de actualizaciones de AV a exceptionvirussitelist y exceptionsitelist en /etc/dansguardian.

9. Criterios de aceptación

  • Los equipos unidos al dominio navegan sin pedir credenciales manuales y las solicitudes aparecen en los logs con username@DOMINIO.
  • Los equipos no unidos al dominio navegan a través de DansGuardian pero aparecen con la IP del equipo de frontera en los logs.
  • forwarded_for está OFF y los sitios externos no ven las IPs internas.
  • ntlm_auth funciona sin errores y winbind no reporta fallos de socket después de reinicios.

10. Lista de verificación por roles

Administrador de red

  • Copia de seguridad de /etc/squid/squid.conf
  • Comprobar que ntlm_auth está instalado
  • Revisar permisos de /var/run/samba/winbindd_privileged
  • Probar navegación desde equipo dominio y no dominio

Soporte de primer nivel

  • Confirmar ajustes del proxy en el navegador (IP: puerto 8080)
  • Reiniciar navegador y eliminar caché
  • Reportar errores con capturas de pantalla y hora exacta

Seguridad / cumplimiento

  • Verificar forwarded_for off
  • Confirmar exclusiones de AV están documentadas
  • Revisar logs para fugas de información

11. Mini-playbook de despliegue (pasos rápidos)

  1. Hacer respaldo de configuración.
  2. Aplicar cambios en squid.conf y dansguardian.conf.
  3. Instalar script winbind-ch.sh y registrar con update-rc.d.
  4. Instalar ipmasq y copiar reglas de proxy.
  5. Reiniciar servicios: winbind, squid, dansguardian, ipmasq.
  6. Probar desde equipos representativos.

12. Seguridad y privacidad (notas)

  • Mantén forwarded_for off para proteger IPs internas.
  • Asegura que los archivos de configuración y los scripts tengan permisos restrictivos (chmod 600/700 según corresponda).
  • Documenta los dominios añadidos a las listas de excepciones y restringe quién puede modificarlas.
  • En entornos con datos personales, considera las implicaciones de registro (logs) y respeta la normativa local de privacidad.

13. Diagrama de decisión (flujo) para fallo de autenticación

flowchart TD
A[Usuario no puede autenticarse] --> B{Equipo unido al dominio?}
B -- Sí --> C[Verificar winbind y ntlm_auth]
B -- No --> D[Verificar configuración del proxy en el navegador]
C --> E{Socket accesible?}
E -- Sí --> F[Revisar logs de Squid y DansGuardian]
E -- No --> G[Revisar script winbind-ch.sh y permisos]
D --> F

14. Glosario rápido (1 línea cada término)

  • Squid: proxy HTTP con cache.
  • DansGuardian: filtro de contenido web por reglas y listas.
  • ntlm_auth: helper que permite autenticación NTLM para Squid.
  • winbind: componente que permite validar usuarios de dominio en Linux.

15. Enlaces útiles

Resumen final

  • Integra Squid y DansGuardian usando ntlm_auth para autenticación transparente.
  • Asegura permisos de winbind en cada arranque con el script proporcionado.
  • Usa ipmasq para redirigir tráfico HTTP al puerto de DansGuardian y revisa logs para validar el comportamiento.

Notas finales: Si aplicas estos cambios en un entorno de producción, haz primero pruebas en laboratorio y mantén una copia de los archivos originales para restaurar si es necesario.

Autor
Edición

Materiales similares

Podman en Debian 11: instalación y uso
DevOps

Podman en Debian 11: instalación y uso

Apt-pinning en Debian: guía práctica
Sistemas

Apt-pinning en Debian: guía práctica

OptiScaler: inyectar FSR 4 en casi cualquier juego
Guía técnica

OptiScaler: inyectar FSR 4 en casi cualquier juego

Dansguardian + Squid NTLM en Debian Etch
Redes

Dansguardian + Squid NTLM en Debian Etch

Arreglar error de instalación Android en SD
Android

Arreglar error de instalación Android en SD

Conectar carpetas de red con KNetAttach
Redes

Conectar carpetas de red con KNetAttach