SAMBA - Configurer un proxy Squid avec Kerberos et Samba
Sommaire
- 1 Prérequis
- 2 Préparer une configuration réseau propre
- 3 Installation Squid et paquet neccesaire à la jonction
- 4 Configuration Fichier squid.conf
- 5 Creation user Squid pour backend LDAP et Champ DNS srvproxy
- 6 Récupération du Keytab pour Squid
- 7 Configurer le navigateur web pour se connecter au proxy
Prérequis
Ce document montre comment mettre en place un proxy authentifié avec un Active Directory Samba4
Cette documentation se base sur la distribution debian Jessie
Dans les instructions décrites ci-dessous, on prendra le domaine mondomain.lan qui sera à remplacer avec votre propre nom de domaine (éviter d'employer un suffixe en .com, .fr, etc ; nous suggérons .lan et ça marchera très bien).
Préparer une configuration réseau propre
Modifier le fichier /etc/hostname pour qu'il contienne le nom FQDN (nom + suffixe DNS du réseau local) de la machine
srvproxy.mondomaine.lan
Modifier le fichier /etc/hosts pour qu'il contienne la résolution DNS du FQDN de la machine sur son ip (ie pas 127.0.0.1), avec le nom long puis le nom court
127.0.0.1 localhost 192.168.1.13 srvproxy.mondomaine.lan srvproxy
Rebooter la machine pour prendre en compte ce nouveau nom de machine (un hostname -F /etc/hostname n'a pas l'air de suffire pour le script samba qui récupère toujours l'ancien nom...)
reboot
Installation Squid et paquet neccesaire à la jonction
export DEBIAN_FRONTEND=noninteractive apt-get update apt-get install squid3 squid3-common krb5-user msktutil unset DEBIAN_FRONTEND
Configuration Fichier squid.conf
Rajouter les lignes suivantes en haut de votre fichier /etc/squid/squid.conf avec les paramètres suivant (modifier la première ligne srvproxy.mondomaine.lan avec le vrai nom fqdn de votre proxy). Un fichier squid complet est disponible à la page suivante : SAMBA - Fichier squid.conf
#Authentification automatique via Kerberos auth_param negotiate program /usr/lib/squid3/negotiate_kerberos_auth -d -s HTTP/srvproxy.mondomaine.lan@MONDOMAINE.LAN auth_param negotiate children 20 startup=30 auth_param negotiate keep_alive off # Authentification LDAP pour ceux qui ne sont pas en Kerberos auth_param basic program /usr/lib/squid3/basic_ldap_auth -d -b "dc=mondomaine,dc=lan" -D "cn=squid,CN=Users,dc=mondomaine,dc=lan" -W /etc/squid3/ldap_passwd.txt -v 3 -f "sAMAccountName=%s" -s sub -H ldap://srvads.mondomaine.lan auth_param basic children 10 auth_param basic realm Proxy MONDOMAINE
Et rajouter la ligne suivante pour autoriser l'utilisation du proxy par le réseau local après la ligne http_access allow localhost
http_access allow localnet
Creation user Squid pour backend LDAP et Champ DNS srvproxy
En ssh sur srvads
samba-tool user create squid ****ldappassword*** samba-tool dns add srvads domaine.lan srvproxy A 192.168.1.13
Récupération du Keytab pour Squid
Configuration kerberos locale, modification du fichier /etc/krb5.conf, supprimer tout ce qu'il y a dedans et rajouter les lignes suivantes. Attention de bien mettre le nom du domaine en majuscule.
[libdefaults] dns_lookup_realm = false dns_lookup_kdc = true default_realm = MONDOMAINE.LAN clockskew = 3600
Tester que le kerberos est bien configuré, attention, l'administrateur par défaut est administrator en anglais (taper le mdp, si ça ne renvoie rien ou qu'il parle juste de l'expiration de mot de passe, c'est que ça marche)
kinit administrator
Si la demande d'authentification administrator est bonne, vous pouvez créer le compte machine ainsi que le KEYTAB http avec msktutil
msktutil -c -b "CN=Computers" -s HTTP/srvproxy.domaine.lan -h srvproxy.domaine.lan -k /etc/squid3/http-krb5.keytab --computer-name srvproxy --upn HTTP/srvproxy.domaine.lan --server srvads --verbose
Dans le fichier /etc/default/squid3, rajouter les lignes suivante
SQUID_MAXFD=1024 KRB5_KTNAME=/etc/squid3/http-krb5.keytab export KRB5_KTNAME
Création fichiers avec mdp squid pour le backend LDAP
echo ****ldappassword*** > /etc/squid3/ldap_passwd.txt
Remettre les droits à l'utilisateur proxy sur ses fichiers
chmod 400 /etc/squid3/ ldap_passwd.txt chown proxy:proxy /etc/squid3/ ldap_passwd.txt chown proxy:proxy /etc/squid3/ http-krb5.keytab
Puis relancer squid
systemctl reload squid3
- pour internet explorer, il fera une authentification transparente kerberos si le fqdn du proxy a le même suffixe DNS
- pour firefox, il faut aller dans la configuration firefox avancée (dans la barre d'url, taper about:config), puis rajouter le suffixe DNS dans la valeur de network.negotiate-auth.trusted-uris, par exemple mondomaine.lan, puis relancer firefox
Ensuite on peut tester de se connecter à internet. Dans les logs du proxy, on doit voir des lignes comme suit avec le login de l'utilisateur et son domaine kerberos.
1416671826.621 0 192.168.149.14 TCP_DENIED/407 1609 GET http://dev.tranquil.it/ - NONE/- text/html 1416671826.782 114 192.168.149.14 TCP_MISS/301 869 GET http://dev.tranquil.it/ dcardon@TRANQUILIT.LAN DIRECT/185.16.48.44 text/html