Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
unix:squid_ldap [2006/09/26 12:30]
nico created
unix:squid_ldap [2010/01/12 13:29] (current)
Line 1: Line 1:
 +====== Squid & LDAP ======
  
 +Comment brancher un squid 2.6 (et supérieur normalement) sur un LDAP (openldap en l'​occurence).
 +
 +===== Les ingrédients =====
 +
 +
 +installer les composants de base de la recette :
 +
 +<​code>​apt-get install slapd squid pwgen ldap-utils</​code>​
 +
 +J'ai l'​habitude d'​utiliser un utilisateur servant aux applications à se binder sur le LDAP, et qui possède des droits de lecture uniquement. C'est ma façon de faire, libre à vous de l'​utiliser ou pas.
 +
 +===== Faire revenir le LDAP =====
 +
 +Créer une OU "​squid_users"​ :
 +<​code>​
 +dn: ou=squid_users,​dc=mon_arbre
 +ou: squid_users
 +objectClass:​ organizationalUnit
 +objectClass:​ top
 +</​code>​
 +
 +Créer un utilisateur :
 +<​code>​
 +dn: uid=test,​ou=squid_users,​dc=mon_arbre
 +uid: test
 +userPassword:​ {MD5}CY9rzUYh03PK3k6DJie09g==
 +objectClass:​ account
 +objectClass:​ simpleSecurityObject
 +objectClass:​ top
 +</​code>​
 +
 +Cet utilisateur est le fameux test/test :)
 +
 +Petit script rapide pour ajouter facilement des utilisateurs :
 +<​code>​
 +#!/bin/bash
 +
 +if [ -f /​tmp/​squid.ldif ]
 +then
 +        rm -f /​tmp/​squid.ldif
 +fi
 +
 +for user in $(cat $1)
 +do
 +        password=`pwgen 8`
 +        password_crypt=`/​usr/​sbin/​slappasswd -h {MD5} -s $password`
 +
 +        if [ -f /​tmp/​squid.ldif ]
 +        then
 +                rm -f /​tmp/​squid.ldif
 +        fi
 +
 +        echo "dn: uid=$user,​cn=$2,​ou=squid_users,​dc=mon_arbre"​ > /​tmp/​squid.ldif
 +        echo "uid: $user" >> /​tmp/​squid.ldif
 +        echo "​userPassword:​ $password_crypt"​ >> /​tmp/​squid.ldif
 +        echo "​objectClass:​ account"​ >> /​tmp/​squid.ldif
 +        echo "​objectClass:​ simpleSecurityObject"​ >> /​tmp/​squid.ldif
 +        echo "​objectClass:​ top" >> /​tmp/​squid.ldif
 +
 +        ldapadd -x -c -D "​cn=admin,​dc=mon_arbre"​ -w secret -f /​tmp/​squid.ldif
 +
 +        ./envoimail "​[acces internet]"​ "​$user@mon_entreprise.tld"​ cmd "​./​msg_proxy.sh $user $password $2"
 +        rm -f /​tmp/​squid.ldif
 +done
 +</​code>​
 +
 +
 +
 +===== Rissoler le squid =====
 +
 +Dans le squid.conf :
 +
 +<​code>​
 +# Auth LDAP
 +auth_param basic program /​usr/​lib/​squid/​ldap_auth -h 127.0.0.1 -D "​cn=applications,​dc=mon_arbre"​ -w secret -b "​ou=squid_users,​dc=mon_arbre"​ -f (&​(objectclass=account)(uid=%s))
 +auth_param basic realm Authentification requise !
 +auth_param basic children 10
 +auth_param basic credentialsttl 2 hours
 +acl ldapauth proxy_auth REQUIRED
 +http_access deny !ldapauth
 +</​code>​
 +
 +Avec ça, tous les utilisateurs authentifiés ont accès au ternet convivial
 +
 +===== Ajouter les oignons =====
 +<​code>​
 +# On trie
 +external_acl_type ldap %LOGIN ​ /​usr/​lib/​squid/​squid_ldap_group -h 127.0.0.1 -D "​cn=applications,​dc=mon_arbre"​ -w secret -b "​ou=squid_users,​dc=mon_arbre"​ -f (&​(objectclass=account)(uid=%v)(entryDN=uid=%v,​cn=%a,​ou=squid_users,​dc=mon_arbre))
 +
 +# Ensuite les ACL des groupes
 +acl vip external ldap vip
 +acl normal external ldap normal
 +acl full_vip external ldap full_vip
 +
 +#et enfin les http_access associes
 +http_access allow normal sites_autorises
 +http_access allow full_vip
 +http_access allow vip !no_exe
 +</​code>​
 +
 +Note : Utiliser entryDN est un fix un peu gruik, parce que normalement je devrais tester l'​appartenance à un groupe à avec groupMembership,​ mais *apparemment* ce n'est dispo que sur les annuaires Novell... d'où ce petit hack 
unix/squid_ldap.txt · Last modified: 2010/01/12 13:29 (external edit)