Squid3
Installation
Prérequis
La configuration dépend de l'étendu du réseau à filtrer. Plus le réseau regroupera de machines, plus les performances du serveur devront être élevée. A savoir que Squid sollicite particulièrement la mémoire vive.
- Configuration minimum
- Processeur monocore 1 GHz
- Mémoire 2 Go
- OS Linux Ubuntu
- Configuration conseillée
- Processeur monocore 3,2 GHz
- Mémoire 4 Go
- OS Linux Ubuntu
Installer Squid3
- Installer le paquet Squid3.
|
|
- Les fichiers de configuration se trouvent dans le répertoire /etc/squid3.
Configuration de Squid3
Afin de simplifier au maximum la configuration de Squid, nous allons sauvegarder le fichier de configuration par défaut et en créer un nouveau. Le fichier de configuration contient un bon nombre d'informations sur les options de configuration mais pour des raisons de clartées le nouveau fichier sera vidé de tous commentaires et contiendra uniquement les directives essentielles.
|
|
Architecture du réseau
Voici l'architecture du réseau avec le plan d'adressage IP. La configuration ci-après sera basé sur le schéma suivant. Ce qu'il faut en retenir :
- L'adressage des machines s'effectue sur le réseau 10.0.0.0/24 (10.0.0.1 à 10.0.0.254);
- Seules les machines appartenant à ce réseau peuvent se connecter au serveur Squid.
|
Cette configuration nécessite que le serveur dispose du service DHCP installé et fonctionnel ainsi que le routage des cartes. |
Paramètres généraux
- Pour éditer le fichier de configuration :
|
|
- On définit en premier lieu le hostname qui correspond au nom de la machine.
visible_hostname prauxyla.net.ncad.fr
- On peut aussi renseigner l'adresse mail du responsable technique et qui sera communiquée dans les pages d'erreurs du proxy.
cache_mgr tech@ncad.fr
Définition des ACLs
Les ACLs permettent de définir les plages IPs qui seront exploitées par le fichier de configuration dans l'édition des règles d'accès. Ces plages IPs ne sont rien d'autres que celles utilisées par le réseau (en l'occurence dans notre exemple nous n'en exploitons qu'une seule). On en définira deux :
- la plage ip du réseau local;
- le localhost;
- Synthaxe : acl <nom_reseau> src <plage_ip/adresse_ip>
acl goulouxiou src 10.0.0.0/24 # Plage IP du réseau acl prauxyla src 127.0.0.1/32 # Adresse de loopback du serveur
Maintenant nous allons lister les protocoles TCP/IP standards, toujours dans le but par la suite d'établir des règles d'accès :
- Synthaxe : acl <nom_protocol> port <numero_de_port>
Pour des raisons de commodité nous nommons de la manière suivante les protocoles listés : Safe_ports pour les protocoles standard non sécurisé - et SSL_ports pour les protocoles sécurisés. |
acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 20 # ftp-data acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # ssl acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 10000 # Administration acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 5190 # AIM acl Safe_ports port 5222 # jabber acl Safe_ports port 5050 # Yahoo Messenger acl Safe_ports port 1863 # MSN Messenger 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 Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT
Définition des accès
Nous allons maintenant définir les accès. Cette définition s'effectue en trois étape :
- on intialise la configuration;
- on définit les autorisations;
- on interdit le reste.
acl purge method PURGE acl CONNECT method CONNECT http_access deny !Safe_ports # Tous les accès aux ports non définit par la directive Safe_ports sont refusés http_access allow localhost # On autorise les connexions au serveur depuis le serveur lui-même http_access allow goulouxiou # On autorise les connexions depuis les stations du réseau
http_access deny all # On refuse tous les autres accès
Puis on termine la configuration par les lignes suivantes :
icp_access deny all htcp_access deny all http_port 3128 hierarchy_stoplist cgi-bin ? access_log /var/log/squid3/access.log squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern (cgi-bin|\?) 0 0% 0 refresh_pattern . 0 20% 4320 icp_port 3130 coredump_dir /var/spool/squid3
Fichier squid.conf
Au final, voici le fichier de configuration ainsi obtenu :
visible_hostname prauxyla.net.ncad.fr cache_mgr tech@ncad.fr acl goulouxiou src 10.0.0.0/24 acl prauxyla src 127.0.0.1/32 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 20 # ftp-data acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # ssl acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 10000 # Administration acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 5190 # AIM acl Safe_ports port 5222 # jabber acl Safe_ports port 5050 # Yahoo Messenger acl Safe_ports port 1863 # MSN Messenger 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 Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT acl purge method PURGE acl CONNECT method CONNECT http_access deny !Safe_ports # Tous les accès aux ports non définit par la directive Safe_ports sont refusés http_access allow localhost # On autorise les connexions au serveur depuis le serveur lui-même http_access allow goulouxiou # On autorise les connexions depuis les stations du réseau icp_access deny all htcp_access deny all http_port 3128 hierarchy_stoplist cgi-bin ? access_log /var/log/squid3/access.log squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern (cgi-bin|\?) 0 0% 0 refresh_pattern . 0 20% 4320 icp_port 3130 coredump_dir /var/spool/squid3
Bloquer les services de chats, messageries instantanées et VoIP
Il peut être nécessaire de bloquer l'accès à certaines applications comme la messagerie instantanée. Squid rend possible ce type de blocage. Pour cela il existe des ACLs spécifiques selon la stratégie de blocage envisagée :
- en fonction de l'adresse web du service;
- ou encore selon le type mime de la page web;
- selon la plage ip du réseau de destination;
- en analysant le contenu de l'url de la page par une règle regexp.
Voici la synthaxe propre à chacune de ces méthode :
- Définition de domaines : acl <nom_acl> dstdomain <.mydomain.tld> [.mydomain2.tld]
- Définition de type mime : acl <nom_acl> req_mime_type <application/x-msn-messenger>
- Définition par regexp : acl <nom_acl> urlpath_regex -i <subscribe.php> [subscribe.html]
- Définition de réseaux : acl <nom_acl> dst 178.33.001.0/24
Blocage de MSN Messenger
Blocage du service MSN Messenger accessible depuis un navigateur web.
acl msn urlpath_regex -i gateway.dll # Définition du fichier dll gateway acl msnd dstdomain messenger.msn.com gateway.messenger.hotmail.com # Définition de certains noms de domaines acl msn1 req_mime_type application/x-msn-messenger # Définition du mime type relatif à l'application MSN Web Messenger http_access deny msnd msn msn1 # Blocage des directives listés ci-dessus
Blocage de Yahoo! Messenger
acl ym dstdomain .messenger.yahoo.com .psq.yahoo.com acl ym dstdomain .us.il.yimg.com .msg.yahoo.com .pager.yahoo.com acl ym dstdomain .rareedge.com .ytunnelpro.com .chat.yahoo.com acl ym dstdomain .voice.yahoo.com acl ymregex url_regex yupdater.yim ymsgr myspaceim acl ym dstdomain .skype.com .imvu.com http_access deny ym http_access deny ymregex
Blocage de Gizmo
acl gizmo dstdomain .gizmoproject.com acl gizmo dstdomain .talqer.com .gizmocall.com .fring.com acl gizmo dstdomain .pidgin.im http_access deny gizmo
Blocage de ICQ
acl icq dstdomain .icq.com http_access deny icq
Blocage de AOL
acl aol dst 64.12.200.89/32 64.12.161.153/32 64.12.161.185/32 acl aol dst 205.188.153.121/32 205.188.179.233/32 http_access deny aol
Fichier squid.conf
Voici le nouveau fichier de configuration avec les nouvelles directives
visible_hostname prauxyla.net.ncad.fr cache_mgr tech@ncad.fr acl goulouxiou src 10.0.0.0/24 acl prauxyla src 127.0.0.1/32 acl SSL_ports port 443 563 acl Safe_ports port 80 # http acl Safe_ports port 20 # ftp-data acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # ssl acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 10000 # Administration acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 5190 # AIM acl Safe_ports port 5222 # jabber acl Safe_ports port 5050 # Yahoo Messenger acl Safe_ports port 1863 # MSN Messenger 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 Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT acl msn urlpath_regex -i gateway.dll # Définition du fichier dll gateway acl msnd dstdomain messenger.msn.com gateway.messenger.hotmail.com # Définition de certains noms de domaines acl msn1 req_mime_type application/x-msn-messenger # Définition du mime type relatif à l'application MSN Web Messenger acl ym dstdomain .messenger.yahoo.com .psq.yahoo.com acl ym dstdomain .us.il.yimg.com .msg.yahoo.com .pager.yahoo.com acl ym dstdomain .rareedge.com .ytunnelpro.com .chat.yahoo.com acl ym dstdomain .voice.yahoo.com acl ymregex url_regex yupdater.yim ymsgr myspaceim acl ym dstdomain .skype.com .imvu.com acl gizmo dstdomain .gizmoproject.com acl gizmo dstdomain .talqer.com .gizmocall.com .fring.com acl gizmo dstdomain .pidgin.im acl icq dstdomain .icq.com acl aol dst 64.12.200.89/32 64.12.161.153/32 64.12.161.185/32 acl aol dst 205.188.153.121/32 205.188.179.233/32 acl purge method PURGE acl CONNECT method CONNECT http_access deny msnd msn msn1 http_access deny aol http_access deny icq http_access deny gizmo http_access deny ym http_access deny ymregex http_access deny !Safe_ports # Tous les accès aux ports non définit par la directive Safe_ports sont refusés http_access allow localhost # On autorise les connexions au serveur depuis le serveur lui-même http_access allow goulouxiou # On autorise les connexions depuis les stations du réseau icp_access deny all htcp_access deny all http_port 3128 hierarchy_stoplist cgi-bin ? access_log /var/log/squid3/access.log squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern (cgi-bin|\?) 0 0% 0 refresh_pattern . 0 20% 4320 icp_port 3130 coredump_dir /var/spool/squid3