Configuration réseau · 5 min read · Sep 23, 2025

Debian Squeeze, Squid, Authentification Kerberos/LDAP, Intégration Active Directory Et Cyfin Reporter

Debian Squeeze, Squid, Authentification Kerberos/LDAP, Intégration Active Directory Et Cyfin Reporter

Introduction

Ce document couvre la configuration d’un proxy Squid qui s’intègre parfaitement avec Active Directory pour l’authentification en utilisant Kerberos avec LDAP comme sauvegarde pour les utilisateurs non authentifiés via Kerberos. L’autorisation est gérée par des groupes dans Active Directory. Cela est particulièrement utile pour les clients Windows 7 qui ne prennent plus en charge NTLMv2 sans changer la politique de l’ordinateur local. Il est capable d’utiliser des listes blanches et des listes noires pour l’accès et les restrictions de site.

Pour ce guide, les exemples suivants sont utilisés - vous devez mettre à jour les sections avec le domaine des clients, les noms d’hôtes et les IP si nécessaire.

  • Domaine = example.local
  • Sous-réseau = 192.168.0.0/24
  • Serveur Proxy : IP = 192.168.0.26, NOM D’HÔTE = squidproxy.example.local
  • Serveur Windows 1 : IP = 192.168.0.1, NOM D’HÔTE = domaincontroller1.example.local
  • Serveur Windows 2 : IP = 192.168.0.10, NOM D’HÔTE = server2.example.local

Une installation de base de Debian Squeeze est supposée ainsi que des compétences de base en administration Debian. vi est supposé comme éditeur de texte.

Prérequis

Les navigateurs Internet Explorer des clients doivent avoir “Activer l’authentification Windows intégrée” coché dans Options Internet :: Paramètres avancés ainsi que la détection automatique du proxy activée - recherchez cela sur Google si vous n’êtes pas sûr. Tous les navigateurs web modernes prendront en charge la détection automatique du proxy. Firefox et Chrome prennent également en charge l’authentification Windows.

Configuration DNS

Installez dnsutils :

apt-get install dnsutils

Sur le serveur DNS Windows, ajoutez une nouvelle entrée d’enregistrement A pour le nom d’hôte du serveur proxy et assurez-vous qu’une entrée PTR (DNS inverse) correspondante est également créée et fonctionne. Vérifiez que le proxy utilise le serveur DNS Windows pour la résolution de noms et mettez à jour /etc/resolv.conf en conséquence.

vi /etc/resolv.conf
search example.local
nameserver 192.168.0.1
nameserver 192.168.0.10

Pinger un nom d’hôte interne et externe pour s’assurer que le DNS fonctionne.

ping domaincontroller1.example.local -c 4 && ping google.com -c 4

Vérifiez que vous pouvez effectuer une recherche inversée sur le serveur Windows et l’IP locale du proxy depuis le DNS Windows.

dig -x 192.168.0.1  
dig -x 192.168.0.26

Avertissement : Si l’une des recherches DNS échoue, ne continuez pas tant que cela n’est pas corrigé, sinon l’authentification du proxy échouera.

Configuration NTP

Installez le paquet ntp :

apt-get install ntp

Parce que Kerberos doit avoir l’heure synchronisée avec les contrôleurs de domaine Windows pour l’authentification, nous configurons le proxy pour obtenir l’heure de ceux-ci.

vi /etc/ntp.conf

Localisez la section suivante et mettez à jour les serveurs ntp selon les besoins. Si vous avez plus d’un contrôleur de domaine ou serveur NTP, vous pouvez ajouter plusieurs lignes.

# Vous devez parler à un serveur NTP ou deux (ou trois).
#server ntp.your-provider.example
server domaincontroller1.example.local
server server2.example.local

Puis redémarrez et testez NTP.

invoke-rc.d ntp restart  
tpq -p

Vous devriez voir une sortie qui fait référence aux contrôleurs de domaine et aux autres serveurs NTP qui sont traités dans l’ordre dans lequel ils apparaissent dans le fichier de configuration.

Configurer Kerberos

Installez les paquets Kerberos :

apt-get install krb5-user libkrb53

Acceptez simplement les valeurs par défaut présentées à tout dialogue debconf qui s’affiche, car nous les remplaçons.

Configurez Kerberos.

cp /etc/krb5.conf /etc/krb5.conf.default  
cat /dev/null > /etc/krb5.conf  
vi /etc/krb5.conf

Modifiez le fichier en remplaçant les variables (soulignées) par le domaine et le serveur du client.

Avertissement : Selon la version du système d’exploitation de vos contrôleurs de domaine Windows, décommentez la section Windows 200X pertinente et commentez la section opposée.

Si vous n’avez qu’un seul contrôleur de domaine, supprimez l’entrée “kdc” supplémentaire de la section “[realms]”.

[libdefaults]
        default_realm = EXAMPLE.LOCAL
        dns_lookup_kdc = no
        dns_lookup_realm = no
        ticket_lifetime = 24h
        default_keytab_name = /etc/squid3/PROXY.keytab
; pour 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
; pour Windows 2008 avec 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]
        EXAMPLE.LOCAL = {
                kdc = domaincontroller1.example.local
                kdc = server2.example.local
                admin_server = domaincontroller1.example.local
                default_domain = example.local
        }
[domain_realm]
        .example.local = EXAMPLE.LOCAL
        example.local = EXAMPLE.LOCAL

Installer Squid 3

apt-get install squid3 ldap-utils

Remarque : La configuration de Squid se fait après que msktutil soit configuré.

Installer et exécuter msktutil

Obtenez le paquet msktutil et installez-le.

cd /var/cache/apt/archives/  
wget http://fuhm.net/software/msktutil/releases/msktutil_0.4-2_i386.deb  
apt-get install libsasl2-modules-gssapi-mit libsasl2-modules  
dpkg -i msktutil_0.4-2_i386.deb  
cd

Initiez une session kerberos avec le serveur afin que msktutil puisse l’utiliser pour créer notre objet Proxy dans Active Directory qui sera utilisé pour l’accès.

kinit administrator

Entrez le mot de passe de l’administrateur de domaine.

Il devrait ensuite retourner sans erreurs. Vous pouvez voir si vous avez obtenu un ticket avec :

klist

Maintenant, nous configurons le proxy dans AD avec des principes de service en exécutant msktutil (mettez à jour les valeurs surlignées avec votre réseau).

Avertissement : Vous ne devez pas déplacer l’objet de l’OU que vous utilisez pour le créer avec msktutil.

msktutil -c -b "CN=COMPUTERS" -s HTTP -k /etc/squid3/PROXY.keytab --computer-name SQUIDPROXY \  
--upn HTTP/squidproxy.example.local --server domaincontroller1.example.local --verbose

Si vous utilisez un domaine Server 2008, ajoutez “–enctypes 28” à la fin de la commande.

msktutil -c -b "CN=COMPUTERS" -s HTTP -k /etc/squid3/PROXY.keytab --computer-name SQUIDPROXY \  
--upn HTTP/squidproxy.example.local --server domaincontroller1.example.local --verbose --enctypes 28

Définissez les permissions sur le keytab afin que squid puisse le lire.

chgrp proxy /etc/squid3/PROXY.keytab  
chmod g+r /etc/squid3/PROXY.keytab

Sur le serveur Windows, réinitialisez le compte ordinateur dans AD en cliquant avec le bouton droit sur l’ordinateur SQUIDPROXY et sélectionnez “Réinitialiser le compte”, puis exécutez msktutil comme suit pour vous assurer que le keytab est mis à jour comme prévu et que le keytab est correctement source par msktutil depuis /etc/krb5.conf.

Redémarrez d’abord le proxy pour effacer les tickets kerberos générés par la commande kinit, puis exécutez ce qui suit :

msktutil --auto-update --verbose

Si le keytab n’est pas trouvé, essayez d’ajouter “-k /etc/squid3/PROXY.keytab” à la commande pour voir si cela fonctionne, puis dépannez jusqu’à ce que cela soit résolu ou les utilisateurs ne pourront pas s’authentifier avec Squid.

Ajoutez ce qui suit à cron afin qu’il puisse automatiquement mettre à jour le compte ordinateur dans Active Directory lorsqu’il expire (généralement autour de 30 jours). Je le pipe à travers logger afin que je puisse voir les erreurs dans syslog si nécessaire. Comme indiqué, msktutil utilise le fichier par défaut /etc/krb5.conf pour ses paramètres, donc soyez conscient de cela si vous décidez d’apporter des modifications.

Les variables SHELL et PATH sont là pour s’assurer que cron fonctionne correctement, changez cela si vous savez ce que vous faites.

crontab -e
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# m h  dom mon dow   commande
00 4  *   *   *     msktutil --auto-update --verbose | logger -t msktutil
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.