Bonjour chèr(e) visiteur/visiteuse,

tuto-express.info est un site internet d'entraide informatique en libre accès. Vous pouvez comme vous le souhaitez consulter les tutos sans restriction.

Néanmoins, gérer un site internet coûte de l'argent. Celui-ci étant géré par des bénévoles il est important de pouvoir le faire perdurer.

C'est pour cette raison que nous avons mis en place un système de dons qui nous permet de continuer à faire vivre le site.
Nous n'obligeons bien entendu personne mais sachez que votre soutien nous est très précieux.

Pour faire un don c'est par ici : Je fais un don

Merci d'avance.
L'équipe tuto-express.info

[Partie 5] Squid Windows - Associer un groupe active directory à une banlist SQUID avec NTLM

Tout ce qui concerne la sécurité
Avatar de l’utilisateur
tchao57
Administrateur du site
Messages : 120
Inscription : 07 avr. 2013, 20:14
Localisation : Florange en Moselle
Contact :

[Partie 5] Squid Windows - Associer un groupe active directory à une banlist SQUID avec NTLM

Message par tchao57 »

...Suite du tuto "Squid Windows - GPO pour paramètres Proxy"

Voilà, notre proxy est totalement opérationnel et il se paramètre automatiquement sur les postes clients du réseau grâce à une GPO. Maintenant nous allons pouvoir peaufiner tout ça en associant certains groupes d'utilisateurs active directory à des banlist. Pour cela il nous faudra donc plusieurs banlist mais également plusieurs groupes. Dans le tuto précedent nous avons vu comment créer des groupes d'utilisateurs dans active directory et dans le tuto Partie 3 nous avons vu comment créer une banlist. Il suffit donc de créer autant de banlist et de groupes que nécessaire. Ensuite tout se passera dans le fichier "squid.conf" pour le paramétrage de l'authentification NTLM (NT Lan Manager).


Configuration du fichier "squid.conf"

  1. Ouvrez le fichier "squid.conf" (avec votre éditeur de texte préféré, comme notepad par exemple) qui se trouve ici:

    C:\squid\etc
  2. Placez vous tout en haut des lignes de code et ajoutez y celles-ci:

    auth_param ntlm program c:/squid/libexec/mswin_ntlm_auth.exe
    auth_param ntlm children 5
    auth_param ntlm keep_alive on



    auth_param = Paramètre d'authentification
    ntlm = Type de paramètre d'authentification
    program = déclare quel est l'executable que Squid va chercher pour négocier l'authentification
    c:/squid/libexec/mswin_ntlm_auth.exe = Chemin complet de l'executable en question
    children 5 = Nombre d'instances lancées simultanément de Squid pour l'authentification (Sur un petit réseau c'est suffisant, sinon il faut augmenter le chiffre)
    keep_alive on = Quand activé ("on"), permet de réduire les demandes d'authentification en cache, donc meilleures performances du serveur



    Voilà, nous venons de déclarer à Squid que l'authentification des utilisateurs passera par NTLM avec les options qui vont bien.
  3. Occupons-nous maintenant des ACL's. Rendez-vous sous la ligne "acl CONNECT method CONNECT"

    Ici nous allons indiquer à Squid que les utilisateurs utiliseront leur ID de session windows ainsi que leur mot de passe personnel pour se connecter au proxy (mais de manière totalement transparente pour l'utilisateur car Squid utilisera la session ouverte de l'ordinateur pour contrôler le compte).
    Sous la ligne "acl CONNECT method CONNECT" insérez ces codes dans l'ordre suivant:

    external_acl_type NTLM %LOGIN c:/squid/libexec/mswin_check_lm_group.exe
    acl Groupe_Groupe1 external NTLM Groupe1
    acl Groupe_Groupe2 external NTLM Groupe2
    acl AUTHENTIFICATION proxy_auth REQUIRED



    external_acl_type NTLM %LOGIN = Déclare une ACL externe de type NTLM en utilisant la fonction "LOGIN"
    c:/squid/libexec/mswin_check_lm_group.exe = Chemin complet de l’exécutable qui va vérifier les LOGIN's dans active directory
    acl Groupe_Groupe1 external NTLM Groupe1 = Déclare une acl associée à un groupe AD dont le nom ici est "Groupe1", faisant appel à une procédure externe de type NTLM. Explique que le groupe "Groupe1" doit être testé via l'ACL externe "NTLM"
    acl Groupe_Groupe2 external NTLM Groupe2 = Déclare une acl associée à un groupe AD dont le nom ici est "Groupe2", faisant appel à une procédure externe de type NTLM.
    Explique que le groupe "Groupe2" doit être testé via l'ACL externe "NTLM"
    acl AUTHENTIFICATION proxy_auth REQUIRED = Déclare une acl dont le nom est AUTHENTIFICATION et qui insinue que l'authentification sur le proxy est obligatoire sinon pas d'accès internet.

    Nota: Vous pouvez avoir autant d'acl de Groupe (acl Groupe_GroupeX external NTLM GroupeX) que vous le souhaitez. Veillez tout de même à avoir un nombre d'acl non exagéré sous peine de faire ramer considérablement le serveur.



    Voilà nos ACL's sont maintenant créées. Nous allons donc passer aux règles d'accès.
  4. Repérez la ligne:

    # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

    Juste après vous pouvez ajouter vos propres règles d'accès. Donc pour notre exemple, nous mettons:

    http_access deny Banlist1 Groupe_Groupe1 all
    http_access deny Banlist1 Groupe_Groupe2 all
    http_access deny Banlist2 Groupe_Groupe2 all
    http_access allow AUTHENTIFICATION all



    http_access = Signifie que la règle portera sur un accès HTTP
    deny/Allow = Signifie que l'on refuse ou accepte la connexion (deny = nier en Anglais, mais dans ce contexte cela veut dire plutôt refuser - Allow = Accepter en Anglais)
    http_access allow AUTHENTIFICATION all = Autorise tout ce qui n'est pas dans les banlist's aux utilisateurs authentifiés

    Nota: Ici nous pouvons constater que les utilisateurs du "Groupe1" dépendent d'une seule banlist ("Banlist1"). En revanche les utilisateurs du "Groupe2" eux dépendent de 2 banlist's ("Banlist1" et "Banlist2"). Nous pouvons donc associer plusieurs Banlist's à plusieurs Groupes.

    Nota1: ici le HACK "all" en fin de chaque ligne de code permet d’éviter une popup d'authentification lors de refus d’accès et renvoi une page d'erreur.
  5. Voilà nous en avons terminé avec l'association de banlist à des groupes Active Directory.

NOTA: pensez toujours à redémarrer le service SQUID après chaque changement de configuration.


Pour info, voici un fichier "squid.conf" que j'utilise chez quelques clients et qui fonctionne à merveille. Je l'ai épuré de toutes les lignes de codes pas nécessaires dans mon cas. Vous pouvez vous en inspirer. Les # permettent de commenter les codes afin de s'y retrouver plus facilement lors de modifications futures.


Exemple de fichier "squid.conf"


################################
#Parametres d'authentification NTLM#
################################
auth_param ntlm program c:/squid/libexec/mswin_ntlm_auth.exe
auth_param ntlm children 5
auth_param ntlm keep_alive on

#####################################
#Config minimum recommandee par SQUID#
#####################################
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
#
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
#
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT

#################
#Gestion des ACL's#
#################

#Va chercher un prog externe (mswin_check_lm_group) pour tester les groupes du domaine
external_acl_type NTLM %LOGIN c:/squid/libexec/mswin_check_lm_group.exe

#explique que le groupe SquidProxy doit être teste via l'ACL externe "NTLM"
acl Groupe_SquidProxy external NTLM SquidProxy

#explique que le groupe SquidProxySitesAnnonces doit être teste via l'ACL externe "NTLM"
acl Groupe_SquidProxySitesAnnonces external NTLM SquidProxySitesAnnonces

#Force a etre authentifie
acl AUTHENTIFICATION proxy_auth REQUIRED

#Banliste Medias Sociaux
acl Medias_Sociaux url_regex -i "C:/squid/etc/Medias_Sociaux.txt"

#Banliste Sites d'annonces
acl Sites_Annonces url_regex -i "C:/squid/etc/Sites_Annonces.txt"

###########################################
#Configuration minimum recommandee par SQUID#
###########################################

# Autoriser l'acces au cachemgr seulement depuis localhost
http_access allow manager localhost
http_access deny manager

#Autorise l'accès aux ports SSL
http_access allow ssl_ports

# Refuser les requetes provenant de ports inconnus
http_access deny !Safe_ports

# Refuse CONNECT a d'autres ports que les SSL
http_access deny CONNECT !SSL_ports

#################################################################################################
#Regles d'acces -- Le HACK "all" evite une popup d'authentification lors de refus d'acces et renvoi une page d'erreur#
#################################################################################################

#Refuse l'acces a la banliste Medias_Sociaux a Groupe_SquidProxy
http_access deny Medias_Sociaux Groupe_SquidProxy all

#Refuse l'acces a la banliste Medias_Sociaux a Groupe_SquidProxySitesAnnonces
http_access deny Medias_Sociaux Groupe_SquidProxySitesAnnonces all

#Refuse l'acces a la banliste Sites_Annonces a Groupe_SquidProxy
http_access deny Sites_Annonces Groupe_SquidProxySitesAnnonces all

#Autorise tout le reste aux utilisateurs authentifies
http_access allow AUTHENTIFICATION all

#Finalement refuse acces au proxy a tout le reste
http_access deny all

#Autorise les demandes ICP depuis le LAN seulement
icp_access allow localnet
icp_access deny all

#Recommandation de Squid d'une ligne a utiliser
hierarchy_stoplist cgi-bin ?

#Chemin du fichier LOG des acces
access_log c:/squid/var/logs/access.log squid


#Config par défaut:
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320

# Ne pas mettre à jour les réponses ShoutCast vers HTTP
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast


# Lignes de codes recommandées par Squid
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache


#Chemin d'acces du cache
coredump_dir c:/squid/var/cache

#Nom du Serveur Proxy
visible_hostname NomDuServeurProxy

#Port d'ecoute du Proxy
http_port 3128


Voilà ceci conclu la série de tutos sur l'incroyable Proxy SQUID. N'hésitez pas à tester différentes config afin de coller au mieux à la politique de sécurité de votre environnement de travail. Si vous avez des questions ou remarques n'hésitez pas à les poster dans l'espace détente.
Nul n'est parfait, nous apprenons sans cesse...

Site Web Pro : http://www.solucetech.fr
Répondre