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

Reemplazo de disco en RAID1: guía práctica
Sistemas

Reemplazo de disco en RAID1: guía práctica

Instalar Opigno LMS en Ubuntu 18.04
Guía técnica

Instalar Opigno LMS en Ubuntu 18.04

Soluciones para señal móvil e Internet débil
Conectividad móvil

Soluciones para señal móvil e Internet débil

Bloquear barra de tareas en Windows
Guía técnica

Bloquear barra de tareas en Windows

Arreglar Texto a voz de Discord
Soporte técnico

Arreglar Texto a voz de Discord

Proxy Squid + DansGuardian: guía NTLM
Redes

Proxy Squid + DansGuardian: guía NTLM