Azeddine Ousama
PPE SISR
2
I. Contexte
Le thème de cette activité est la mise en place d’un serveur Proxy dans un environnement intranet.
Squid est un Serveur Proxy. Il permet de faire l’intermédiaire entre les ordinateurs d’un réseau
local et internet. Pour joindre le Proxy, on a besoin d'un client Web (Internet Explorer ou Mozilla
Firefox, par exemple) auquel on indique l'adresse du serveur. Nous allons voir comment se configure
ce serveur sous Windows 2012. Il faut savoir que Squid est présent sur Windows et Linux. Ici, on
utilise la version 2.7 STABLE8 sous Windows 2012.
II. Prérequis
Un serveur (avec Windows Server 2012). Un ou plusieurs clients. Une connexion internet. Des câbles réseaux RJ45.
III. Définitions
Un serveur proxy (appelé aussi «serveur mandataire») est à l'origine une machine faisant fonction
d'intermédiaire entre les ordinateurs d'un réseau local (utilisant parfois des protocoles autres que
le protocole TCP/IP) et internet.
Le principe de fonctionnement basique d'un serveur proxy est assez simple : il s'agit d'un serveur
"mandaté" par une application pour effectuer une requête sur Internet à sa place. Ainsi, lorsqu'un
utilisateur se connecte à internet à l'aide d'une application cliente configurée pour utiliser un
serveur proxy, celle-ci va se connecter en premier lieu au serveur proxy et lui donner sa requête. Le
serveur proxy va alors se connecter au serveur que l'application cliente cherche à joindre et lui
transmettre la requête.
Le serveur va ensuite donner sa réponse au proxy, qui va à son tour la transmettre à l'application
cliente.
Squid : Squid est un serveur mandataire (proxy) et un mandataire inverse capable d'utiliser les protocoles FTP, HTTP, Gopher, 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. Squid a été porté sur la plateforme Windows afin d'être compatible avec l'OS et ainsi permettre aux professionnels de l'IT de l'intégrer sur une machine disposant de Windows comme un serveur par exemple. A savoir que sa version Windows est toujours gratuite.
Azeddine Ousama
PPE SISR
3
IV. Installation du serveur Proxy Squid sous Windows.
Ce tutoriel se porte sur l’installation de SQUID sur un serveur équipé de Windows Server 2012.
1. Dans le lien ci-dessous on télécharge la version 2.7 STABLE8 :
http://squid.acmeconsulting.it/download ... DELAYP.zip
2. On se retrouve avec un ZIP à dézipper sur notre serveur. Dans ce ZIP, un seul dossier (squid)
que nous extrayons à la racine de notre lecteur C:
(Il faut faire bien attention de le mettre sur le C: sinon il faudra s'amuser à modifier la
config de SQUID.)
3. Une fois le dossier décompressé et placé à la racine de notre 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"
Azeddine Ousama
PPE SISR
4
4. On ouvre une fenêtre de commande (Windows + R, puis on tape cmd et valider).
On tape cd C:\squid\sbin pour se placer dans le dossier « sbin » de l’installation de SQUID.
On tape "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.
(Dans mon cas, le service squid est déjà créé).
Toujours dans la même fenêtre de commande, on tape "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
2014/03/13 12:33:16| Creating Swap Directories
Azeddine Ousama
PPE SISR
5
Voilà SQUID est installé sur notre serveur, il ne reste plus qu'à le configurer.
Configuration:
5. On se rend dans le dossier C:\squid\etc afin de modifier le fichier de configuration
"squid.conf" avec un éditeur de texte.
6. On retrouve 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
Azeddine Ousama
PPE SISR
6
On décommente la dernière ligne (#none) et on la remplace par:
visible_hostname Le_Nom_De_Notre_Serveur
Où bien entendu il faut remplacer "Le_Nom_De_Notre_Serveur" par le nom NetBIOS de
mon serveur.
7. On retrouve le bloc:
# Squid normally listens to port 3128
http_port 3128
On peut modifier le port d'écoute de SQUID (en 8080 par exemple), moi je le laisse par
défaut.
8. On retrouve 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, on trouve les 3 classes d'adressage IP locales (A, B et C) pour la configuration de mon
réseau suivant la RFC1918. Si notre réseau se situe dans l'une de ces 3 classes il n'y a rien à
modifier mais dans mon cas inverse il faudra ajouter une ligne concernant l'adressage IP de
mon 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 qu’on peut modifier pour identifier le nom de mon
réseau.
Si on souhaite 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
# from where browsing should be allowed
http_access allow localnet
Et modifier la dernière ligne en changeant " localnet " par le nom que l’on aura donné plus
haut à la ligne acl localnet src xxx.xxx.xxx.xxx/xx
Azeddine Ousama
PPE SISR
7
9. La configuration minimum du proxy est terminée je peux enregistrer mon fichier squid.conf
10. 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), on repère le service " squid
", clic droit dessus et " Redémarrer ".
11. Test de l'accès au proxy :
- Dans Chrome ou n'importe quel navigateur il faudra paramétrer les options de Proxy
Pour Chrome, aller dans Paramètres --> 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.
- Valider les paramètres et sortir des options internet
- Lancer une page internet
Si tout est bien paramétré, on doit avoir accès à la page demandé. Voilà le serveur proxy
est installé, configuré et opérationnel.
Azeddine Ousama
PPE SISR
8
12. Blacklistage : L'intérê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 je vais voir comment procéder
pour mettre en place des ACL's (Access List) afin de bloquer des noms de domaines, entre
autres.
Mon proxy est installé et configuré au minimum. Je m’intéresse maintenant aux ACL's
Je peux par exemple bloquer l'accès de FACEBOOK à mon client.
J’ouvre le fichier "squid.conf" avec mon éditeur de texte.
Je repére la ligne:
acl CONNECT method CONNECT
Juste après cette ligne on pourra y ajouter toutes les ACL's que l’on souhaite. Dans mon
exemple je veux bloquer FACEBOOK. Donc, après cette ligne je mes:
acl FACEBOOK url_regex -i *.facebook.com*
acl = Déclare notre ACL
FACEBOOK = Nom de notre ACL
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
l'étoile devant .facebook signifie que dans l'url on filtre également tout ce qui se trouve
avant .facebook
Azeddine Ousama
PPE SISR
9
l'étoile après .com signifie que dans l'url on filtre également tout ce qui se trouve après
.com
Voilà mon ACL est créée, maintenant il va falloir dire à mon proxy qu'il faut refuser l'accès à
cette ACL, donc à FACEBOOK
Je repère la ligne:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
Juste après je peux ajouter mes propres règles d'accès. Donc pour mon exemple, je mes:
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)
Voilà ma règle de blocage de FACEBOOK est prête. Il faut maintenant enregistrer mon
fichier squid.conf
Je redémarre le service SQUID comme d'habitude pour tout changement de configuration.
Ouvrir une page GOOGLE avec un ordinateur client du Proxy et rechercher FACEBOOK puis
ouvrir 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.
Azeddine Ousama
PPE SISR
10
Voilà je viens de paramétrer mon proxy pour bloquer l'accès à un site (domaine).
On vient 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:
Dans le dossier squid je crée un fichier txt que je nommerai par
exemple Medias_Sociaux.txt
Dans ce fichier, sous forme de liste, j’inscris tous les sites, domaines que je veux
blacklister. Voici à quoi ressemblera mon fichier texte Medias_Sociaux.txt:
*.facebook.com*
*.wordpress.com*
*.hotmail.com*
*.free.fr*
Ne pas oublier d'enregistrer le fichier
Je me rends maintenant dans mon fichier squid.conf
Je repère la ligne:
acl CONNECT method CONNECT
Et je rajoute ma blacklist:
acl Medias_Sociaux url_regex -i "C:\squid\etc\Medias_Sociaux.txt"
Azeddine Ousama
PPE SISR
11
Je repère la ligne:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
Je vais ajouter ma nouvelle règle:
http_access deny Medias_Sociaux
Voilà j’ai une banlist avec l'ACL et la règle d'accès correspondants.
J’enregistre le fichier squid.conf et je redémarre le service SQUID comme d'habitude pour
tout changement de configuration.
J’ouvre une page GOOGLE avec un ordinateur client du Proxy et je recherche l’un des sites
de ma blacklist.
Si tout est paramétré correctement, je reçois une page d'erreur du proxy me signifiant que
je ne pourrai pas avoir accès à cette page.
13. On va définir une plage horaire du matin et du soir pour notre blacklist.
Pour restreindre des sites ou l'accès au proxy par plages horaires, il faut suivre la
philosophie de SQUID. Tout d'abord, il faut créer une ACL puis un http_access qui se charge
de la plage horaire et de la blacklist en les associant. (Dans notre exemple, je veux
accepter les sites de la blacklist le matin et les refuser le soir).
On peut faire de même pour les jours de la semaine grâce aux indicatifs :
# S - Sunday
# M - Monday
# T - Tuesday
Azeddine Ousama
PPE SISR
12
# W - Wednesday
# H - Thursday
# F - Friday
# A – Saturday
14. On peut décider si un client peut se connecter au proxy ou non, mais aussi lui autoriser ou
interdire tout droit sur Internet si on place une acl au début de toutes les acl’s pour qu’il
n’y est pas de confusion. (deny ou allow nous permettra d’interdire ou d’autoriser tout
droit).
Pour créer cette acl, il nous faut l’adresse IP et le masque de sous réseau du client.
15. Bloquer des mots clés : Je vais créer un fichier « .txt » du nom de Mot_Clé et je vais y
entrer plusieurs mots clés que je souhaite bloquer sur Internet ; puis je vais rajouter une acl
qui permettra l’interdiction des sites contenant ces mots clés et pour finir un http_access. Il
ne reste qu’à tester la connexion.
16. Je vais bloquer une adresse IP d’un site internet, par exemple l’IP de Google. Pour trouver
son IP, je me rends sur cmd et je ping www.google.fr ; ainsi l’adresse IP s’affichera. Puis,
je crée un fichier « .txt » du nom de Adresse_Internet et je vais y entrer l’adresse IP de
Google que je compte bloquer. Ensuite, je rajoute une acl qui permettra l’interdiction du
fichier Adresse_Internet et pour finir un http_access. Il ne reste qu’à tester la connexion.
17. Authentification : Authentification Digest avec fichier de mot de passe :
auth_param digest program
c:/squid/libexec/digest_pw_auth_exe c:/squid/passwd.txt
auth_param digest children 5
Azeddine Ousama
PPE SISR
13
auth_param digest realm Squid proxy-caching web server
auth_param digest nonce_garbage_interval 5 minutes
auth_param digest nonce_max_duration 30 minutes
auth_param digest nonce_max_count 50
Créer un fichier c:\squid\passwd.txt et le remplir ainsi -> login:password
Puis dans le fichier squid.conf rajouter les lignes :
acl PERSONNEL proxy_auth REQUIRED
http_access allow PERSONNEL
Puis redémarrer le service Squid.
18. Stockage des logs : Le stockage, des logs des sites visités et des pages vues, permet à
l'administrateur du réseau de redéfinir la politique de sécurité du réseau et/ou d'intervenir
auprès d'un utilisateur qui visite fréquemment des sites malveillants ou sans rapport avec
l'activité de l'entreprise.
Pour pouvoir surveiller les sites visités par mon client je peux me renseigner grâce à mon
dossier logs qui enregistre toutes les connexions aux sites avec horaires, adresse IP du
client, le site visité, etc.
Pour cela, se rendre sur le dossier logs ; puis cliquer sur le fichier access, à partir de là,
toutes les informations recherchés s’affichent.
Azeddine Ousama
PPE SISR
14
On peut aussi retrouver les informations de nos modifications du squid en cliquant sur le
fichier cache.
19. Par défaut, le cache de Squid est activé, ce qui permet d'accélérer le chargement de
certaines pages. La taille par défaut est de 100 Mo, on décide de la remplacer par 200Mo.
On cherche la ligne:
# cache_dir ufs /var/spool/squid 100 16 256
On la modifie par :
cache_dir ufs /var/spool/squid 200 16 256
20. Je vais changer la langue d’erreur du proxy et y ajouter un message d’erreur personnalisé.
Je repère la ligne :
# error_directory c:/squid/share/errors/English
Et je modifie English par French. (La langue d’erreur du proxy est modifiée).
Azeddine Ousama
PPE SISR
15
Pour modifier son propre message d’erreur, il faut se rendre dans le dossier squid puis le dossier
share ensuite dans errors, dans french et enfin cliquer sur ERR_ACCESS_DENIED et modifier les
lignes suivantes:
(Mon exemple : ATTENTION, Vous n’avez pas l’autorisation de vous connecter sur ce site).
Indiquer une adresse mail sur les pages d’erreur, décommenter et modifier la ligne :
cache_mgr « Adresse Mail »
V. Objectif Atteint
- Le serveur SQUID est enfin prêt à être utilisé avec toutes les configurations requises.
- Le client est paramétré pour fonctionner avec le proxy.
VI. Bilan d’activité
Le serveur SQUID bloque, autorise et sécurise l’accès internet au client.
Dans le cas où il y a plusieurs clients, il nous restera qu’à paramétrer chaque client pour qu’il
fonctionne avec le proxy.