Création d'un squid avec authentification LDAP
Salut a tous vu le temps que
j'ai passé à faire ce squid plus tous les problèmes de que j'ai rencontrés et
surtout le peu de doc en particulier en français je me suis décidé à partagé
mon travail :
le tuto consistera donc à une installation de A à Z d'un serveur squid puis
d'un squidguard et pour finir comme utilisé les données reçus.
Dans un soucis de compréhension je vais définir une légende :
- dc = domaine contrôleur
- domaine = au nom de domaine
de votre réseaux par exemple valentin.net
- ns = le DNS du réseaux qui
auront pour ip 192.168.1.2 et 192.168.1.3
- nomgroup = c'est le nom du
réseaux c 'est à dire alias du domaine sous celui que l'on voit quand on va se
logger sur un windows par exemple, c 'est demandé "domaine :" ,
aussi appelé nom court du domaine.
Tous d'abord il faut déjà préparer la machine pour cela j'ai crée une machine
avec deux interfaces réseaux puis j'ai mis ma machine en routeur pour pouvoir
faire passer les paquets d'une interface à l'autre.
nano /proc/sys/net/ipv4/ip_forward
il faut mettre la valeur à 1
Paramétrage de l'heure du système :
rdate -n
dc.domaine
Vérification de la
synchronisation grâce à la commande date
date
C'est à dire qu'il faut que les
heures du dc et du serveur squid ne soit pas décalé
Configuration du fichier des sources liste /etc/apt/source.list
deb http://mirror.ovh.net/debian/ squeeze main
deb-src http://mirror.ovh.net/debian/ squeeze main
deb http://security.debian.org/ squeeze/updates main
deb-src http://security.debian.org/ squeeze/updates main
# squeeze-updates, previously known as 'volatile'
deb http://mirror.ovh.net/debian/ squeeze-updates main
deb-src http://mirror.ovh.net/debian/ squeeze-updates main
Configuration du fichier /etc/hosts :
127.0.0.1 localhost.domaine
localhost localhost
192.168.1.10
debian-proxy.domaine debian-proxy
debian-proxy
192.168.1.1
dc.domaine dc dc
Configuration du fichier DNS : /etc/resolv.conf
ce sont les ip des serveurs DNS
search
domaine
nameserveur
192.168.1.2
nameserveur
192.168.1.3
Debut de l'installation :
Pour installer les paquets j'ai
eu besoin de rajouter dans le fichier /etc/hosts la ligne
91.121.124.139 mirror.ovh.net
apt-get update
apt-get install samba krb5-user libpam-krb5 ntpdate winbind
Configuration du fichier /etc/krb5.conf
Il faut
faire très attention au majuscule !!! C'est à dire DOMAINE
c'est qu'il faut écrire votre nom de domaine en majuscule
[libdefaults]
default_realm = DOMAINE
dns_lookup_kdc =
yes
dns_lookup_realm =
yes
default_keytab_name =
/etc/krb5.keytab
# for Windows 2003
# default_tgs_enctypes = rc4-hmac des-cbc-crc
des-cbc-md5
# default_tkt_enctypes = rc4-hmac des-cbc-crc
des-cbc-md5
#
permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
# for Windows 2008 with AES
default_tgs_enctypes
= aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
default_tkt_enctypes
= aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
permitted_enctypes
= aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
[realms]
DOMAINE =
{
kdc = dc.DOMAINE
admin_server = dc.DOMAINE
}
[domain_realm]
.domaine = DOMAINE
domaine =
DOMAINE
[logging]
kdc =
FILE:/var/log/kdc.log
admin_server
= FILE:/var/log/kadmin.log
default =
FILE:/var/log/krb5lib.log
Test de fonctionnement :
administrateur c'est le compte
administrateur de vote
root@proxy-deb:~# kinit administrateur
Password for administrateur@DOMAINE:
Une fois le mot de passe validé
il n'y a aucune réponse si cela a fonctionné
pour vérifier la prise en compte de l'authentification il faut faire
:
root@proxy-deb:~# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default
principal: administrateur@DOMAINE
Valid
starting Expires Service
principal
01/30/13 09:48:54
01/30/13 10:48:54 krbtgt/DOMAINE@DOMAIN
Extinction des deux services samba et winbind :
root@proxy-deb:~# service winbind stop
Stopping the Winbind daemon: winbind.
root@proxy-deb:~# service samba stop
Stopping Samba daemons: nmbd smbd.
Configuration du fichier /etc/samba/smb.conf
[global]
workgroup = NOMGROUP
realm = DOMAINE
security = ads
encrypt passwords = yes
password server = dc.DOMAINE
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum groups = yes
winbind enum users = yes
winbind use
default domain = yes
Après cela il faut mettre le serveur sur le domaine :
root@proxy-deb:~#
net join -U adm
Enter adm's password:
Using short domain name -- NOMGROUP
Joined 'PROXY-DEB' to realm 'domaine''
[2013/01/30 09:53:30.382484, 0]
libads/kerberos.c:333(ads_kinit_password)
kerberos_kinit_password PROXY-DEB$@DOMAINE failed: Client not found in
Kerberos database
IMPORTANT aprés toute
modification du fichier de conf il FAUT relancer les deux services sinon la
commande wbinfo -g et wbinfo -u ne fonctionne pas
on peut voir que le pc à était
ajouté dans le domaine en allant voir dans le dc
Test de fonctionnement :
root@proxy-deb:~#
net ads testjoin
Join is
OK
La commande permet de voir les groupe
du DC, si la connections est effective.
root@proxy-deb:~# wbinfo -g
groupeadministrateur
groupeclients
groupeinvités
Puis cette commande permet de
voir les utilisatreurs du DC, si la connections est effective.
root@proxy-deb:~#
wbinfo -u
paul.jack
dupond.pierre
administrateur
Ensuite il faut test si la
communication s'effectue convenablement avec le DC grâce à
cette commande :
root@proxy-deb:~# /usr/bin/ntlm_auth
--helper-protocol=squid-2.5-basic
paul.pierre
ERR
motdepasseducompte
ERR
paul.pierre
motdepasseducompte
OK
Ceci fait une tentative
d'authentification sur le DC comme on peut le voir dans l'exemple il faut
mettre le loggin motdepasse sur la même ligne en claire mais ici ce n'est qu'un
test de fonctionnement.
Maintenant nous allons attaquer la configuration de squid :
apt-get install squid3
vi /etc/squid3/squid.conf
il faut ajouter les lignes
suivantes personnellement je me suis arrangé pour les rajouté a coté des ligne
qui correspondes dans le fichier pour garder une cohérence et une facilité de
manipulation.
attention le mot
"domain" est a laisser tel quel c'est domaine qui faut remplacer
auth_param ntlm program /usr/bin/ntlm_auth
--helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 5
auth_param basic program /usr/bin/ntlm_auth
--helper-protocol=squid-2.5-basic
auth_param basic children 5
auth_param basic realm Squid AD
auth_param basic credentialsttl 2 hours
acl ntlm proxy_auth REQUIRED
http_access allow ntlm
append_domain domaine
forwarded_for off
visible_hostname proxy-deb
cache_effective_group winbindd_priv
Il faut
modifié cette ligne qui est l'ip de l'interface d'entrée sur le serveur ainsi
que le port :
http_port 10.50.1.202:3128
Ensuite il
faut configuré le nsswitch /etc/nsswitch :
passwd: compat
group: compat
shadow: compat
hosts: files
networks: files
protocols: db files
services:
db files
ethers:
db files
rpc:
db files
netgroup: nis
C'est finit
pour cette partie a ce moment la de l'installation vous pouvez déjà ajouter des
ordinateur sur le serveur squid.
Lorsque
le client une fois configuré voudra se connecter a internet il n'aura pas
besoin de s'authentifier en effet squid utilise le login motdepasse de la
session utilisé pour lancé windows si l'ordinateur n'est pas sur le domaine il
y aura alors un popup qui demandera login motdepasse