squid est un serveur mandataire et un cache http/https
.
C'est plus simplement un service relai, qui va servir les pages web (entre autres) aux utilisateurs, plus rapidement grâce à son cache, tout en masquant leur adresse IP. Il permet aussi de filtrer les requêtes.
Installez les ports www/squid et www/squid-langpack pour la traduction des messages d'erreurs.
Vous disposez d'un couple utilisateur/groupe dédié à ce service: squid/squid
.
Configurez votre proxy selon vos besoins. Par exemple pour pour pouvoir servir des pages à des utilisateurs extérieurs au réseau local:
acl extnet src all http_access allow extnet # ... http_access deny all # ... error_directory /usr/local/share/squid-langpack/fr
La dernière ligne va vous permettre d'afficher les erreurs en français.
Vous pouvez affiner la provenance de vos utilisateurs avec des plages d'IP, plutôt que all
.
Mais j'ai choisi de le faire au niveau du pare-feu. N'oubliez pas d'ouvrir le port sur lequel squid
est à l'écoute, par défaut 3128
.
pass in quick on $ext_if from <copains> port 3128 to me
Activez le service:
sysrc squid_enable=YES
sockstat -P tcp -p 3128 -l USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS squid squid 97316 11 tcp46 *:3128 *:*
Dans ce cas, il est recommandé de demander une authentification à l'entrée. Il existe plusieurs extensions disponible. La plus simple est d'utiliser un fichier Apache http password.
Installez un port capable de générer ce fichier, si vous n'avez pas déjà installé Apache, comme security/py-htpasswd.
Créer une base:
cd /var/squid htpasswd.py -c user.db -b toto username xyz0zxy chown squid:squid user.db chmod 0640 user.db
Réglez squid
:
auth_param basic program /usr/local/libexec/squid/basic_ncsa_auth /var/squid/user.db auth_param basic children 5 auth_param basic realm tekitoi auth_param basic credentialsttl 4 hours # acl auth proxy_auth REQUIRED http_access deny !auth http_access allow extnet http_access allow auth
La plupart des systèmes offrent la possibilité de régler un proxy de manière générale. Sinon, vous pouvez le faire au niveau du navigateur en général. Sous une session shell, exportez les variables suivantes:
export https_proxy=http://toto:xyz00zxy@monserveur:3128 export http_proxy=${https_proxy}
source proxy.env curl -vs https://service-public.fr * Uses proxy env variable https_proxy == 'http://toto:xxyyzz@[AA::BB::]:3128' * Trying [AA::BB]:3128... * Connected to AA::BB (AA::BB::) port 3128 * CONNECT tunnel: HTTP/1.1 negotiated * allocate connect buffer * Proxy auth using Basic with user 'toto' * Establish HTTP proxy tunnel to service-public.fr:443 > CONNECT service-public.fr:443 HTTP/1.1 > Host: service-public.fr:443 > Proxy-Authorization: Basic xxxxxxxxxxxxxxxxxx > User-Agent: curl/8.4.0 > Proxy-Connection: Keep-Alive > < HTTP/1.1 200 Connection established
[https://wiki.squid-cache.org/SquidFaq/SquidLogs||Ils] se trouvent dans /var/log/squid
:
squid
aux requêtesPour évitez qu'ils ne grossissent, demandez régulièrement une rotation des journaux
0 0 * * * /usr/local/sbin/squid -k rotate
Actuellement c'est équivalent à kill -USR1 /var/run/squid/squid.pid
.
Vous pouvez aussi le demander via newsyslog, mais dans ce cas désactiver cette fonctionnalité au niveau de squid
:
*/var/log/squid/*log squid:squid 640 10 * @T00 CJG /var/run/squid/squid.pid SIGUSR1
logfile_rotate 0