Aller à : navigation, rechercher

SAMBA - Configurer un proxy Squid avec Kerberos et Samba

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

Configurer le navigateur web pour se connecter au proxy

  • 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