Serveur proxy gratuit pour entreprise avec autorisation de domaine

Serveur proxy gratuit pour entreprise avec autorisation de domaine

pfSense+Squid avec filtrage https + Authentification unique (SSO) avec filtrage de groupe Active Directory

Bref fond

L'entreprise avait besoin de mettre en place un serveur proxy capable de filtrer l'accès aux sites (y compris https) par groupes depuis AD afin que les utilisateurs n'entrent pas de mots de passe supplémentaires et puissent être administrés depuis l'interface Web. Bonne application, n'est-ce pas ?

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

C'est là que le bon vieux Squid vient à la rescousse, mais encore une fois - où puis-je obtenir une interface Web ? SAMS2 ? Moralement obsolète. C'est là que pfSense vient à la rescousse.

description

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

Les systèmes de surveillance Lightsquid, sqstat et pfSense interne seront utilisés pour la surveillance.
Cela résoudra également un problème courant associé à l'introduction de la technologie d'authentification unique (SSO), à savoir les applications qui tentent de surfer sur Internet sous le compte de la boussole avec leur compte système.

Préparation de l'installation de Squid

pfSense sera pris comme base, 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.

C'est très important!

Avant de commencer à installer Squid, vous devez configurer le serveur DNS dans pfsense, créer un enregistrement A et un enregistrement 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, donnez la possibilité à l'interface WAN de pfSense d'aller sur Internet, et aux utilisateurs du réseau local de se connecter à l'interface LAN, y compris sur les ports 7445 et 3128 (dans mon cas 8080).

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

Installation et pré-configuration

Squid, SquidGuard et LightSquid seront installés depuis le gestionnaire de paquets pfSense dans la section "Système/Gestionnaire de paquets".

Une fois l'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 intérêt à mettre en cache les sites, les navigateurs font un excellent travail avec cela. Après le réglage, appuyez sur le bouton "Enregistrer" en bas de l'écran et cela nous donnera l'occasion de faire des réglages de proxy de base.

Les paramètres principaux sont les suivants :

Serveur proxy gratuit pour entreprise avec autorisation de domaine

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 sur lesquelles notre serveur proxy écoutera. Étant donné que ce pare-feu est conçu de telle manière qu'il apparaît sur Internet comme une interface WAN, même si LAN et WAN peuvent se trouver sur le même sous-réseau local, je recommande d'utiliser LAN pour le proxy.

Le bouclage est nécessaire pour que sqstat fonctionne.

Vous trouverez ci-dessous les paramètres de proxy transparents (transparents), 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 remplacerons pas le certificat (nous avons le flux de documents, la banque clients, etc.), regardons simplement la poignée de main.

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

Si votre domaine est une forêt très complexe avec un grand nombre d'annuaires ou que votre domaine est en .local, alors il est POSSIBLE, mais pas certain, que vous deviez utiliser un simple mot de passe pour ce compte, le bug est connu, mais il peut tout simplement ne pas fonctionner avec un mot de passe complexe, vous devez vérifier un cas particulier spécifique.

Serveur proxy gratuit pour entreprise avec autorisation de domaine

Après cela, nous créons un fichier clé pour kerberos, ouvrons une invite de commande avec des droits d'administrateur sur le contrôleur de domaine et entrons :

# 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

Là où nous indiquons notre FQDN pfSense, assurez-vous de respecter la casse, entrez notre compte de domaine et son mot de passe dans le paramètre mapuser, et en crypto nous sélectionnons la méthode de cryptage, j'ai utilisé rc4 pour le travail et dans le champ -out nous sélectionnons où nous enverra notre fichier clé fini.
Après avoir créé avec succès le fichier clé, nous l'enverrons à notre pfSense, j'ai utilisé Far pour cela, mais vous pouvez également le faire à la fois avec des commandes et du mastic ou via l'interface Web pfSense dans la section "Diagnostics Command Line".

Maintenant, nous pouvons éditer/créer /etc/krb5.conf

Serveur proxy gratuit pour entreprise avec autorisation de domaine

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

Assurez-vous de vérifier le fonctionnement de kerberos à l'aide de kinit, si cela ne fonctionne pas, il est inutile de lire plus loin.

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

Après avoir configuré avec succès kerberos, nous allons le fixer à notre Squid.

Pour ce faire, allez dans ServicesSquid 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), 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

programme de négociation auth_param /usr/local/libexec/squid/negotiate_kerberos_auth - sélectionne l'assistant d'authentification kerberos dont nous avons besoin.

clé -s avec un sens GSS_C_NO_NAME — définit l'utilisation de n'importe quel compte du fichier clé.

clé -k avec un sens /usr/local/etc/squid/squid.keytab - détermine d'utiliser ce fichier keytab particulier. 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 le calmar ne voulait pas être ami avec ce répertoire, apparemment il n'y en avait pas suffisamment de droits.

clé -t avec un sens -t aucun - désactive les requêtes 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 la clé -d - c'est-à-dire les diagnostics, plus de journaux seront affichés.
auth_param négocier les enfants 1000 - détermine combien de processus d'autorisation simultanés peuvent être exécutés
auth_param négocier keep_alive sur - ne permet pas de rompre la connexion lors du polling de la chaine d'autorisation
acl auth proxy_auth OBLIGATOIRE - crée et exige une liste de contrôle d'accès qui inclut les utilisateurs qui ont passé l'autorisation
acl nonauth dstdomain "/etc/squid/nonauth.txt" - nous informons le calmar de la liste d'accès non auth, 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 dans les domaines au format

.whatsapp.com
.whatsapp.net

Whatsapp n'est pas en vain utilisé comme exemple - il est très pointilleux sur le proxy avec authentification et ne fonctionnera pas s'il n'est pas autorisé avant l'authentification.
http_access autoriser la non-authentification - permettre l'accès à cette liste à tout le monde
http_access refuser !auth - nous interdisons l'accès aux utilisateurs non autorisés à d'autres sites
http_access autoriser l'authentification - autoriser l'accès aux utilisateurs autorisés.
Ça y est, le calmar lui-même est configuré, il est maintenant temps de commencer à filtrer par groupes.

Configuration de SquidGuard

Accédez à ServicesSquidGuard Proxy Filter.

Dans les options LDAP, nous entrons les données de notre compte utilisées 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 entière doit être entourée de 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 cocher ces cases :

Serveur proxy gratuit pour entreprise avec autorisation de domaine

Pour couper DOMAINpfsense inutile DOMAINE.LOCAL auquel tout le système est très sensible.

Maintenant, nous allons à Group Acl et lions nos groupes d'accès au domaine, j'utilise des noms simples comme group_0, group_1, etc. jusqu'à 3, où 3 est l'accès uniquement à la liste blanche, et 0 - tout est possible.

Les groupes sont lié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))

enregistrez notre groupe, allez dans Times, là j'ai créé un espace, ce qui signifie que cela fonctionnera toujours, allez maintenant dans les catégories cibles et créez des listes à notre discrétion, après avoir créé les listes, nous retournons à nos groupes et à l'intérieur du groupe, utilisez les boutons pour sélectionner qui peut aller où, et qui ne peut pas aller où.

LightSquid et sqstat

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

Achèvement

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

J'espère que cet article aidera quelqu'un à résoudre un problème assez pertinent pour les moyennes et grandes entreprises.

Source: habr.com

Ajouter un commentaire