Université de Poitiers Institut Universitaire de Technologie de Châtellerault Département Réseaux et Télécommunications Licence professionnelle Métiers des Réseaux Informatiques et Télécommunications Spécialité Administration des Réseaux Multimédia Présenté par : Baptiste MOINE Promotion 2016-2017 Apprenti au Centre Hospitalier Henri LABORIT Sujet du rapport : Projet CAS – Installation de CAS Server v5 Sauf mention contraire, ce rapport est mis à disposition selon les termes de la licence https://creativecommons.org/licenses/by-nc-sa/4.0/ RAPPORT D’INSTALLATION
86
Embed
Université de Poitiers Institut Universitaire de ... · Université de Poitiers Institut Universitaire de Technologie de Châtellerault Département Réseaux et Télécommunications
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Université de Poitiers
Institut Universitaire de Technologie de Châtellerault
Département Réseaux et Télécommunications
Licence professionnelle Métiers des Réseaux Informatiques et Télécommunications
Spécialité Administration des Réseaux Multimédia
Présenté par :
Baptiste MOINE
Promotion 2016-2017
Apprenti au Centre Hospitalier Henri LABORIT
Sujet du rapport :
Projet CAS – Installation de CAS Server v5
Sauf mention contraire, ce rapport est mis à disposition selon les termes de la licencehttps://creativecommons.org/licenses/by-nc-sa/4.0/
RAPPORT D’INSTALLATION
TABLE DES MATIÈRES
Table des matières.................................................................................................................1Note........................................................................................................................................2Introduction.............................................................................................................................3 Tickets................................................................................................................................3 Échanges HTTP.................................................................................................................4Architecture............................................................................................................................5Préparation du système.........................................................................................................6 Configuration du nom d’hôte..............................................................................................6 Configuration de OpenSSH-Server...................................................................................7Installation des dépendances................................................................................................9 Apache Tomcat (en automatique)......................................................................................9 Apache Tomcat (en manuel)............................................................................................11 JRE (« Java Runtime Environment ») et JDK (« Java Development Kit »).....................19 Apache Maven.................................................................................................................20Installation de CAS...............................................................................................................22 Application et adaptation du modèle Maven....................................................................22 Compilation de CAS.........................................................................................................38Ajout d’un frontal avec Apache HTTP..................................................................................41 Installation........................................................................................................................41 Fichiers de configuration d’Apache HTTP.......................................................................42 Configuration....................................................................................................................44 Tests.................................................................................................................................54Création d’un environnement de test pour l’authentification sans multifacteur...................57 Installation d’Active Directory sous Windows Server 2016.............................................58 Configuration du service DNS..........................................................................................62 Configuration de l’annuaire..............................................................................................63 Génération d’un keytab....................................................................................................66 Installation de Kerberos sur le serveur CAS....................................................................67 Mise à jour du chemin d’authentification de CAS............................................................71 Ajout de miletrie.lan au registre de services....................................................................73 Intégration d’un ordinateur client au domaine miletrie.lan...............................................74 Configuration du navigateur pour autoriser SPNEGO.....................................................74 Déploiement d’une application de test basée sur phpCAS.............................................75 Test de l’authentification Kerberos sur Appli1..................................................................84 Analyse protocolaire.........................................................................................................84
Baptiste MOINE 1 Installation de CAS Server v5
NOTE
Les informations suivantes ne sont pas nécessairement représentatives d’une installationou configuration optimale et ne s’appliquent que dans un contexte défini, ainsi, il estprimordial de comprendre le fonctionnement de chacune de ces configurations et deprocéder le cas échéant à une adaptation / extension de ces dernières afin d’être cohérentavec l’environnement dans lequel cette installation est faite.
Pour des raisons de confidentialité relatives à l’éthique et au secret professionnel,certaines informations ont potentiellement été extraites / falsifiées.
Baptiste MOINE 2 Installation de CAS Server v5
INTRODUCTION
CAS (pour « Central Authentication Service ») est, comme l’indique son nom, un serveurd’authentification centralisé basé sur la technologie SSO (« Single Sign-On ») orienté versles applications WEB. Cette solution est mature et a été déployée dans de nombreusesuniversités américaines.
Tickets
Pour fonctionner, CAS est basé sur différents tickets (ou « cookies ») et s’appuieprincipalement sur le protocole HTTP pour l’échange de ces derniers.
Le TGC se présente sous la forme d’un cookie de session HTTP, il permet au client (p. ex.,navigateur WEB) d’indiquer à CAS ou à l’application, l’identifiant de session associée ànotre authentification, si le client ne supporte pas l’ajout de cookie, l’authentification seraexigée à chaque appel au serveur CAS. Ce cookie joue un rôle crucial dans le mécanismed’authentification unifiée, c’est pourquoi il peut être sujet à des tentatives de vol (« magiccookie theft ») lors d’une attaque par détournement de session (« Session Hijacking »).
Une attaque par Session Hijacking est souvent issue de l’exploitation d’une vulnérabilitéde type XSS (« Cross-Site Scripting ») permettant à un attaquant de procéder à l’utilisationdétournée d’une API (« Application Programming Interface » ou interface deprogrammation) côté client afin, par exemple, d’exécuter du code JavaScript et déroberune copie du magic cookie. Des attaques telles que le MitM (« Man in the Middle »)permettant l’analyse de paquets ne nous étant pas nécessairement destinés (« sniffing »).
Pour faire face aux attaques de type Session Hijacking, ce cookie est écrit en RAM etexpire à la fermeture du navigateur WEB, utilise le drapeau (« flag ») HTTPOnly pourempêcher l’accès par les API côté client (p. ex., JavaScript) ainsi que le Secure Flagindiquant au navigateur d’utiliser une communication HTTPS pour l’échange de ce cookieavec l’application.
ST (« Service Ticket »)
Le ST est un ticket à usage unique généré par le serveur CAS et permettantl’authentification du client sur une application WEB. Il est échangé entre le client etl’application WEB l’application par l’intermédiaire d’une requête HTTP GET, l’applicationrécupère ensuite l’identifiant associé à ce client en envoyant ce ticket au serveur CAS.
PT (« Proxy Ticket »)
Le PT est un ticket utilisé comme un ST par l’application WEB, mais permetl’authentification de l’utilisateur sur un service auquel il n’a pas d’accès direct.L’authentification est alors déléguée (principe du proxy) au serveur CAS qui est alorscapable de supporter l’utilisation de mécanismes supplémentaires (p. ex., autorisation,attributs).
PGT (« Proxy Granting Ticket »)
Le PGT est envoyé par le serveur CAS au proxy CAS, il permet au serveur proxy dedemander au serveur CAS la génération d’un PT pour l’authentification sur une applicationWEB.
Baptiste MOINE 3 Installation de CAS Server v5
Échanges HTTP
1. La requête initiale du client WEB à l’application nécessitant une authentification estredirigée vers l’URL login du serveur CAS avec une URL de retour (serviceid ou« callback ») en paramètre du GET ;
2. Le serveur CAS procède à l’authentification du client en utilisant le mécanisme locald’authentification puis redirige le client vers l’application d’origine en utilisant leserviceid en utilisant le mécanisme de redirection HTTP, le TGC est alors enregistrépar le client HTTP (s’il est accepté) ;
3. L’application WEB reçoit le ST lors de la redirection du client en paramètre de larequête GET ;
4. L’application établit une communication HTTP directe avec le serveur CAS etenvoie son URL et le ST envoyé par le client. Le serveur CAS valide le ticket et lemarque comme expiré après avoir retourné l’UID (« User IDentificator ») du client.L’authentification de l’utilisateur sur l’application WEB est valide jusqu’à l’expirationdu TGC.
En mode proxy, si le ST est validé, le serveur retourne un identifiant de PGT (PGT-id) encomplément.
Baptiste MOINE 4 Installation de CAS Server v5
ARCHITECTURE
La majeure partie des implémentations de CAS dispose au minimum :
• D’un client HTTP (p. ex., navigateur WEB) ;
• D’une application WEB (basée sur HTTP) exigeant une authentification,comprenant l’éventuel backend de l’application (p. ex., base de données, cache,etc.) ;
• D’un serveur d’authentification centralisé (CAS) ;
• D’une base de données ou services dédiés à l’authentification (e.g. Kerberos,LDAP, Active Directory).
Génération d’un nouveau jeu de clés EdDSA (Edwards-curve Digital Signature Algorithm)et RSA (Rivest-Shamir-Addleman) pour l’authentification par clé privée (depuis le client) :
FACULTATIF : Création d’un jeu de clés EdDSA et RSA résistant aux attaques de typebruteforce, cette étape est recommandée, mais dans la mesure où elle contraint àl’utilisation d’un client SSH supportant le processus cryptographique de dérivation de clé(« key derivation function » ou KDF), il sera nécessaire d’apprécier les enjeux relatifs àl’utilisation d’un tel jeu de clé, notamment en termes de portabilité et rétrocompatibilité :
# ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/[email protected]_ed25519
Test et validation de l’authentification par clé publique (depuis le client) :
# ssh cas
Baptiste MOINE 8 Installation de CAS Server v5
INSTALLATION DES DÉPENDANCES
CAS est un composant Java, c’est-à-dire un ensemble de servlets ou classes Javapermettant la création de données dynamiques au sein d’un service HTTP. Il est donc àdéployer sur un backend d’application WEB Java, également appelé conteneur.
Apache Tomcat (en automatique)
Important : La version 5 de CAS ne semble pas compatible avec la version stabledistribuée par Debian, il est donc conseillé de procéder à une installation manuelled’Apache Tomcat.
Apache Tomcat est un service HTTP à part entière, mais également un conteneur WEBsupportant les servlets et JSP (« JavaServer Pages »), par l’intermédiaire d’unecompilation (via l’outil Jasper) des JSP en servlets.
Apache Tomcat est généralement utilisé en tant que module (ou greffon) à un autreservice HTTP plus généraliste (e.g. Apache HTTP Server, IIS, Nginx). Ainsi, le serviceHTTP traite les requêtes HTTP de façon « classiques » (p. ex. HTML, PHP) et délègue letraitement des requêtes relevant d’une application WEB Java (p. ex. JSP, servlets) àApache Tomcat en utilisant le module mod_jk.
Installation
Recherche de la dernière version stable d’Apache Tomcat :
# apt-cache policy ^tomcat[0-9]+$
La dernière version majeure d’Apache Tomcat, au moment de la recherche, est la version8.
Parmi les différentes versions listées, des suffixes « bpo8 » sont utilisés pour indiquer qu’ils’agit d’une version rétroportée, c’est-à-dire une version du paquet ayant été recompilédepuis la branche testing ou unstable. Les autres versions sont des versions stables etdisposent de mises à jour en fonction de la branche du référentiel de Debian Jessie.
Installation de la dernière version stable d’Apache Tomcat et Apache Tomcat Native :
Note : Depuis la publication de la CVE-2016-1240 le 30/09/2016, il est conseillé de passeren deb8u3 et supérieur.
Baptiste MOINE 9 Installation de CAS Server v5
Configuration
La configuration d’Apache Tomcat ayant déjà été étudiée par l’équipe du DSIO du CentreHospitalier Henri Laborit, il a été convenu de la réutiliser comme base à d’éventuellesmodifications.
Téléchargement des configurations du CHHL pour Apache Tomcat :
La dernière version majeure de Java, au moment de la recherche, est la version 1.7,cependant pour des raisons de performance et de compatibilité avec CAS v5, l’installationde la version rétroportée du Java en version 1.8 est recommandée.
Apache Maven est un moteur de production Java. Comparable à GNU Make, il fournit uneaide à la compilation par la création de fichier de description détaillée (au format XML)comprenant notamment le processus de compilation, de résolution des dépendances avecdes modules externes, la gestion du versioning, les tests, etc. Ce fichier de description estappelé POM (pour « Project Object Model »).
Installation
Deux versions sont développées en parallèle, la version 2 et 3, cependant les prochainesreleases devraient se baser sur la version 3, il est donc préférable d’installer cette version,de plus ne s’agissant pas d’un service réseau, l’installation d’une version rétroportée enversion 3 ne devrait poser aucun problème si les dépendances sont installables.
Installation de la dernière version de Maven 3.3.9 :
Duplication du bloc de balise « proxy » à l’intérieur du bloc « proxies » :
# sed -i -e ':a;N;$!ba;s/\(<proxies>\)\(.*\)\(<\/proxies>\)/\1\2\2\3/;' ~/.m2/settings.xml
Application ou suppression de paramètres en fonction du protocole de connexion (p. ex.,HTTP, HTTPS) :
# sed -i -e '/<proxies>/,/<\/proxies>/{
/\s\{4\}-->/d; # Suppression de la fermeture du bloc de commentaire
s/\(\s\{4\}|$\)/\1-->/; # Fermeture du bloc de commentaire
s/\(<active>\).*\(<\/active>\)/\1true\2/; # Le proxy est actif
/<username>.*<\/username>/d; # Pas de nom d’utilisateur (exploitation de la plage IP), suppression de la propriété
/<password>.*<\/password>/d; # Pas de mot de passe (exploitation de la plage IP), suppression de la propriété
s/\(<host>\).*\(<\/host>\)/\1172.18.4.1\2/; # Hôte du service proxy
s/\(<port>\).*\(<\/port>\)/\18080\2/; # Port d’écoute du service proxy
s/\(<nonProxyHosts>\).*\(<\/nonProxyHosts>\)/\1*.miletrie.chl|dev|dev.ch-poitiers.fr\2/; # Liste blanche du proxy
0~2s/\(<id>\).*\(<\/id>\)/\1webcache_http\2/; # Identifiant du proxy HTTP
0~2s/\(<protocol>\).*\(<\/protocol>\)/\1http\2/; # Protocole du proxy HTTP
1~2s/\(<id>\).*\(<\/id>\)/\1webcache_https\2/; # Identifiant du proxy HTTPS
1~2s/\(<protocol>\).*\(<\/protocol>\)/\1https\2/; # Protocole du proxy HTTPS
}' ~/.m2/settings.xml
Baptiste MOINE 21 Installation de CAS Server v5
INSTALLATION DE CAS
CAS étant développé en Java, son déploiement au sein du conteneur de servlets Catalinanécessite la création d’une archive WEB spécifique à cette application (on parle d’archiveWAR).
Afin de créer cette archive, la communauté de développeur autour du projet CAS, met àdisposition des modèles (templates) d’abstraction (overlay), tels que Apache Maven,permettant la compilation et la création de l’archive WAR du projet. S’agissant de modèles,il sera nécessaire de procéder à leur adaptation pour l’appliquer à notre contexte.
Créer un fork d’un référentiel (Git, SVN ou Mercurial) consiste à faire une copie de ceréférentiel (c.-à-d. clone), en conservant un lien vers le référentiel d’origine (remote origin)appelé upstream dans le cadre d’un fork, mais en appliquant les mises à jour sur unsecond référentiel qui nous est propre appelé origin.
Création d’un référentiel Git, ici une instance GitLab interne au CHL sera utilisée, mais ilest possible d’utiliser n’importe quel gestionnaire de référentiel Git (e.g. GitLab, AtlassianBitBucket, IBM BlueMix DevOps Services, GitHub).
Suppression des fichiers inutilisés (binaires d’Apache Maven et le README qui necorrespond pas à notre projet) :
# rm -rf README.md mvnw.bat mvnw maven/
Création d’un nouveau commit et envoi des modifications sur le dépôt fork :
# git add README.md mvnw.bat mvnw maven/
# git commit --message "Suppression des fichiers inutilisés"
# git push --set-upstream origin master
Baptiste MOINE 24 Installation de CAS Server v5
pom.xml
Tel qu’expliqué dans la section dédiée à l’installation de Apache Maven, ce moteur deproduction est comparable à GNU Make et se base sur un fichier de description (au formatXML) appelé POM (pour « Project Object Model ») et permettant de fournir une descriptionavancée du projet et des phases de mise en service comprenant notamment le processusde compilation, de résolution des dépendances avec des modules externes, la gestion duversioning, les tests, etc.
Ce fichier respecte généralement la structure suivante :
• Description du projet Apache Maven POM en donnant son espace de nom(XMLNS), l’accès à son schéma (XSD) et son instance (XSI) XML :
• Description des métadonnées du projet (p. ex., nom, version, identifiant de groupeet d’artefact) :
<!-- Meta-données du projet -->
<modelVersion>4.0.0</modelVersion>
<groupId>fr.chpoitiers</groupId>
<artifactId>cas-server-5</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>Serveur cas personnalisé pour le CHL</name>
Baptiste MOINE 25 Installation de CAS Server v5
• Description des propriétés du projet : Il s’agit simplement de données variablesexploitables dans n’importe quelles autre section du fichier de description. Pourexemple, en voici un extrait :
Une fois l’ensemble des sections de configuration du projet complétées, on en profite pourcréer un nouveau commit et pousser les modifications sur le dépôt fork :
# git add pom.xml
# git commit --message "Mise à jour du fichier pom.xml"
# git push --set-upstream origin master
Baptiste MOINE 28 Installation de CAS Server v5
Fichiers de configuration
En complément du modèle Maven, Apereo fournit dans ce modèle d’abstraction, uneconfiguration de base pour CAS et le moteur de journalisation. Comme expliqué dans lasection « configuration » du README (voir README.md#configuration), lesconfigurations fournies dans le répertoire etc, sont à placer, par défaut, dans lerépertoire /etc/cas.
Jetty
Le module Jetty est utilisé pour un déploiement rapide des applications WEB, il estcapable d’analyser périodiquement le projet afin de rechercher des mises à jour etprocéder à leur déploiement. Ceci étant principalement conçu par les développeursopérationnels (DevOps), nous pouvons nous passer de ce module :
# rm -rf ./etc/jetty
De plus, avant de soumettre les modifications au référentiel, il peut être intéressant depouvoir distinguer les fichiers de configuration produits par le CHL, des fichiers deconfiguration par défaut. Pour cela, les fichiers de configurations seront placés dans lerépertoire /etc/chl/cas5/ :
# mkdir -p ./etc/chl/cas5/
# mv ./etc/!(chl) -t ./etc/chl/cas5/
Création d’un nouveau commit et envoi des modifications sur le dépôt fork :
# git add ./etc
# git commit --message "Déplacement des fichiers de configuration et suppression de Jetty"
CAS fournit un service de journalisation appelé log4j qui enregistre l’ensemble desinformations relatives aux événements importants tels qu’une authentification réussie ouéchouée. Ce moteur de journalisation est personnalisable afin d’enregistrer desinformations supplémentaires.
Le fichier de configuration associé au service de journalisation est par défaut le fichier/etc/log4j2.xml et respecte généralement la structure suivante :
• Définition de la structure XML et de ses propriétés :
<?xml version="1.0" encoding="UTF-8" ?>
• Description des propriétés du service de journalisation (voir Configuration de log4jet Configuration de l’intervalle de rafraîchissement), par exemple, on utilisera lemoteur de journalisation de CAS afin un intervalle de rafraîchissement desévénements toutes les 10 secondes :
• Description des flux de sortie (appenders) (p. ex., console, fichier, formatd’affichage, taille maximale, politique d’écrasement), par exemple, pour pouvoirenregistrer des événements dans un fichier cas.log ou les afficher directement enconsole (stdout) (voir Configuration des flux de sortie et Configuration de log4j avecsyslog) :
• Description des flux d’entrée (synchronicité du flux, module associé, niveau degravité, l’additivité des flux, le flux de sortie associé) (voir Configuration des fluxd’entrée), par exemple :
<Loggers>
<!-- Conteneur de servlets, Catalina en mode asynchrone -->
<!-- Service de journalisation en mode asynchrone -->
<AsyncRoot level="info">
<AppenderRef ref="casConsole"/>
</AsyncRoot>
<Loggers>
Une fois l’ensemble des sections de configuration du projet complétées, il sera nécessairede faire une copie de ce fichier dans les ressources de l’application afin de permettre àApache Tomcat de journaliser les événements avant le chargement de Spring :
Afin de configurer CAS, le modèle d’abstraction fournit un fichier de configurationcas.properties de type Property Resource Bundles (PRB) au format « dead.beef =foobar » (voir Properties files).
Tel qu’expliqué dans la documentation de CAS en section « Configuration Properties », cemodèle est conçu comme un guide et ne doit en aucun cas être suivi aveuglément, il estau contraire préférable d’être sélectif sur le choix des propriétés saisies dans ce fichier deconfiguration.
À titre d’exemple, en voici un extrait (la description du fichier complet serait trop longuepour figurer dans ce rapport) :
# Nom complet du serveur
cas.server.name=http://cas.miletrie.lan:8080
# Chemin complet d'accès à CAS
cas.server.prefix=${cas.server.name}/cas
# Répertoire contenant le registre des services (fichiers de description au format JSON)
Le registre de service définit l’ensemble des services sur lesquels CAS pourra nousauthentifier.
Tels qu’expliqué dans la documentation de CAS (voir JSON Service Management), lesservices sont définis sous la forme de fichiers, exploitant un formatage basé sur du JSON,dans le répertoire /etc/chl/cas5/services.
Ces fichiers doivent respecter la convention de nommage suivante :
# git commit --message "Ajout des services de miletrie.chl et ch-poitiers.fr"
# git push --set-upstream origin master
Baptiste MOINE 35 Installation de CAS Server v5
Bootstrap
Tel qu’expliqué dans la documentation de CAS en section « Configuration Storage », afinde charger l’ensemble des fichiers de configurations, CAS doit procéder à la lecture d’unfichier de configuration décrivant les propriétés contextuelles relatives à l’amorçage duprojet, on appelle ce type de fichier un fichier Bootstrap.
Ce fichier, de type Property Resource Bundles (PRB), n’est pas fourni dans le modèled’abstraction et doit être créé manuellement.
Dans notre cas, la configuration minimale requise pour l’amorçage de CAS est ladescription du chemin d’accès aux fichiers de configuration du service CAS :
# git commit --message "Mise à jour du chemin d'accès à la configuration de CAS"
# git push --set-upstream origin master
Baptiste MOINE 37 Installation de CAS Server v5
Compilation de CAS
La configuration des services et du modèle d’abstraction étant faite, il ne reste plus qu’àlancer la compilation du projet :
# mvn clean package -e
Si la compilation réussie, une archive ZIP avec l’extension « .war » (« WEB ApplicationARchive ») devrait avoir été créée dans le répertoire « target » du projet :
[INFO] Building war: /opt/cas-server-5/target/cas.war
Redémarrage d’Apache Tomcat pour le déploiement de CAS par Catalina en arrière-planet affichage du journal d’événement complet de Catalina et en suivant les modifications dudescripteur de fichier :
Si des erreurs relatives à l’écriture de journaux d’événements sont remontées, procéder àla mise à jour des droits sur le répertoire contenant ces fichiers et redémarrer à nouveau leservice Apache Tomcat :
Par la suite et pour la durée du projet uniquement, afin de simplifier les éventuelsdéploiements à répétition de CAS, il est possible de créer une fonction pour ledéploiement rapide de CAS :
Note : Comme décrit dans les premières instructions de la fonction, la suppression desjournaux et des caches est faite afin de ne pas encombrer le support de stockage dû àune conservation superflue des journaux d’événements de CAS pendant la réalisationdu PoC.
Baptiste MOINE 40 Installation de CAS Server v5
AJOUT D’UN FRONTAL AVEC APACHE HTTP
Afin d’agir comme un pare-feu, l’ajout d’un service Apache en frontal permettra nonseulement de traiter l’ensemble des requêtes adressées (ou non) à Apache Tomcat, de lesfiltrer, gérer les autorisations, la journalisation des accès, mais surtout, rendre accessiblele service d’authentification sur le port 80/tcp et forcer l’utilisation d’une communicationsécurisée exploitant le protocole HTTPS sur le port 443/tcp au moyen du mécanismeHTTP Strict Transport Security (HSTS).
Installation
Recherche de la dernière version stable d’Apache HTTP :
# apt-cache policy ^apache2+$
La dernière version majeure d’Apache HTTP, au moment de la recherche, est la version2.4.
Parmi les différentes versions listées, des suffixes « bpo8 » sont utilisés pour indiquer qu’ils’agit d’une version rétroportée, c’est-à-dire une version du paquet ayant été recompilédepuis la branche testing ou unstable. Les autres versions sont des versions stables etdisposent de mises à jour en fonction de la branche du référentiel de Debian Jessie.
Installation de la dernière version stable d’Apache HTTP :
La structure des fichiers de configuration d’Apache HTTP est composée comme suit :
/etc/apache2/
├─── apache2.conf
├─── conf-available/
│ ├─── charset.conf
│ ├─── javascript-common.conf
│ ├─── localized-error-pages.conf
│ ├─── other-vhosts-access-log.conf
│ ├─── security.conf
│ └─── serve-cgi-bin.conf
├─── conf-enabled/
├─── envvars
├─── magic
├─── mods-available/
├─── mods-enabled/
├─── ports.conf
├─── sites-available/
│ ├─── 000-default.conf
│ └─── default-ssl.conf
└─── sites-enabled/
apache2.conf
Il s’agit du fichier principal pour la configuration du service HTTP. La plupart desconfigurations peuvent être faites directement dans ce fichier, mais il est recommandéd’utiliser des fichiers séparés. Ce fichier est le premier à être lu et procède à l’inclusionrécursive des autres fichiers de configuration.
conf-available/
Ce répertoire contient des fichiers spécifiques à différents aspects de la configurationd’Apache HTTP. Par exemple, on retrouve le fichier security.conf qui permet de définirl’ensemble des paramètres de configurations permettant la sécurisation du service HTTP.
conf-enabled/
Ce répertoire contient les fichiers de configuration activés, c’est-à-dire qu’ils vont êtreinclus dans la configuration effective du service HTTP.
Ces fichiers sont sous la forme de liens symboliques et pointent vers le fichier associédans le répertoire conf-available. Ces liens peuvent être créés manuellement ou enutilisant les commandes a2enconf ou a2disconf.
envvars
Ce fichier est utilisé afin de spécifier les différentes variables contextuellesd’environnement à exporter.
Baptiste MOINE 42 Installation de CAS Server v5
magic
Ce fichier décrit la configuration du module mod_mime_magic utilisé pour déterminer letype MIME d’un fichier. Tout comme la commande UNIX file, le module se base surl’analyse des premiers octets du fichier pour déterminer le magic number et d’autresinformations permettant de savoir quel est le type de contenu du fichier.
Par exemple :
0 string #!/bin/sh application/x-shellscript
Cette règle indique que :
• À partir du tout premier octet (1 indiquerait que l’on commence à partir dudeuxième) ;
• On recherche une chaîne de caractère ;
• Dont le contenu correspond à « #!/bin/sh » ;
• Si ce type de contenu est trouvé, alors le type MIME correspondant est« application/x-shellscript ».
mods-available/
Ce répertoire contient des fichiers spécifiques à la configuration et le chargement demodules d’Apache HTTP. Par exemple, on retrouve le fichier proxy_ajp.load qui permet dedemander le chargement du module AJP.
mods-enabled/
Ce répertoire contient les fichiers de configuration des modules activés.
Ces fichiers sont sous la forme de liens symboliques et pointent vers le fichier associédans le répertoire mods-available. Ces liens peuvent être créés manuellement ou enutilisant les commandes a2enmod ou a2dismod.
ports.conf
Ce fichier est utilisé afin de spécifier les ports sur lesquels les hôtes virtuels (vhosts) vontécouter.
sites-available/
Ce répertoire contient les fichiers de configuration des hôtes virtuels (vhosts) permettantde décrire les différentes applications WEB.
sites-enabled/
Ce répertoire contient les fichiers de configuration des vhosts activés.
Ces fichiers sont sous la forme de liens symboliques et pointent vers le fichier associédans le répertoire sites-available. Ces liens peuvent être créés manuellement ou enutilisant les commandes a2ensite ou a2dissite.
Baptiste MOINE 43 Installation de CAS Server v5
Configuration
Hardening d’Apache HTTP
Modules
Désactivation du module d’indexation, utilisé pour lister le contenu d’un répertoire :
# a2dismod autoindex
Désactivation du module de statut du service, utilisé pour des besoins statistiques ou demonitoring :
# a2dismod status
Activation du module headers, utilisé pour modifier les en-têtes des requêtes et des réponses HTTP :
# a2enmod headers
Baptiste MOINE 44 Installation de CAS Server v5
security.conf
Désactivation de l’affichage de la version du service sur les pages d’erreur :
# sed -i 's@\(^ServerTokens\).*@\1 Prod@' /etc/apache2/conf-available/security.conf
Désactivation de l’affichage de la version dans l’en-tête HTTP « Server » :
# sed -i '{s@\(^ServerSignature\)@#\1@;s@^#\(ServerSignature Off\)@\1@}' /etc/apache2/conf-available/security.conf
Désactivation de la méthode HTTP TRACE, utilisée afin de vérifier l’activité du service. Cetype de requête présente un vecteur d’attaque important lors d’attaque de type XSS. Ainsi,une requête HTTP exploitant cette méthode recevra en réponse le code « 405 Method notAllowed » :
# sed -i '{s@\(^TraceEnable\)@#\1@;s@^#\(TraceEnable Off\)@\1@}' /etc/apache2/conf-available/security.conf
Cette méthode retourne le contenu d’une requête envoyée au service HTTP.
Par exemple :
# cat <<-'EOF' | nc cas.miletrie.lan 80
TRACE / HTTP/1.0
Host: cas.miletrie.lan
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0
Création d’une clé privée pour la signature du certificat :
# mkdir ~/.ssl/
# pushd ~/.ssl/
# openssl genrsa -aes256 -out server.key 4096
Création d’une Certificate Signing Request (CSR) contenant une signature du serveurainsi que des informations publiques (c.-à-d. Pays, Nom (CN), localisation) :
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" env=HTTPS
# HPKP pour 60 jours
Header set Public-Key-Pins "pin-sha256=\"EY5YKJpjOwmV9asoRLNT/ROAFmGBVk5uEz7xziU7rRA=\"; max-age=5184000" env=HTTPS
###
# CAS
#
# Force la redirection de la racine (uniquement !) sur /cas
RedirectMatch 301 ^/$ /cas
# Monte cas sur l'URL /cas via AJP
<IfModule jk_module>
JkMount /cas cas
JkMount /cas/* cas
</IfModule>
</VirtualHost>
</IfModule>
EOF
Désactivation du vhost par défaut et activation des nouveaux :
# a2dissite 000-default
# a2ensite http https
Configuration de Tomcat
Afin de rendre le montage du module JK, il est nécessaire d’activer le connecteur AJP surTomcat, pour cela, vérifier en dé-commentant, si besoin, la directive suivante :
# sed -i 's#\(cas.server.name=\).*#\1cas.miletrie.lan:8080#' ./etc/chl/cas5/config/cas.properties
# sed -i 's#\(cas.server.prefix=\).*#\1${cas.server.name}/cas#' ./etc/chl/cas5/config/cas.properties
# sed -i 's#\(cas.host.name=\).*#\1cas.miletrie.lan#' ./etc/chl/cas5/config/cas.properties
Note : L’URL d’accès à l’application CAS sera dorénavant http://cas.miletrie.lan/cas, laredondance du terme « cas » sera supprimée en production en remplaçant le nom duserveur par « id ».
Création d’un nouveau commit et envoi des modifications sur le dépôt fork :
# git add ./etc/chl/cas5/config/cas.properties
# git commit --message "Mise à jour du port d'écoute de CAS et du nom d'hôte"
Redémarrage d’Apache HTTP et redéploiement de CAS :
# systemctl restart apache2.service
# cas-deploy
Remarque : L’utilisation d’une clé SSL/TLS protégée par une passphrase nécessite undéverrouillage, ainsi, si elle est définie, lors du redémarrage du service HTTP, il serademandé la saisie de la passphrase.
Afin de vérifier l’état de fonctionnement des deux vhosts, nous allons préparer une requêtesur l’adresse http://cas/ qui devrait rediriger en plusieurs étapes vers l’adressehttps://cas.miletrie.lan/cas/login :
• La première réponse indique que les mécanismes de HSTS (ajout de l’en-tête« Strict-Transport-Security »), HPKP (ajout de l’en-tête « Public-Key-Pins ») et laredirection vers HTTPS (Code 302 Found) sont fonctionnels :
HTTP/1.1 302 Found
Date: Tue, 08 Nov 2016 16:19:45 GMT
Server: Apache
Location: https://cas.miletrie.lan/
Content-Type: text/html; charset=iso-8859-1
• La deuxième réponse correspond effectivement à la redirection effectuée par ladirective permettant de rediriger sur « /cas » (Code 301 Moved Permanently) :
• La quatrième réponse indique une redirection vers « /cas/login » issue del’application CAS dont l’accès se fait par AJP vers le service Tomcat (ajout d’un en-tête « X-Application-Context »). Cette réponse permet de valider le fonctionnementdu lien AJP, du service Tomcat et de l’application CAS :
• Enfin la dernière réponse correspond à la page d’authentification de CAS,distinguable grâce à l’en-tête « Content-Type » indiquant qu’il s’agit d’une pageHTML (« text/html ») :
CRÉATION D’UN ENVIRONNEMENT DE TEST POUR L’AUTHENTIFICATION SANS MULTIFACTEUR
Suite à l’installation de notre service d’authentification centralisé, il peut être intéressant devalider son fonctionnement en utilisant, par exemple, le protocole Kerberos pourl’authentification des clients sur le portail et développer une application simple pourprendre en charge l’authentification du client par l’intermédiaire de CAS en s’appuyant surle mécanisme SPNEGO (protocole négociant au choix une authentification avec NTLM ouKerberos).
Pour mettre en place cet environnement de test, il sera nécessaire de :
• Installer et configurer un service d’annuaire permettant de contenir notre based’utilisateurs, ici nous avons fait le choix d’Active Directory, mais l’utilisationd’OpenLDAP est tout à fait envisageable ;
• Installer et configurer un service Kerberos comprenant plusieurs services,notamment :
◦ Un service de distribution de clés (KDC pour « Key Distribution Center ») ;
◦ Un service d’authentification (AS pour « Authentication Service ») ;
◦ Un service d’attribution de tickets (TGS pour « Ticket-Granting Service »).
• Mettre à jour le flux d’authentification (« Login Webflow ») associé à CAS afin desupporter la négociation de tickets Kerberos ;
• Intégrer un ordinateur client au domaine ;
• Déployer une application de test basée sur phpCAS (par exemple).
Baptiste MOINE 57 Installation de CAS Server v5
Installation d’Active Directory sous Windows Server 2016
Pour commencer l’installation du service d’annuaire Active Directory, il est préférable (maispas nécessaire !) de procéder à l’installation de Windows Server en mode « ExpérienceUtilisateur », ceci permettant de bénéficier des outils d’administration graphique et d’unenvironnement plus accessible pour l’administration, à noter que ce type d’installationnécessitera de plus de ressources physiques (et virtuelles s’il s’agit d’un environnementvirtualisé) qu’une installation simple avec un accès console.
> netsh interface ip set address "Ethernet" static 172.16.57.146 255.255.0.0 172.16.10.1
> netsh interface ip add dns "Ethernet" 172.16.10.32 index=1
> netsh interface ip add dns "Ethernet" 172.16.10.33 index=2
> shutdown -r -t 00 -c "Modification du nom d'hôte et de la configuration IPv4"
Installation des services de domaine Active Directory et des outils d’administration
Ayant besoin d’un service d’authentification basé sur Kerberos 5, l’installation du serviceAD LDS (« Active Directory Lightweight Directory Service ») ne serait pas suffisante, il estdonc nécessaire d’installer les services AD DS (« Active Directory Directory Service »)embarquant entre autre le service Kerberos (source :https://social.technet.microsoft.com/Forums/en-US/db8d16d7-c959-47d3-bee0-a7b0f36a2c75/kerberos-service-not-running-on-ad-lds-server?forum=winserverDS).
Les services de domaine Active Directory (AD DS) stockent des informations sur lesutilisateurs, les ordinateurs et les périphériques sur le réseau. Ils permettent égalementaux administrateurs de gérer ces informations de façon sécurisée et facilitent le partagedes ressources et la collaboration entre les utilisateurs.
L’installation des services de domaine Active Directory utilise le Gestionnaire de serveur etWindows PowerShell, comme tous les autres rôles et fonctionnalités dans WindowsServer 2012. À noter que l’assistant graphique dans le « Gestionnaire de serveur » ou lemodule « ServerManager » pour Windows PowerShell sont à la fois exploitables en local,mais également à distance.
S’agissant d’une évolution majeure dans la gestion des services de Windows Server, unmaximum de processus de déploiement Windows PowerShell seront effectués et décritdans la suite de ce guide.
• Afin de veiller à la disponibilité des services de domaine Active Directory et assurerune continuité de services aux utilisateurs en cas de panne du serveur, l’installationd’un minimum de deux contrôleurs de domaine par domaine est conseillée parMicrosoft ;
• Les services AD DS nécessitant qu’un serveur DNS soit installé sur le réseau etaccessible en écriture par les services d’annuaire Active Directory, une réplicationde celui-ci sera également conseillée.
Dans notre cas, l’installation d’un unique serveur sera amplement nécessaire puisqu’il nes’agit que d’un environnement de test qui sera de toute manière retravaillé pour être misen production.
> [string[]]$InstallFeatures = @()
> $InstallFeatures += "AD-Domain-Services"
> $InstallFeatures += "RSAT-ADDS-Tools"
> $InstallFeatures += "RSAT-AD-AdminCenter"
> $InstallFeatures += "RSAT-ADLDS"
> $InstallFeatures += "RSAT-AD-PowerShell"
> $InstallFeatures += "RSAT-AD-Tools"
> $InstallFeatures += "RSAT-ADDS"
> Add-WindowsFeature $InstallFeatures
Ajout d’une nouvelle forêt « miletrie.lan »
Pour les tests et afin de ne pas perturber l’environnement de production, la création d’unenouvelle forêt « miletrie.lan » sera effectuée.
> Import-Module ADDSDeployment
> Install-ADDSForest -CreateDnsDelegation:$false -DatabasePath "D:\NTDS" -DomainMode "Win2012R2" -DomainName "miletrie.lan" -DomainNetbiosName "MILETRIE" -ForestMode "Win2012R2" -InstallDns:$true -LogPath "D:\Logs" -NoRebootOnCompletion:$false -SafeModeAdministratorPassword $(Read-Host -Prompt"Mot de passe de restauration des services d'annuaire (DSRM)" -AsSecureString |ConvertTo-SecureString -AsPlainText -Force) -SysvolPath "D:\SYSVOL" -Confirm -Verbose
Ici, la question de créer une délégation de zone DNS ne se pose pas puisqu’il s’agit de lazone racine.
Baptiste MOINE 59 Installation de CAS Server v5
La dernière commande devrait retourner ce type de message :
Baptiste MOINE 60 Installation de CAS Server v5
Créez une forêt Active Directory avec le nom « miletrie.lan ».
Configurez ce serveur en tant que premier contrôleur de domaine ActiveDirectory d’une nouvelle forêt.
Le nouveau nom de domaine est « miletrie.lan ». C’est aussi le nom de lanouvelle forêt.
Nom NetBIOS du domaine : MILETRIE
Niveau fonctionnel de la forêt : Windows Server 2012 R2
Niveau fonctionnel du domaine : Windows Server 2012 R2
Options supplémentaires :
• Catalogue global : Oui
• Serveur DNS : Oui
• Créer une délégation DNS : Non
Dossier de la base de données : D:\NTDS
Dossier des fichiers journaux : D:\Logs
Dossier SYSVOL : D:\SYSVOL
Le service Serveur DNS sera configuré sur cet ordinateur.
Cet ordinateur sera configuré pour utiliser ce serveur DNS en tant que serveurDNS préféré.
Le mot de passe du nouvel administrateur de domaine sera le même que celuide l’administrateur local de cet ordinateur.
Vérification des services réseau
Afin de vérifier que chacun des services souhaités est effectivement installé et fonctionnel,il est possible de vérifier les ports d’écoute du serveur et croiser ces informations avec lesprocessus et services en cours d’exécution :
> netstat -ano | findstr "LISTENING"
> tasklist /SVC
Le croisement de ces informations nous permet de déduire cette liste :
Protocole Adresse locale Adressedistante
État Description
TCP 127.0.0.1:53 0.0.0.0:0 LISTENING Domain Name Service
TCP 172.16.57.146:53 0.0.0.0:0 LISTENING Domain Name Service
TCP 0.0.0.0:636 0.0.0.0:0 LISTENING LDAP over TLS/SSL
TCP 0.0.0.0:3268 0.0.0.0:0 LISTENING Microsoft Global Catalog
TCP 0.0.0.0:3269 0.0.0.0:0 LISTENING Microsoft Global Catalog over SSL
TCP 0.0.0.0:5985 0.0.0.0:0 LISTENING Windows Remote Management Service
TCP 0.0.0.0:9389 0.0.0.0:0 LISTENING Active Directory Web Services
TCP 0.0.0.0:47001 0.0.0.0:0 LISTENING Windows Remote Management Service
Le service DNS, LDAP et Kerberos sont donc bien exécutés.
Baptiste MOINE 61 Installation de CAS Server v5
Configuration du service DNS
Validation du fonctionnement du service DNS et liste des RR actuels
Les RR correspondent à un enregistrement dans la zone DNS, ils peuvent être dedifférents types dont la liste complète est référencée par l’IANA(http://www.iana.org/assignments/dns-parameters/dns-parameters.xhtml) :
├─── Applications # Comptes de services du domaine
└─── Personnel CHL # Comptes d’utilisateurs du domaine
Ajout d’un utilisateur bmoine à l’annuaire avec support pour le chiffrement AES128 et AES256
Chaque utilisateur possède des attributs qui sont décrits en fonction d’un schéma associéà l’annuaire. L’attribut « msDC-SupportedEncryptionTypes » permet de définir lesalgorithmes de chiffrement supportés, pour cela, il suffit d’additionner les bitscorrespondant et de donner cette valeur à cet attribut.
Les bits correspondant sont tels que :
Algorithmes Valeur hexadécimale
DES-CBC-CRC 0x01
DES-CBC-MD5 0x02
RC4-HMAC 0x04
AES128-CTS-HMAC-SHA1-96 0x08
AES256-CTS-HMAC-SHA1-96 0x10
Ici, nous allons restreindre l’utilisation du chiffrement aux seuls algorithmes AES128 etAES256, donc :
0x08 + 0x10 = 0x18
(1 * 16^1) + (8 * 16^0) = 16 + 8 = 24
Baptiste MOINE 63 Installation de CAS Server v5
S’agissant d’un nouvel utilisateur, il est possible de spécifier les algorithmes à utiliserdirectement en texte clair lors de sa création :
> New-ADUser "bmoine" -GivenName "Baptiste" -Surname "MOINE" -DisplayName "Baptiste MOINE" -UserPrincipalName "[email protected]" -AccountPassword $(Read-Host -Prompt "Mot de passe de pour l'utilisateur bmoine" -AsSecureString)-ChangePasswordAtLogon $False -Enabled $True -Path "OU=Personnel CHL,OU=Utilisateurs,DC=miletrie,DC=lan" -KerberosEncryptionType "AES128, AES256"
Vérification des algorithmes utilisés
Afin de simplifier la vérification sur l’ensemble des utilisateurs, le script suivant permet desortir un tableau listant les algorithmes utilisables associés à chacun des utilisateurs del’annuaire :
Write-Host "$($EncryptionAlgorithm.GetEnumerator() | Sort-Object Name -Descending | Format-Table @{Expression={$_.Name};Label="Algorithme de chiffrement"},@{Expression={$_.Value};Label="Supporté par l'utilisateur"} | Out-String)"
}
Baptiste MOINE 64 Installation de CAS Server v5
Par exemple, pour l’utilisateur bmoine, le tableau retourné est le suivant :
Algorithme de chiffrement Supporté par l’utilisateur
RC4-HMAC Non
DES-CBC-MD5 Non
DES-CBC-CRC Non
AES256-CTS-HMAC-SHA1-96 Oui
AES128-CTS-HMAC-SHA1-96 Oui
Ajout de l’utilisateur bmoine au groupe « Opérateurs de compte » pour permettrel’intégration de postes au domaine :
> ADD-ADGroupMember "Opérateurs de compte" –members "bmoine"
Création d’un compte de service pour CAS
> New-ADUser "cas" -DisplayName "CAS Server Principle Name" -UserPrincipalName "[email protected]" -AccountPassword $(Read-Host -Prompt "Mot de passe de pour l'utilisateur cas" -AsSecureString) -ChangePasswordAtLogon $False -Enabled $True -Path "OU=Applications,OU=Utilisateurs,DC=miletrie,DC=lan" -KerberosEncryptionType "AES128, AES256"
Baptiste MOINE 65 Installation de CAS Server v5
Génération d’un keytab
L’outil ktpass permet à un administrateur de configurer un service Kerberos différent deWindows Server comme un security principal dans Windows Server en générant unkeytab Kerberos contenant un ou plusieurs secrets partagés (« shared secret key ») entrele serveur Kerberos et le service.
Dans un premier temps, nous allons créer un keytab, contenant une clé partagée pourchacun des protocoles de chiffrement :
Ici, le mot de passe est utilisé uniquement comme un nonce permettant de générer lesclés en améliorant l’entropie et n’est pas utilisé pour chiffrer ce keytab.
L’option « /mapuser » permet d’indiquer le compte de service associé à ce service, onparle de SPN (« Service Principal Name »). Ses attributs seront mis à jour enconséquence.
Afin de prendre en compte l’ajout de ce keytab dans le déploiement de CAS, le script dedéploiement rapide sera mis à jour dans ~/.bash_profile tel que :
Tout d’abord il faut vérifier que le fichier de provisioning Maven (pom.xml) dispose biendes instructions nécessaires à installer les dépendances nécessaires au fonctionnementde SPNEGO :
Ensuite, il est nécessaire de configurer CAS (cas.properties) afin qu’il soit correctementassocié en tant que client Kerberos auprès de Windows Server en utilisant la configurationlocale du client Kerberos (voir https://apereo.github.io/cas/5.0.x/installation/Configuration-Properties.html), à titre d’exemple, voici un extrait de la configuration :
Remarque : Pour créer les différentes clés de chiffrement et de signature des TGC et duWEBFlow (cas.webflow.encryption.key, cas.webflow.signing.key, cas.tgc.encryption.key etcas.tgc.signing.key), il est préférable de les générer manuellement :
# for (( i=1; i<=2; ++i )); do java -jar target/json-web-key-generator-0.4-SNAPSHOT-jar-with-dependencies.jar -s 512 -t oct -S -o /tmp/webflow.json; done
# for (( i=1; i<=2; ++i )); do java -jar target/json-web-key-generator-0.4-SNAPSHOT-jar-with-dependencies.jar -s 512 -t oct -S -o /tmp/tgc.json; done
# cat /tmp/{webflow,tgc}.json
# popd
# popd
Enfin, il suffit de créer un fichier « login-webflow.xml » contenant nos différentes actions,transitions, vues et décisions telles que décrites sur le Wiki d’Apereo (voirhttps://apereo.github.io/cas/5.0.x/installation/Webflow-Customization.html).
Création d’un nouveau commit et envoi des modifications sur le dépôt fork :
Création d’un nouveau commit et envoi des modifications sur le dépôt fork :
# git add .
# git commit --message "Ajout de miletrie.lan au registre de services"
# git push --set-upstream origin master
Déploiement de CAS :
# cas-deploy
Baptiste MOINE 73 Installation de CAS Server v5
Intégration d’un ordinateur client au domaine miletrie.lan
Pour tester l’authentification Kerberos sur Appli1, il est nécessaire d’être client Kerberosdu serveur Kerberos placé sur le contrôleur de domaine, pour cela, il est nécessaired’intégrer l’ordinateur au domaine miletrie.lan.
Intégration du poste au domaine, ici, l’ordinateur client fonctionne sous Microsoft Windows7 et se nomme « Win7-PC » :
# shutdown -r -t 00 -c "Intégration du poste au domaine miletrie.lan"
Configuration du navigateur pour autoriser SPNEGO
Firefox
Dans la barre d’adresse du navigateur, saisir « about:config » et modifier la propriété« network.negotiate-auth.trusted-uris » en lui donnant pour valeur « cas.miletrie.lan ».
Internet Explorer
Dans les Options Internet (Win+R « inetcpl.cpl ») :
• Dans l’onglet « Avancé », dans les paramètres de « Sécurité », vérifier que l’option« Activer l’authentification Windows intégrée » est cochée ;
• Dans l’onglet « Sécurité », dans les « Sites » de la zone « Intranet local » (bouton« Avancé »), ajouter « https://cas.miletrie.lan ».
Baptiste MOINE 74 Installation de CAS Server v5
Illustration 3: Options Internet - Activation de l'authentification Windowsintégrée
Illustration 2: about:config - Trusted URIs
Déploiement d’une application de test basée sur phpCAS
Pour déployer cette application de test, nous allons nous baser sur une nouvelleinstallation de Debian Jessie qui sera dédiée à la fourniture de l’application de test surHTTP.
Préparation du système
Configuration de l’accès réseau
Configuration des contrôleurs d’interfaces réseau et de la résolution de noms DNS :
Ajout de pages statiques pour les erreurs (404 et 50x) :
# cat <<-'EOF' >/usr/share/nginx/static/404.html
<!DOCTYPE html>
<html>
<head>
<title>404 Not Found</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>404 Not Found</h1>
<p>Sorry, the page you are looking for could not be found.<br/>
The page may no longer exist or have moved to a new location.</p>
<p><em>Faithfully yours, nginx.</em></p>
</body>
</html>
EOF
# cat <<-'EOF' >/usr/share/nginx/static/50x.html
<!DOCTYPE html>
<html>
<head>
<title>Error</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>An error occurred.</h1>
Baptiste MOINE 82 Installation de CAS Server v5
<p>Sorry, the page you are looking for is currently unavailable.<br/>
Please try again later.</p>
<p>If you are the system administrator of this resource then you shouldcheck
the <a href="http://nginx.org/r/error_log">error log</a> for details.</p>
<p><em>Faithfully yours, nginx.</em></p>
</body>
</html>
EOF
Redémarrage des services :
# systemctl restart php5-fpm.service
# systemctl restart nginx.service
Baptiste MOINE 83 Installation de CAS Server v5
Test de l’authentification Kerberos sur Appli1
Depuis le client WIN7-PC, ouvrir le navigateur Firefox et saisir l’adresse d’Appli1 dans labarre d’adresse (p. ex., http://appli1.miletrie.lan/). Si tout se passe bien, l’applicationdevrait procéder à la redirection vers CAS, authentifier notre utilisateur automatiquementen utilisant Kerberos et afficher retourner son contenu en indiquant un message debienvenue (voir Illustration 4).
Analyse protocolaire
Si on procède à une capture des paquets envoyés aux différents services lors d’un accèsnon authentifié à Appli1, on peut décrire un diagramme de flux tel que :