Proxy gratuito para empresas con autorización de dominio

Proxy gratuito para empresas con autorización de dominio

pfSense+Squid con filtrado https + Tecnología de inicio de sesión único (SSO) con filtrado por grupos de Active Directory

Breve historia

La empresa necesitaba implementar un servidor proxy con la capacidad de filtrar el acceso a sitios web (incluido https) por grupos de AD, de manera que los usuarios no ingresaran contraseñas adicionales y la administración pudiera realizarse desde una interfaz web. ¿No suena bien?

La respuesta correcta habría sido comprar soluciones como Kerio Control o UserGate, pero como siempre no hay dinero y hay una necesidad.

Aquí es donde el buen viejo Squid nos viene al rescate, pero de nuevo, ¿dónde conseguir una interfaz web? ¿SAMS2? Está moralmente obsoleto. Aquí es donde pfSense nos ayuda.

Descripción

En este artículo se describirá cómo configurar el servidor proxy Squid.
Se utilizará Kerberos para la autenticación de usuarios.
Para el filtrado por grupos de dominio, se utilizará SquidGuard.

Para el monitoreo, se usarán Lightsquid, sqstat y sistemas de monitoreo internos de pfSense.
También se resolverá un problema común relacionado con la implementación de la tecnología de inicio de sesión único (SSO), es decir, aplicaciones que intentan acceder a Internet con las credenciales de su cuenta del sistema.

Preparación para la instalación de Squid

Tomaremos como base pfSense, Instrucciones de instalación.

Dentro de él, organizaremos la autenticación en el propio cortafuegos con credenciales de dominio. Instrucciones.

¡Es muy importante!

Antes de comenzar la instalación de Squid, es necesario configurar el DNS servidores en pfSense, crear un registro A y registros PTR en nuestro servidor DNS y configurar NTP para que la hora no difiera de la hora en el controlador de dominio.

Y en su red, permitir que la interfaz WAN de pfSense acceda a Internet, y que los usuarios en la red local se conecten a la interfaz LAN, incluidos los puertos 7445 y 3128 (en mi caso, 8080).

¿Todo listo? ¿Se estableció la conexión con el dominio a través de LDAP para la autorización en pfSense y está sincronizada la hora? Genial. Es hora de comenzar el proceso principal.

Instalación y configuración preliminar

Instalaremos Squid, SquidGuard y LightSquid desde el administrador de paquetes de pfSense en la sección «Sistema / Administrador de paquetes».

Después de una instalación exitosa, vamos a 'Servicios/Squid Proxy server/' y, primero, en la pestaña de Caché Local, configuramos la caché. Yo configuré todo en 0, ya que no veo mucho sentido en almacenar en caché los sitios, los navegadores manejan eso bastante bien. Después de la configuración, hacemos clic en el botón 'Guardar' en la parte inferior de la pantalla, lo que nos permitirá realizar los ajustes principales del proxy.

Las configuraciones principales las ajustamos de la siguiente manera:

Proxy gratuito para empresas con autorización de dominio

El puerto por defecto es 3128, pero prefiero usar 8080.

Las opciones seleccionadas en la pestaña Interfaz Proxy determinan qué interfaces escuchará nuestro proxy. servidor. Dado que este cortafuegos está diseñado para que se conecte a Internet a través de la interfaz WAN, incluso si LAN y WAN pueden estar en la misma subred local, recomiendo usar lan para el proxy.

El bucle de retorno es necesario para el funcionamiento de sqstat.

A continuación, encontrará la configuración del proxy transparente y el filtro SSL, pero no los necesitamos. Nuestro proxy no será transparente y, para la filtración de https, no nos ocuparemos de sustituir el certificado (tenemos documentos, banco-clientes, etc.), sólo observaremos el apretón de manos.

En esta etapa, necesitamos acceder a nuestro controlador de dominio y crear una cuenta allí para la autenticación (puede usar la que configuró para la autenticación de pfSense). Un factor muy importante aquí es: si planea usar el cifrado AES128 o AES256, marque las casillas correspondientes en la configuración de la cuenta.

Si su dominio es un bosque bastante complejo con muchos directorios o su dominio es .local, probablemente, pero no con certeza, tendrá que usar una contraseña sencilla para esta cuenta. Es un error conocido, pero con contraseña compleja puede que simplemente no funcione, hay que verificar en un caso específico.

Proxy gratuito para empresas con autorización de dominio

Después de todo esto, generamos el archivo de claves para Kerberos. En el controlador de dominio, abrimos la línea de comandos con derechos de administrador e introducimos:

# ktpass -princ HTTP/pfsense.domain.local@DOMAIN.LOCAL -mapuser pfsense -pass 3EYldza1sR -crypto {DES-CBC-CRC|DES-CBC-MD5|RC4-HMAC-NT|AES256-SHA1|AES128-SHA1|All} -ptype KRB5_NT_PRINCIPAL -out C:keytabsPROXY.keytab

Donde indicamos nuestro FQDN de pfSense, asegurándonos de respetar el caso. En el parámetro mapuser introducimos nuestra cuenta de dominio y su contraseña, y en crypto seleccionamos el método de cifrado. Yo usé rc4 para trabajar y en el campo -out elegimos hacia dónde enviaremos nuestro archivo de claves preparado.
Después de crear exitosamente el archivo de claves, lo enviaremos a nuestro pfSense. Para esto, usé Far, pero también se puede hacer con comandos, PuTTY o a través de la interfaz web de pfSense en la sección 'Diagnóstico - Línea de Comandos'.

Ahora podemos editar crear /etc/krb5.conf

Proxy gratuito para empresas con autorización de dominio

donde /etc/krb5.keytab es el archivo de claves que hemos creado.

Asegúrate de verificar el funcionamiento de Kerberos usando kinit; si no funciona, no tiene sentido continuar leyendo.

Configuración de la autenticación de Squid y la lista de acceso sin autenticación

Después de configurar Kerberos, lo integraremos a nuestro Squid.

Para ello, ve a Servicios - Servidor Proxy Squid y en la configuración principal desplázate hasta el final, allí encontrarás el botón 'Configuración Avanzada'.

En el campo Opciones Personalizadas (Antes de la Autenticación) ingresa:

#Хелперы
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -s GSS_C_NO_NAME -k /usr/local/etc/squid/squid.keytab -t none
auth_param negotiate children 1000
auth_param negotiate keep_alive on
#Списки доступа
acl auth proxy_auth REQUIRED
acl nonauth dstdomain "/etc/squid/nonauth.txt" 
#Разрешения 
http_access allow nonauth 
http_access deny !auth
http_access allow auth

uде auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth — selecciona el helper de autenticación Kerberos que necesitamos.

Clave -s con el valor GSS_C_NO_NAME — define el uso de cualquier cuenta del archivo de claves.

Clave -k con el valor /usr/local/etc/squid/squid.keytab — establece el uso de este archivo keytab. En mi caso, es el mismo archivo keytab que formamos, que copié en el directorio /usr/local/etc/squid/ y renombré, porque a Squid no le gustaba ese directorio, probablemente por falta de permisos.

Clave -t con el valor -t none — desactiva las solicitudes cíclicas al controlador de dominio, lo que reduce significativamente la carga si tienes más de 50 usuarios.
Para la prueba, también se puede añadir la clave -d — es decir, diagnóstico, se generarán más registros.
auth_param negotiate children 1000 — define cuántos procesos de autorización simultáneos se pueden ejecutar
auth_param negotiate keep_alive on — evita que la conexión se rompa durante las consultas a la cadena de autorización
acl auth proxy_auth REQUIRED — crea y requiere una lista de control de acceso que incluye los usuarios que han pasado la autorización
acl nonauth dstdomain '/etc/squid/nonauth.txt' — informamos a Squid sobre la lista de acceso nonauth que contiene los dominios de destino a los que se permitirá el acceso a todos. Creamos el archivo y dentro escribimos los dominios en el formato

.whatsapp.com
.whatsapp.net

Whatsapp no es solo un ejemplo — es muy exigente con los proxies con autenticación y no funcionará si no se permite el acceso antes de la autenticación.
http_access allow nonauth — permitimos el acceso a esta lista para todos
http_access deny !auth — denegamos el acceso a usuarios no autorizados a otros sitios
http_access allow auth — permitimos el acceso a los usuarios autorizados.
Todo, el squid está configurado, ahora es tiempo de comenzar a filtrar por grupos.

Configuración de SquidGuard

Vamos a Servicios SquidGuard Proxy Filter.

En las Opciones de LDAP, ingresamos los datos de nuestra cuenta utilizada para la autenticación Kerberos, pero en el siguiente formato:

CN=pfsense,OU=service-accounts,DC=domain,DC=local

Si hay espacios o caracteres no latinos, toda esta entrada debe estar encerrada entre comillas simples o dobles:

'CN=sg,OU=service-accounts,DC=domain,DC=local'
"CN=sg,OU=service-accounts,DC=domain,DC=local"

A continuación, asegurémonos de marcar estas casillas:

Proxy gratuito para empresas con autorización de dominio

Para cortar los innecesarios DOMAINpfsense DOMAIN.LOCAL a los que todo el sistema es muy sensible.

Ahora vamos a Group Acl y enlazamos nuestros grupos de acceso, uso nombres simples como group_0, group_1, etc., hasta 3, donde 3 significa acceso solo a la lista blanca, y 0 — se puede todo.

Los grupos se vinculan de la siguiente manera:

ldapusersearch ldap://dc.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0OU=squidOU=service-groupsDC=DOMAINDC=LOCAL))

guardamos nuestro grupo, vamos a Horarios, allí creé un intervalo que significa trabajar siempre, ahora entramos en Categorías de Destino y creamos listas a nuestro gusto, después de crear las listas regresamos a nuestros grupos y dentro del grupo usamos botones para seleccionar quién puede ir a dónde, y quién no.

LightSquid y sqstat

Si durante la configuración elegimos el loopback en la configuración de squid y habilitamos el acceso en el 7445 en el firewall tanto en nuestra red como en el propio pfSense, al ir a Diagnóstico Squid Proxy Reports podemos abrir sin problemas tanto sqstat como LightSquid; para este último tendremos que inventar un nombre de usuario y contraseña allí mismo, y también hay una opción para elegir el diseño.

Conclusión

pfSense es una herramienta muy poderosa que puede hacer muchas cosas: desde el proxy de tráfico hasta el control del acceso de los usuarios a Internet; esto es solo una pequeña parte de todas sus funcionalidades. Sin embargo, en una empresa con 500 máquinas, esto resolvió el problema y permitió ahorrar en la compra de un proxy.

Espero que este artículo ayude a alguien a resolver un problema bastante actual para empresas medianas y grandes.

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster