Sunteți pe pagina 1din 23

Virtualisation dun proxy Squid grant lauthentication

depuis Active Directory


EPI - Stagiaire2007 Vivien DIDELOT
Rsum
Cette procdure prsente la mise en place dun proxy Squid permettant lauthentication trans-
parente des utilisateurs dActive Directory. Lintret premier est quaucun login et mot de passe
ne seront demands, puisque lutilisateur sera authenti depuis sa session windows en cours.
Dans un premier temps sera dtaille la prparation du systme, cest--dire Ubuntu 6.06 "Dap-
per Drake" LTS (Long-Term Support, support jusquen 2011) version serveur (Ubuntu est une
distribution base sur Debian). Puis lintgration de la machine Linux dans le domaine Active
Directory, enn linstallation et le paramtrage de Squid et les outils dadministration.
Des annexes en n de document prsenteront des notes importantes et lutilisation de programmes,
comme vim.
Table des matires
I Prparation du systme 2
I.1 Installation dUbuntu 6.06 server . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
I.2 Conguration statique du rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
I.2.1 Modier ladressage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
I.2.2 Vrier les DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
I.3 Mise jour du systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
I.4 Installation des VMware Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
II Intgration de la machine au domaine 6
II.1 Installation des paquets ncessaires . . . . . . . . . . . . . . . . . . . . . . . . . . 7
II.2 Synchronisation de lheure locale . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
II.3 Conguration de Kerberos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
II.4 Conguration de Samba . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
II.5 Rejoindre le domaine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
III Installation et conguration de Squid 11
III.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
III.2 conguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
III.3 Droits de lutilisateur de Squid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
IV Administration de Squid 15
IV.1 SSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
IV.1.1 installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
IV.1.2 Connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
IV.2 Webmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
IV.2.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
IV.2.2 Connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
IV.2.3 Module Squid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
IV.3 Gestion des logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
IV.3.1 Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
IV.3.2 Visionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
V Annexes 18
1
Premire partie
Prparation du systme
2
I.1 Installation dUbuntu 6.06 server
Booter sur le CD dinstallation;
passer linstallation en franais (F2) ;
Dmarrer linstallation;
emplacement gographique : Autre > Nouvel le-Caldonie ;
nom de la machine : nom_machine ;
choisir un mirroir de larchive Ubuntu (proxy) : laisser vide ;
partitionner les disques : Utiliser tout le disque et conrmer ;
congurer lhorloge : Non ;
nom complet de lutilisateur : user ;
identiant : user ;
mot de passe : mot_de_passe ;
conguration de loutil de gestion des paquets :
il se peut quil y ait une erreur de une conguration nutilisant pas le DHCP. Ce problme
sera rgl plus tard;
terminer linstallation.
I.2 Conguration statique du rseau
I.2.1 Modier ladressage
Editer le chier /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
Redmarrer le service rseau :
sudo /etc/init.d/networking restart
3
I.2.2 Vrier les DNS
Si besoin, diter le chier /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 rseau)
I.3 Mise jour du systme
Dans le cas o il y a eut echec de vrication des sources linstallation du systme, modier
le chier contenant les sources (/etc/apt/sources.list) an denlever le CD comme source et
utiliser les dpts internet :
sudo vim /etc/apt/sources.list
Commenter (rajouter # en dbut de ligne) les lignes contenant deb cdrom ;
dcommenter (supprimer le #) chaque ligne commencant par deb.
Mettre jour la liste des dpts :
sudo aptitude update
Mettre jour les paquets installs :
sudo aptitude dist-upgrade
I.4 Installation des VMware Tools
Prparer linstallation des VMware Tools (une fois la machine virtuelle lance) depuis VM-
ware : Menu VM > Install VMware Tools... puis conrmer avec Instal l.
Ceci virtualisera un CD sur la machine guest, il sut maintenant de le monter :
sudo mount /dev/cdrom
Extraire les VMware Tools du CD :
4
cd /tmp
tar -xzf /media/cdrom/VM*.tar.gz
Dmonter le CD :
sudo umount /dev/cdrom
Linstallation des VMware Tools ncessite les compilateurs et headers du noyau, les installer
si ce nest pas dj fait :
sudo aptitude install build-essential linux-headers-$(uname -r)
Lancer linstallation des VMware Tools :
cd vmware-tools-distrib
sudo ./vmware-install.pl
Conrmer (avec Entre) chaque demande.
Comme dit en n dinstallation :
pour utiliser le driver vmxnet, redmarrer linterface rseau en utilisant les commandes suivantes :
sudo /etc/init.d/networking stop
sudo rmmod vmxnet
sudo depmod -a
sudo modprobe vmxnet
sudo /etc/init.d/networking start
A ce stade le systme est prt et jour.
5
Deuxime partie
Intgration de la machine au domaine
6
Pour cela, nous donnerons des noms certains lments comme suit :
le nom du domaine sappelera ici domainead.local ;
le DC (Contrleur de domaine) sappelera ici dcad ;
le compte administrateur du DC sappelera ici Administrateur ;
le nom de la machine Squid sappelera ici nom_machine ;
qui devront videment tre remplacs par les valeurs exactes.
II.1 Installation des paquets ncessaires
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 lies Kerberos, le protocole dauthenti-
cation 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 linstallation, Il se peut que Kerberos demande le nom des KDC (Kerberos Domain
Controler), qui est gnralement le nom du DC :
Serveurs kerberos du domaine : dcad
Serveur administratif : dcad
II.2 Synchronisation de lheure locale
Kerberos ncessite que lheure locale soit synchronise avec celle de votre DC :
sudo ntpdate ip_DC
Pour vrier lheure :
date
II.3 Conguration de Kerberos
Editer le chier /etc/krb5.conf :
sudo vim /etc/krb5.conf
et ny 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 paramtres Kerberos en lanant la commande :
sudo kinit Administrateur
et rentrer le mot de passe du compte administrateur du DC.
Si cela fonctionne ne pas, ressayer avec le nom complet Administrateur@DOMAINEAD.LOCAL
Pour voir les tickets Kerberos en cache :
sudo klist
II.4 Conguration de Samba
Avant de procder cette tape, arrter temporairement les services Winbind et Samba :
sudo /etc/init.d/winbind stop
sudo /etc/init.d/samba stop
Puis diter le chier /etc/samba/smb.conf :
sudo vim /etc/samba/smb.conf
Et ny 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, redmarrez 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 modier votre /etc/samba/smb.conf comme dit, puis redmarrer les services Samba et
Winbind et recommencer.
Si vous rcuprez lerreur suivante :
ads_connect: No logon servers
Cest que vous navez pas install ou dmarr Winbind.
9
Tests
Eectuer des tests an de voir si tout sest droul correctement :
Tester la connexion au domaine :
sudo net ads testjoin
devrait retourner Join is OK.
Acher la liste des groupes dActive Directory :
sudo wbinfo -g
Acher la liste des utilisateurs dActive Directory :
sudo wbinfo -u
Si cela ne fonctionne pas, vrier votre smb.conf et redmarrer vos services Samba et Winbind.
Vous devrez redmarrer Winbind chaque modication du smb.conf.
A ce stade, votre machine a rejoint le domaine Active Directory.
10
Troisime partie
Installation et conguration de Squid
11
III.1 Installation
Installer Squid :
sudo aptitude install squid
Si aprs linstallation vous obtenez [fail] lors du dmarrage de Squid, ceci sera rgl 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 dun utilisateur dActive Directory comme ceci :
utilisateur mot_de_passe
Cela devrait retourner OK (ctrl + C pour quitter).
III.2 conguration
Editer le chier de conguration de Squid :
sudo vim /etc/squid/squid.conf
Dans la partie TAG: auth_param, commenter tout (si ce nest pas dj fait) et najouter 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 reprsente juste la dsignation du domaine utilis par lexplorateur.
Pour nautoriser le surf qu un groupe dActive Directory spcique, rajouter le paramtre
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 dActive 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
Enn, puisque nous sommes sur un domaine Microsoft, nous avons besoin que les noms
NETBIOS courts soient reconnus : en eet, Squid nutilise pas le champ search du chier
/etc/resolv.conf. Pour cela, utiliser le champ append_domain de la partie TAG: append_domain :
append_domain .domainead.local
Pour ne pas inclure ladresse IP ou le nom du systme dans les requtes HTTP, dans la partie
TAG: forwarded_for, dcommenter et modier la ligne comme suit :
forwarded_for off
Enn, relancer Squid :
sudo /etc/init.d/squid restart
Si vous rcuprez [fail] lors du redmarrage de Squid, alors il faut spcier le nom de la
machine dans squid.conf, dans la partie TAG: visible_hostname :
visible_hostname nom_machine
Redmarrer nouveau Squid.
III.3 Droits de lutilisateur de Squid
Lutilisateur proxy de Squid ncessite dappartenir au groupe root pour bncier des droits
ncessaires sur les chiers de log de Squid, an de rendre lauthentication fonctionnelle :
Changer le groupe propritaire des chiers de log de Squid :
sudo chown -R proxy:root /var/log/squid
Changer le groupe du cache de Squid :
Editer le chier /etc/squid/squid.conf :
13
sudo vim /etc/squid/squid.conf
Dans la partie TAG: cache_effective_group, dcommenter la ligne et y mettre le groupe
root :
cache_effective_group root
Redmarrer Squid :
sudo /etc/init.d/squid restart
Votre proxy est dsormais fonctionnel, vous pouvez tester lauthentication transparente depuis
une machine du domaine aprs rglage du navigateur (Squid coute sur le port 3128).
14
Quatrime 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 nimporte quel client SSH (comme PuTTY)
avec le login/mdp habituel.
IV.2 Webmin
Webmin est un panel dadministration web pour un serveur ou machine Linux. Il permet de
grer le systme, administrer les serveurs installs, etc.
IV.2.1 Installation
Webmin ntant pas dans les dpts, il faut tlcharger le chier .deb dinstallation de Webmin
depuis leur site :
cd /tmp
wget http://prdownloads.sourceforge.net/webadmin/webmin_1.380_all.deb
Installer les dpendances de webmin :
sudo aptitude install libauthen-pam-perl libio-pty-perl libmd5-perl
Puis installer le paquet tlcharg :
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 ladresse :
https://nom_machine:10000/
(ou bien remplacer nom_machine par lIP de la machine)
Vous pouvez vous y connecter avec votre login/mdp habituel.
16
IV.2.3 Module Squid
Pour administrer Squid, drouler le menu servers puis Squid Proxy Server.
Ne rien rajouter dans la partie Proxy Restrictions de Access Control, qui est spcique lau-
thentication depuis Active Directory.
Pour plus dinformations sur le module dadministration de Squid, regarder directement la doc
trs complte (en anglais) du module sur le site de Webmin :
http://doxfer.com/Webmin/SquidProxyServer
IV.3 Gestion des logs
IV.3.1 Rotation
Un systme de rotation peut tre tabli sur les logs de Squid, congurable 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 linterface Webmin, vous pouvez congurer et gnrer des rapports Squid via :
Calamaris : servers > Squid Proxy Server > Calamaris Log Analysis ;
SARG : servers > Squid Analysis Report Generator ;
Webalizer : servers > Webalizer Logle Analysis.
Webalizer ncessite un dossier, indiquer dans Webmin, dans lequel il enregistrera les rapports.
On va donc crer un dossier webalizer dans le dossier personnel (rpertoire utilisateur dans
/home/) :
cd ~
mkdir webalizer
N.B. : Il est prfrable de ne pas garder un log viewer sil nest pas utilis, car ceci peut impliquer
des oprations supplmentaires sur les chiers de log de Squid. Pour supprimer un paquet : sudo
aptitude remove nom_du_paquet
17
Cinquime partie
Annexes
18
Notes diverses
Sous Ubuntu, le compte root est desactiv, sudo permet dxecuter une commande en tant
que root.
aptitude est un script dinstallation de paquets plus rcent que apt-get, grant mieux les
dpendances. Il est fortement conseill dutiliser toujours le mme script.
Veiller bien respecter la casse lors de la modication des chiers de conf.
Aprs redmarrage du systme, tout ce qui est contenu dans /tmp est supprim.
Avant toute modication importante de chier de conguration, sauvegardez-les.
Sauvegarder et restaurer un chier
Pour sauvegarder un chier, le copier en rajoutant .bak (par exemple) :
sudo cp le_fichier le_fichier.bak
Pour restaurer un chier sauvegard, faire lopration inverse :
sudo cp le_fichier.bak le_fichier
Guide dutilisation rapide de vim
Vim est un diteur de texte en ligne de commande trs puissant. Voici quelques commandes
utiles :
Pour insrer du texte : il sut de rentrer en mode "Insertion" avec i
Pour sortir dun 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 rseau
Connaitre lhte dun site ou dune machine :
host www.google.com
Acher la table de routage :
route
Pour avoir les adresses numriques plutt que les noms dhtes :
19
route -n
Acher les connections internet courantes :
netstat -nat
Acher les ports ouverts (man netstat pour plus doptions) :
netstat -tulp
netstat -tulpn
Acher ltat des interfaces rseau :
netstat -i
Acher la sortie des connexions actives/tablies seulement :
netstat -e
netstat -te
netstat -tue
o -t, -u et -e reprsentent respectivement les connexions TCP, UDP et tablies.
Obtenir plus dinformations sur une commande
Voir la page de manuel dune commande :
man commande
Obtenir une aide rapide sur une commande :
commande --help
Trouver une commande approprie une action particulire :
man -k mot cl
apropos mot cl
Acher une courte description dune commande :
whatis commande
20
Notes personnelles
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21