Squid3

De NCad Wiki
Aller à la navigation Aller à la recherche
LOGO Squid.gif


ICON Balance.png

Conformité avec la loi...

Avant tout déploiement, vous êtes tenu d'informer vos utilisateurs qui devront signer une charte attestant reconnaître l’existence d'un tel dispositif et de respecter les règles d'usage de l'accès Internet dans votre entreprise / administration.

Squid3 est un serveur proxy. A ce titre, il enregistre l'ensemble des requêtes qui lui sont soumises à savoir : l'url demandée - l'IP du poste client et la date. De ce fait, ces informations étant nominative, elles doivent être déclarées auprès de la CNIL.


Installation

Depuis les dépôts

  • Pour installer le serveur proxy Squid3 sans prise en charge du module ssl, il suffit d'installer le paquet squid3.

sudo apt-get install squid3

Installation avec prise en charge SSL

Si vous souhaitez un support ssl, l'installation par les sources est obligatoire.

  • Installation des paquets pour l'environnement de compilation :

apt-get install dpkg-dev devscripts build-essential fakeroot libssl-dev

  • Obtention des sources du paquet Squid3 :

cd /opt
apt-get source squid3

  • Installation des dépendances :

apt-get build-dep squid3

  • Pour activer le support SSL, il faut éditer le fichier squid3-3.x.x/debian/rules et y ajouter la ligne suivante  :
--enable-ssl \
  • Juste après la ligne :
--enable-ecap \
  • On lance le script de configuration :

cd /opt/squid3-3.x.x
./configure

  • Puis on construit les nouveaux packages :

debuild -us -uc -b


Ce processus peut prendre plusieurs heures.

  • Une fois la compilation terminée les paquets suivants sont présents :
squid3_3.3.8-1ubuntu6.2_i386.deb        squid-cgi_3.3.8-1ubuntu6.2_i386.deb
squid_3.3.8-1ubuntu6.2_i386.deb         squidclient_3.3.8-1ubuntu6.2_i386.deb
squid3-common_3.3.8-1ubuntu6.2_all.deb  squid-purge_3.3.8-1ubuntu6.2_i386.deb
squid3-dbg_3.3.8-1ubuntu6.2_i386.deb
  • On procède à l'installation des paquets squid3_3.3.8-1ubuntu6.2_i386.deb et squid3-common_3.3.8-1ubuntu6.2_all.deb.

dpkg -i squid3_3.3.8-1ubuntu6.2_i386.deb squid3-common_3.3.8-1ubuntu6.2_all.deb

Configuration de base

  • Le fichier de configuration de squid3 fournit par défaut est un fichier commenté. Ce dernier contient toutes les informations nécessaires à la compréhension de chacun des paramètres.
  • Nous effectuons une sauvegarde de ce fichier :

cd /etc/squid3
cp ./squid.conf ./squid.conf.bak

  • Nous créons un nouveau fichier squid.conf vierge.

touch squid.conf

Architecture du réseau

  • Dans notre topologie, le serveur Squid3 se trouve entre le routeur (Box, Modem Internet) et le LAN. Les paramètres de connexion au serveur proxy Squid3 devront être indiqués dans le navigateur web de chaque PC.
Intégration du serveur en tant que passerelle

Dans ce type de configuration, le serveur Squid3 est utilisé comme passerelle. Pour configurer un équipement Linux comme routeur, veuillez vous reporter à l'article Routeur_Linux.

Paramètres généraux

  • Le fichier de configuration de Squid3 se trouve dans le répertoire /etc/squid3 et se nomme squid.conf.
  • 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

Fonctionnement

Les ACcess Lists (Listes d'accès) permettent d'établir des règles d'accès selon plusieurs critères (adresse IP, nom d'hôte, protocole).

  • La synthaxe d'une liste d'accès est la suivante :
acl <nom_reseau> src <plage_ip/adresse_ip>

Déclaration d'hôtes

  • Nous allons définir une ACL pour identifier les machines du réseau local.
acl reseaulocal src 10.0.0.0/24

Déclaration des protocoles

  • Nous allons définir une liste des protocoles TCP/IP qui seront autorisés à traverser le proxy.
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
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.


Les règles d'accès seront définies par la suite.

Règles d'accès

Initialisation du cache

  • On procède à la purge du cache de Squid3. Ce dernier sauvegarde toutes les pages consultées par les utilisateurs afin d'éviter d'avoir à les télécharger de nouveau.
acl purge method PURGE
  • On autorise l'établissement du tunnel HTTP entre les clients et le proxy.
acl CONNECT method CONNECT

Définition des autorisations

  • On autorise uniquement les protocoles qui ont été listés dans l'ACL Safe_ports :
http_access deny !Safe_ports
  • On autorise les postes informatiques du réseau local à se connecter au serveur proxy :
http_access allow reseaulocal
  • On interdit tous les autres accès non listés :
http_access deny all
  • Blocage des requêtes ICP :
icp_access deny all
  • Blocage des requêtes HTCP :
htcp_access deny all

Paramètres de fonctionnement du proxy

  • Port d'écoute du serveur proxy :
http_port 3128
  • Ne pas interroger le cache pour l'accès à des scripts cgi :
hierarchy_stoplist cgi-bin ?
  • Chemin vers le fichier des logs d'accès de Squid3 :
access_log /var/log/squid3/access.log squid
  • Temps de rafraîchissement du cache et durée de vie du cache :
refresh_pattern ^ftp:		1440	20%	10080
refresh_pattern ^gopher:	1440	0%	1440
refresh_pattern (cgi-bin|\?)	0	0%	0
refresh_pattern .		0	20%	4320
  • Port d'écoute du serveur proxy pour les requêtes ICP :
icp_port 3130

coredump_dir /var/spool/squid3

Fichier squid.conf

  • 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 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
http_access allow reseaulocal
http_access deny all

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

Squid3 en mode transparent

Squid3 avec filtrage https

mkdir /etc/squid3/ssl_cert

openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -keyout myCA.pem -out myCA.pem

openssl x509 -in myCA.pem -outform DER -out myCA.der

https_port 3127 intercept ssl-bump \
  cert=/etc/squid3/ssl_cert/myCA.pem \
  generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
always_direct allow all
ssl_bump server-first all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER