Servidor proxy gratuito para empresas con autorización de dominio

Servidor proxy gratuito para empresas con autorización de dominio

pfSense+Squid con filtrado https + Inicio de sesión único (SSO) con filtrado de grupos de Active Directory

Breve historia

La empresa necesitaba implementar un servidor proxy con la capacidad de filtrar el acceso a sitios (incluido https) por grupos de AD para que los usuarios no ingresen contraseñas adicionales y se pueda administrar desde la interfaz web. Buena aplicación, ¿no?

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

Aquí es donde el viejo Squid viene al rescate, pero nuevamente, ¿dónde puedo obtener una interfaz web? SAMS2? Moralmente obsoleto. Aquí es donde 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 utilizará para filtrar por grupos de dominio.

Para el monitoreo se utilizarán los sistemas de monitoreo Lightsquid, sqstat y pfSense interno.
También resolverá un problema común asociado con la introducción de la tecnología de inicio de sesión único (SSO), a saber, las aplicaciones que intentan navegar por Internet bajo la cuenta de brújula con su cuenta del sistema.

Preparándose para instalar Squid

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

Dentro del cual organizamos la autenticación en el propio cortafuegos mediante cuentas de dominio. Instrucción.

¡Muy importante!

Antes de comenzar a instalar Squid, debe configurar el servidor DNS en pfsense, crear un registro A y un registro 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, proporcione la capacidad para que la interfaz WAN de pfSense se conecte a Internet y los usuarios de la red local se conecten a la interfaz LAN, incluidos los puertos 7445 y 3128 (en mi caso, 8080).

¿Todo está listo? ¿Está establecida la conexión LDAP con el dominio para la autorización en pfSense y la hora está sincronizada? Excelente. Es hora de comenzar el proceso principal.

Instalación y preconfiguración

Squid, SquidGuard y LightSquid se instalarán 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 proxy Squid /" 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 almacenar sitios en caché, los navegadores hacen un gran trabajo con esto. Después de configurar, presione el botón "Guardar" en la parte inferior de la pantalla y esto nos dará la oportunidad de realizar configuraciones básicas de proxy.

Los ajustes principales son los siguientes:

Servidor proxy gratuito para empresas con autorización de dominio

El puerto predeterminado es 3128, pero prefiero usar 8080.

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

Se necesita loopback 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 el filtrado https no reemplazaremos el certificado (tenemos flujo de documentos, banco clientes, etc.), echemos un vistazo al apretón de manos.

En esta etapa, debemos ir a nuestro controlador de dominio, crear una cuenta de autenticación en él (también puede usar la que se configuró para la autenticación en pfSense). Aquí hay un factor muy importante: si tiene la intención de utilizar el cifrado AES128 o AES256, marque las casillas correspondientes en la configuración de su cuenta.

Si su dominio es un bosque muy complejo con una gran cantidad de directorios o su dominio es .local, entonces es POSIBLE, pero no seguro, que tendrá que usar una contraseña simple para esta cuenta, el error es conocido, pero Es posible que simplemente no funcione con una contraseña compleja, debe verificar un caso particular específico.

Servidor proxy gratuito para empresas con autorización de dominio

Después de eso, creamos un archivo clave para kerberos, abrimos un símbolo del sistema con derechos de administrador en el controlador de dominio e ingresamos:

# ktpass -princ HTTP/[email protected] -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 pfSense, asegúrese de respetar las mayúsculas y minúsculas, ingrese nuestra cuenta de dominio y su contraseña en el parámetro mapuser, y en crypto seleccionamos el método de cifrado, yo usé rc4 para el trabajo y en el campo -out seleccionamos donde enviará nuestro archivo clave terminado.
Después de crear con éxito el archivo clave, lo enviaremos a nuestro pfSense, usé Far para esto, pero también puede hacerlo con comandos y PuTTY o a través de la interfaz web de pfSense en la sección "Línea de comandos de diagnóstico".

Ahora podemos editar/crear /etc/krb5.conf

Servidor proxy gratuito para empresas con autorización de dominio

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

Asegúrese de verificar el funcionamiento de kerberos usando kinit, si no funciona, no tiene sentido seguir leyendo.

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

Habiendo configurado kerberos con éxito, lo fijaremos a nuestro Squid.

Para hacer esto, vaya a ServicesSquid 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

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

Llave -s con significado GSS_C_SIN_NOMBRE — define el uso de cualquier cuenta del archivo de claves.

Llave -k con significado /usr/local/etc/squid/squid.keytab - determina usar este archivo keytab en particular. En mi caso, este es el mismo archivo keytab que creamos, el cual copié en el directorio /usr/local/etc/squid/ y lo renombré, porque el squid no quería ser amigo de ese directorio, aparentemente no había suficientes derechos.

Llave -t con significado -t ninguno - deshabilita las solicitudes cíclicas al controlador de dominio, lo que reduce en gran medida la carga si tiene más de 50 usuarios.
Mientras dure la prueba, también puede agregar la tecla -d, es decir, diagnósticos, se mostrarán más registros.
auth_param negociar niños 1000 - determina cuántos procesos de autorización simultáneos se pueden ejecutar
auth_param negociar keep_alive en - no permite romper la conexión durante el sondeo de la cadena de autorización
acl auth proxy_auth REQUERIDO - crea y requiere una lista de control de acceso que incluye usuarios que han pasado la autorización
acl nonauth dstdomain "/etc/squid/nonauth.txt" - informamos al squid sobre la lista de acceso de no autenticos, que contiene dominios de destino, a los que siempre se permitirá el acceso a todos. Creamos el archivo en sí, y dentro de él ingresamos dominios en el formato

.whatsapp.com
.whatsapp.net

Whatsapp no ​​se usa en vano como ejemplo: es muy exigente con el proxy con autenticación y no funcionará si no está permitido antes de la autenticación.
http_access permitir noauth - permitir el acceso a esta lista a todos
http_acceso denegar !autorización - prohibimos el acceso a usuarios no autorizados a otros sitios
http_access permitir autenticación - permitir el acceso a los usuarios autorizados.
Eso es todo, el squid en sí está configurado, ahora es el momento de comenzar a filtrar por grupos.

Configuración de SquidGuard

Vaya a ServicesSquidGuard Proxy Filter.

En Opciones 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 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 marcar estas casillas:

Servidor proxy gratuito para empresas con autorización de dominio

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

Ahora vamos a Group Acl y vinculamos nuestros grupos de acceso de dominio, uso nombres simples como group_0, group_1, etc. hasta 3, donde 3 es acceso solo a la lista blanca y 0: todo es posible.

Los grupos están vinculados 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))

guarde nuestro grupo, vaya a Tiempos, allí creé un espacio para trabajar siempre, ahora vaya a Categorías de destino y cree listas a nuestra discreción, después de crear las listas volvemos a nuestros grupos y dentro del grupo con botones seleccionamos quién puede ir donde, y quien no puede donde.

LightSquid y sqstat

Si durante el proceso de configuración seleccionamos un bucle invertido en la configuración de squid y abrimos la capacidad de acceder a 7445 en el firewall tanto en nuestra red como en pfSense, entonces cuando vayamos a Diagnóstico de Squid Proxy Reports, podemos abrir fácilmente tanto sqstat como Lighsquid, para este último necesitaremos En el mismo lugar, inventa un nombre de usuario y contraseña, y también existe la oportunidad de elegir un diseño.

Terminación

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

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

Fuente: habr.com

Añadir un comentario