Serveur proxy gratuit pour les entreprises avec authentification de domaine



pfSense + Squid avec filtrage https + technologie SSO (Single Sign-On) avec filtrage de groupe Active Directory

Bref historique


Dans l'entreprise, il était nécessaire d'implémenter un serveur proxy avec la possibilité de filtrer l'accès aux sites (y compris https) par des groupes d'AD, afin que les utilisateurs n'entrent pas de mots de passe supplémentaires, et il peut être administré à partir de l'interface Web. Pas une mauvaise application, n'est-ce pas?

La bonne réponse serait 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.

Ensuite, le bon vieux Squid vient à notre secours, mais encore une fois - où obtenir l'interface Web? SAMS2? Moralement obsolète. Ici, pfSense vient à la rescousse.

La description


Cet article décrira comment configurer le serveur proxy Squid.
Kerberos sera utilisé pour autoriser les utilisateurs.
SquidGuard sera utilisé pour filtrer par groupes de domaines.

Pour la surveillance, des systèmes de surveillance interne Lightsquid, sqstat et pfSense seront utilisés.
Il résoudra également un problème courant associé à l'introduction de la technologie d'authentification unique (SSO), à savoir les applications qui tentent de se connecter en ligne sous le compte d'ordinateur \ leur compte système.

Préparation de l'installation de Squid


La base sera prise pfSense, Instructions d'installation.

À l'intérieur duquel nous organisons l'authentification sur le pare-feu lui-même à l'aide de comptes de domaine. Instruction

Très important!

Avant de commencer l'installation de Squid, vous devez configurer le serveur DNS dans pfsense, créer un enregistrement A et PTR pour celui-ci sur notre serveur DNS et configurer NTP afin que l'heure ne diffère pas de l'heure sur le contrôleur de domaine.

Et sur votre réseau, vous pouvez fournir à l'interface pfSense WAN un accès à Internet, et les utilisateurs du réseau local peuvent se connecter à l'interface LAN, y compris via les ports 7445 et 3128 (dans mon cas, 8080).

Tout est prêt? La connexion LDAP avec le domaine pour l'autorisation sur pfSense est-elle installée et synchronisée avec l'heure? Bien. Il est temps de démarrer le processus principal.

Installation et préréglage


Installez Squid, SquidGuard et LightSquid à partir du gestionnaire de packages pfSense dans la section "System / Package Manager".

Après une installation réussie, allez dans "Services / Squid Proxy server /" et tout d'abord, dans l'onglet Cache local, configurez la mise en cache, je mets tout à 0, car Je ne vois pas grand-chose à la mise en cache des sites, et les navigateurs s'en sortent très bien. Après les paramètres, cliquez sur le bouton "Enregistrer" en bas de l'écran et cela nous donnera la possibilité de définir les paramètres de base du proxy.

Les paramètres principaux sont les suivants:

image

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

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

Lupbek est nécessaire pour que sqstat fonctionne.

Vous trouverez ci-dessous les paramètres du proxy Transparent (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 traiterons pas de la substitution de certificats (nous avons le flux de documents, les clients bancaires, etc.), mais regardez la poignée de main.

À ce stade, nous devons aller sur notre contrôleur de domaine, y créer un compte pour l'authentification (vous pouvez utiliser celui qui est configuré pour l'authentification sur pfSense lui-même). C'est un facteur très important - si vous avez l'intention d'utiliser le cryptage AES128 ou AES256 - cochez la case appropriée dans les paramètres du compte.

Si votre domaine est une forêt très complexe avec un grand nombre de répertoires ou votre domaine .local, il est POSSIBLE, mais pas exact, vous devrez utiliser un mot de passe simple pour ce compte, un bug connu, mais il peut tout simplement ne pas fonctionner avec un mot de passe complexe, vous avez besoin vérifier un cas spécifique.

image

Après cela, nous créons le fichier de clé pour Kerberos, sur le contrôleur de domaine, ouvrons une ligne 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:\keytabs\PROXY.keytab

Lorsque nous spécifions notre nom de domaine complet pfSense, assurez-vous de suivre le cas, entrez notre compte de domaine et son mot de passe dans le paramètre mapuser et sélectionnez la méthode de cryptage en crypto, j'ai utilisé rc4 pour travailler et dans le champ -out, nous sélectionnons où nous enverrons notre fichier de clé prêt à l'emploi.
Après avoir réussi à créer le fichier clé, nous l'enverrons à notre pfSense, j'ai utilisé Far pour cela, mais vous pouvez également le faire soit avec des commandes ou du mastic, soit via l'interface Web pfSense dans la section "Diagnostics \ Command Line".

Nous pouvons maintenant éditer \ create /etc/krb5.conf

image

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

Assurez-vous de vérifier le fonctionnement des kerberos avec kinit, si cela ne fonctionne pas, alors il n'y a aucun intérêt à lire.

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


Une fois les kerberos configurés avec succès, nous les fixerons à notre Squid.

Pour ce faire, accédez à Services \ Squid Proxy Server et dans les paramètres principaux, descendez tout en bas, nous y trouverons le bouton "Paramètres avancés".

Dans le champ Options personnalisées (avant authentification), entrez:

#
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

auth_param négocie le programme / usr / local / libexec / squid / negiate_kerberos_auth - sélectionne l'aide à l'authentification Kerberos dont nous avons besoin.

Le commutateur -s avec la valeur GSS_C_NO_NAME - définit l'utilisation de n'importe quel compte du fichier de clés.

Le commutateur -k avec la valeur /usr/local/etc/squid/squid.keytab - définit l'utilisation de ce fichier de clés. Dans mon cas, il s'agit du même fichier de clés que nous avons créé, que j'ai copié dans le répertoire / usr / local / etc / squid / et que j'ai renommé parce que je ne voulais pas être ami avec ce répertoire, apparemment il n'y avait pas assez de droits.

Le commutateur -t avec la valeur -t none- Désactive les demandes cycliques au contrôleur de domaine, ce qui réduit considérablement la charge sur celui-ci si vous avez plus de 50 utilisateurs.
Pendant la durée du test, vous pouvez également ajouter le commutateur -d - c'est-à-dire que les diagnostics, plus de journaux seront affichés.
auth_param négocie les enfants 1000 - spécifie combien de processus d'autorisation simultanés peuvent être exécutés
auth_param le négocié keep_alive - ne rompt pas la connexion pendant l'interrogation de la chaîne d'autorisation
le acl l'auth proxy_auth REQUIRED est - crée et requiert une liste de contrôle d'accès qui inclut les utilisateurs authentifiés
acl nonauth dstdomain " /etc/squid/nonauth.txt "- Nous informons le calmar de la liste d'accès nonauth qui contient les domaines de destination, auxquels tout le monde sera toujours autorisé à accéder. Nous créons le fichier lui-même, et à l'intérieur nous entrons les domaines au format

.whatsapp.com
.whatsapp.net

Whatsapp n'est pas en vain utilisé comme exemple - il est très pointilleux sur les proxys d'authentification et ne fonctionnera pas s'il n'est pas autorisé avant l'authentification.
http_access autoriser nonauth - autoriser l'accès à cette liste à tous
http_access refuser! auth - désactiver l'accès des utilisateurs non autorisés à d'autres sites
http_access autoriser auth - autoriser l'accès par les utilisateurs autorisés.
Tout, le calmar lui-même est configuré pour vous, il est maintenant temps de commencer à filtrer par groupes.

Configurer SquidGuard


Accédez à Services \ SquidGuard Proxy Filter.

Dans les options LDAP, entrez les détails 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 et / ou des caractères non latins, cette entrée entière doit être placée entre guillemets simples ou doubles:

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

Ensuite, assurez-vous de mettre ces cases à cocher:

image

Pour couper DOMAIN \ pfsense inutiles DOMAINE.LOCAL auquel l'ensemble du système est très sensible.

Maintenant, nous allons au groupe Acl et lions nos groupes d'accès au domaine, j'utilise des noms simples dans l'esprit de group_0, group_1, etc. jusqu'à 3, où 3 correspond uniquement à la liste blanche et 0 à tout.

Les groupes sont attachés comme suit:

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))

nous enregistrons notre groupe, allons à Times, là j'ai créé une lacune signifiant de toujours travailler, maintenant allez dans les catégories cibles et créez des listes comme vous le souhaitez, après avoir créé les listes, nous retournons à nos groupes et à l'intérieur du groupe, nous sélectionnons avec des boutons qui peuvent et où pas .

LightSquid et sqstat


Si pendant le processus de configuration, nous avons sélectionné un bouclage dans les paramètres de squid et ouvert la possibilité d'accéder au 7445 dans le pare-feu à la fois sur notre réseau et sur pfSense lui-même, alors lorsque nous allons dans Diagnostics \ Squid Proxy Reports, nous pouvons ouvrir sqstat et Lighsquid sans problème, pour ce dernier Vous devrez trouver un nom d'utilisateur et un mot de passe au même endroit, et il y a aussi la possibilité de choisir le design.

Achèvement


pfSense est un outil très puissant qui peut faire beaucoup de choses - à la fois le proxy de trafic et le contrôle d'accès des utilisateurs à Internet ne sont qu'une fraction de toutes les fonctionnalités, néanmoins, dans une entreprise avec 500 machines, cela a résolu le problème et économisé sur l'achat d'un proxy.

J'espère que cet article aide quelqu'un à résoudre un problème qui est tout à fait pertinent pour les moyennes et grandes entreprises.

All Articles