Outils pour utilisateurs

Outils du site


linux:squid

SQUID : Proxy web (transparent) authentifié

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.

Squid

C'est un logiciel libre distribué sous licence GNU GPL.

Proxy WEB classique

  • Installation du package SQUID :

aptitude install squid

  • Définition des réseaux clients et acl d'accès http :

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

Configuration des clients du proxy web

  • Sur un poste Windows :

Proxy web windows

  • Sur un poste linux :

export http_proxy="http://192.168.1.254:3128"
Vérifiez que votre browser est basé sur la configuration système.

Proxy WEB transparent avec IPTABLES

SQUIDIPTABLE

Un proxy c'est bien mais si il faut créer une GPO rien que pour l'appliquer sur tous les navigateurs…
La solution LOL : une redirection grâce à IPTABLES (NetFilter) !

  • Modifier le squid.conf en ajoutant simplement “transparent” :

vi /etc/squid/squid.conf
# Configuration de squid en transparent
http_port 3128 transparent

  • Les règles IPTABLE pour rediriger toutes requêtes HTTP vers SQUID :

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é !

FIXME 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 !

Proxy WEB avec authentification SAMBA

SQUIDSAMBA

  • Définition du mappage vers SAMBA dans squid.conf:

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

  • Créer le fichier proxyauth dans le dossier partagé NETLOGON de SAMBA :

cd /home/samba/netlogon
echo allow > proxyauth

  • Reloader les services squid et samba :

Sur le serveur SAMBA

service smbd restart
service nmbd restart
Sur le serveur SQUID
service squid restart

  • Tester l'authentification depuis le serveur SQUID en ligne de commande :

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.

FIXME 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.

Proxy WEB avec authentification LDAP

SQUIDLDAP AD

  • Définition du mappage pour authentification LDAP dans l'AD du contrôleur de domaine :

vi /etc/squid/squid.conf


Dans cet exemple, j'authentifie via le container Users de mon domaine AD mathieu.local
les users dont le sAMAccountName est présent et l'attribut description renseigné à internet.


#########################################
#                                       #
#   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

  • Reloader le service squid :

kill  -9 `pgrep squid`
service squid start

  • Vous devez pouvoir vérifier depuis le squid en CLI :

/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

FIXME
Attention aux caractères spéciaux dans le password Administrateur …
Le proxy web transparent et l'authentification LDAP sont incompatibles.

linux/squid.txt · Dernière modification: 15/04/2016 à 21:15 (modification externe)

Outils de la page