Virtualisation d`un proxy Squid gérant l`authentification

Transcription

Virtualisation d`un proxy Squid gérant l`authentification
Virtualisation d’un proxy Squid gérant l’authentification
depuis Active Directory
EPI - Stagiaire2007 Vivien DIDELOT
Résumé
Cette procédure présente la mise en place d’un proxy Squid permettant l’authentification transparente des utilisateurs d’Active Directory. L’intêret premier est qu’aucun login et mot de passe
ne seront demandés, puisque l’utilisateur sera authentifié depuis sa session windows en cours.
Dans un premier temps sera détaillée la préparation du système, c’est-à-dire Ubuntu 6.06 "Dapper Drake" LTS (Long-Term Support, supporté jusqu’en 2011) version serveur (Ubuntu est une
distribution basée sur Debian). Puis l’intégration de la machine Linux dans le domaine Active
Directory, enfin l’installation et le paramètrage de Squid et les outils d’administration.
Des annexes en fin de document présenteront des notes importantes et l’utilisation de programmes,
comme vim.
Table des matières
I
Préparation du système
I.1
I.2
Installation d’Ubuntu 6.06 server
Configuration statique du réseau .
I.2.1 Modifier l’adressage . . . .
I.2.2 Vérifier les DNS . . . . . .
Mise à jour du système . . . . . .
Installation des VMware Tools . .
I.3
I.4
II
2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Intégration de la machine au domaine
II.1
II.2
II.3
II.4
II.5
III
Installation des paquets nécessaires
Synchronisation de l’heure locale .
Configuration de Kerberos . . . . .
Configuration de Samba . . . . . .
Rejoindre le domaine . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
6
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Installation et configuration de Squid
Administration de Squid
IV.1 SSH . . . . . . . . .
IV.1.1 installation .
IV.1.2 Connexion . .
IV.2 Webmin . . . . . . .
IV.2.1 Installation .
IV.2.2 Connexion . .
IV.2.3 Module Squid
IV.3 Gestion des logs . . .
IV.3.1 Rotation . . .
IV.3.2 Visionnement
V
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7
7
7
8
9
11
III.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
III.2 configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
III.3 Droits de l’utilisateur de Squid . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IV
3
3
3
4
4
4
12
12
13
15
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Annexes
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
16
16
16
16
16
16
17
17
17
17
18
1
Première partie
Préparation du système
2
I.1
Installation d’Ubuntu 6.06 server
–
–
–
–
–
–
–
–
–
–
–
–
Booter sur le CD d’installation ;
passer l’installation en français (F2) ;
Démarrer l’installation ;
emplacement géographique : Autre > Nouvelle-Calédonie ;
nom de la machine : nom_machine ;
choisir un mirroir de l’archive Ubuntu (proxy) : laisser vide ;
partitionner les disques : Utiliser tout le disque et confirmer ;
configurer l’horloge : Non ;
nom complet de l’utilisateur : user ;
identifiant : user ;
mot de passe : mot_de_passe ;
configuration de l’outil de gestion des paquets :
il se peut qu’il y ait une erreur dûe à une configuration n’utilisant pas le DHCP. Ce problème
sera réglé plus tard ;
– terminer l’installation.
I.2
I.2.1
Configuration statique du réseau
Modifier l’adressage
Editer le fichier /etc/network/interfaces :
sudo vim /etc/network/interfaces
Remplacer la ligne :
iface eth0 inet dhcp
par :
iface eth0 inet static
address xxx.xxx.xxx.xxx
netmask 255.255.xxx.xxx
network xxx.xxx.xxx.0
broadcast xxx.xxx.xxx.255
gateway xxx.xxx.xxx.254
Redémarrer le service réseau :
sudo /etc/init.d/networking restart
3
I.2.2
Vérifier les DNS
Si besoin, éditer le fichier /etc/resolv.conf :
sudo vim /etc/resolv.conf
Celui-ci devrait être similaire à :
search domainead.local
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx
(Voir en annexe les outils pour tester le réseau)
I.3
Mise à jour du système
Dans le cas où il y a eut echec de vérification des sources à l’installation du système, modifier
le fichier contenant les sources (/etc/apt/sources.list) afin d’enlever le CD comme source et
utiliser les dépôts internet :
sudo vim /etc/apt/sources.list
Commenter (rajouter # en début de ligne) les lignes contenant deb cdrom ;
décommenter (supprimer le #) chaque ligne commencant par deb.
Mettre à jour la liste des dépôts :
sudo aptitude update
Mettre à jour les paquets installés :
sudo aptitude dist-upgrade
I.4
Installation des VMware Tools
Préparer l’installation des VMware Tools (une fois la machine virtuelle lancée) depuis VMware : Menu VM > Install VMware Tools... puis confirmer avec Install.
Ceci virtualisera un CD sur la machine guest, il suffit maintenant de le monter :
sudo mount /dev/cdrom
Extraire les VMware Tools du CD :
4
cd /tmp
tar -xzf /media/cdrom/VM*.tar.gz
Démonter le CD :
sudo umount /dev/cdrom
L’installation des VMware Tools nécessite les compilateurs et headers du noyau, les installer
si ce n’est pas déjà fait :
sudo aptitude install build-essential linux-headers-$(uname -r)
Lancer l’installation des VMware Tools :
cd vmware-tools-distrib
sudo ./vmware-install.pl
Confirmer (avec Entrée) chaque demande.
Comme dit en fin d’installation :
pour utiliser le driver vmxnet, redémarrer l’interface réseau en utilisant les commandes suivantes :
sudo
sudo
sudo
sudo
sudo
/etc/init.d/networking stop
rmmod vmxnet
depmod -a
modprobe vmxnet
/etc/init.d/networking start
A ce stade le système est prêt et à jour.
5
Deuxième partie
Intégration de la machine au domaine
6
Pour cela, nous donnerons des noms à certains éléments comme suit :
– le nom du domaine s’appelera ici domainead.local ;
– le 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.
II.1
Installation des paquets nécessaires
Pour rejoindre le domaine, il va falloir installer les paquets suivants :
– samba, qui servira à faire le lien entre des machines Linux et Windows ;
– krb5-user, libpam-krb5, qui sont les librairies liées à Kerberos, le protocole d’authentification utilisé par Active Directory ;
– ntpdate, qui permet de synchroniser les horloges machines pour Kerberos ;
– winbind, qui est le composant de samba communiquant avec Active Directory.
sudo aptitude install samba krb5-user libpam-krb5 ntpdate winbind
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
II.2
Synchronisation de l’heure locale
Kerberos nécessite que l’heure locale soit synchronisée avec celle de votre DC :
sudo ntpdate ip_DC
Pour vérifier l’heure :
date
II.3
Configuration de Kerberos
Editer le fichier /etc/krb5.conf :
sudo vim /etc/krb5.conf
et n’y mettre que le contenu suivant :
7
[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 rentrer le mot de passe du compte administrateur du DC.
Si cela fonctionne ne pas, réessayer avec le nom complet [email protected]
Pour voir les tickets Kerberos en cache :
sudo klist
II.4
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
Puis éditer le fichier /etc/samba/smb.conf :
sudo vim /etc/samba/smb.conf
Et n’y mettre que le contenu suivant :
8
[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
II.5
Rejoindre le domaine
Rejoindre le domaine avec la commande suivante :
sudo net join -U Administrateur
Erreurs éventuelles
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.
9
Tests
Effectuer des tests afin de voir si tout s’est déroulé correctement :
Tester la connexion au domaine :
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.
A ce stade, votre machine a rejoint le domaine Active Directory.
10
Troisième partie
Installation et configuration de Squid
11
III.1
Installation
Installer Squid :
sudo aptitude install 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).
III.2
configuration
Editer le fichier de configuration de Squid :
sudo vim /etc/squid/squid.conf
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
auth_param
auth_param
auth_param
basic
basic
basic
basic
program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
children 5
realm Squid AD
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
--require-membership-of=DOMAINEAD\\groupead
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic
--require-membership-of=DOMAINEAD\\groupead
12
Eventuellement, DOMAINEAD devra être remplacé par la valeur de workgroup du smb.conf.
groupad étant le groupe d’Active Directory pouvant surfer.
Vous pouvez aussi remplacer groupad directement par son SID.
Dans la partie TAG: acl, rajouter la ligne suivante :
acl ntlm proxy_auth REQUIRED
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.
III.3
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 groupe propriétaire des fichiers de log de Squid :
sudo chown -R proxy:root /var/log/squid
Changer le groupe du cache de Squid :
Editer le fichier /etc/squid/squid.conf :
13
sudo vim /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
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).
14
Quatrième partie
Administration de Squid
15
IV.1
SSH
IV.1.1
installation
Pour pouvoir prendre la main sur la machine via SSH, il faut installer le paquet ssh :
sudo aptitude install ssh
IV.1.2
Connexion
Pour se connecter en ssh sur la machine, utiliser n’importe quel client SSH (comme PuTTY )
avec le login/mdp habituel.
IV.2
Webmin
Webmin est un panel d’administration web pour un serveur ou machine Linux. Il permet de
gérer le système, administrer les serveurs installés, etc.
IV.2.1
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.380_all.deb
Installer les dépendances de webmin :
sudo aptitude install libauthen-pam-perl libio-pty-perl libmd5-perl
Puis installer le paquet téléchargé :
sudo dpkg -i webmin_1.380_all.deb
IV.2.2
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/
(ou bien remplacer nom_machine par l’IP de la machine)
Vous pouvez vous y connecter avec votre login/mdp habituel.
16
IV.2.3
Module Squid
Pour administrer Squid, dérouler le menu servers puis Squid Proxy Server.
Ne rien rajouter dans la partie Proxy Restrictions de Access Control, qui est spécifique à l’authentification depuis Active Directory.
Pour plus d’informations sur le module d’administration de Squid, regarder directement la doc
très complète (en anglais) du module sur le site de Webmin :
http://doxfer.com/Webmin/SquidProxyServer
IV.3
Gestion des logs
IV.3.1
Rotation
Un système de rotation peut être établi sur les logs de Squid, configurable par le module Log
File Rotation de Webmin :
system > Log File Rotation.
IV.3.2
Visionnement
3 principaux log viewers sont disponibles et consultables depuis Webmin : SARG, Calamaris
et Webalizer.
Installer les paquets sarg calamaris webalizer :
sudo aptitude install 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.
On va donc créer un dossier webalizer dans le dossier personnel (répertoire utilisateur dans
/home/) :
cd ~
mkdir webalizer
N.B. : Il est préfèrable de ne pas garder un log viewer s’il n’est pas utilisé, car ceci peut impliquer
des opérations supplémentaires sur les fichiers de log de Squid. Pour supprimer un paquet : sudo
aptitude remove nom_du_paquet
17
Cinquième partie
Annexes
18
Notes diverses
– Sous Ubuntu, le compte root est desactivé, sudo permet d’éxecuter une commande en tant
que root.
– aptitude est un script d’installation de paquets plus récent que apt-get, gérant mieux les
dépendances. Il est fortement conseillé d’utiliser toujours le même script.
– Veiller à bien respecter la casse lors de la modification des fichiers de conf.
– Après redémarrage du système, tout ce qui est contenu dans /tmp est supprimé.
– Avant toute modification importante de fichier de configuration, sauvegardez-les.
Sauvegarder et restaurer un fichier
Pour sauvegarder un fichier, le copier en rajoutant .bak (par exemple) :
sudo cp le_fichier le_fichier.bak
Pour restaurer un fichier sauvegardé, faire l’opération inverse :
sudo cp le_fichier.bak le_fichier
Guide d’utilisation rapide de vim
Vim est un éditeur de texte en ligne de commande très puissant. Voici quelques commandes
utiles :
– Pour insérer du texte : il suffit de rentrer en mode "Insertion" avec i
– Pour sortir d’un mode : touche Echap
– Pour sauvegarder : :w
– Pour quitter : :q
– Pour sauvegarder et quitter : :wq ou :x
– Pour quitter et ignorer les changements : :q !
– Pour supprimer une ligne : dd
– Pour supprimer un mot : dw
– Pour rechercher : /terme à rechercher
Outils de test du réseau
Connaitre l’hôte d’un site ou d’une machine :
host www.google.com
Afficher la table de routage :
route
Pour avoir les adresses numériques plutôt que les noms d’hôtes :
19
route -n
Afficher les connections internet courantes :
netstat -nat
Afficher les ports ouverts (man netstat pour plus d’options) :
netstat -tulp
netstat -tulpn
Afficher l’état des interfaces réseau :
netstat -i
Afficher la sortie des connexions actives/établies seulement :
netstat -e
netstat -te
netstat -tue
où -t, -u et -e représentent respectivement les connexions TCP, UDP et établies.
Obtenir plus d’informations sur une commande
Voir la page de manuel d’une commande :
man commande
Obtenir une aide rapide sur une commande :
commande --help
Trouver une commande appropriée à une action particulière :
man -k mot clé
apropos mot clé
Afficher une courte description d’une commande :
whatis commande
20
Notes personnelles
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
................................................................................................
21