Servidor proxy gratuito para empresas con autenticación de dominio



pfSense + Squid con filtro https + tecnología Single Sign-On (SSO) con filtro de grupo de Active Directory

Breves antecedentes


En la empresa, era necesario implementar un servidor proxy con la capacidad de filtrar el acceso a los sitios (incluido https) por grupos desde AD para que los usuarios no ingresen contraseñas adicionales, y se puede administrar desde la interfaz web. No es una mala aplicación, ¿verdad?

La respuesta correcta sería comprar soluciones como Kerio Control o UserGate, pero como siempre no hay dinero, pero sí es necesario.

Entonces, el viejo Squid viene a nuestro rescate, pero de nuevo, ¿dónde obtener la interfaz web? SAMS2? Moralmente obsoleto. Aquí pfSense viene al rescate.

Descripción


Este artículo describirá cómo configurar el servidor proxy Squid.
Kerberos se utilizará para autorizar a los usuarios.
SquidGuard se usará para filtrar por grupos de dominio.

Para el monitoreo, se utilizarán los sistemas de monitoreo interno Lightsquid, sqstat y pfSense.
También resolverá un problema común asociado con la introducción de la tecnología de inicio de sesión único (SSO), es decir, aplicaciones que intentan acceder a Internet bajo la cuenta de la computadora \ cuenta del sistema.

Preparación para instalar Squid


La base se tomará pfSense, Instrucciones de instalación.

Dentro de los cuales organizamos la autenticación al firewall usando cuentas de dominio. Instrucción

¡Muy importante!

Antes de comenzar la instalación de Squid, debe configurar el servidor DNS en pfsense, hacer un registro A y 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, puede proporcionar a la interfaz pfSense WAN acceso a Internet, y los usuarios de la red local pueden conectarse a la interfaz LAN, incluso a través del puerto 7445 y 3128 (en mi caso, 8080).

¿Todo está listo? ¿La conexión LDAP con el dominio para autorización en pfSense está instalada y sincronizada en el tiempo? Multa. Es hora de comenzar el proceso principal.

Instalación y preajuste


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

Después de una instalación exitosa, vaya a "Servicios / Servidor Squid Proxy /" y, en primer lugar, en la pestaña Caché local, configure el almacenamiento en caché, configuré todo en 0, porque No veo mucho sentido en el almacenamiento en caché de sitios, y los navegadores funcionan bien con esto. Después de la configuración, haga clic en el botón "Guardar" en la parte inferior de la pantalla y esto nos dará la oportunidad de realizar configuraciones básicas de proxy.

La configuración principal es la siguiente:

imagen

el puerto predeterminado es 3128, pero prefiero usar 8080.

Los parámetros seleccionados en la pestaña Interfaz de proxy determinan qué interfaces escuchará nuestro servidor proxy. Dado que este firewall está diseñado de tal manera que mira a Internet con una interfaz WAN, aunque la LAN y la WAN pueden estar en la misma subred local, recomiendo usar la LAN para el proxy.

Se necesita Lupbek para que sqstat funcione.

A continuación encontrará la configuración del proxy transparente (transparente), así como el filtro SSL, pero no los necesitamos, nuestro proxy no será transparente, y para filtrar https no trataremos la sustitución de certificados (tenemos flujo de documentos, clientes bancarios, etc.), pero solo mira el apretón de manos.

En esta etapa, debemos ir a nuestro controlador de dominio, crear una cuenta en él para la autenticación (puede usar la que está configurada para la autenticación en pfSense). Este es un factor muy importante: si tiene la intención de utilizar el cifrado AES128 o AES256, marque la casilla correspondiente en la configuración de la cuenta.

Si su dominio es un bosque muy complejo con una gran cantidad de directorios o su dominio .local, es POSIBLE, pero no exactamente, tendrá que usar una contraseña simple para esta cuenta, un error conocido, pero puede que no funcione con una contraseña compleja, necesita verifique un caso específico.

imagen

Después de eso, creamos el archivo de clave para Kerberos, en el controlador de dominio, abrimos una línea de comando con derechos de administrador e ingresamos:

# 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:\keytabs\PROXY.keytab

Cuando especificamos nuestro FQDN pfSense, asegúrese de seguir el registro, ingresar nuestra cuenta de dominio y su contraseña en el parámetro mapuser, y seleccionar el método de cifrado en criptografía, utilicé rc4 para trabajar y en el campo de salida seleccionamos dónde enviaremos nuestro archivo de clave listo para usar.
Después de crear con éxito el archivo de clave, lo enviaremos a nuestro pfSense, utilicé Far para esto, pero también puede hacerlo con comandos y masilla, o mediante la interfaz web de pfSense en la sección "Diagnóstico \ Línea de comandos".

Ahora podemos editar \ create /etc/krb5.conf

imagen

donde /etc/krb5.keytab es el archivo clave que creamos.

Asegúrese de verificar el funcionamiento de kerberos con kinit, si no funciona, entonces no tiene sentido leer.

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


Después de haber configurado con éxito kerberos, lo fijaremos a nuestro Squid.

Para hacer esto, vaya a Servicios \ Squid Proxy Server y en la configuración principal baje hasta el final, allí encontraremos el botón "Configuración avanzada".

En el campo Opciones personalizadas (antes de la autenticación), ingrese:

#
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

donde auth_param negocia el programa / usr / local / libexec / squid / negotiate_kerberos_auth - selecciona el asistente de autenticación Kerberos que necesitamos.

El modificador -s con el valor GSS_C_NO_NAME : define el uso de cualquier cuenta del archivo de claves.

El modificador -k con el valor /usr/local/etc/squid/squid.keytab : define el uso de este archivo de tabla de claves. En mi caso, este es el mismo archivo de tabla de claves que creamos, que copié en el directorio / usr / local / etc / squid / y le cambié el nombre porque no quería ser amigo de ese directorio, aparentemente no había suficientes derechos.

El modificador -t con el valor -t none- Deshabilita las solicitudes cíclicas al controlador de dominio, lo que reduce en gran medida la carga si tiene más de 50 usuarios.
Durante la duración de la prueba, también puede agregar el modificador -d, es decir, diagnóstico, se mostrarán más registros.
auth_param negociar los niños 1000 - determina el número de procesos de autorización simultáneas se puede iniciar
auth_param negociar keep_alive en - no permite desconectar el sondeo de la
acl autenticación cadena de autenticación proxy_auth REQUERIDO - crea y requiere una lista de control de acceso que incluye a los usuarios que han pasado
acl nonauth dstdomain autorización " /etc/squid/nonauth.txt "- Informamos al calamar sobre la lista de acceso no real que contiene los dominios de destino, a los que siempre se permitirá el acceso a todos. Creamos el archivo en sí, y dentro de él ingresamos los dominios en el formato

.whatsapp.com
.whatsapp.net

Whatsapp no ​​se usa en vano como ejemplo: es muy exigente con los proxies de autenticación y no funcionará si no está permitido antes de la autenticación.
http_access allow nonauth : permite el acceso a esta lista a todos
http_access deny! auth : deshabilita el acceso de usuarios no autorizados a otros sitios
http_access allow auth : permite el acceso de usuarios autorizados.
Todo, el calamar en sí está configurado para usted, ahora es el momento de comenzar a filtrar por grupos.

Configurar SquidGuard


Vaya a Servicios \ SquidGuard Proxy Filter.

En las Opciones de LDAP, ingresamos los detalles 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 y / o caracteres no latinos, esta entrada completa debe estar 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, asegúrese de poner estas marcas de verificación:

imagen

Para cortar DOMINIO \ pfsense innecesario DOMINIO.LOCAL al que todo el sistema es muy sensible.

Ahora vamos a Group Acl y enlazamos nuestros grupos de acceso de dominio, utilizo nombres simples en el espíritu de group_0, group_1, etc. hasta 3, donde 3 es acceso solo a la lista blanca, y 0 es todo.

Los grupos se adjuntan de la siguiente manera:

ldapusersearch ldap://dc.domain.local:3268/DC=DOMAIN,DC=LOCAL?sAMAccountName?sub?(&(sAMAccountName=%s)(memberOf=CN=group_0%2cOU=squid%2cOU=service-groups%2cDC=DOMAIN%2cDC=LOCAL))

guardamos nuestro grupo, vamos a Times, allí creé una brecha que significa trabajar siempre, ahora voy a Categorías de destino y creamos listas a su gusto, después de crear las listas volvemos a nuestros grupos y dentro del grupo seleccionamos con botones que pueden y dónde no .

LightSquid y sqstat


Si durante el proceso de configuración seleccionamos un loopback en la configuración de squid y abrimos la posibilidad de acceder a 7445 en el firewall tanto en nuestra red como en pfSense, entonces cuando vayamos a Diagnósticos \ Informes de proxy de Squid podemos abrir sqstat y Lighsquid sin problemas, para este último Deberá encontrar un nombre de usuario y una contraseña en el mismo lugar, y también existe la oportunidad de elegir el diseño.

Terminación


pfSense es una herramienta muy poderosa que puede hacer muchas cosas: tanto el proxy de tráfico como el control de acceso de usuarios a Internet es solo una fracción de toda la funcionalidad, sin embargo, en una empresa con 500 máquinas esto resolvió el problema y se ahorró en la compra de un proxy.

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

All Articles