Un serveur Squid est un serveur mandataire (proxy) capable d'utiliser les protocoles FTP, HTTP, Gopher, et HTTPS. Contrairement aux serveurs proxy classiques, un serveur Squid gère toutes les requêtes en un seul processus d'entrée/sortie, non bloquant.
C'est un logiciel libre distribué sous licence GNU GPL.
aptitude install squid
vi /etc/squid/squid.conf
# Définition du port d'écoute http_port 3128 # Mémoire alloue a squid cache_mem 20 MB # Fichier de logs des requetes cache_log /var/log/squid/cache.log # Fichier de logs de squid access_log /var/log/squid/access_log squid # Pour ne pas enregistrer les logs ecrite/effacement objet cache_store_log none # Message d'erreur en francais error_directory /usr/share/squid/errors/fr # Autoriser les acces vers squid pour les reseaux concernes acl proxy_web src 192.168.1.0/24 192.168.2.0/24 http_access allow proxy_web http_access allow localhost # Commenter la conf pour défaut des adressages prives #acl localnet src 10.0.0.0/8 # RFC1918 possible internal network #acl localnet src 172.16.0.0/12 # RFC1918 possible internal network #acl localnet src 192.168.0.0/16 # RFC1918 possible internal network #http_access allow localnet #icp_access allow localnet
export http_proxy="http://192.168.1.254:3128"
Vérifiez que votre browser est basé sur la configuration système.

Un proxy c'est bien mais si il faut créer une GPO rien que pour l'appliquer sur tous les navigateurs…
La solution
: une redirection grâce à IPTABLES (NetFilter) !
vi /etc/squid/squid.conf
# Configuration de squid en transparent http_port 3128 transparent
vi /root/script/firewall
# PROXY TRANSPARENT REDIRECT iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp -m multiport --dport 80 -j REDIRECT --to-port 3128 iptables -t nat -A PREROUTING -i eth2 -s 192.168.2.0/24 -p tcp -m multiport --dport 80 -j REDIRECT --to-port 3128 echo "PROXY TRANSPARENT REDIRECT : OK" # SQUID ACCES LAN-FW iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --dport 3128 -j ACCEPT iptables -A OUTPUT -o eth0 -d 192.168.1.0/24 -p tcp --sport 3128 -j ACCEPT echo "SQUID LAN-FW : OK" # SQUID ACCES DMZ-FW iptables -A INPUT -i eth2 -s 192.168.2.0/24 -p tcp --dport 3128 -j ACCEPT iptables -A OUTPUT -o eth2 -d 192.168.2.0/24 -p tcp --sport 3128 -j ACCEPT echo "SQUID DMZ-FW : OK" # HTTP(s) ACCES FW-INTERNET iptables -A OUTPUT -o eth1 -s 10.32.13.100 -p tcp -m multiport --dport 80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -i eth1 -d 10.32.13.100 -p tcp -m multiport --sport 80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT echo "HTTP(s) FW-INTERNET : OK"
Les clients requêteront sans avoir configuré de proxy et seront redirigés de façon transparente.
Le serveur Squid est le seul à sortir sur le Web, un bon point en terme de sécurité !
Néanmoins, cette redirection a ces limites en mode transparent pour le HTTPS puisque l'entête http pour le cryptage SSL ne sera pas destiné à Squid par le navigateur client et donc Squid ne comprendra pas la requête !

vi /etc/squid/squid.conf
######################################### # # # AUTHENTIFICATION SAMBA POUR SQUID # # # ######################################### # Declaration de l'authentification auth_param basic program /usr/lib/squid/smb_auth -W mathieu.local -U 192.168.1.100 # On lance 5 processus d'authentificaton afin d'accelerer le traitement auth_param basic children 5 # Message affiche lors de la demande de mot de passe auth_param basic realm Indiquez login et password # Delai de validite du mot de passe auth_param basic credentialsttl 30 minutes # ACL POUR ACCES HTTP acl sambasquid proxy_auth REQUIRED http_access allow sambasquid
cd /home/samba/netlogon echo allow > proxyauth
Sur le serveur SAMBA
service smbd restart service nmbd restart
Sur le serveur SQUID
service squid restart
echo -e mathieu 'Pa$$w0rd' | /usr/lib/squid/smb_auth -W mathieu.local -U 192.168.1.100 -d
Pour se faire, vous devez disposer du paquet smbclient et le compte utilisateur doit être existant dans la base SAMBA.
Attention la combinaison proxy transparent avec IPTABLE et authentification SAMBA ne fonctionnent pas ensemble. Vous serez obligé de définir le proxy web dans la configuration réseau de votre navigateur.

vi /etc/squid/squid.conf
######################################### # # # AUTHENTIFICATION LDAP POUR SQUID # # # ######################################### # Declaration de l'authentification auth_param basic program /usr/lib/squid/ldap_auth -R -b "CN=Users,DC=mathieu,DC=local" -D "CN=administrateur,CN=Users,DC=mathieu,DC=local" -w Passw0rd -f "(&(sAMAccountName=%s)(description=internet))" -h srv-2k8r2.mathieu.local # On lance 5 processus d'authentificaton afin d'accelerer le traitement auth_param basic children 5 # Message affiche lors de la demande de mot de passe auth_param basic realm Indiquez login et password # delai de validite du mot de passe auth_param basic credentialsttl 5 minutes # UTF-8 pour ath des navigateurs auth_param basic utf8 on # Log + verbeux debug_options ALL,1 # Les ACL pour acces HTTP acl squidldap proxy_auth REQUIRED http_access allow squidldap
kill -9 `pgrep squid` service squid start
/usr/lib/squid/ldap_auth -R -b "CN=Users,DC=mathieu,DC=local" -D "CN=administrateur,CN=Users,DC=mathieu,DC=local" -w Passw0rd -f "(&(sAMAccountName=%s)(description=internet))" -h srv-2k8r2.mathieu.local
Attention aux caractères spéciaux dans le password Administrateur …
Le proxy web transparent et l'authentification LDAP sont incompatibles.