Squid – Authentification Active Directory

Pour cela, nous donnerons des noms à certains éléments comme suit :

Le nom du domaine, s’appellera ici mabooktic.lan ;
Le nom du DC (Contrôleur de domaine), s’appellera ici ad ;
Le compte administrateur du DC, s’appellera ici Administrateur ;
Le nom de la machine Squid s’appellera ici PROXY_FTP ;

installer les paquets sur le serveur squid

apt install samba krb5-user libpam-krb5 ntpdate winbind

mettre l’heure à la même heure entre la machine proxy et l’ad

sudo ntpdate 172.16.2.110

Modifier le fichier /etc/hosts

ajouter cette ligne ( pour la résolution du fqdn)

172.16.2.110          ad.mabooktic.lan172.16.2.6             PROXY_FTP.mabboktic.lan      ad

ouvrir et modifier le fichier /etc/krb5.conf

 [libdefaults]
    	default_realm = MABOOKTIC.LAN
    	clock_skew = 300
    	ticket_lifetime = 24000

    	dns_lookup_realm = false
    	dns_lookup_kdc = false

    	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]
    	MABOOKTIC.LAN = {
            	kdc = ad.MABOOKTIC.lan
            	admin_server = ad.MABOOKTIC.lan
            	default_domain = MABOOKTIC.LAN
    	}

[domain_realm]
    	.MABOOKTIC.LAN = MABOOKTIC.LAN
    	MABOOKTIC.LAN = MABOOKTIC.LAN

[login]
    	krb4_convert=true
    	krb4_get_tickets=false

[logging]
    	kdc = FILE:/var/log/krb5kdc.log
    	admin_server = FILE:/var/log/kadmin.log
    	default = FILE:/var/log/krb5lib.log

Ouvrir et modifier le fichier /etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:     	compat winbind
group:      	compat winbind
shadow:     	compat
gshadow:    	files

hosts:      	files dns
networks:   	files

protocols:  	db files
services:   	db files
ethers:     	db files
rpc:        	db files

netgroup:   	nis

lancer la commande :

sudo kinit Administrateur

(saisir le mot de passe associé à Administrateur dans l’Ad)

Commande pour voir les tickets kerberos :

sudo klist

Arrêter les services samba et winbind

Joindre la machine proxy au domaine :

Relancer le service winbind et samba :

Tester avec la commande : wbinfo -g

Tester la commande wbinfo -u pour voir la liste des utilisateurs

Tester la connexion

Vérifier si la machine proxy est jointe à l’AD :

Pour la partie configuration squid, voici le fichier :

# mise en place d'un proxy server
    	cache_peer 192.168.20.100 parent 8080 0 default no-query login=mayachi:3SqEvRjg

# règle d'autorisation pour notre réseaux booktic
    	never_direct allow all

# nom spécial utilisé dans les logs d'erreur
    	visible_hostname squid_mous

# fourni l'email de l'admin en cas d'arrêt du serveur
    	cache_mgr mustapha@ayachi.ovh

# squid ajoute l'ip dans la requête http
    	forwarded_for off

# squidguard
    	url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

# config authentification ad
    	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 credentialsttl 2 hours
    	auth_param basic realm MABOOKTIC
    	append_domain .mabooktic.lan
    	#cache_effective_group root

# infos
# Pour n'autoriser le surf qu'à un groupe d'Active Directory spécifique,
# rajouter le paramètre require-membership-of au programme ntlm_auth comme ceci :
# auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --require-membership-of=DOMAINEAD\\groupead
# auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic --require-membership-of=DOMAINEAD\\groupead


# acl monreseaux src 172.16.0.0/8
    	acl ntlm proxy_auth REQUIRED
    	acl SSL_ports port 443
    	acl Safe_ports port 80      	# http
    	acl Safe_ports port 21      	# ftp
    	acl Safe_ports port 443     	# https

#auth ad
    	http_access allow ntlm

# Port d'écoute
    	http_port 3128

# mémoire alloué à squid
    	cache_mem 50 MB
# pour l’auth ad
    	append_domain .mabooktic.lan

# gestion de fichiers :

    	coredump_dir /var/spool/squid
    	refresh_pattern ^ftp:       	1440	20% 	10080
    	refresh_pattern ^gopher:    	1440	0%  	1440
    	refresh_pattern -i (/cgi-bin/|\?) 0 	0%  	0
    	refresh_pattern .           	0   	20% 	4320

# pour accélérer le chargement des pages grâce à la mise en mémoire tampon
    	cache_dir ufs /opt/squid 1000 16 256

# taille max stocké en mémoire
    	maximum_object_size 20 MB

Exemple de message d’authentification

reference : https://doc.ubuntu-fr.org/tutoriel/comment_mettre_en_place_un_proxy_squid_avec_authentification_active_directory

Leave a Reply