mercredi 12 juillet 2017

Création d'un squid avec authentification LDAP


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






Aucun commentaire:

Enregistrer un commentaire