Mise en place d`un proxy Squid avec authentification

Transcription

Mise en place d`un proxy Squid avec authentification
SOURCE
Mise en place d'un proxy Squid avec
authentification Active Directory
Ce tutoriel présente l'installation du proxy Squid avec authentification transparente des
utilisateurs d'Active Directory. L'intérêt premier est que les utilisateurs d'Active Directory seront
authentifiés directement depuis leurs sessions Windows en cours et n'auront donc plus à saisir
d'identifiants et mots de passe pour accéder à Internet.
Ce tutoriel montrera dans un premier temps comment rejoindre le domaine Active Directory,
puis l'installation et la configuration de Squid. Il présentera ensuite Webmin, un outil permettant
d'administrer Squid (à distance ou non) et de visionner les logs.
Testé et approuvé sur :
● Ubuntu 6.06 LTS Server (Dapper Drake)
● Ubuntu 8.04 LTS server (Hardy) avec SQUID 3
● Ubuntu 9.10 Server 64bit (2.6.31-20-server)
● Veillez à respecter la casse lors de la configuration des fichiers.
● Sauvegarder chaque fichier avant modification : sudo cp fichier fichier.bak (pour
restaurer sudo cp fichier.bak fichier).
Pré-requis
●
●
●
●
●
Un réseau Windows ;
un contrôleur de domaine sous Windows 2003 Server ;
un domaine Active Directory ;
une machine (ici sous Ubuntu 6.06 Server) pour Squid.
avoir le dépôt universe activé (pour kerberos).
Intégration de la machine au domaine
Pour cela, nous donnerons des noms à certains éléments comme suit :
● Le nom du domaine, s'appelera ici domainead.local ;
● Le nom du DC (Contrôleur de domaine), s'appelera ici dcad ;
● Le compte administrateur du DC, s'appelera ici Administrateur ;
● Le nom de la machine Squid s'appelera ici nom_machine ;
qui devront évidement être remplacés par les valeurs exactes.
Installation des paquets nécessaires
Pour rejoindre le domaine, il va falloir installer les paquets samba krb5-user libpam-krb5
ntpdate winbind.
● samba servira à faire le lien entre des machines Linux et Windows ;
● krb5-user et libpam-krb5 sont les librairies liées à Kerberos, le protocole
d'authentification utilisé par Active Directory ;
● ntpdate permet de synchroniser les horloges machines pour Kerberos ;
● winbind est le composant de samba communiquant avec Active Directory.
Lors de l'installation, il se peut que Kerberos demande le nom des KDC (Kerberos Domain
Controler), qui est généralement le nom du DC :
Serveurs kerberos du domaine : dcad
Serveur administratif: dcad
Synchronisation de l'heure locale
Kerberos nécessite que l’heure locale soit synchronisée avec celle de votre DC (ip_DC = @ du
serveur) :
sudo ntpdate ip_DC
Pour vérifier l'heure :
date
Configuration de Kerberos
Éditer le fichier /etc/krb5.conf et n'y mettre que le contenu suivant :
[libdefaults]
default_realm = DOMAINEAD.LOCAL
clock_skew = 300
ticket_lifetime = 24000
default_tkt_enctypes = des3-hmac-sha1 des-cbc-crc
default_tgs_enctypes = des3-hmac-sha1 des-cbc-crc
dns_lookup_realm = false
dns_lookup_kdc = true
[realms]
DOMAINEAD.LOCAL = {
kdc = dcad
admin_server = dcad
default_domain = DOMAINEAD.LOCAL
}
[domain_realm]
.domainead = DOMAINEAD
domainead = DOMAINEAD
Puis tester vos paramètres Kerberos en lançant la commande :
sudo kinit Administrateur
et entrer le mot de passe du compte administrateur du DC.
Si cela ne fonctionne pas, réessayer avec le nom complet
[email protected].
Pour voir les tickets Kerberos en cache :
sudo klist
Configuration de Samba
Avant de procéder à cette étape, arrêter temporairement les services Winbind et Samba :
sudo /etc/init.d/winbind stop
sudo /etc/init.d/samba stop
Éditer le fichier /etc/samba/smb.conf, et n'y mettre que le contenu suivant :
[global]
workgroup = domainead
realm = DOMAINEAD.LOCAL
security = ads
encrypt passwords = yes
password server = dcad.domainead.local
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum groups = yes
winbind enum users = yes
winbind use default domain = yes
Ensuite, redémarrez les services Samba et Winbind :
sudo /etc/init.d/samba start
sudo /etc/init.d/winbind start
Rejoindre le domaine
Rejoindre le domaine avec la commande suivante :
sudo net join -U Administrateur
Erreurs éventuelles
●
Sur les nouvelles versions d'Ubuntu (notamment 9.10), il vous faudra sûrement utiliser la
commande :
sudo net ads join -U Administrateur
● Si vous obtenez le message suivant :
The workgroup in smb.conf does not match the short domain name obtained from the server.
Using the name [AUTRE_DOMAINE] from the server.
You should set "workgroup = AUTRE_DOMAINE" in smb.conf
Alors modifier votre /etc/samba/smb.conf comme dit, puis redémarrer les services Samba et
Winbind et recommencer.
● Si vous récupérez l’erreur suivante :
ads_connect: No logon servers
C’est que vous n’avez pas installé ou démarré Winbind.
Tests
Effectuer des tests afin de voir si tout s’est déroulé correctement :
sudo net ads testjoin
devrait retourner Join is OK.
Afficher la liste des groupes d'Active Directory :
sudo wbinfo -g
Afficher la liste des utilisateurs d'Active Directory :
sudo wbinfo -u
Si cela ne fonctionne pas, vérifier votre smb.conf et redémarrer vos services Samba et Winbind.
Vous devrez redémarrer winbind à chaque modification du smb.conf.
À ce stade, votre machine a rejoint le domaine Active Directory.
Installation et configuration de Squid
Installation de Squid
Installez le paquet squid.
Si après l'installation vous obtenez [fail] lors du démarrage de Squid, ceci sera réglé plus tard.
Tester la connexion au DC, qui devrait être fonctionnelle avec ce que nous avons fait avant :
sudo /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
Et rentrer un login/mdp d'un utilisateur d'Active Directory comme ceci :
utilisateur mot_de_passe
Cela devrait retourner OK (Ctrl–C pour quitter).
Dans le cas contraire (retour ERR), essayer :
DOMAIN\utilisateur mot_de_passe
Configuration de Squid
Éditez le fichier /etc/squid/squid.conf de configuration de Squid,
● dans la partie TAG: auth_param, commenter tout (si ce n'est pas déjà fait) et n'ajouter
que les lignes suivantes :
● 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
N.B. : Squid AD représente juste la désignation du domaine utilisé par l'explorateur.
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 --requiremembership-of=DOMAINEAD\\groupead
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic --requiremembership-of=DOMAINEAD\\groupead
Éventuellement, DOMAINEAD devra être remplacé par la valeur de workgroup du smb.conf.
groupead étant le groupe d'Active Directory pouvant surfer. Vous pouvez aussi remplacer
groupead directement par son SID.
● Dans la partie TAG: acl, rajouter la ligne suivante :
acl ntlm proxy_auth REQUIRED
● Puis dans la partie TAG: http_access, ne mettre que :
http_access allow ntlm
● Enfin, puisque nous sommes sur un domaine Microsoft, nous avons besoin que les
noms NETBIOS courts soient reconnus : en effet, Squid n’utilise pas le champ search du
fichier /etc/resolv.conf.
Pour cela, utiliser le champ append_domain de la partie TAG: append_domain :
append_domain .domainead.local
● Pour ne pas inclure l'adresse IP ou le nom du système dans les requêtes HTTP, dans la
partie TAG: forwarded_for, décommenter et modifier la ligne comme suit :
forwarded_for off
Enfin, relancer Squid :
sudo /etc/init.d/squid restart
Si vous récupérez [fail] lors du redémarrage de Squid, alors il faut spécifier le nom de la
machine dans squid.conf, dans la partie TAG: visible_hostname :
visible_hostname nom_machine
Redémarrer à nouveau Squid.
Droits de l'utilisateur de Squid
L'utilisateur proxy de Squid nécessite d'appartenir au groupe root pour bénéficier des droits
nécessaires sur les fichiers de log de Squid, afin de rendre l'authentification fonctionnelle :
Changer le propriétaire des fichiers log de Squid :
sudo chown -R proxy:root /var/log/squid
sudo chown -R proxy:root /var/run/samba/winbindd_privileged
Changer le groupe du cache de Squid :
Éditer le fichier /etc/squid/squid.conf,
Dans la partie TAG: cache_effective_group, décommenter la ligne et y mettre le groupe root :
cache_effective_group root
Redémarrer Squid :
sudo /etc/init.d/squid restart
Si vous obtenez une erreur :
authenticateNTLMHandleReply: Error validating user via NTLM. Error returned 'BH
NT_STATUS_ACCESS_DENIED'
utils/ntlm_auth.c:832(manage_squid_ntlmssp_request) NTLMSSP BH:
NT_STATUS_ACCESS_DENIED
qui est sûrement due à une nouvelle version d'Ubuntu, alors remplacez la ligne :
cache_effective_group root
par :
cache_effective_group winbindd_priv
Votre proxy est désormais fonctionnel, vous pouvez tester l'authentification transparente depuis
une machine du domaine après réglage du navigateur (Squid écoute sur le port 3128).
Webmin
Webmin est un panel d'administration web pour votre serveur ou machine Linux. Il permet de
gérer le système, administrer les serveurs installés, etc.
Installation
Webmin n'étant pas dans les dépôts, il faut télécharger le fichier « .deb » d'installation de
Webmin depuis leur site :
cd /tmp
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.400_all.deb
Installer les dépendances de webmin : libauthen-pam-perl libio-pty-perl libmd5-perl.
Puis installer le paquet téléchargé :
sudo dpkg -i ~/webmin_1.400_all.deb
Connexion
Pour administrer sa machine depuis Webmin, ouvrir un navigateur qui ne passe pas par ce
proxy et y taper l'adresse :
https://nom_machine:10000/
(nom_machine peut être remplacé par l'IP de la machine)
Vous pouvez vous y connecter avec vos identifiants/mots de passe habituels.
Administration de Squid
Pour administrer Squid, dérouler le menu servers puis Squid Proxy Server. Pour plus
d'informations sur le module d'administration de Squid, regarder directement la doc du site de
Webmin (en).
Visionnement des logs
Trois principaux log viewers sont diponibles et consultables depuis Webmin : SARG, Calamaris
et Webalizer.
Au choix, installer l'un des paquets sarg calamaris webalizer.
Dans l'interface Webmin, vous pouvez configurer et générer des rapports Squid via :
● Calamaris : Servers → Squid Proxy Server → Calamaris Log Analysis.
● SARG : Servers → Squid Analysis Report Generator.
● Webalizer : Servers → Webalizer Logfile Analysis.
Webalizer nécessite un dossier, à indiquer dans Webmin, dans lequel il enregistrera les
rapports générés. Créer donc un dossier webalizer dans le dossier personnel :
mkdir ~/webalizer
Il est déconseillé d'utiliser plusieurs log viewers, cela entraine des manipulations
supplémentaires sur les fichiers de log.

Documents pareils

Procédure d`installation

Procédure d`installation htpasswd -m users user password(création de l’utilisateur)

Plus en détail

Mise en place d`un proxy Squid avec authentication Active Directory

Mise en place d`un proxy Squid avec authentication Active Directory auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5ntlmssp --require-membership-of=DOMAINE.LOCAL\\groupead

Plus en détail

Sécurité du Système d`Information Authentification centralisée et SSO

Sécurité du Système d`Information Authentification centralisée et SSO Le fichier good-sites.txt contient les URL’s autorisés. Le fichier bad-sites.txt contient les URL’s non autorisés. Il faut ajouter les lignes suivantes dans le fichier squid.conf : acl GoodSites ds...

Plus en détail