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

Documents pareils