Serveur Proxy Squid avec GPO
Transcription
Serveur Proxy Squid avec GPO
PPE Serveur Proxy Squid avec GPO Sommaire : Page 2 : Contexte Page 3 : Configuration des postes Page 4-11 : Annexe : Tutoriel Squid Windows Thomas Daigne – SISR - 2014 Page 1 sur 11 Contexte Définition d’un Proxy : Un serveur proxy (traduction française : « serveur mandataire ») est à l'origine une machine faisant fonction d'intermédiaire entre les ordinateurs d'un réseau local et internet. Le lycée utilise un adressage privé, 172.20.x.x pour le réseau du lycée sans le BTS SIO et 192.168.0.x pour le réseau de la section BTS SIO. Ce projet a pour but de créer un serveur Proxy uniquement pour les élèves du BTS SIO du Lycée Paul Lapie, afin d’avoir notre propre serveur Proxy indépendant de celui déjà utilisé par le réseau du lycée hors BTS SIO. Une autre partie du projet est d’empêcher aux utilisateurs de contourner le proxy. Pour réaliser cette maquette, j’ai installé Windows Server 2008 (d’adresse IP 192.168.0.122/24) ainsi que « Squid », c’est un serveur Proxy libre distribué sous licence GNU GPL. Squid est un serveur mandataire (proxy) et un mandataire inverse capable d'utiliser les protocoles FTP, HTTP, et HTTPS. Contrairement aux serveurs proxy classiques, un serveur Squid gère toutes les requêtes en un seul processus d'entrée/sortie, non bloquant. J’ai également installé Active Directory afin de pouvoir créer des utilisateurs auxquelles ont applique un GPO (Group Policy Object : Stratégies de groupe). Le but est que chaque utilisateur qui se connecte dans le domaine ne peut pas modifier le proxy car le GPO empêche toute modification des paramètres du navigateur (Internet Explorer et Chrome). Thomas Daigne – SISR - 2014 Page 2 sur 11 Configuration des postes Après avoir Installé Squid, la configuration des postes clients s’effectue se fait par le biais des navigateurs. Par exemple sur Internet Explorer : Dans l'onglet : Outils -> Options Internet -> Connexions > Paramètres réseau Thomas Daigne – SISR - 2014 Page 3 sur 11 Annexe : Tutoriel Squid Windows Téléchargement + Installation: 1. Téléchargez la version Squid 2.7 STABLE8: Vous vous retrouvez avec un ZIP à dézipper sur votre serveur. Dans ce ZIP, un seul dossier (squid) que vous extrayez à la racine de votre lecteur C: (Attention à bien le mettre sur le C: sinon il faudra s'amuser à modifier la config de SQUID afin de pouvoir le déplacer ailleurs.) 2. Une fois le dossier décompressé et placé à la racine de votre lecteur C: il faut se rendre dans: squid --> etc --> et renommer les fichiers: - "mime.conf.default" en "mime.conf" - "squid.conf.default" en "squid.conf" 3. Ouvrez une fenêtre de commande (Windows + R, puis taper cmd et valider), puis placez vous dans le dossier "sbin" de l'installation de SQUID cd C:\squid\sbin 4. Tapez "squid -i" (sans les guillemets "") pour créer le service squid. (En effet SQUID s'installe sur Windows en tant que service afin de pouvoir le démarrer dès le lancement de Windows comme n'importe quel autre service.) Voici ce qu'il se passera dans la fenêtre de commande si tout se passe bien: C:\squid\sbin>squid -i Registry stored HKLM\SOFTWARE\GNU\Squid\2.6\Squid\ConfigFile value c:/squid/etc/ squid.conf Squid Cache version 2.7.STABLE8 for i686-pc-winnt installed successfully as Squid Windows System Service. To run, start it from the Services Applet of Control Panel. Don't forget to edit squid.conf before starting it. 5. Toujours dans la même fenêtre de commande, tapez "squid -z" (toujours sans les guillemets "") afin de créer le dossier de cache: Voici ce qu'il se passera dans la fenêtre de commande si tout se passe bien: C:\squid\sbin>squid -z 2013/04/08 15:55:48| Creating Swap Directories Voilà SQUID est installé sur votre serveur, il ne reste plus qu'à le configurer. Configuration: 1. Rendez-vous dans le dossier C:\squid\etc afin de modifier le fichier de configuration "squid.conf" (Vous pouvez l'ouvrir avec n'importe quel éditeur de texte, moi j'utilise simplement Notepad c'est largement suffisant.) Thomas Daigne – SISR - 2014 Page 4 sur 11 Là, une multitude de lignes de configurations sont présentes, on va voir les plus importantes afin de paramétrer notre Proxy au minimum afin qu'il soit utilisable. 2. Retrouvez le bloc: # TAG: visible_hostname # If you want to present a special hostname in error messages, etc, # define this. Otherwise, the return value of gethostname() # will be used. If you have multiple caches in a cluster and # get errors about IP-forwarding you must set them to have individual # names with this setting. # #Default: # none Et décommentez la dernière ligne (#none) et remplacez la par: visible_hostname Le_Nom_De_Votre_Serveur Où bien entendu il faut remplacer "Le_Nom_De_Votre_Serveur" par le nom NetBIOS de votre serveur. 3. Retrouvez le bloc: # Squid normally listens to port 3128 http_port 3128 Vous pouvez modifier le port d'écoute de SQUID (en 8080 par exemple), moi je le laisse par défaut. 4. Retrouvez le bloc: # Example rule allowing access from your local networks. # Adapt to list your (internal) IP networks from where browsing # should be allowed 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 Ici vous trouvez les 3 classes d'adressage IP locales (A,B et C) pour la configuration de votre réseau suivant la RFC1918. Si votre réseau se situe dans l'une de ces 3 classes il n'y a rien à modifier. Dans le cas inverse il faudra ajouter une ligne concernant l'adressage ip de votre réseau, juste en dessous de la dernière ligne par exemple: acl localnet src xxx.xxx.xxx.xxx/xx Où "localnet" est un nom arbitraire que vous pouvez modifier pour identifier le nom de votre réseau. Personnellement je le laisse par défaut sinon il y aura d'autres lignes à modifier par la suite. Si vous souhaitez tout de même modifier le nom il faudra retrouver le bloc: # Example rule allowing access from your local networks. # Adapt localnet in the ACL section to list your (internal) IP networks Thomas Daigne – SISR - 2014 Page 5 sur 11 # from where browsing should be allowed http_access allow localnet Et modifier la dernière ligne en changeant "localnet" par le nom que vous aurez donné plus haut à la ligne acl localnet src xxx.xxx.xxx.xxx/xx 5. La configuration minimum du proxy est terminée vous pouvez enregistrer votre fichier de conf 6. Pour que les modifications soient prises en compte il faut redémarrer le service squid (cela est valable à chaque modification du fichier squid.conf) Pour cela, rien de plus simple, il suffit d'aller dans la console de gestion des services Windows (Windows + R et taper services.msc et valider), repérer le service "squid", clic droit dessus et "Redémarrer". Si vous avez bien suivi ces étapes le service redémarrera normalement et sans erreur. 7. Test de l'accès au proxy: - Dans IE ou n'importe quel navigateur il faudra paramétrer les options de Proxy Pour IE, aller dans Options internet --> Onglet Connexions --> Paramètres réseau --> Dans "Serveur proxy" cocher les 2 cases --> Dans adresse, mettre l'adresse IP locale du serveur sur lequel SQUID est installé --> Dans Port, mettre 3128 (ou celui choisi plus haut dans le fichier de config à la ligne http_port) - Valider les paramètres et sortir des options internet - Lancer une page internet Si tout est bien paramétré, vous devriez avoir accès à la page demandé. Voilà le serveur proxy est installé, configuré et opérationnel. Blacklistage Simple: L'interêt d'un proxy est bien évidemment la mise en cache mais surtout le filtrage du flux de données vers internet et également le blacklistage de sites internet et de mots clés. SQUID proxy permet bien entendu tout cela et nous allons voir comment procéder pour mettre en place des ACL's (Access List) afin de bloquer des noms de domaines, entre autres. Notre proxy est installé et configuré au minimum. Intéressons-nous maintenant aux ACL's Nous voulons par exemple bloquer l'accès de FACEBOOK à vos utilisateurs 1. Ouvrir le fichier "squid.conf" avec votre éditeur de texte favori. 2. Repérez la ligne: acl CONNECT method CONNECT Juste après cette ligne vous pourrez y ajouter toutes les ACL's que vous souhaitez. Dans notre exemple nous voulons bloquer FACEBOOK. Donc, après cette ligne nous mettons: acl FACEBOOK url_regex -i *.facebook.com* acl = Déclare notre ACL FACEBOOK = Nom de notre ACL (On peut donner n'importe quel nom) url_regex = Signifie que le proxy filtrera les expressions régulières dans l'url Thomas Daigne – SISR - 2014 Page 6 sur 11 -i = C'est une option que l'on peut ajouter à notre ACL pour signifier que le filtrage ne sera pas sensible à la casse l'étoile devant .facebook signifie que dans l'url on filtre également tout ce qui se trouve avant .facebook l'étoile après .com signifie que dans l'url on filtre également tout ce qui se trouve après .com 3. Voilà notre ACL est créée, maintenant il va falloir dire à notre proxy qu'il faut refuser l'accès à cette ACL, donc à FACEBOOK Reperez 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 FACEBOOK http_access = Signifie que la règle portera sur un accès HTTP deny = Signifie que l'on refuse la connexion (deny = nier en Anglais, mais dans ce contexte cela veut dire plutôt refuser) FACEBOOK = C'est le nom de notre ACL créée précédemment (il faut qu'il soit strictement le même sous peine de ne pas faire fonctionner notre règle) 4. Voilà notre règle de blocage de FACEBOOK est prête. Il faut maintenant enregistrer notre fichier squid.conf 5. Redémarrez le service SQUID comme d'habitude pour tout changement de configuration. 6. Ouvrir une page GOOGLE avec un ordinateur client du Proxy et rechercher FACEBOOK puis suivre le lien. Si tout est paramétré correctement, vous devriez recevoir une page d'erreur du proxy vous signifiant que vous ne pouvez pas avoir accès à cette page. NOTA: en tapant l'adresse URL de facebook ce sera le même effet. Voilà nous venons de paramétrer notre proxy pour bloquer l'accès à un site (domaine). Nous pouvons créer autant d'ACL que l'on veut couplées à leurs règles d'accès. Alors bien entendu ce travail est assez fastidieux. C'est pourquoi je vous présente un moyen bien plus sympa pour blacklister des sites, domaines ou mots clés. Nous venons de voir comment bloquer un site/domaine en créant une ACL couplé à sa règle d'accès (http_access). SQUID permet de créer des blacklist sous forme de fichier texte afin de ne pas surcharger inutilement le fichier de configuration, mais aussi et surtout pour nous faciliter la vie en ajoutant dans ces fichiers textes tous les sites, domaines ou mots clés que nous voulons blacklister les uns à la suite des autres. La méthode reste sensiblement la même: Blacklistage avec liste dans un fichier txt: Thomas Daigne – SISR - 2014 Page 7 sur 11 1. Dans le dossier squid créez un fichier txt que vous nommerez par exemple Medias_Sociaux.txt (Vous pouvez mettre ce fichier à l'endroit de votre choix. Personnellement je le met à l'endroit où se trouve squid.conf, c'est à dire ici C:\squid\etc) 2. Dans ce fichier, sous forme de liste, inscrivez tous les sites, domaines que vous voulez blacklister. Nous allons en énumérer quelques-uns pour notre TUTO. Voici à quoi ressemblera notre fichier texte Medias_Sociaux.txt: *.facebook.com* *.twitter.com* *.hotmail.com* *.msn.com* *.live.com* N'oubliez pas d'enregistrer votre fichier 3. Rendez-vous maintenant dans notre fichier squid.conf Repérez la ligne: acl CONNECT method CONNECT Juste après nous avions créé l'ACL suivante: acl FACEBOOK url_regex -i *.facebook.com* Nous allons la supprimer et la remplacer par notre blacklist: acl Medias_Sociaux url_regex -i "C:\squid\etc\Medias_Sociaux.txt" acl = Déclare notre ACL Medias_Sociaux = Nom de notre ACL (On peut donner n'importe quel nom, mais soyez cohérents par rapport à votre fichier texte (banlist) ) url_regex = Signifie que le proxy filtrera les expressions régulières dans l'url -i = C'est une option que l'on peut ajouter à notre ACL pour signifier que le filtrage ne sera pas sensible à la casse "C:\squid\etc\Medias_Sociaux.txt" = Chemin de notre banlist, ici elle se trouve dans le lecteur C: dans le sous-dossier nommé "etc" du dossier "squid" (Veillez à ne pas oublier les guillemets "" encadrant le chemin du fichier txt) 4. Reperez la ligne: # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS Juste après nous avions créé la règle d'accès suivante: http_access deny FACEBOOK Nous allons la supprimer et la remplacer par notre nouvelle règle: http_access deny Medias_Sociaux Thomas Daigne – SISR - 2014 Page 8 sur 11 http_access = Signifie que la règle portera sur un accès HTTP deny = Signifie que l'on refuse la connexion (deny = nier en Anglais, mais dans ce contexte cela veut dire plutôt refuser) Medias_Sociaux = C'est le nom de notre ACL (il faut qu'il soit strictement le même sous peine de ne pas faire fonctionner notre règle) 5. Voilà nous avons une banlist avec l'ACL et la règle d'accès correspondantes. 6. Enregistrez le fichier squid.conf et redémarrez le service SQUID comme d'habitude pour tout changement de configuration. 7. Ouvrir une page GOOGLE avec un ordinateur client du Proxy et rechercher FACEBOOK et/ou twitter, hotmail, etc, puis suivre le lien. Si tout est paramétré correctement, vous devriez recevoir une page d'erreur du proxy vous signifiant que vous ne pouvez pas avoir accès à cette page. NOTA: en tapant l'adresse URL de facebook, twitter, hotmail, etc, ce sera le même effet. Voilà nous venons de paramétrer SQUID afin qu'il nous bloque l'accès à certains sites contenus dans une blacklist. Évidemment, vous pourrez ajouter d'autres sites dans votre blacklist afin de l'étoffer. NOTA: pensez toujours à redémarrer le service SQUID après chaque changement de configuration. Maintenant que notre Proxy est opérationnel, nous allons créer une GPO (Group Policy Object = Stratégie de Groupe) sur notre serveur afin de faire redescendre la config du Proxy sur les machines du domaine et bloquer l'accès à ces paramètres afin que les utilisateurs ne puissent pas changer la configuration pour outre-passer le Proxy. Création d'un groupe local d'utilisateurs dans Active Directory 1. Sur le serveur, rendez-vous dans la console Active Directory (Démarrer --> Outils d'administration --> Utilisateurs et Ordinateurs Active Directory) 2. Placez vous sur l'UO Users, puis clic droit dessus --> Nouveau --> Groupe 3. Donnez lui un nom assez évocateur pour rester cohérent avec notre Proxy, par exemple: SquidProxyMediasSociaux, puis cochez la case Domaine local et validez jusqu'au bout (Si vous avez Exchange d'installé sur votre domaine vous pouvez aussi créer une BAL pour votre groupe à cet endroit). (Pourquoi ce nom? Tout simplement pour pouvoir gérer nos groupes d'utilisateurs suivant les banlist créées dans Squid. Nous verrons dans un prochain tuto que c'est très important de dissocier nos Utilisateurs dans des groupes pour faciliter la gestion des accès) 4. Maintenant que notre groupe est créé nous allons lui associer des membres (utilisateurs du domaine qui devront utiliser le proxy) Thomas Daigne – SISR - 2014 Page 9 sur 11 5. Double cliquez sur votre nouveau groupe puis allez dans l'onglet Membres puis ajouter. Dans la case blanche vous pourrez y inscrire les noms des utilisateurs qui dépendront de ce groupe et du coup qui dépendront de la banlist Médias_Sociaux.txt, soit en les notant manuellement en prenant soin de les séparer par un point virgule (;), soit en les recherchant sur le domaine en cliquant sur Avancé puis Rechercher. Dans le second cas, tous les objets appartenant au domaine apparaissent et il ne reste plus qu'à sélectionner ceux qui nous intéressent en maintenant la touche CTRL pour en sélectionner plusieurs, puis valider toutes les fenêtres. Création GPO: 1. Sur le serveur, rendez-vous dans la gestion des stratégies de groupe (Démarrer --> Outils d'administration --> Gestion des stratégies de groupe) 2. Dans cette console nous allons pouvoir créer toutes nos stratégies de groupe. Ce qui nous intéresse est de paramétrer le Proxy sur les postes clients et bloquer l'accès aux changements de paramètres dans IE. - Développez Forêt: Votre_Domaine.local --> Domaines --> Votre_Domaine.local --> Objets de stratégie de groupe - Clic droit sur Objets de stratégie de groupe, puis Nouveau - Donnez un nom cohérent à votre nouvel objet afin de le retrouver facilement lors de changements futurs: Mettons SquidProxy puis validez - Votre nouvel objet apparait sous Objets de stratégie de groupe - Nous allons maintenant le paramétrer. Clic droit sur votre nouvel objet (SquidProxy) puis Modifier - Une nouvelle fenêtre s'ouvre. C'est ici que nous allons pouvoir donner les directives pour la descente des paramètres Proxy sur les machines du domaine. Rendez-vous ici: Configuration utilisateur --> Paramètres windows --> Maintenance de Internet explorer --> Connexion, puis dans le volet de droite double-cliquez sur Paramètres du proxy - Cochez les 3 cases (Activer les paramètres du proxy, Utiliser le même serveur proxy pour toutes les adresses, Ne pas utiliser de serveur proxy pour les adresses locales) - Dans la case Adresse du proxy au niveau HTTP mettez l'adresse IP locale de votre serveur Proxy et dans Port mettez le port configuré dans notre fichier squid.conf, 3128 par défaut, puis validez - Rendez-vous ici: Configuration utilisateur --> Modèles d'administration --> Composants windows --> Internet explorer, puis dans le volet de droite recherchez la ligne Désactiver la modification des paramètres du proxy. Double-cliquez dessus et cochez le bouton radio Activé puis validez et fermez l'éditeur des objets de stratégie de groupe. (Pour aller plus loin on peut également empêcher la modification des paramètres de connexion complets, en trouvant la ligne Désactiver la modif. des paramètres de connexion qui se trouve juste au dessus) 3. Notre GPO est créée mais n'est pas encore active. Pour cela il nous faut maintenant l'associer à une UO (Unité d'Organisation) et l'activer. - Retrouvez votre objet nommé SquidProxy (dans cet exemple), puis glissez-le à l'endroit où vous voulez qu'il soit effectif. Personnellement je le place à la racine du Thomas Daigne – SISR - 2014 Page 10 sur 11 domaine (à l'endroit où l'on a Votre_Domaine.local) afin que tout le domaine soit impacté par cette GPO, mais vous pouvez très bien le placer ailleurs (sur une ou plusieurs autres UO), puis validez la fenêtre qui vous demande de confirmer la liaison de l'objet à l'UO. - Une fois l'objet lié à notre domaine ou UO il suffit de faire un clic droit dessus et sélectionner appliqué pour activer la GPO - Voilà, notre GPO est active. Il ne reste plus qu'à lui adjoindre un filtre d'action. C'est à dire que nous lui indiquons sur quels groupes d'utilisateurs elle sera effective. Pour cela il faut se rendre dans le volet de droite de notre Objet SquidProxy, puis sélectionner l'onglet Etendue, plus bas dans Filtrage de sécurité cliquez sur Ajouter, entrez le nom de groupe précédemment créé (SquidProxyMediasSociaux dans notre exemple), puis validez. Notre GPO est terminée, maintenant il suffit d'attendre que les stratégies de groupe soient mises à jour pour rendre effectif tout cela sur le domaine. Pour aller plus vite et éviter d'attendre la mise à jour vous pouvez taper une commande (bien utile) sur le serveur et les postes clients: Démarrer --> exécuter --> gpupdate /force puis validez Après avoir tapé cette commande sur le serveur et les postes clients, la stratégie de groupe sera en fonctionnement et vos utilisateurs auront donc les paramètres proxy dans leurs options internet et ne pourront plus les changer. Thomas Daigne – SISR - 2014 Page 11 sur 11