evoformations/support/squid.tex

139 lines
4.5 KiB
TeX
Raw Normal View History

2012-05-21 16:07:10 +02:00
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright (c) 2004-2005 eVoLiX. Tous droits reserves.%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{SQUID}
\subsection{Pr<EFBFBD>sentation}
Le logiciel Squid (\url{http://www.squid-cache.org}) est le serveur proxy le plus connu et le plus utilis<69>. Il permet d'op<6F>rer un filtrage sur des flux HTTP et/ou FTP en fonction du contenu qui transite ou des sites consult<6C>es. Il peut <20>tre utile pour acc<63>l<EFBFBD>rer le d<>bit vers les pages d<>j<EFBFBD> consult<6C>es (utilisation du cache) ou encore r<>glementer (ou prot<6F>ger) la naviguation sur Internet. On peut ainsi filtrer en fonction d'extensions de fichiers, de mots cl<63>s, d'URL, etc.\\
Squid fonctionne sur toutes les plateformes UNIX, et dispose d'une communaut<75> de d<>veloppeurs mondiale. De nombreux d<>veloppements annexes ont <20>t<EFBFBD> r<>alis<69>s, comme Squid-Guard ou un module Squid pour Webmin.\\
\subsection{Installation}
Squid est pr<70>sent dans de nombreuses distributions Linux et syst<73>mes
Unix en tout genre.\\
Exemple sous Debian, il suffit d'installer les packages \textit{squid -
squid-common - squid-client} et optionnelement \textit{squid-cgi}.\\
La configuration se fait via le fichier \textit{/etc/squid/squid.conf}.
\subsection{Configuration de base}
\begin{verbatim}
# Port d'<27>coute
http_port 80
# Taille du cache
cache_mem 16 MB
\end{verbatim}
\subsection{Gestion des restrictions}
Les restrictions sont op<6F>r<EFBFBD>es sur plusieurs points :
\begin{itemize}
\item un m<>canisme d'ACL (Access Classes Lists) pour restreindre l'acc<63>s au serveur proxy
\item un m<>canisme d'ACO (Access Classes Operators) qui permettent de restreindre l'acc<63>s <20> certaines URLs
\end{itemize}
~\\
\noindent Exemple d'ACL :
\begin{verbatim}
# on n'autorise que les machines du sous-r<>seau
acl CLIENTS src 192.168.1.0/255.255.255.0
http_access allow CLIENTS
http_access deny all
# ports s<>curis<69>s
acl Safe_ports port 80 443
http_access deny !Safe_ports
\end{verbatim}
~\\
\noindent Exemple d'ACO :
\begin{verbatim}
acl url_mp3 url_regex -i \.mp3$
http_access deny url_mp3
\end{verbatim}
\subsection{Authentification}
Le logiciel Squid permet de nombreux modes de fonctionnement. Entre autres, il est possible de donner lieu <20> une utilisation authentifi<66>e. Seul un utilisateur dot<6F> d'un login et d'un mot de passe pourra utiliser les ressources de Squid.\\
Pour cel<65>, il faut par exemple rajouter dans la configuration :
\begin{verbatim}
acl Users proxy_auth REQUIRED
http_access deny !Users
# choix de la m<>thode, exemple
authenticate_program /usr/lib/squid/ncsa_auth /usr/lib/squid/passquid
\end{verbatim}
Le choix du mode d'authentification vous appartient, vous avez en effet le choix entre :
\begin{itemize}
\item \textit{ncsa\_auth} qui utilise un fichier d'utilisateurs Squid, remplis par exemple via la commande htpasswd
\item \textit{smb\_auth} pour utiliser une base Samba
\item \textit{ldap\_auth} pour utiliser une base LDAP
\item \textit{pam\_auth} pour utiliser l'authentification PAM
\end{itemize}
~\\
\subsubsection{Exemple : ncsa\_auth}
Dans le cas de \textit{ncsa\_auth}, vous avez donc <20> cr<63>er votre fichier d'utilisateurs :
\begin{verbatim}
Dans squid.conf :
/usr/lib/squid/ncsa_auth
Cr<EFBFBD>ation du fichier d'utilisateurs :
htpasswd -c /etc/squid/users utilisateur_test motdepasse_test
Ce qui donne :
utilisateur_test:QXgxhYPbn
\end{verbatim}
\subsubsection{Exemple : ldap\_auth}
La directive <20> utiliser afin d'activer le support LDAP est :
\begin{verbatim}
acl aclname ldap_auth (((static | dynamic) group) | username) ...
\end{verbatim}
\begin{verbatim}
Dans squid.conf :
# serveur LDAP <20> joindre
auth_param basic program /usr/lib/squid/squid_ldap_auth -u uid -b
ou=test,ou=evolix,o=evolix,c=fr -h ldap.evolix.fr -p 389
# param<61>tres
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
# temps d'authentification
auth_param basic credentialsttl 2 hours
\end{verbatim}
\subsection{Mod<EFBFBD>le distribu<62>}
Il est <20>galement possible de "cascader" plusieurs serveurs cache. Pour se faire, le fichier de configuration squid.conf doit <20>tre configur<75> dans cette optique. Les diff<66>rents serveurs Squid peuvent par la suite communiquer normalement ou via le protocole \textit{ICP}.\\
~\\
Exemple :
\begin{verbatim}
cache_peer_domain peer1.domaine.com pper2.domaine.com
cache_peer peer.domaine.com parent 80 7 no-query proxy-only
neighbor_type_domain peer3.domaine.com parent peer4.domaine.com
\end{verbatim}
Enfin, Squid utilise plusieurs journaux afin de rendre compte des diff<66>rentes/acc<63>s qui ont <20>t<EFBFBD> r<>alis<69>s (access.log etc.).