Configurer un serveur Proxy (Squid)
Documentation : www.squid-cache.org : accueil | www.squid-cache.org : Squid configuration directives
Installer
(Devenir l'utilisateur root)
doe@debian:~$ su - root Mot de passe :
Télécharger le paquetage
root@debian:~# apt update root@debian:~# apt install squid
Configurer le serveur Proxy
Sauvegarder le fichier de configuration d'origine
root@debian:~# cp /etc/squid/squid.conf /etc/squid/squid.conf.origin
Supprimer les commentaires
Les lignes commençant par #
sont des commentaires qui constituent également la documentation de Squid
.
Il est plus pratique d'avoir un fichier de configuration sans ces lignes afin d'avoir une meilleure vision globale de la configuration.
root@debian:~# grep -E -v '^(#|$)' /etc/squid/squid.conf.origin > /etc/squid/squid.conf.originSansCommentaires root@debian:~# cp /etc/squid/squid.conf.originSansCommentaires /etc/squid/squid.conf
Afficher la configuration de base
root@debian:~# cat /etc/squid/squid.conf acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN) acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN) acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN) acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN) acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN) acl localnet src fc00::/7 # RFC 4193 local private network range acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports 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 http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager include /etc/squid/conf.d/* http_access allow localhost http_access deny all http_port 3128 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
Analyse :
- la directive
http_port
indique le numéro de port utilisé par le proxy, ici :3128
. - la directive
http_access
indique que seullocalhost
peut accéder au proxy. - Une liste de controle d'accès (
acl
)localnet
a été créée pour toutes les adresses IP privées IPv4 et IPv6.
Effectuer la configuration
Autoriser l'accès au uniquement au hôtes du réseau 192.168.1.0/24
et à localhost
Directives
- Je supprime toutes les lignes de l'acl
localnet
déjà créées - J'ajoute la ligne
acl localnet src 192.168.1.0/24
(Documentation : Squid configuration directive acl. - J'ajoute la ligne
http_access allow localnet
pour autoriser les réseaux définis dans l'acllocalnet
à accéder au proxy. (Documentation : Squid configuration directive http_access. Attention la dernière lignehttp_access
doit être :http_access deny all
Résultat de la modification du fichier /etc/squid/squid.conf
root@debian:~# cat /etc/squid/squid.conf acl localnet src 192.168.1.0/24 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports 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 CONNECT method CONNECT http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager include /etc/squid/conf.d/* http_access allow localhost http_access allow localnet http_access deny all http_port 3128 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
Rédémarrer Squid
root@debian:~# systemctl restart squid.service
Vérifier l'état du serveur
root@debian:~# systemctl status squid.service ● squid.service - LSB: Squid HTTP Proxy version 3.x Loaded: loaded (/etc/init.d/squid; generated; vendor preset: enabled) Active: active (running)) since Tue 2017-11-28 06:26:29 CET; 49s ago
Tester
Configurer le navigateur pour qu'il utilise le proxy. Sur Firefox Browser
: ≡ > Paramètres > Paramètres Réseau > Paramètres ...
:
Résultat :
Vérifier le fichier journal du serveur
root@debian:~# cat /var/log/squid/access.log | grep ress 1629724058.196 298577 192.168.1.72 TCP_TUNNEL/200 7610 CONNECT ressourcesinformatiques.com:443 - HIER_DIRECT/213.186.33.16 -
L'hôte d'adresse IP 192.168.1.72
à contacté le proxy pour consulter le site ressourcesinformatiques.com
en utilisant le protocole HTTPS
(port 443
)
Cascader un serveur proxy
Il arrive que le serveur proxy que l'on souhaite mettre en oeuvre se situe derrière un autre serveur proxy. Il est alors nécessaire de
l'indiquer à votre serveur. Cela est réalisé par les directives suivantes à placer dans le fichier squid.conf
:
- cache_peer : pour indiquer d'autres serveur
proxy
dans la hiérarchie. Exemple :
# proxy icp # hostname type port port options # -------------------- -------- ----- ----- ----------- cache_peer 192.168.0.5 parent 3128 0 default
- never_direct allow all : indique que les requêtes ne doivent jamais être transmises directement à un serveur Web mais toujours passer par votre serveur proxy.
Exemple :
cache_peer 192.168.0.5 parent 3128 0 default never_direct allow all