Projet Serveur Proxy « Squid sous Windows - WordPress.com

15
Azeddine Ousama PPE SISR 1 Projet Serveur Proxy « Squid sous Windows »

Transcript of Projet Serveur Proxy « Squid sous Windows - WordPress.com

Azeddine Ousama

PPE SISR

1

Projet Serveur Proxy « Squid sous Windows »

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.