Serveur proxy gratuit pour entreprise avec authentification de domaine

Serveur proxy gratuit pour entreprise avec authentification de domaine

pfSense+Squid avec filtrage HTTPS + Technologie d'authentification unique (SSO) avec filtrage par groupes Active Directory

Contexte

L'entreprise a ressenti le besoin d'implémenter un serveur proxy capable de filtrer l'accès aux sites (y compris HTTPS) par groupes d'AD, afin que les utilisateurs n'aient pas à entrer de mots de passe supplémentaires et que l'administration puisse se faire via une interface web. Plutôt intéressant, n'est-ce pas ?

La bonne réponse aurait été d'acheter des solutions comme Kerio Control ou UserGate, mais comme toujours, il n'y a pas d'argent, mais il y a un besoin.

C'est alors que le vieux Squid vient à notre secours, mais encore une fois - où trouver une interface web ? SAMS2 ? Moralement obsolète. C'est ici que pfSense entre en jeu.

Description

Cet article décrira comment configurer un serveur proxy Squid.
L'autorisation des utilisateurs sera faite via Kerberos.
Le filtrage par groupes de domaine sera réalisé avec SquidGuard.

Pour la surveillance, nous utiliserons Lightsquid, sqstat et les systèmes de surveillance internes de pfSense.
Nous aborderons également un problème fréquent lié à l’implémentation de la technologie d'authentification unique (SSO) : les applications tentant d'accéder à Internet sous le compte de leur utilisateur système.

Préparation à l'installation de Squid

Nous partirons de pfSense, Instructions d'installation.

À l'intérieur duquel nous organiserons l'authentification pour le pare-feu lui-même avec des comptes de domaine. Instructions.

Très important !

Avant de commencer l'installation de Squid, il est nécessaire de configurer le DNS de serveurs dans pfSense, de créer un enregistrement A et un enregistrement PTR sur notre serveur DNS et de configurer NTP pour que l'heure ne diffère pas de celle du contrôleur de domaine.

Et dans votre réseau, permettre à l'interface WAN de pfSense d'accéder à Internet, et aux utilisateurs de se connecter à l'interface LAN, y compris par les ports 7445 et 3128 (dans mon cas 8080).

Tout est prêt ? La connexion au domaine par LDAP pour l'autorisation sur pfSense est établie et l'heure est synchronisée ? Excellent. Il est temps de passer au processus principal.

Installation et configuration préliminaire

Nous installerons Squid, SquidGuard et LightSquid via le gestionnaire de paquets de pfSense dans la section « Système / Gestionnaire de paquets ».

Après une installation réussie, nous passons à « Services/Squid Proxy server/ » et tout d'abord, dans l'onglet Cache local, nous configurons le cache. J'ai mis tout à 0, car je ne vois pas d'intérêt particulier à mettre en cache les sites, les navigateurs s'en occupent très bien. Après avoir configuré, nous appuyons sur le bouton « Enregistrer » en bas de l'écran pour nous permettre d'effectuer les réglages principaux du proxy.

Nous apportons les réglages principaux à l'aspect suivant :

Serveur proxy gratuit pour entreprise avec authentification de domaine

Le port par défaut est 3128, mais je préfère utiliser le 8080.

Les paramètres sélectionnés dans l'onglet Interface Proxy déterminent les interfaces que notre proxy écoutera. serveurÉtant donné que ce pare-feu est configuré de telle manière qu'il accède à Internet via l'interface WAN, même si LAN et WAN peuvent être dans le même sous-réseau local, je recommande d'utiliser LAN pour le proxy.

Le loopback est nécessaire pour le fonctionnement de sqstat.

Vous trouverez ci-dessous les paramètres du proxy Transparent ainsi que le Filtre SSL, mais nous n'en avons pas besoin, notre proxy ne sera pas transparent, et pour le filtrage https, nous ne ferons pas de substitution de certificat (puisque nous avons des échanges de documents, banque-clients, etc.), mais nous examinerons simplement la poignée de main.

À ce stade, nous devons passer à notre contrôleur de domaine et y créer un compte pour l'authentification (vous pouvez utiliser celui que vous avez configuré pour l'authentification sur pfSense). Un facteur très important ici : si vous prévoyez d'utiliser le chiffrement AES128 ou AES256, cochez les cases appropriées dans les paramètres du compte.

Si votre domaine représente une forêt complexe avec un grand nombre d'annuaires ou si votre domaine est .local, vous DEVREZ PEUT-ÊTRE utiliser un mot de passe simple pour ce compte. C'est un bug connu, mais avec un mot de passe complexe, cela peut ne pas fonctionner, il faut vérifier au cas par cas.

Serveur proxy gratuit pour entreprise avec authentification de domaine

Après cela, nous créons le fichier de clés pour Kerberos. Sur le contrôleur de domaine, ouvrez l'invite de commande avec des droits d'administrateur et entrez :

# 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

Où nous indiquons notre FQDN pfSense, en respectant la casse, dans le paramètre mapuser, nous rappelons notre compte de domaine et son mot de passe, et dans crypto, nous choisissons le mode de chiffrement. J'ai utilisé rc4 pour le travail et dans le champ -out, nous choisissons où nous allons envoyer notre fichier de clés prêt.
Après avoir créé avec succès le fichier de clés, nous l'enverrons à notre pfSense. J'ai utilisé Far pour cela, mais cela peut aussi se faire par commandes, avec Putty ou via l'interface web de pfSense dans la section « Diagnostic - Ligne de commande ».

Nous pouvons désormais modifier créer /etc/krb5.conf

Serveur proxy gratuit pour entreprise avec authentification de domaine

où /etc/krb5.keytab est le fichier de clés que nous avons créé.

Assurez-vous de vérifier le fonctionnement de Kerberos avec kinit, si cela ne fonctionne pas, il n'y a pas de sens à lire plus loin.

Configuration de l'authentification Squid et de la liste d'accès sans authentification

Après avoir configuré Kerberos avec succès, nous allons l'intégrer à notre Squid.

Pour cela, allez dans Services - Serveur Proxy Squid et dans les paramètres principaux, descendez en bas jusqu'à trouver le bouton « Paramètres avancés ».

Dans le champ Options personnalisées (Avant l'authentification), saisissez :

#Хелперы
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 — choisit l'helper d'authentification Kerberos nécessaire.

Clé -s avec la valeur GSS_C_NO_NAME — détermine l'utilisation de n'importe quel compte à partir du fichier de clés.

Clé -k avec la valeur /usr/local/etc/squid/squid.keytab — indique d'utiliser précisément ce fichier keytab. Dans mon cas, il s'agit du même fichier keytab que nous avons créé, que j'ai copié dans le répertoire /usr/local/etc/squid/ et renommé, car Squid n'aimait pas ce répertoire, probablement en raison de droits insuffisants.

Clé -t avec la valeur -t none — désactive les requêtes cycliques au contrôleur de domaine, ce qui réduit considérablement la charge si vous avez plus de 50 utilisateurs.
Pour le test, vous pouvez également ajouter la clé -d — c'est-à-dire le diagnostic, plus de logs seront affichés.
auth_param negotiate children 1000 — détermine combien de processus d'autorisation simultanés peuvent être exécutés.
auth_param negotiate keep_alive on — empêche la rupture de la connexion pendant le sondage de la chaîne d'autorisation.
acl auth proxy_auth REQUIRED — crée et exige une liste de contrôle d'accès, incluant les utilisateurs ayant réussi l'authentification.
acl nonauth dstdomain « /etc/squid/nonauth.txt » — informe Squid de la liste d'accès nonauth incluant les domaines cibles auxquels l'accès sera toujours autorisé à tous. Nous créons le fichier et y écrivons les domaines au format

.whatsapp.com
.whatsapp.net

Whatsapp n'est pas un exemple pris au hasard — il est très exigeant en termes de proxy avec authentification et ne fonctionnera pas si son accès n'est pas autorisé avant l'authentification.
http_access allow nonauth — permet l'accès à cette liste à tous.
http_access deny !auth — interdit l'accès aux utilisateurs non authentifiés aux autres sites.
http_access allow auth — nous autorisons l'accès aux utilisateurs authentifiés.
Tout est réglé, votre Squid est configuré, il est maintenant temps de procéder à la filtrage par groupes.

Configuration de SquidGuard

Passons aux Services SquidGuard Proxy Filter.

Dans les Options LDAP, saisissez les données de notre compte utilisé pour l'authentification Kerberos, mais au format suivant :

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

S'il y a des espaces ou des caractères non latins, cette entrée doit être encadrée par des guillemets simples ou doubles :

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

Ensuite, nous devons absolument cocher ces cases :

Serveur proxy gratuit pour entreprise avec authentification de domaine

Pour exclure les DOMAINpfsense superflus DOMAIN.LOCAL auxquels tout le système est très sensible.

Nous passons maintenant à Group ACL et associons nos groupes d'accès au domaine. J'utilise des noms simples comme group_0, group_1, etc., jusqu'à 3, où 3 signifie accès uniquement en liste blanche, et 0 signifie un accès total.

Les groupes sont associés de la manière suivante :

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

Enregistrez notre groupe, allez dans Times, où j'ai créé un créneau qui signifie toujours actif, puis passons à Target Categories et créons des listes selon notre préférence. Après avoir créé les listes, revenons à nos groupes et, à l'intérieur du groupe, utilisons les boutons pour choisir qui peut faire quoi et qui ne le peut pas.

LightSquid et sqstat

Si, lors de la configuration, nous avons choisi le loopback dans les paramètres de Squid et ouvert l'accès au port 7445 dans le pare-feu, que ce soit dans notre réseau ou sur le pfSense lui-même, nous pourrons accéder sans problème à sqstat et LightSquid dans Diagnostic Squid Proxy Reports. Pour ce dernier, il procédera à la configuration du nom d'utilisateur et du mot de passe, ainsi qu'à la sélection d'un thème.

Fin

pfSense est un outil très puissant, capable de faire beaucoup de choses — de la proxy du trafic à la gestion de l'accès des utilisateurs à Internet, c'est juste un aperçu de toutes ses fonctionnalités. Cela a néanmoins résolu le problème et permis d'économiser sur l'achat d'un proxy dans une entreprise avec 500 machines.

J'espère que cet article aidera quelqu'un à résoudre un problème assez actuel pour les entreprises de taille moyenne et grande.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster