Outils pour utilisateurs

Outils du site


nethserver_301_cahier_02_active_directory

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

nethserver_301_cahier_02_active_directory [2019-12-26 19:35] (Version actuelle)
michelandre Correction Directoty
Ligne 1: Ligne 1:
 +\\ 
 +{{ Images_Cahier-301-02-001.png?​650 }}
 +\\ 
 +====== Description générale ======
  
 +Le **Cahier-02:​** //​NethServer et migration de LDAP vers Active Directory// du "cours NethServer-301"​ décrit le remplacement du //​Fournisseur des comptes// **LDAP** par celui d'​**Active Directory**.
 +
 +===== But de ce cahier =====
 +
 +  - Installer //Samba 4 Active Directory// sur un //Serveur NethServer//​.
 +  - Utiliser la méthode de changement de mot de passe par //​Question/​Réponse//,​ de l'​utilitaire **Self Service Password**, afin que les utilisateurs puissent changer, eux-mêmes, le nouveau mot de passe octroyé par l'​installation d'//​Active Directory//​.
 +
 +{{Images_Cahier-101-03-006.png?​25}} Pour ce document, nous utiliserons la machine virtuelle du **
 +[[nethserver_301_cahier_01_rsat|Cahier-301-01]]
 +** //RSAT (Remote Server Administration Tools)// du "Cours NethServer-301"​.
 +
 +Les procédures sont exactement les mêmes pour un //Serveur NethServer//​ physique directement branché ou non à l'​Internet.
 +
 +{{ Images_Cahier-301-02-002.png?​600 }}
 +\\
 +
 +===== Cours NethServer-101 =====
 +
 +Le //Cours NethServer-101//,​ se voulant une base solide pour la création d'un site de **Commerce en ligne**, comprend plusieurs cahiers:
 +
 +  - [[nethserver_101_cahier_01_linux|Cahier-01]]:​ -> Les bases de Linux.
 +  - [[nethserver_101_cahier_02_installations_configurations_logiciels_prerequis|Cahier-02]]:​ -> Installation et configuration des logiciels prérequis sur le poste de travail.
 +  - [[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]:​ -> Création d'un Serveur NethServer virtuel.
 +  - [[nethserver_101_cahier_04_local_certificat_let_encrypt|Cahier-04]]:​ -> Serveur NethServer LOCAL & Let's Encrypt.
 +  - [[nethserver_101_cahier_05_vdsl_fqdn_internet_et_nethserver|Cahier-05]]:​ -> FAI, modem VDSL, domaine FQDN(( **FQDN**: Dans le //DNS//, un Fully Qualified Domain Name //(FQDN, ou nom de domaine complètement qualifié)//​ est un nom de domaine qui révèle la position absolue d'un nœud dans l'​arborescence //DNS// en indiquant tous les domaines de niveau supérieur jusqu'​à la racine. On parle également de domaine absolu, par opposition aux domaines relatifs. Par convention, le //FQDN// est ponctué par un point final.\\ ​
 +//​Référence://​ [[https://​fr.wikipedia.org/​wiki/​Fully_qualified_domain_name|https://​fr.wikipedia.org/​wiki/​Fully_qualified_domain_name]]. \\ \\ )) et Serveur NethServer physique.
 +  - [[nethserver_101_cahier_06_nethserver_wordPress|Cahier-06]]:​ -> Installation de WordPress.
 +  - [[nethserver_101_cahier_07_nethserver_wordPress_wordfence|Cahier-07]]:​ -> Installation de l'​extension de sécurité Wordfence.
 +  - [[nethserver_101_cahier_08_woocommerce_paypal_stripe|Cahier-08]]:​ -> WooCommerce,​ comptes chez Stripe et   ​PayPal pour les paiements en ligne.
 +  - [[nethserver_101_cahier_09_duplicator_migration|Cahier-09]]:​ -> Sauvegarde/​restauration ou migration d'un site avec l'​extension Duplicator.
 +  - [[nethserver_101_cahier_10_mandataire_inverse|Cahier-10]]:​ -> Serveur mandataire inversé.
 +  - [[nethserver_101_cahier_11_nethserver_backuppc|Cahier-11]]:​ -> Sauvegarde/​restauration avec BackupPC.
 +
 +==== Cours NethServer-201 ====
 +
 +Le //Cours NethServer-201//​ décrit l'​installation et la configuration d'​applications sur un //Serveur NethServer//​.
 +
 +  - [[nethserver_201_cahier_01_nethserver_et_dolibarr|Cahier-201-01]]:​ -> Dolibarr.
 +  - [[nethserver_201_cahier_02_odoo_12|Cahier-201-02]]:​ -> Odoo-12.
 +  - [[nethserver_201_cahier_03_mediawiki|Cahier-201-03]]:​ -> MediaWiki.
 +  - [[nethserver_201_cahier_04_dokuwiki|Cahier-201-04]]:​ -> DokuWiki.
 +  - [[nethserver_201_cahier_05_moodle|Cahier-201-05]]:​ -> Moodle.
 +  - [[nethserver_201_cahier_06_proxmox|Cahier-201-06]]:​ -> Proxmox.
 +  - [[nethserver_201_cahier_07_flectra|Cahier-201-07]]:​ -> Flectra.
 +  - [[nethserver_201_cahier_08_self_service_password|Cahier-201-08]]:​ -> Self Service Password.
 +
 +==== Cours NethServer-301 ====
 +
 +Le //Cours NethServer-301//​ décrit l'​annuaire //Active Directory// roulant sur un //Serveur NethServer//​.
 +
 +  - [[nethserver_301_cahier_01_RSAT|Cahier-301-01]]:​ -> RSAT //(Remote Server Administration Tools)//.
 +  - [[nethserver_301_cahier_02_active_directory|Cahier-301-02]]:​ -> NethServer et migration de //LDAP// vers //Active Directory//​.
 +  - [[nethserver_301_cahier_03_self_service_password_active_directory|Cahier-301-03]]:​ -> Active Directory & Self Service Password.
 +  - [[nethserver_301_cahier_04_ad_jonction_de_stations|Cahier-301-04]]:​ -> Active Directory & jonction de stations.
 +
 +==== Logiciels ====
 +
 +Tous les logiciels nécessaires sont du domaine public ou LIBRE sous licence //GPL//; ils ne coûtent pas un sou. Le seul achat nécessaire est l'​obtention d'un nom de domaine au prix initial de $15 CAD et son renouvellement annuel d'​environ $30 CAD.
 +
 +==== But final ====
 +
 +Après avoir suivi le //Cours NethServer-101//,​ vous posséderez un site de //Commerce en ligne// fiable et hautement sécuritaire. De plus, vous pourrez utiliser un clone de votre site, sur un //Serveur NethServer//​ virtuel roulant sur votre poste de travail, pour tester de nouvelles extensions et applications sans compromettre la sécurité ou l'​intégrité de votre site en ligne.
 +
 +{{ NS-101_001_Diagramme.png?​500 }}
 +
 +===== Particularités de ce document =====
 +
 +==== Notes au lecteur ====
 +
 +<​nowiki>​*</​nowiki>​ Les captures d'​écrans ne sont que des références.\\
 +<​nowiki>​**</​nowiki>​ Les informations écrites ont préséance sur celles retrouvées dans les captures d'​écrans. Veillez vous référer aux différents tableaux lorsque ceux-ci sont présents.\\ ​
 +<​nowiki>​***</​nowiki>​ Une capture d'​écran avec une accentuation en magenta indique qu'il faut remplacer cette distinction par vos propres paramètres ou implique un choix laissé à votre appréciation.
 +
 +==== Conventions ====
 +
 +{{Images_icone-201-001_doigt.png?​22}} Manipulation,​ truc ou ruse pour se tirer d'​embarras.\\
 +{{Images_icone-201-002_Lumiere.png?​25}} Une recommandation ou astuce.\\
 +{{Images_icone-201-003_Note.png?​25}} Une note.\\
 +{{Images_icone-201-004_Triangle.png?​25}} Une étape, note ou procédure à surveiller.\\
 +{{Images_icone-201-005_Non-termine.png?​25}} Paragraphe non complété ou non vérifié.\\
 +{{Images_icone-201-006_Securite.png?​25}} Danger pour la sécurité du système.
 +
 +Toutes les commandes à la console ou à travers //PuTTY// sont précédées d'une invite qui est toujours présente.
 +
 +<​file>​
 +[[email protected] ~]# ping 10.10.10.75 -c1
 +
 +PING 10.10.10.75 (10.10.10.75) 56(84) bytes of data.
 +64 bytes from 10.10.10.75:​ icmp_seq=1 ttl=64 time=1.63 ms
 +
 +--- 10.10.10.75 ping statistics ---
 +1 packets transmitted,​ 1 received, 0% packet loss, time 0ms
 +rtt min/​avg/​max/​mdev = 1.639/​1.639/​1.639/​0.000 ms
 +[[email protected] ~]#
 +</​file>​
 +
 +<WRAP box round>
 +<​file>​
 +Commande à exécuter si ce n'est déjà fait.
 +</​file>​
 +</​WRAP>​
 +
 +<WRAP box>
 +<​file>​
 +Commande indiquée à titre d'​information seulement.
 +</​file>​
 +</​WRAP>​
 +\\ 
 +
 +====== À savoir ======
 +
 +{{ Images_Cahier-301-02-003.png?​600 }}
 +\\ 
 +
 +===== Serveur NethServer-7.6.1810 =====
 +
 +Le //Serveur NethServer-7.6.1810//​ est un dérivé de la distribution Linux CentOS et est équivalent à //​CentOS-7.6.1810//​.
 +
 +==== dorgee.micronator.org ====
 +
 +  - Serveur passerelle pour les connexions à l'​Internet.
 +  - Serveur //DHCP// pour tout le réseau LOCAL //​192.168.1.0/​24//​.
 +
 +==== tchana.micronator-dev.org ====
 +
 +Serveur virtuel LOCAL sous //​VirtualBox Version 6.0.4 r128413 (Qt5.6.2)//​.
 +
 +===== Poste de travail =====
 +
 +Windows-8.1,​ on utilisera ce poste de travail comme station d'​administration pour tout ce document.
 +
 +===== Éditeur de texte =====
 +
 +Ne modifiez pas les fichiers avec des éditeurs de documents tels //​Notepad//,​ //​TextEdit//​ ou autres qui ajoutent une //marque d'​ordre d'​octets//​ //(byte order marks)// aux fichiers et qui casse le programme //PHP//. Utilisez plutôt un éditeur de code tel //vi//, //vim//, //​Notepad++//,​ ou //Atom//. Ces éditeurs gèrent l'​encodage des fichiers de manière appropriée;​ ils peuvent aussi être utilisés pour réparer les fichiers précédemment cassés par les autres éditeurs de documents.
 +
 +==== Notepad++ ====
 +
 +Voir le [[nethserver_101_cahier_02_installations_configurations_logiciels_prerequis|Cahier-02]]:​ //​Installations & configurations des logiciels prérequis//​ du "Cours NethServer-101"​ pour l'​installation et la configuration de cet éditeur.
 +
 +==== Description ====
 +
 +//​Référence://​ [[https://​notepad-plus-plus.org/​|https://​notepad-plus-plus.org/​]].
 +
 +//​Notepad++//​ est un éditeur de code source qui prend en charge plusieurs langages. Ce logiciel, codé en //C++// avec //STL// et //win32 api//, a pour vocation de fournir un éditeur de code source de taille réduite mais très performant. En optimisant de nombreuses fonctions, tout en conservant une facilité d’utilisation et une certaine convivialité,​ //​Notepad++//​ contribue à la limitation des émissions de dioxyde de carbone dans le monde; en effet, en réduisant l’utilisation du //CPU//, la consommation d’énergie des ordinateurs chute considérablement,​ en conséquence de quoi, la terre est plus verte.
 +
 +//Site de téléchargement://​ [[https://​notepad-plus-plus.org/​downloads/​|https://​notepad-plus-plus.org/​downloads/​]].
 +
 +==== Documentation ====
 +
 +//Guide pratique// //(1er août 2013)//: [[http://​nliautaud.developpez.com/​tutoriels/​web/​notepadplusplus-guide-pratique/​|http://​nliautaud.developpez.com/​tutoriels/​web/​notepadplusplus-guide-pratique/​]].\\ ​
 +//​Aide-mémoire//​ des principales commande: [[https://​drive.google.com/​file/​d/​0B86nuTd5nMTKaENHcmliUC1kdnc/​edit|https://​drive.google.com/​file/​d/​0B86nuTd5nMTKaENHcmliUC1kdnc/​edit]].
 +\\ 
 +\\ 
 +
 +===== Mots de passe =====
 +
 +==== LDAP ====
 +
 +Lorsque nous voulons utiliser //Active Directory// comme fournisseur des comptes sur un //Serveur NethServer//,​ il nous faut désinstaller le fournisseur //LDAP// avant l'​installation du fournisseur //Active Directory//​.
 +
 +Lors d'une désinstallation du fournisseur //LDAP//, une liste d'​utilisateurs et de groupes au format //TSV// est transférée respectivement dans ''/​var/​lib/​nethserver/​backup/​users.tsv''​ et dans ''/​var/​lib/​nethserver/​backup/​groups.tsv''​. Si nous réinstallons //LDAP// comme fournisseur des comptes, il récupérera les comptes et les groupes depuis ces fichiers de sauvegarde.
 +
 +==== Active Directory ====
 +
 +Lors d'une installation d'//​Active Directory// comme fournisseur des comptes, celui-ci ne récupère pas les comptes et les groupes depuis les fichiers //TSV//; il crée seulement deux nouveaux comptes: **__admin__** et **__administrator__** et un nouveau groupe **__domain admins__** contenant ces deux nouveaux comptes.
 +
 +=== Importation des comptes ===
 +
 +Une fois //Active Directory// installé, nous pouvons importer les comptes depuis les fichiers //TSV//, mais //AD// n'​incorpore pas les anciens mots de passe des usagers, il en crée de nouveaux.
 +
 +Après l'​importation des comptes, si nous avons seulement quelques anciens utilisateurs,​ nous pouvons changer leur mot de passe individuellement,​ mais si nous avons plusieurs centaines, voire des milliers de comptes, changer leur mot de passe individuellement n'est tout simplement pas très pratique.
 +
 +De plus, si nous leur envoyons un courriel avec leur nouveau mot de passe, les anciens utilisateurs ne pourront pas accéder à leur compte de messagerie, car ils ne connaissent pas leur nouveau mot de passe pour se connecter.
 +
 +==== Solution ====
 +
 +Dans le **
 +[[nethserver_201_cahier_08_self_service_password|Cahier-201-08:​]]
 +** //​NethServer & Self Service Password// du "Cours NethServer-201",​ nous avons configuré //SSP// pour qu'un utilisateur puisse changer son mot de passe en répondant à une question préalablement choisie et à laquelle il a déjà répondu sans devoir fournir son ancien mot de passe.
 +
 +Lorsque nous récupérerons les anciens comptes, //Active Directory// récupérera la question et la réponse des utilisateurs __si cette réponse <wrap em>​n'​est pas chiffrée</​wrap>​__.
 +
 +Après l'​installation d'//​Active Directory//,​ un ancien utilisateur pourra alors se rendre à la page de //Self Service Password//: fournir seulement son nom d'​usager,​ choisir sa question, donner sa réponse et enfin entrer puis confirmer son nouveau mot de passe. Si la réponse est exactement la même que celle entrée précédemment,​ //SSP// changera le mot de passe, crée par //Active Directory//,​ par le nouveau mot de passe que l'​utilisateur vient de spécifier.
 +
 +==== Mise en garde ====
 +
 +{{Images_Cahier-101-03-006.png?​25}} L'​administrateur système de //​NethServer//​ doit obligatoirement exiger, de tous les utilisateurs,​ d'​utiliser la page de //Self Service Password// //​(https://​www.micronator-dev.org/​ssp)//​ afin de choisir une question et de fournir une réponse personnelle __<wrap em>​avant</​wrap>​__ l'​installation d'//​Active Directory//​.
 +
 +=== Réponse ===
 +
 +{{Images_icone-201-003_Note.png?​25}} La réponse peut être bidon et très longue en autant qu'​elle soit exactement toujours la même.\\ ​
 +Lors d'un changement de mot de passe par réponse à une question, la réponse donnée n'est pas analysée par //SSP//; il compare seulement la question et la réponse avec celles préalablement fournies avant la demande de changement de mot de passe.
 +\\ 
 +\\ 
 +
 +====== Préparation de l'​environnement de travail ======
 +
 +{{Images_icone-201-003_Note.png?​25}} On répète ce chapitre pour ceux qui n'​auraient pas accès au **
 +[[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03:​]]
 +** //​NethServer Virtuel// du "Cours NethServer-101"​.
 +
 +===== Configuration du poste de travail =====
 +
 +==== Vérification ====
 +
 +Voir le chapitre **
 +[[nethserver_101_cahier_03_creation_un_serveur_virtuel#​À savoir|À savoir]]
 +** du **Cahier-03:​** //​NethServer Virtuel//.
 +
 +<WRAP column 46%>
 +**Centre Réseau et partage -> Modifier les paramètres de la carte ->** clac //(clic droit)// sur la carte Éthernet **-> Statut -> Détails**.
 +
 +● Nos deux adresses //IP// et nos deux passerelles son présentes.
 +
 +● **Fermer** toutes les fenêtre.
 +
 +</​WRAP>​
 +<WRAP column 46%>
 +|{{ Images_Cahier-301-02-004.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 46%>
 +''​C:​\Windows\System32\drivers\etc\hosts''​.
 +
 +Les //CNAME// de notre //Serveur NethServer//​ virtuel LOCAL sont présents.
 +</​WRAP>​
 +<WRAP column 46%>
 +|{{ Images_Cahier-301-02-005.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +===== Installation d'un Serveur NethServer =====
 +
 +Voir le **[[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]:​** //Création d'un Serveur NethServer virtuel// du "Cours NethServer-101"​.
 +
 +Pour un serveur virtuel de test, prendre un minimum de //8 Go// dynamiquement alloué __pour le disque principal__.
 +
 +==== Mise à jour du Serveur ====
 +
 +Avant de commencer quoi que ce soit, il est toujours préférable de mettre à jour le //Serveur NethServer//​.
 +
 +==== Fail2ban & ClamAV ====
 +
 +Il est fortement recommandé d'​installer //​Fail2ban//​ et //ClamAV// pour mieux sécuriser notre futur système. L'​installation de ces logiciels est décrite dans le **
 +[[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]:​
 +** //​NethServer Virtuel// du "Cours NethServer-101"​.
 +\\ 
 +\\ 
 +
 +===== Vérification du certificat Let's Encrypt =====
 +
 +Pour l'​installation d'un certificat //​Let'​s Encrypt//, consulter le **
 +[[nethserver_101_cahier_04_local_certificat_let_encrypt|Cahier-04:​]]
 +** //​NethServer LOCAL & Certificat Let's Encrypt// du "Cours NethServer-101"​.
 +
 +<WRAP column 52%>
 +On se rend à **https://​www.micronator-dev.org**.
 +
 +{{Images_icone-201-003_Note.png?​25}} Il n'est pas nécessaire d'​ajouter une exception pour le certificat, car il a été émis par une autorité de certification reconnue. Le cadenas est __vert__.
 +
 +On clique le cadenas pour afficher les informations de la connexion, puis on clique l'​icône <wrap em>></​wrap>​.
 +</​WRAP>​
 +<WRAP column 40%>
 +|{{ Images_Cahier-201-08-006.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 46%>
 +**Plus d'​informations**.
 +|{{ Images_Cahier-201-08-007.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +Onglet **Sécurité -> Afficher le certificat**.
 +|{{ Images_Cahier-201-08-008.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 46%>
 +\\ 
 +<​nowiki>​-</​nowiki>​ Le certificat a été émis par **//​Let'​s Encrypt Authority X3//​**.\\ ​
 +<​nowiki>​-</​nowiki>​ On clique l'​onglet **Détails**.
 +|{{ Images_Cahier-201-08-009.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +<​nowiki>​-</​nowiki>​ On clique **Nom alternatif du sujet du certificat**.\\ ​
 +<​nowiki>​-</​nowiki>​ Tous les //CNAME// sont présents.\\ ​
 +<​nowiki>​-</​nowiki>​ **Fermer** toutes les fenêtres.
 +|{{ Images_Cahier-201-08-010.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +Le certificat //​Let'​s Encrypt// est à jour et fonctionne correctement.
 +\\ 
 +
 +===== interface Web NethServer =====
 +
 +{{Images_icone-201-004_Triangle.png?​25}} Il faut activer //​Javascript//​ et les //​témoins//​ //​(cookies)//​.\\ ​
 +Depuis le poste de travail, sur le réseau LOCAL //​10.10.10.0/​24//,​ on accède à l'​interface Web //​Nethserver//​ **[[http://​10.10.10.75:​980|http://​10.10.10.75:​980]]**.
 +
 +==== Login ====
 +
 +Lorsque vous parvenez à l'//​URL//,​ vous serez invité à entrer votre nom d’utilisateur //(qui est obligatoirement **__root__**)//​ et le mot de passe donné au cours du processus d’installation. Entrez ce justificatif et cliquez sur **Login** afin d’être amené à l'​interface Web Nethserver. L’écran du gestionnaire s’affiche.
 +
 +{{Images_icone-201-004_Triangle.png?​25}} Le cadenas est __vert__, car nous avons un certificat émis par une autorité de certification reconnue.
 +
 +<WRAP column 20%>
 +|{{ Images_Cahier-201-02-009.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 72%>
 +|{{ Images_Cahier-201-08-011.png?​800 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +{{Images_Cahier-101-03-004.png?​25}} Si vous avez de la difficulté à vous connecter, vidanger le cache //DNS// du poste de travail et celui du navigateur //​Firefox//​.
 +
 +<WRAP column 55%>
 +<​nowiki>​-</​nowiki>​ Sur le poste de travail, ouvrir un écran de commandes.\\ ​
 +<​nowiki>​-</​nowiki>​ ''​ifconfig ​ /​flushdns''​.
 +|{{ Images_Cahier-201-02-011.png?​600 }}|
 +</​WRAP>​
 +<WRAP column 37%>
 +**Historique -> Supprimer l'​historique ré­cent... -> tout -> Effacer maintenant**.
 +|{{ Images_Cahier-201-02-012.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +\\ 
 +
 +{{ Images_Cahier-201-02-013.png?​600}}
 +==== Fournisseur des comptes ====
 +
 +**Configuration -> Fournisseur des comptes**.
 +
 +**//LDAP local//** est notre fournisseur de comptes.
 +<WRAP clear></​WRAP>​
 +\\ 
 +
 +{{ Images_Cahier-201-07-004.png?​600}}
 +==== FQDN du serveur ====
 +
 +**Configuration -> DNS ->** onglet **Hôtes**.
 +
 +Le //FQDN// du serveur: //​micronator-dev.org//​ est bien ce qu'il devrait être; //​micronator-101.ddns.net//​ provient du **
 +[[nethserver_101_cahier_03_creation_un_serveur_virtuel|Cahier-03]]:​
 +** //​NethServer Virtuel// du "Cours NethServer-101",​ on peut le supprimer pour ce document.
 +\\ 
 +\\ 
 +
 +{{ Images_Cahier-201-02-015.png?​600}}
 +==== Nom du serveur ====
 +
 +**Configuration -> Nom du serveur**.
 +<WRAP clear></​WRAP>​
 +\\
 +
 +{{ Images_Cahier-201-02-016.png?​600}}
 +==== Paramètres d'​accès à distance ====
 +
 +**Sécurité -> SSH**.
 +<WRAP clear></​WRAP>​
 +\\
 +
 +{{ Images_Cahier-201-08-012.png?​600}}
 +==== TLS policy ====
 +
 +**Sécurité ​ ->  TLS policy**.
 +<WRAP clear></​WRAP>​
 +\\
 +
 +{{ Images_Cahier-201-02-017.png?​600}}
 +==== FTP ====
 +
 +**Configuration -> FTP ->** onglet **Configurer**.
 +
 +{{Images_icone-201-001_doigt.png?​22}} __Le //FTP// ne doit pas être activé__.
 +<WRAP clear></​WRAP>​
 +\\ 
 +
 +{{ Images_Cahier-201-02-018.png?​600}}
 +==== Serveurs DNS ====
 +
 +**Configuration -> Réseau ->** onglet **Serveur DNS**.
 +
 +Le serveur //DNS// secondaire peut être //8.8.8.8// ou //​1.1.1.1//;​ le dernier étant plus rapide.
 +<WRAP clear></​WRAP>​
 +\\
 +
 +===== Ouverture d'une session PuTTY =====
 +
 +Les paramètres du serveur sont définis correctement et on peut utiliser //PuTTY// pour s'y loguer.
 +
 +Voir //PuTTY// dans le **
 +[[nethserver_101_cahier_02_installations_configurations_logiciels_prerequis#​PuTTY|Cahier-02]]
 +:** //​Installations & configurations des logiciels prérequis//​ du "Cours NethServer-101"​ pour vous familiariser avec ce logiciel de connexion..
 +
 +On se logue en tant que l'​utilisateur **__root__**.
 +
 +<​file>​
 +login as: root
 +[email protected]'​s password: ​ mot-de-passe-de-root
 +Last login: Sat Oct 19 15:58:02 2019 from 10.10.10.81
 +
 +************ Welcome to NethServer ************
 +
 +This is a NethServer installation.
 +
 +Before editing configuration files, be aware
 +of the automatic events and templates system.
 +
 +
 +          http://​docs.nethserver.org
 +
 +***********************************************
 +[[email protected] ~]#
 +</​file>​
 +
 +==== Adresse IP ====
 +
 +On vérifie les adresses //IP// du serveur.
 +
 +<​file>​
 +[[email protected] ~]# ifconfig
 +
 +enp0s3: flags=4163<​UP,​BROADCAST,​RUNNING,​MULTICAST> ​ mtu 1500
 +        inet 10.10.10.75 ​ netmask 255.255.255.0 ​ broadcast 10.10.10.255
 +        inet6 fe80::​a00:​27ff:​fedf:​9e60 ​ prefixlen 64  scopeid 0x20<​link>​
 +        ether 08:​00:​27:​df:​9e:​60 ​ txqueuelen 1000  (Ethernet)
 +        RX packets 1237  bytes 147855 (144.3 KiB)
 +        RX errors 0  dropped 0  overruns 0  frame 0
 +        TX packets 1471  bytes 1350638 (1.2 MiB)
 +        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 +
 +enp0s8: flags=4163<​UP,​BROADCAST,​RUNNING,​MULTICAST> ​ mtu 1500
 +        inet 192.168.1.75 ​ netmask 255.255.255.0 ​ broadcast 192.168.1.255
 +        inet6 fe80::​a00:​27ff:​fe50:​453a ​ prefixlen 64  scopeid 0x20<​link>​
 +        ether 08:​00:​27:​50:​45:​3a ​ txqueuelen 1000  (Ethernet)
 +        RX packets 3789  bytes 1613677 (1.5 MiB)
 +        RX errors 0  dropped 0  overruns 0  frame 0
 +        TX packets 4134  bytes 371155 (362.4 KiB)
 +        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 +
 +lo: flags=73<​UP,​LOOPBACK,​RUNNING> ​ mtu 65536
 +        inet 127.0.0.1 ​ netmask 255.0.0.0
 +        inet6 ::1  prefixlen 128  scopeid 0x10<​host>​
 +        loop  txqueuelen 1000  (Local Loopback)
 +        RX packets 392  bytes 42659 (41.6 KiB)
 +        RX errors 0  dropped 0  overruns 0  frame 0
 +        TX packets 392  bytes 42659 (41.6 KiB)
 +        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +==== Fail2ban ====
 +
 +On vérifie que le pare-feu //​Fail2ban//​ soit installé.
 +
 +<​file>​
 +[[email protected] ~]# rpm -qa | grep -i fail2ban
 +
 +fail2ban-firewalld-0.9.7-1.el7.noarch
 +fail2ban-server-0.9.7-1.el7.noarch
 +fail2ban-0.9.7-1.el7.noarch
 +fail2ban-sendmail-0.9.7-1.el7.noarch
 +fail2ban-shorewall-0.9.7-1.el7.noarch
 +nethserver-fail2ban-1.1.10-1.ns7.noarch
 +[[email protected] ~]#
 +</​file>​
 +
 +On vérifie que //​Fail2ban//​ roule sur le serveur.
 +
 +<​file>​
 +[[email protected] ~]# ps aux | grep -i fail2ban
 +
 +root      2305  2.0  0.5 1746708 20008 ?       ​Sl ​  ​14:​36 ​  0:07 /​usr/​bin/​python2 -s /​usr/​bin/​fail2ban-server -s /​var/​run/​fail2ban/​fail2ban.sock -p /​var/​run/​fail2ban/​fail2ban.pid -x -b
 +root      2969  0.0  0.0 112708 ​  984 pts/0    S+   ​14:​42 ​  0:00 grep --color=auto -i fail2ban
 +[[email protected] ~]#
 +</​file>​
 +
 +==== ClamAV ====
 +
 +Par défaut //ClamAV// est installé, mais partiellement,​ et s'​occupe seulement du balayage des courriels.
 +
 +Dans le **
 +[[nethserver_101_cahier_03_creation_un_serveur_virtuel#​ClamAV|Cahier-03]]
 +:** //Création d'un Serveur NethServer virtuel// du "Cours NethServer-101",​ nous avons installé //ClamAV// qui s'​occupe aussi du balayage du système de fichiers.
 +
 +On vérifie que l'​antivirus //ClamAV// pour le système de fichiers soit installé.
 +
 +<​file>​
 +[[email protected] ~]# rpm -qa | grep -i clamav
 +
 +clamav-filesystem-0.101.4-1.el7.noarch
 +clamav-lib-0.101.4-1.el7.x86_64
 +clamav-0.101.4-1.el7.x86_64
 +clamav-update-0.101.4-1.el7.x86_64
 +clamav-unofficial-sigs-5.6.2-7.el7.noarch
 +[root[email protected] ~]#
 +</​file>​
 +
 +{{ Images_Cahier-201-02-019.png?​600}}
 +**Configuration -> Scanner Antivirus ->** onglet **Clamscan**.
 +
 +//ClamAV// lancera un balayage complet du système à **//​01h00//​**.
 +<WRAP clear></​WRAP>​
 +
 +===== Utilisateurs =====
 +
 +{{ Images_Cahier-301-02-015.png?​600}}
 +**Gestion -> Utilisateurs et groupes ->** onglet **Utilisateurs**.
 +
 +L'​utilisateur __michelandre__ a été créé dans le ** 
 +[[nethserver_101_cahier_03_creation_un_serveur_virtuel#​Nouvel utilisateur|Cahier-03]]
 +:** //Création d'un Serveur NethServer virtuel// du "Cours NethServer-101"​.
 +
 +Les utilisateurs **__toto__** et **__titi__** ont été créés dans le **
 +[[nethserver_201_cahier_08_self_service_password|Cahier-201-08]]
 +:** //​NethServer & Self Service Password// du "Cours NethServer-201"​.
 +\\ 
 +\\
 +
 +{{ Images_Cahier-201-08-014.png?​600}}
 +==== Groupes ====
 +
 +Le groupe **__grp-utilisateurs__** a été créé dans le **
 +[[nethserver_201_cahier_08_self_service_password|Cahier-201-08]]
 +:** //​NethServer & Self Service Password// du "Cours NethServer-201"​.
 +
 +Il contient deux membres: **__toto__** et **__titi__**.
 +<WRAP clear></​WRAP>​
 +
 +==== Répertoires personnels ====
 +
 +On vérifie les répertoires personnels.
 +
 +<​file>​
 +[[email protected] ~]# ls -ls /​var/​lib/​nethserver/​home
 +
 +total 0
 +0 drwx------ 2 [email protected] [email protected] 83 20 oct.  18:02 michelandre
 +0 drwx------ 2 [email protected] ​       [email protected] 83 20 oct.  18:02 titi
 +0 drwx------ 2 [email protected] ​       [email protected] 83 20 oct.  18:01 toto
 +[[email protected] ~]#
 +</​file>​
 +
 +==== Répertoires des courriels ====
 +
 +On vérifie les répertoires des courriels.
 +
 +<​file>​
 +[[email protected] ~]# ls -ls /​var/​lib/​nethserver/​vmail
 +
 +total 4
 +0 drwx------ 3 vmail vmail 21 19 avril  2019 [email protected]
 +0 drwx------ 3 vmail vmail 21 19 avril  2019 [email protected]
 +0 drwx------ 3 vmail vmail 21  8 janv.  2019 root
 +4 -rw------- 1 vmail vmail 73 14 oct.  11:35 shared-mailboxes.db
 +0 drwx------ 3 vmail vmail 21 14 oct.  17:20 [email protected]
 +0 drwx------ 3 vmail vmail 21 14 oct.  17:19 [email protected]
 +0 drwx------ 3 vmail vmail 21  8 janv.  2019 vmail
 +0 drwx------ 3 vmail vmail 21 19 avril  2019 [email protected]
 +[[email protected] ~]#
 +</​file>​
 +\\ 
 +
 +===== Vérification de la configuration du réseau =====
 +
 +**Configuration ​ ->  Réseau ​ ->​** ​ cartes réseau **VERT** et **ROUGE** et onglet **Serveurs DNS**.
 +
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-08-018.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-08-019.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-08-020.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +\\
 +
 +===== Collection PHP =====
 +
 +<WRAP column 30%>
 +Version //PHP// par défaut.
 +
 +**Configuration -> Paramètres PHP ->** onglet **Version PHP Apache**.
 +</​WRAP>​
 +<WRAP column 60%>
 +|{{ Images_Cahier-301-02-016.png?​650 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 30%>
 +Ajustements des paramètres de la version //​PHP-7.2//​.
 +
 +**Configuration -> Paramètres PHP ->** onglet **Php V7.2 SCL**.
 +
 +{{Images_icone-201-006_Securite.png?​25}} //**Allow PHP access to remote files**// est un bris de sécurité.
 +</​WRAP>​
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-08-022.png?​700 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 30%>
 +Paramètres de la version par défaut de //PHP//.
 +
 +**Configuration -> Paramètres PHP ->** onglet **Version par défaut de PHP**.
 +
 +{{Images_icone-201-006_Securite.png?​25}} //**Allow PHP access to remote files**// est un bris de sécurité.
 +</​WRAP>​
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-08-023.png?​700 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +=== Vérifications à la ligne de commande ===
 +
 +Quel est le //PHP// par défaut?
 +
 +<​file>​
 +[[email protected] ~]# which php
 +
 +/​opt/​remi/​php72/​root/​usr/​bin/​php
 +[[email protected] ~]#
 +</​file>​
 +
 +Quelle est sa version?
 +
 +<​file>​
 +[[email protected] ~]# php --version
 +
 +PHP 7.2.24 (cli) (built: Oct 22 2019 11:28:13) ( NTS )
 +Copyright (c) 1997-2018 The PHP Group
 +Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
 +    with Zend OPcache v7.2.24, Copyright (c) 1999-2018, by Zend Technologies
 +[[email protected] ~]#
 +</​file>​
 +
 +MemoryLimit.
 +
 +<​file>​
 +[[email protected] ~]# cat /​etc/​opt/​remi/​php72/​php.ini | grep -i Memory_Limit
 +
 +memory_limit ​                          = 250M
 +[[email protected] ~]#
 +</​file>​
 +
 +PostMaxSize.
 +
 +<​file>​
 +[[email protected] ~]# cat /​etc/​opt/​remi/​php72/​php.ini | grep -i post_max_size
 +
 +post_max_size ​                         = 100M
 +[[email protected] ~]#
 +</​file>​
 +
 +UploadMaxFilesize.
 +
 +<​file>​
 +[[email protected] ~]# cat /​etc/​opt/​remi/​php72/​php.ini | grep -i upload_max_filesize
 +
 +upload_max_filesize ​                   = 75M
 +</​file>​
 +
 +{{Images_icone-201-004_Triangle.png?​25}} Comme on le voit ci-dessus, les grandeurs maximales pour //PHP-7.2// sont maintenant de: ''​MemoryLimit''​ //(250M)// <wrap em>></​wrap>​ ''​PostMaxSize''​ //(100M)// <wrap em>></​wrap>​ ''​UploadMaxFilesize''​ //(75M)//.
 +\\ 
 +
 +On vérifie la configuration de //​PHP-7.2//​.
 +
 +<​file>​
 +[[email protected] ~]# config show php72
 +
 +php72=configuration
 +    AllowUrlFopen=Off
 +    ExposePhp=0
 +    MaxExecutionTime=30
 +    MaxFileUpload=20
 +    MaxInputTime=60
 +    MemoryLimit=250
 +    PostMaxSize=100
 +    UploadMaxFilesize=75
 +[[email protected] ~]#
 +</​file>​
 +
 +===== À surveiller =====
 +
 +{{Images_Cahier-101-03-003.png?​22}} {{Images_Cahier-101-03-003.png?​22}} Si on utilise une machine virtuelle, il faut absolument que les cartes réseau aient le **//Mode promiscuité//​** à **Tout autoriser**.
 +
 +<WRAP column 46%>
 +|{{ Images_Cahier-301-02-017.png?​500 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +|{{ Images_Cahier-301-02-018.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?​25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +\\ 
 +
 +====== Exportation des Question/​Réponse ======
 +
 +===== Prérequis =====
 +
 +{{Images_Cahier-101-03-006.png?​25}} L'​administrateur du //Serveur NethServer//​ doit obligatoirement exiger, de tous les usagers, d'​utiliser la page de //Self Service Password// //​(https://​www.micronator-dev.org/​ssp)//​ afin de choisir une question et de fournir une réponse personnelle __<wrap em>​avant</​wrap>​__ l'​installation d'//​Active Directory// comme //​Fournisseur des comptes//.
 +
 +{{Images_Cahier-101-03-006.png?​25}} De plus, tous les utilisateurs doivent s'​être connectés au moins une fois à //Webmail// afin que leur répertoire de messagerie soit créé, sinon ces utilisateurs ne seront pas transférés dans //Active Directory//​.
 +\\ 
 +
 +===== Sécurité =====
 +
 +  - Parce que //LDAP// et //Active Directory// n'​utilisent pas le même algorithme de chiffrement,​ on ne peut pas chiffrer la Question/​Réponse de //Self Service Password//.
 +  - {{Images_Cahier-101-03-008.png?​25}} Parce que tout le monde peut afficher les paramètres d'un utilisateur avec la commande ''​ldapsearch'':​
 +
 +<​file>​
 +[[email protected]@tchana ~]$ ldapsearch -Y EXTERNAL | grep -e "#"​ -e info:
 +
 +...
 +# titi, People, directory.nh
 +info: {voiture} Honda
 +...
 +[[email protected]@tchana ~]$
 +</​file>​
 +
 +  - Parce que nous n'​avons pas trouvé de cas où la commande ''​ldapsearch''​ était absolument requise.
 +
 +{{Images_Cahier-101-03-003.png?​22}} Pour ces raisons, l'​administrateur du //Serveur NethServer//​ peut restreindre la commande ''​ldapsearch''​ à l'​utilisateur **__root__** uniquement avant d'​exiger d'​utiliser la page de //Self Service Password// afin de choisir une Question/​Réponse __<wrap em>avant l'​installation d'//​Active Directory//</​wrap>​__.
 +
 +<​file>​
 +[[email protected] ~]# chmod 700 /​usr/​bin/​ldapsearch
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +On vérifie.
 +
 +<​file>​
 +[[email protected] ~]# ls -ls /​usr/​bin/​ldapsearch
 +
 +84 -rwx------ 1 root root 85928 29 janv.  2019 /​usr/​bin/​ldapsearch
 +[[email protected] ~]#
 +</​file>​
 +\\ 
 +
 +===== Vérification du nombre de Q/R =====
 +
 +On cherche le nombre d'​utilisateurs dans notre annuaire //LDAP//.
 +
 +<​file>​
 +[[email protected] ~]# ldapsearch -Y EXTERNAL ​ -b dc=directory,​dc=nh "​uid=*"​ uid | grep uid: | wc -l
 +
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +4
 +[[email protected] ~]#
 +</​file>​
 +
 +Nous avons 4 utilisateurs.
 +
 +On peut afficher leur identifiant.
 +
 +<​file>​
 +[[email protected] ~]# ldapsearch -Y EXTERNAL ​ -b ou=People,​dc=directory,​dc=nh "​uid=*"​ uid | grep uid:
 +
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +uid: admin
 +uid: michelandre
 +uid: toto
 +uid: titi
 +[[email protected] ~]#
 +</​file>​
 +
 +On vérifie le nombre de réponses. Elles sont stockées dans l'​attribut **//​info//​**.
 +
 +<​file>​
 +[[email protected] ~]# ldapsearch -Y EXTERNAL | grep "​info:"​ | wc -l
 +
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +2
 +[[email protected] ~]#
 +</​file>​
 +
 +Nous avons 2 utilisateurs qui ont une réponse à une question.
 +
 +{{Images_icone-201-003_Note.png?​25}} L'​utilisateur **__admin__** n'a pas de Question/​Réponse,​ car il ne peut changer son mot de passe avec //Self Service Password//​.\\ ​
 +{{Images_Cahier-101-03-006.png?​25}} Il existe donc un utilisateur qui n'a pas utilisé //SSP// pour se choisir une Question/​Réponse.
 +
 +On vérifie quels sont nos usagers qui ont choisi, ou non, une Question/​Réponse.
 +
 +<​file>​
 +[[email protected] ~]# ldapsearch -Y EXTERNAL | grep -e "# " -e info:
 +
 +...
 +# admin, People, directory.nh
 +# domain admins, Groups, directory.nh
 +# michelandre,​ People, directory.nh
 +info: {voiture}MG
 +# toto, People, directory.nh
 +info: {voiture}Honda
 +# titi, People, directory.nh
 +# grp-utilisateurs,​ Groups, directory.nh
 +# search result
 +# numResponses:​ 13
 +# numEntries: 12
 +[[email protected] ~]#
 +</​file>​
 +
 +{{Images_Cahier-101-03-006.png?​25}} On voit que seul l'​utilisateur **__titi__** n'a pas de Question/​Réponse. L'​administrateur système communique avec **__titi__** pour exiger de choisir une Question/​Réponse,​ car son mot de passe ne sera plus valide //(après l'​installation d'​Active Directory)//​.
 +\\ 
 +
 +===== Script d'​exportation des Q/R =====
 +
 +{{Images_Cahier-101-03-003.png?​22}} {{Images_Cahier-101-03-006.png?​25}} <wrap em>​Avertissement</​wrap>​ Si vous copiez ce script depuis le //PDF// de ce cahier, __les en-têtes et les pieds de page sont aussi inclus dans la copie__. Il faut coller le script dans //​NotePad++//​ et enlever les en-têtes et pieds de page.
 +
 +{{Images_Cahier-101-03-006.png?​25}} Prendre tout le contenu de l'​encadré pour le script ''/​root/​exportation-qestion-reponse.sh''​.
 +
 +<​file>​
 +#!/bin/bash
 +
 +# Script qui estraie tous les utilisateurs de LDAP et qui on une réponse à une question
 +# qu'ils peuvent utiliser pour changer leur mot de passe sans devoir à fournir leur mot de
 +# passe original et en utilisant SSP - Self Service Password.
 +# À la fin du script, le fichier exportation.ldif contient tous les enregistrements pour une
 +# importation de la réponse de chaque utilisateur dans Active Directory.
 +# Michel-André:​ 2019-11-10_21h32 HNE
 +# 2019-11-11_11h54 Ajout des (\") parce que micronator-dev contien un (-).
 +# 2019-12-20_16h11 Il faut que tous les utilisateurs se soient logués, au moins une fois,
 +# avec Webmail afin de créer leur répertoire de messagerie électronique,​ sinon ils
 +# ne seront pas exportés avec ce script.
 +
 +## Fonction pour l'​entrée des données de l'​utilsateur dans le fichier LDIF
 +ad-toto () {
 +    # Le premier paramètre est le nom de l'​usager qui est passé avec l'​appel de
 +    # la fonction
 +    USAGER_LDAP=$1
 +    ​
 +    # Recherche et isolation de tous les paramètres de l'​usager dans LADP 
 +    ldapsearch -Y EXTERNAL | grep "uid: $USAGER_LDAP"​ -A100 -B5 > utilisateurs.txt ; awk -v RS= '1; NR == 1 { exit }' utilisateurs.txt > $USAGER_LDAP.txt
 +
 +    # Isolation de la ligne contenant le paramètre de la Question et remplacememsnt
 +    # de "​info"​ par "​comment"​ qui est requis par AD
 +    COMMENTAIRE=`cat $USAGER_LDAP.txt | grep "​info:"​ | sed -e '​s/​info/​comment/​g'​ `
 +    ​
 +    # Isolation du nom de l'​usager
 +    NOM_USAGER=`cat $USAGER_LDAP.txt | grep "uid: " | sed -e '​s/​uid\:​ //g' `
 +    ​
 +    # Assemblage du DN de l'​usager
 +    # Il faut mettre des guillemets (") avec un (\) devant comme "​Escape character"​
 +    # parce que micronator-dev contient un (-).
 +    DN="​dn:​ cn=$NOM_USAGER,​cn=Users,​dc=ad,​dc=\"​micronator-dev\",​dc=org"​
 +
 +    # Création de chaque ligne pour le fichier LDIF d'​exportation
 +    LIGNE1="​$DN"​
 +    LIGNE2="​changetype:​ modify"​
 +    # À la ligne-3, on ajoute (add) le paramètre "​comment"​
 +    LIGNE3="​add:​ comment"​
 +    LIGNE4="​$COMMENTAIRE"​
 +
 +    # Si l'​usager n'a pas une Question à son actif, la fonction retourne.
 +    # Surtout utilisé pour rejeter "​admin"​ et "​Administrator"​.
 +    # Si l'​usager n'a pas de "​Question"​ une ligne en ROUGE est affichée.
 +    if [ -z "​$COMMENTAIRE" ​ ]
 +        then
 +        echo -e "​\e[31mL'​ussager $NOM_USAGER n'a pas de question...\n\e[0m"​
 +        rm -rf $USAGER_LDAP.txt
 +        return
 +    fi
 +    ​
 +    # Écriture des lignes pour cet usager dans le fichier LDIP.
 +    echo -e $LIGNE1 >> exportation.ldif 2>&1
 +    echo -e $LIGNE2 >> exportation.ldif 2>&1
 +    echo -e $LIGNE3 >> exportation.ldif 2>&1
 +    echo -e "​$LIGNE4\n"​ >> exportation.ldif 2>&1
 +    rm -rf $USAGER_LDAP.txt
 +}
 +## Fin de la fonction "​ad-toto"​
 +
 +## Début du script
 +# On se rend dans le dossier des répertoires de messagerie
 +cd /​var/​lib/​nethserver/​vmail
 +
 +# On extraie le nom de tous les utilisateurs depuis LDAP
 +getent passwd * | cut -f6 -d: | cut -f6 -d/ > /​root/​temp.txt
 +
 +# On retourne dans le répertoire personnel de "​root"​
 +cd /root
 +
 +# On supprime les lignes vide dans le fichier /​root/​temp.txt
 +sed -i '/​^$/​d'​ /​root/​temp.txt
 +
 +# On débute avec un nouveau fichier LDIF
 +rm -rf exportation.ldif
 +touch /​root/​exportation.ldif
 +
 +# Boucle pour l'​insertion des paramètres à changer pour chaque utilisateur
 +while read p; do
 +    # Appel de la fonctio ad-toto
 +    ad-toto "​$p"​
 +done < /​root/​temp.txt
 +
 +# Nettoyage final
 +# Suppression des fichiers intermédiaires.
 +# Mettre en commentaire les lignes ci-dessous pour déverminer ce script.
 +rm -rf utilisateurs.txt
 +rm -rf $USAGER_LDAP.txt
 +rm -rf temp.txt
 +
 +# On indique que le script est terminé.
 +echo -e "​\e[31mLe script est terminé.\n\e[0m"​
 +
 +# FIN DU SCRIPT exportation-qestion-reponse.sh
 +
 +</​file>​
 +
 +==== Lancement du script ====
 +
 +On téléverse le fichier ''​exportation-qestion-reponse.sh''​ dans le répertoire ''/​root''​ du //Serveur NethServer//​.
 +
 +On ajuste les droits du fichier.
 +
 +<​file>​
 +[[email protected] ~]# chmod 700 exportation-qestion-reponse.sh
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +On vérifie.
 +
 +<​file>​
 +[[email protected] ~]# ls -als exportation-qestion-reponse.sh
 +
 +4 -rwx------ 1 root root 3391  1 déc.  09:46 exportation-qestion-reponse.sh
 +[[email protected] ~]#
 +</​file>​
 +
 +On lance le script.
 +
 +<​file>​
 +[[email protected] ~]# /​root/​exportation-qestion-reponse.sh
 +
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +Le script est terminé.
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +{{Images_Cahier-101-03-006.png?​25}} Si un utilisateur n'a pas de Question/​Réponse,​ lors du lancement de la commande, une ligne en <wrap em>​rouge</​wrap>​ l'​affichera. Ci-dessous, la ligne ''​L'​ussager admin n'a pas de question...''​ sera en rouge.
 +
 +<​file>​
 +[[email protected] ~]# /​root/​exportation-qestion-reponse.sh
 +
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +L'​ussager admin n'a pas de question...
 +
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +SASL/​EXTERNAL authentication started
 +SASL username: gidNumber=0+uidNumber=0,​cn=peercred,​cn=external,​cn=auth
 +SASL SSF: 0
 +Le script est terminé.
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +{{Images_icone-201-003_Note.png?​25}} Il est normal que l'​utilisateur **__admin__** n'ait pas de Question/​Réponse,​ car il ne peut modifier son mot de passe avec //Self Service Password//.
 +
 +==== Fichier d'​exportation LDIF créé par le script ====
 +
 +<​file>​
 +[[email protected] ~]# cat /​root/​exportation.ldif
 +
 +dn: cn=michelandre,​cn=Users,​dc=ad,​dc="​micronator-dev",​dc=org
 +changetype: modify
 +add: comment
 +comment: {voiture}MG
 +
 +dn: cn=titi,​cn=Users,​dc=ad,​dc="​micronator-dev",​dc=org
 +changetype: modify
 +add: comment
 +comment: {saison}Un printemps doux
 +
 +dn: cn=toto,​cn=Users,​dc=ad,​dc="​micronator-dev",​dc=org
 +changetype: modify
 +add: comment
 +comment: {voiture}Honda
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +{{Images_Cahier-101-03-006.png?​25}} Remarquez la réponse de l'​utilisateur **__titi__**. Elle est longue et contient plusieurs mots.
 +\\ 
 +\\ 
 +
 +====== Le concept de Domaine ======
 +
 +===== Le concept de Domaine chez Microsoft =====
 +
 +//​Référence://​ [[http://​fr.wikipedia.org/​wiki/​Domaine_(Microsoft)|http://​fr.wikipedia.org/​wiki/​Domaine_%28Microsoft%29]].
 +
 +Chez Microsoft, un domaine est une entité logique vue comme une enveloppe étiquetée. Il reflète le plus souvent une organisation hiérarchique dans une entreprise. Par exemple, le domaine "​COMPTA"​ désigne l'​ensemble des machines réseau //​(stations,​ imprimantes,​ etc..)// du service //​Comptabilité//,​ et les comptes utilisateurs qui sont autorisés à s'y connecter.
 +
 +Le domaine permet à l'​administrateur système de gérer plus efficacement les utilisateurs des stations déployées au sein de l'​entreprise,​ car toutes ces informations sont centralisées dans une même base de données.
 +
 +Cette base de données est stockée sur des serveurs particuliers //​([[http://​fr.wikipedia.org/​wiki/​Microsoft_Windows_NT|Windows Server NT4]], [[http://​fr.wikipedia.org/​wiki/​Windows_2000|2000]],​ [[http://​fr.wikipedia.org/​wiki/​Windows_Server_2003|2003]])//,​ appelés //​Contrôleurs de Domaine// //(Domain Controller)//​.
 +\\ 
 +
 +===== Qu’est-ce qu’un domaine Windows? =====
 +
 +//​Référence://​ [[http://​www.questcequecest.com/​quest-ce-quun-domaine-windows/​|http://​www.questcequecest.com/​quest-ce-quun-domaine-windows/​]]. //(Ce lien n'est plus valide.)//
 +
 +Dans un groupe de travail Windows, l’accès à un ordinateur exige une authentification par rapport à la base des comptes de l’ordinateur. Cette base est stockée dans un fichier intitulé //SAM// //(Security Account Manager)//.
 +
 +Si le groupe de travail est constitué de 10 ordinateurs avec un utilisateur par ordinateur et que tous les utilisateurs doivent accéder à tous les ordinateurs,​ l’administrateur doit créer 100 comptes au total. C’est d’autant plus lourd que l’opération doit être renouvelée partiellement lors de la perte d’un mot de passe.
 +
 +Pour remédier à cette lourdeur, Microsoft propose d’utiliser un //PDC// //(Primary Domain Controller)//​. Un //PDC// centralise la base des comptes dans un fichier intitulé ''​NTDS.DIT''​. Cette base des comptes contient, entre autres informations,​ les comptes des ordinateurs qui font partie du domaine et les comptes des utilisateurs qui sont membres de ce domaine.
 +\\ 
 +
 +===== Rôle du Contrôleur de Domaine =====
 +
 +//​Référence://​ [[https://​msdn.microsoft.com/​fr-fr/​library/​cc779648(v=ws.10).aspx|https://​msdn.microsoft.com/​fr-fr/​library/​cc779648%28v=ws.10%29.aspx]].
 +
 +Les contrôleurs de domaine stockent les données et gèrent les interactions entre l'​utilisateur et le domaine, y compris les processus d'​ouverture de session, l'​authentification et les recherches dans l'​annuaire. Si vous envisagez d'​utiliser ce serveur pour fournir le service d'​annuaire //Active Directory// aux utilisateurs et aux ordinateurs du réseau, configurez-le en tant que //​Contrôleur de Domaine//.
 +\\ 
 +\\ 
 +
 +====== Contrôleur primaire de Domaine (PDC) ======
 +
 +===== Description =====
 +
 +Dans le rôle de //​Contrôleur primaire de Domaine//, un //Serveur NethServer//​ fonctionne tel un contrôleur de domaine de style Windows NT4, fournissant:​ une authentification client/​utilisateur,​ les services //WINS//, la gestion des profils d'​utilisateurs Windows et les services d'​impression.
 +
 +===== Mise à jour =====
 +
 +Il est fortement recommandé de mettre à jour le //Serveur NethServer//​ avant l'​installation d'un module important.
 +
 +===== Fournisseur des comptes =====
 +
 +On supprime le fournisseur des comptes actuel - //LDAP//.
 +
 +<WRAP column 46%>
 +**Configuration -> Fournisseur des comptes -> Uninstall**.
 +|{{ Images_Cahier-301-02-019.png?​500 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +**Uninstall**.
 +|{{ Images_Cahier-301-02-020.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 30%>
 +On s'​assure du succès de l'​opération.
 +</​WRAP>​
 +<WRAP column 62%>
 +|{{ Images_Cahier-301-02-021.png?​600 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +\\
 +
 +===== Vérification de l'​exportation des utilisateurs/​groupes =====
 +
 +On vérifie la présence des fichiers des exportation.
 +
 +<​file>​
 +[email protected] ~]# ls -ls /​var/​lib/​nethserver/​backup/​*.tsv
 +
 +4 -rw-r--r-- 1 root root  59 28 nov.  17:30 /​var/​lib/​nethserver/​backup/​groups.tsv
 +4 -rw-r--r-- 1 root root 110 28 nov.  17:30 /​var/​lib/​nethserver/​backup/​users.tsv
 +[[email protected] ~]#
 +</​file>​
 +
 +On affiche le fichier d'​exportation des utilisateurs.
 +
 +<​file>​
 +[[email protected] ~]# cat /​var/​lib/​nethserver/​backup/​users.tsv
 +
 +titi    Titi Deuxième ​  ​OEHv_W55
 +admin   ​admin ​  ​_1rbzdJS
 +michelandre ​    ​Michel-Andre ​   C7_zj6Bs
 +toto    Tot Premier ​    ​b8ga_J0p
 +[[email protected] ~]#
 +</​file>​
 +
 +On affiche le fichier d'​exportation des groupes.
 +
 +<​file>​
 +[[email protected] ~]# cat /​var/​lib/​nethserver/​backup/​groups.tsv
 +
 +grp-utilisateurs ​       titi    toto
 +domain admins ​  ​admin ​  ​michelandre
 +[[email protected] ~]#
 +</​file>​
 +\\ 
 +
 +===== Nom de domaine NetBIOS =====
 +
 +//​Référence://​ [[https://​support.microsoft.com/​en-ca/​help/​909264/​naming-conventions-in-active-directory-for-computers-domains-sites-and|https://​support.microsoft.com/​en-ca/​help/​909264/​naming-conventions-in-active-directory-for-computers-domains-sites-and]]
 +
 +==== Caractères autorisés ====
 +
 +Les noms de domaine //NetBIOS// peuvent contenir tous les caractères alphanumériques à l'​exception des caractères étendus répertoriés dans la section //​Caractères interdits//​. Les noms peuvent contenir un point, mais ils ne peuvent pas commencer par un point.
 +
 +==== Caractères interdits ====
 +
 +Les noms //NetBIOS// des ordinateurs ne peuvent pas contenir les caractères suivants:
 +
 +  - barre oblique inverse //​(<​nowiki>​\</​nowiki>​)//​
 +  - barre oblique //(/)//
 +  - deux points //(:)//
 +  - astérisque //(*)//
 +  - point d'​interrogation //(?)//
 +  - Guillemet //​("​)//​
 +  - caractère plus petit que //(<)//
 +  - caractère plus grand que //(>)//
 +  - barre verticale //(|)//
 +
 +Les noms peuvent contenir un point //(.)//. Cependant, le nom ne peut pas commencer par un point. L'​utilisation de noms //non-DNS// avec des points est autorisée dans Microsoft Windows NT. Toutefois, les points ne doivent pas être utilisés dans les domaines //Active Directory//​. Si vous mettez à niveau un domaine dont le nom //NetBIOS// contient un point, modifiez le nom en migrant le domaine vers une nouvelle structure de domaine. N'​utilisez pas de points dans les nouveaux noms de domaine //​NetBIOS//​.
 +
 +Avec Windows 2000 et les versions ultérieures de Windows, les ordinateurs membres d'un domaine //Active Directory// ne peuvent pas avoir des noms entièrement composés de caractères numériques. Cette restriction est due aux restrictions //DNS//.
 +
 +==== Longueur maximale du nom ====
 +
 +15 caractères.\\ ​
 +//​Remarque://​ le 16ème caractère est réservé pour identifier la fonctionnalité installée sur le périphérique réseau enregistré.
 +
 +==== Tableau de mots réservés ====
 +
 +^Mots réservés pour les noms^Windows NT 4.0^Windows 2000^Windows Server 2003 et ultérieur|
 +|ANONYMOUS|X|X|X|
 +|AUTHENTICATED USER| |X|X|
 +|BATCH|X|X|X|
 +|BUILTIN|X|X|X|
 +|CREATOR GROUP|X|X|X|
 +|CREATOR GROUP SERVER|X|X|X|
 +|CREATOR OWNER|X|X|X|
 +|CREATOR OWNER SERVER|X|X|X|
 +|DIALUP|X|X|X|
 +|DIGEST AUTH| | |X|
 +|INTERACTIVE|X|X|X|
 +|INTERNET| |X|X|
 +|LOCAL|X|X|X|
 +|LOCAL SYSTEM| | |X|
 +|NETWORK|X|X|X|
 +|NETWORK SERVICE| | |X|
 +|NT AUTHORITY|X|X|X|
 +|NT DOMAIN|X|X|X|
 +|NTLM AUTH| | |X|
 +|NULL|X|X|X|
 +|PROXY| |X|X|
 +|REMOTE INTERACTIVE| | |X|
 +|RESTRICTED| |X|X|
 +|SCHANNEL AUTH| | |X|
 +|SELF| |X|X|
 +|SERVER| |X|X|
 +|SERVICE|X|X|X|
 +|SYSTEM|X|X|X|
 +|TERMINAL SERVER| |X|X|
 +|THIS ORGANIZATION| | |X|
 +|USERS| | |X|
 +|WORLD|X|X|X|
 +
 +===== Noms de domaine DNS =====
 +
 +==== Caractères autorisés ====
 +
 +Les noms //DNS// ne peuvent contenir que des caractères alphabétiques //(A à Z)//, des caractères numériques //(0 à 9)//, le signe moins //(-)// et le point //(.)//. Les caractères de point ne sont autorisés que lorsqu'​ils sont utilisés pour délimiter les composants des noms de style de domaine.
 +
 +Dans le système de noms de domaine Windows 2000 et dans le système //DNS// Microsoft Windows Server 2003, l’utilisation des caractères //Unicode// est prise en charge. Les autres implémentations de //DNS// ne prennent pas en charge les caractères //​Unicode//​. Évitez les caractères //Unicode// si les requêtes sont transmises à des serveurs qui utilisent des implémentations //DNS// non-Microsoft.
 +
 +==== Caractères non autorisés ====
 +
 +Les noms de domaine //DNS// ne peuvent pas contenir les caractères suivants:
 +
 +  - virgule //(,)//
 +  - tilde //(~)//
 +  - deux points (:)
 +  - point d'​exclamation //(!)//
 +  - arobase //(@)//
 +  - signe numérique //(#)//
 +  - signe dollar //($)//
 +  - pour cent //(%)//
 +  - caret //(^)//
 +  - esperluette //(&)//
 +  - apostrophe //​('​)//​
 +  - point //(.)//
 +  - parenthèses //<​nowiki>​(())</​nowiki>//​
 +  - accolades //({})//
 +  - souligner //(_)//
 +  - espace blanc //(vide)//
 +
 +Le trait de soulignement a un rôle spécial, car il est autorisé pour le premier caractère des enregistrements //SRV// par la définition //RFC//, mais les serveurs //DNS// les plus récents peuvent également le permettre n'​importe où dans un nom.
 +
 +Lors de la promotion d'un nouveau domaine, vous recevez un avertissement indiquant qu'un caractère de soulignement peut entraîner des problèmes avec certains serveurs //DNS//, mais il vous permet de créer le domaine.
 +
 +==== Plus de règles ====
 +
 +  - Tous les caractères conservent leur casse, à l'​exception des caractères //ASCII//.
 +  - Le premier caractère doit être alphabétique ou numérique.
 +  - Le dernier caractère ne doit pas être un signe moins ou un point.
 +
 +=== Longueur minimale du nom ===
 +
 +2 caractères.
 +
 +=== Longueur maximale du nom ===
 +
 +255 caractères.
 +
 +La longueur maximale du nom d'​hôte et du nom de domaine complet //(FQDN)// est de 63 octets par étiquette et de 255 caractères par //FQDN//. Ce dernier est basé sur la longueur de chemin maximale possible avec un nom de domaine //Active Directory// avec les chemins nécessaires dans //SYSVOL//, ce qui doit respecter la limite de 260 caractères //​MAX_PATH//​.
 +
 +Un exemple de chemin dans //SYSVOL// contient: ''​\\<​FQDN nom du domaine>​\sysvol\<​FQDN nom du domaine>​\policies\{<​policy GUID>​}\[usager|machine]\<​chemin spécifique au CSE>''​. Le "​chemin spécifique au //​CSE//"​ peut contenir des entrées d'​utilisateur telles que le nom du fichier de script d'​ouverture de session. Par conséquent,​ il peut également atteindre une longueur importante.
 +
 +Le nom de domaine //FQDN AD// apparaît deux fois dans le chemin d'​accès,​ car la longueur d'un nom de domaine //FQDN AD// est limitée à 64 caractères.
 +\\ 
 +
 +===== Installation de modules PHP pour AD =====
 +
 +<​file>​
 +[[email protected] ~]# yum install -y  nethserver-rh-php72-php-fpm ​ php72-php-ldap ​ php-mbstring ​ php-mcrypt
 +
 +...
 +Le paquet php72-php-ldap-7.2.24-1.el7.remi.x86_64 est déjà installé dans sa dernière version
 +Le paquet php-mbstring-5.4.16-46.el7.x86_64 est déjà installé dans sa dernière version
 +...
 +Résumé de la transaction
 +============================================================================================
 +Installation ​  2 Paquets (+10 Paquets en dépendance)
 +
 +Taille totale des téléchargements : 6.9 M
 +Taille d'​installation : 23 M
 +...
 +Installé :
 +  nethserver-rh-php72-php-fpm.noarch 0:​1.0.0-1.ns7 ​    ​php-mcrypt.x86_64 0:​5.4.16-9.el7
 +
 +Dépendances installées :
 +  rh-php72.x86_64 0:​1-2.el7 ​                     rh-php72-php-cli.x86_64 0:​7.2.10-3.el7
 +  rh-php72-php-common.x86_64 0:​7.2.10-3.el7 ​     rh-php72-php-fpm.x86_64 0:​7.2.10-3.el7
 +  rh-php72-php-json.x86_64 0:​7.2.10-3.el7 ​       rh-php72-php-pear.noarch 1:​1.10.5-1.el7
 +  rh-php72-php-process.x86_64 0:​7.2.10-3.el7 ​    ​rh-php72-php-xml.x86_64 0:​7.2.10-3.el7
 +  rh-php72-php-zip.x86_64 0:​7.2.10-3.el7 ​        ​rh-php72-runtime.x86_64 0:1-2.el7
 +
 +Terminé !
 +[[email protected] ~]#
 +</​file>​
 +\\ 
 +
 +===== Installation d'​Active Directory comme fournisseur des comptes =====
 +
 +//​Référence://​ [[https://​community.nethserver.org/​t/​howto-install-nethserver-as-samba-ad-domain-controller-v0-2/​9076|https://​community.nethserver.org/​t/​howto-install-nethserver-as-samba-ad-domain-controller-v0-2/​9076]].
 +
 +<WRAP column 32%>
 +{{Images_icone-201-003_Note.png?​25}} Le contrôleur de domaine //(DC)// roulera dans un conteneur, car le port 53 est déjà utilisé afin de contourner l'​incompatibilité de ''​dnsmasq''​ et de ''​kerberos''​. C'est pour cette raison qu'on utilisera une adresse //IP// dédiée à //AD//.
 +
 +L'​installation d'//​AD//​ va créer un pont ''​br0''​ vers l'​interface verte ''​enp0s3''​ pour le contrôleur de domaine.
 +</​WRAP>​
 +<WRAP column 60%>
 +|{{ Images_Cahier-301-02-022.png?​650 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 46%>
 +**Configuration -> Fournisseur des comptes -> Active Directory**.
 +|{{ Images_Cahier-301-02-023.png?​500 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +<​nowiki>​-</​nowiki>​ **Créer un nouveau domaine**.\\ ​
 +<​nowiki>​-</​nowiki>​ Prend plusieurs minutes, être patient!
 +|{{ Images_Cahier-301-02-024.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 30%>
 +<​nowiki>​-</​nowiki>​ On entre les informations demandées.\\ ​
 +<​nowiki>​-</​nowiki>​ **CREATE DOMAIN**.
 +|{{ Images_Cahier-301-02-025.png?​500 }}|
 +</​WRAP>​
 +<WRAP column 30%>
 +\\ 
 +Peut prendre un certain temps //​(minutes)//​...
 +|{{ Images_Cahier-301-02-026.png?​500 }}|
 +</​WRAP>​
 +<WRAP column 30%>
 +<​nowiki>​-</​nowiki>​ On vérifie les informations utilisées.\\ ​
 +<​nowiki>​-</​nowiki>​ **Activer l'​utilisateur admin**.
 +|{{ Images_Cahier-301-02-027.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +\\ 
 +
 +===== Activation de l'​utilisateur admin =====
 +
 +Pour activer le compte **__admin__**,​ définissez un mot de passe. Pensez également à activer le //shell// si l'​utilisateur **__admin__** doit accéder au nouveau gestionnaire de serveur.
 +
 +L'​utilisateur **__admin__** de //​NethServer//​ a changé de nom: de **__admin__** à **[email protected]__**.
 +
 +De plus, un nouvel administrateur a été créé: **[email protected]__** / **__Administrator__**.
 +
 +<WRAP column 30%>
 +{{Images_icone-201-003_Note.png?​25}} Un clef accolée au nom d'un utilisateur indique qu'il n'est pas activé //(il n'a pas de mot de passe)//​.\\ ​
 +Au bout de la ligne de l'​utilisateur **__Administrator__**,​ on clique **__Éditer__**.
 +</​WRAP>​
 +<WRAP column 62%>
 +|{{ Images_Cahier-301-02-028.png?​700 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 46%>
 +<​nowiki>​-</​nowiki>​ Onglet **Utilisateurs**.\\ ​
 +<​nowiki>​-</​nowiki>​ **Changer le mot de passe**.
 +|{{ Images_Cahier-301-02-029.png?​600 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +<​nowiki>​-</​nowiki>​ On donne un mot de passe __robuste__.\\ ​
 +<​nowiki>​-</​nowiki>​ **SOUMETTRE**.
 +|{{ Images_Cahier-301-02-030.png?​600 }}|
 +{{Images_Cahier-101-03-006.png?​25}} Ci-contre. on doit activer le //shell// si l'​utilisateur **__Administrator__** doit accéder au nouveau gestionnaire de serveur.
 +
 +Si on active **//Remote shell (SSH)//**, il faut cliquer **SOUMETTRE** avant de faire quoi que ce soit d'​autre.
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +{{Images_Cahier-101-03-006.png?​25}} On répète la procédure pour l'​utilisateur **__admin__**.
 +
 +<WRAP column 30%>
 +Nos deux administrateurs sont activés, car ils n'ont plus de clef accolée à leur nom.
 +</​WRAP>​
 +<WRAP column 62%>
 +|{{ Images_Cahier-301-02-031.png?​700 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +\\ 
 +
 +===== Autres utilisateurs/​groupes/​messagerie =====
 +
 +{{Images_icone-201-003_Note.png?​25}} Les utilisateurs et les groupes ont été exportés dans les fichiers //TSV// lors de la suppression de //LDAP// comme fournisseur des comptes tels que vérifiés à la section **
 +[[nethserver_301_cahier_02_active_directoty#​Vérification de l'​exportation des utilisateurs/​groupes|Vérification de l'​exportation des utilisateurs/​groupes]]
 +**.
 +
 +Le répertoire ''/​usr/​share/​doc/​nethserver-sssd-<​ver>/​scripts/''​ contient des scripts pour importer les utilisateurs,​ les groupes et les comptes de messagerie dans //AD//:
 +
 +<​file>​
 +[[email protected] ~]# ls -als /​usr/​share/​doc/​nethserver-sssd-1.4.8/​scripts/​
 +
 +total 20
 +0 drwxr-xr-x 2 root root  114 19 avril  2019 .
 +0 drwxr-xr-x 3 root root   54 19 avril  2019 ..
 +4 -rwxr-xr-x 1 root root 1322  4 mars   2019 delete_users
 +4 -rwxr-xr-x 1 root root 1125  4 mars   2019 fix_migration_home
 +4 -rwxr-xr-x 1 root root 2119  4 mars   2019 import_emails
 +4 -rwxr-xr-x 1 root root 1398  4 mars   2019 import_groups
 +4 -rwxr-xr-x 1 root root 2049  4 mars   2019 import_users
 +[[email protected] ~]#
 +</​file>​
 +
 +==== Importation des utilisateurs ====
 +
 +Dans //LDAP//, nous n'​avions seulement que quatre utilisateurs - **__admin__**,​ **__michelandre__**,​ **__toto__** et **__titi__**.
 +
 +On importe les anciens utilisateurs.
 +
 +<​file>​
 +[[email protected] ~]# /​usr/​share/​doc/​nethserver-sssd-1.4.8/​scripts/​import_users /​var/​lib/​nethserver/​backup/​users.tsv
 +
 +[INFO] imported titi as tit[email protected]
 +[ERROR] Account `admin` user-create event failed.
 +[INFO] imported michelandre as [email protected]
 +[INFO] imported toto as [email protected]
 +[[email protected] ~]#
 +</​file>​
 +
 +{{Images_icone-201-003_Note.png?​25}} Il est normal que l'​importation de l'​utilisateur **__admin__** donne une erreur, car cet utilisateur existe déjà dans //AD//.
 +
 +<WRAP column 46%>
 +On vérifie.
 +
 +**Gestion -> Utilisateurs et groupes ->** onglet **Utilisateurs**.
 +
 +Les utilisateurs ont bien été importés dans //AD//.
 +
 +À la droite de la ligne de l'​utilisateur **__michelandre__**,​ on clique **Éditer**.
 +</​WRAP>​
 +<WRAP column 46%>
 +|{{ Images_Cahier-301-02-032.png?​700 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 46%>
 +Décocher **Activer l'​expiration de mot de passe**.\\ ​
 +Par défaut, l'​importation coche cette case, elle ne l'​était pas dans __LDAP__.
 +
 +Cocher **Remote Shell (SSH)**.
 +
 +**SOUMETTRE**.
 +
 +{{Images_Cahier-101-03-006.png?​25}} Si on veut pouvoir exécuter certains tests, on édite les utilisateurs **__toto__** et **__titi__** et on leur coche **Remote Shell (SSH)**.
 +</​WRAP>​
 +<WRAP column 46%>
 +|{{ Images_Cahier-301-02-033.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +==== Importation des groupes ====
 +
 +On importe les groupes qui étaient présents dans //LDAP// et qui on été sauvegardés lors de sa suppression.
 +
 +<​file>​
 +[[email protected] ~]# /​usr/​share/​doc/​nethserver-sssd-1.4.8/​scripts/​import_groups /​var/​lib/​nethserver/​backup/​groups.tsv
 +
 +[INFO] imported '​grp-utilisateurs'​ with members 'titi toto'
 +[ERROR] Account `domain admins` group-create event failed.
 +[[email protected] ~]#
 +</​file>​
 +
 +{{Images_icone-201-003_Note.png?​25}} Il est normal que l'​importation du groupe **__domain admins__** donne une erreur, car il existe déjà dans //​AD//​.\\ ​
 +{{Images_Cahier-101-03-006.png?​25}} Un erreur pourrait aussi survenir si nous avons un nom de groupe qui est identique à un nom d'​utilisateur,​ car dans //Active Directory//,​ il ne peut y avoir un utilisateur et un groupe ayant le même nom.
 +
 +On vérifie.
 +
 +**Gestion -> Utilisateurs et groupes ->** onglet **Groupes ->** vis-à-vis **//​[email protected]//​** ​ **-> Éditer**. ​
 +<WRAP column 46%>
 +|{{ Images_Cahier-301-02-034.png?​500 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +|{{ Images_Cahier-301-02-035.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +Le groupe **__domain admins__** a été recréé par //AD// et il y a insérer l'​utilisateur **__admin__** qu'il a aussi recréé.
 +
 +{{Images_Cahier-101-03-003.png?​22}} {{Images_Cahier-101-03-003.png?​22}} Les autres utilisateurs qui étaient déjà présents dans le groupe **__domain admins__** n'y sont pas importés, il faut les remettre dans ce groupe //​(**__michelandre__** dans notre cas)//.
 +
 +<WRAP column 46%>
 +\\ 
 +**Gestion -> Utilisateurs et groupes ->** onglet **Groupes**.
 +L'​utilisateur **__michelandre__** n'est plus inclus dans le groupe.
 +|{{ Images_Cahier-301-02-036.png?​500 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +<​nowiki>​-</​nowiki>​ On ré-insère l'​utilisateur **__michelandre__** dans le grou­pe **__domain admins__**.\\ ​
 +<​nowiki>​-</​nowiki>​ **SOUMETTRE**.
 +|{{ Images_Cahier-301-02-037.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +==== Messagerie électronique ====
 +
 +{{Images_Cahier-101-03-006.png?​25}} Le répertoire des courriels d'un utilisateur n'est jamais supprimé, même lorsqu'​on supprime un utilisateur,​ car il faut toujours le supprimer manuellement,​ sinon __il le sera au bout d'une année__ après la suppression de l'​utilisateur.
 +
 +Comme on le voit ci-dessous, les répertoires des courriels des utilisateurs n'ont pas été modifiés par l'​ajout d'//​AD//​.
 +
 +<​file>​
 +[[email protected] ~]# ls -als /​var/​lib/​nethserver/​vmail
 +
 +total 4
 +0 drwx------ ​  9 vmail vmail 222 17 oct.  11:39 .
 +0 drwxr-xr-x. 12 root  root  155 19 avril  2019 ..
 +0 drwx------ ​  3 vmail vmail  21 19 avril  2019 [email protected]
 +0 drwx------ ​  3 vmail vmail  21 19 avril  2019 [email protected]
 +0 drwx------ ​  3 vmail vmail  21  8 janv.  2019 root
 +4 -rw------- ​  1 vmail vmail  73 17 oct.  11:25 shared-mailboxes.db
 +0 drwx------ ​  3 vmail vmail  21 17 oct.  11:25 [email protected]
 +0 drwx------ ​  3 vmail vmail  21 17 oct.  11:24 [email protected]
 +0 drwx------ ​  3 vmail vmail  21  8 janv.  2019 vmail
 +0 drwx------ ​  3 vmail vmail  21 19 avril  2019 [email protected]
 +[[email protected] ~]#
 +</​file>​
 +
 +<WRAP column 30%>
 +__Si vous ne modifiez pas__ le nom de domaine de //LDAP// en installant //AD//, les utilisateurs auront accès à leurs messages qu’ils avaient avec //LDAP//.
 +
 +</​WRAP>​
 +<WRAP column 62%>
 +|{{ Images_Cahier-301-02-038.png?​700 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +{{Images_icone-201-003_Note.png?​25}} <wrap em>​Si</​wrap>,​ à la section **
 +[[nethserver_301_cahier_02_active_directoty#​Installation d'​Active Directory comme fournisseur des comptes|Installation d'​Active Directory comme fournisseur des comptes]]
 +**, nous avions choisi un nom de domaine autre que l'​original dans //LDAP// lors de l'​ajout d'//​AD//,​ l'​installation aurait créé un nouveau répertoire pour **__admin__**:​ ''​[email protected]''​.
 +
 +Avec un changement de nom de domaine, après avoir importé les utilisateurs et les groupes dans //AD//, nous devons importer les répertoires de courriels pour qu'ils indiquent le nouveau nom du domaine //AD//.
 +
 +{{Images_Cahier-101-03-003.png?​22}} Avant de procéder, nous recommandons fortement de faire une sauvegarde, car en cas d'​échec...
 +
 +=== Importation des courriels ===
 +
 +<WRAP box>
 +<​file>​
 +[[email protected] ~]# /​usr/​share/​doc/​nethserver-sssd-1.4.8/​scripts/​import_emails ​
 +
 +...
 +</​file>​
 +</​WRAP>​
 +\\ 
 +
 +===== Répertoires personnels =====
 +
 +__Avant__ l'​installation d'AD.
 +
 +<​file>​
 +[[email protected] ~]# ls -als /​var/​lib/​nethserver/​home
 +
 +total 0
 +0 drwxr-xr-x. ​ 5 root                           ​root ​                      49 Oct 20 18:02 .
 +0 drwxr-xr-x. 12 root                           ​root ​                     155 Apr 19  2019 ..
 +0 drwx------ ​  2 [email protected] [email protected]ev.org ​ 83 Oct 20 18:02 michelandre
 +0 drwx------ ​  2 [email protected] ​       [email protected] ​ 83 Oct 20 18:02 titi
 +0 drwx------ ​  2 [email protected] ​       [email protected] ​ 83 Oct 20 18:01 toto
 +[[email protected] ~]#
 +</​file>​
 +
 +__Après__ l'​installation d'//​AD//​.
 +
 +<​file>​
 +[[email protected] ~]# ls -als /​var/​lib/​nethserver/​home
 +
 +total 0
 +0 drwxr-xr-x. ​ 5 root root  49 16 nov.  13:54 .
 +0 drwxr-xr-x. 12 root root 155 19 avril  2019 ..
 +0 drwx------ ​  2 1001 1000  83 16 nov.  13:54 michelandre
 +0 drwx------ ​  2 1003 1000  83 17 oct.  11:32 titi
 +0 drwx------ ​  2 1002 1000  83 17 oct.  11:32 toto
 +[[email protected] ~]#
 +</​file>​
 +
 +Comme on le voit ci-dessus, l'​installation d'//​AD//​ a changé les //​propriétaire:​groupe//​ des répertoires personnels.
 +
 +{{Images_icone-201-003_Note.png?​25}} L'​utilisateur **__admin__** ne s'​étant jamais connecté à la console du serveur, il n'a pas encore de répertoire personnel.\\ ​
 +On se substitue à l'​utilisateur **__admin__** pour voir ce qui se passera.
 +
 +<​file>​
 +[[email protected] ~]# su - admin 
 +
 +Creating home directory for [email protected]  ​
 +[[email protected]@tchana ~]$
 +</​file>​
 +
 +Le système affiche qu'il a créé le répertoire personnel de l'​utilisateur **__admin__**.
 +
 +On revient à l'​utilisateur **__root__**.
 +
 +<​file>​
 +[admi[email protected]@tchana ~]$ exit
 +
 +déconnexion
 +[[email protected] ~]#
 +</​file>​
 +
 +On affiche les répertoires personnels.
 +
 +<​file>​
 +[[email protected] ~]# ls -als /​var/​lib/​nethserver/​home
 +
 +total 0
 +0 drwxr-xr-x. ​ 6 root                     ​root ​                            62 28 nov.  18:04 .
 +0 drwxr-xr-x. 12 root                     ​root ​                           155 19 avril  2019 ..
 +0 drwx------ ​  2 [email protected] domain [email protected] ​ 83 28 nov.  18:06 admin
 +0 drwx------ ​  ​2 ​                    ​1001 ​                           1000  83 16 nov.  13:54 michelandre
 +0 drwx------ ​  ​2 ​                    ​1003 ​                           1000  83 17 oct.  11:32 titi
 +0 drwx------ ​  ​2 ​                    ​1002 ​                           1000  83 17 oct.  11:32 toto
 +[[email protected] ~]#
 +</​file>​
 +
 +Le système a créé le répertoire personnel de l'​utilisateur **__admin__** et lui a attribué les bons //​propriétaire:​groupe//​.
 +
 +==== Ajustement propriétaire:​groupe des répertoires personnels ====
 +
 +{{Images_Cahier-101-03-003.png?​22}} On doit ré-ajuster les //​propriétaire:​groupe//​ des répertoires personnels.\\
 +On se rend dans le dossier des répertoires personnels.
 +
 +<​file>​
 +[[email protected] ~]# cd /​var/​lib/​nethserver/​home/​
 +
 +[[email protected] home]#
 +</​file>​
 +
 +On vérifie les chemins des répertoire personnels contenus dans //AD//.
 +
 +<​file>​
 +[[email protected] home]# getent passwd * | cut -f6 -d:
 +
 +/​var/​lib/​nethserver/​home/​admin
 +/​var/​lib/​nethserver/​home/​michelandre
 +/​var/​lib/​nethserver/​home/​titi
 +/​var/​lib/​nethserver/​home/​toto
 +[[email protected] home]#
 +</​file>​
 +
 +On affiche tous les utilisateurs.
 +
 +<​file>​
 +[[email protected] home]# getent passwd * | cut -f6 -d: | cut -f6 -d/
 +
 +admin
 +michelandre
 +titi
 +toto
 +[[email protected] home]#
 +</​file>​
 +
 +L'​utilisateur **__root__** retourne dans son répertoire personnel.
 +
 +<​file>​
 +[[email protected] home]# cd
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +Vu les commandes ci-dessus, nous avons assez d'​informations pour créer un //script bash// pour ajuster les //​propriétaire:​groupe//​.
 +
 +{{Images_Cahier-101-03-006.png?​25}} Prendre tout le contenu de l'​encadré pour la commande.
 +
 +<​file>​
 +cat > /​root/​dir.sh <<'​EOT'​
 +#!/bin/bash
 +
 +# Mettre le script dans: /root/
 +# chmod +x /​root/​dir.sh
 +# Exécuter: /​root/​dir.dh
 +
 +cd /​var/​lib/​nethserver/​home/​
 +
 +getent passwd * | cut -f6 -d: | cut -f6 -d/ > temp.txt
 +
 +while read p; do
 +  chown -R [email protected]:"​domain [email protected]"​ $p
 +done <​temp.txt
 +
 +rm -rf temp.txt
 +
 +EOT
 +
 +</​file>​
 +
 +On rend le script exécutable par **__root__** seulement.
 +
 +<​file>​
 +[[email protected] ~]# chmod 700 /​root/​dir.sh
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +On vérifie.
 +
 +<​file>​
 +[[email protected] ~]# ls -als dir.sh
 +
 +4 -rwx------ 1 root root 302 28 nov.  18:10 dir.sh
 +[[email protected] ~]#
 +</​file>​
 +
 +On lance la commande d'​ajustement des //​propriétaire:​groupe//​.
 +
 +<​file>​
 +[[email protected] ~]# /​root/​dir.sh
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +On vérifie le résultat.
 +
 +<​file>​
 +[[email protected] ~]# ls -als /​var/​lib/​nethserver/​home/​
 +
 +total 0
 +0 drwxr-xr-x. ​ 6 root                           ​root ​                            62 28 nov.  18:11 .
 +0 drwxr-xr-x. 12 root                           ​root ​                           155 19 avril  2019 ..
 +0 drwx------ ​  2 [email protected] ​      ​domain [email protected] ​ 83 28 nov.  18:06 admin
 +0 drwx------ ​  2 [email protected] domain [email protected] ​ 83 16 nov.  13:54 michelandre
 +0 drwx------ ​  2 [email protected] ​       domain [email protected] ​ 83 17 oct.  11:32 titi
 +0 drwx------ ​  2 [email protected] ​       domain [email protected] ​ 83 17 oct.  11:32 toto
 +[[email protected] ~]#
 +</​file>​
 +
 +=== Substitution à l'​utilisateur toto ===
 +
 +Si ce n'est déjà fait, on édite l'​utilisateur **__toto__** afin de lui permettre de se connecter à l'aide de //PuTTY//.
 +
 +<WRAP column 30%>
 +Dans l'​interface Web de //​NethServer//: ​ **Gestion -> Utilisateurs et groupes ->** onglet **Utilisateurs ->** à la droite de la ligne de l'​utilisateur **__toto__**,​ on clique **Éditer**.
 +
 +On décoche **//Activer l'​expiration de mot de passe//**.
 +
 +On coche **//Remote Shell (SSH)//**.
 +
 +**SOUMETTRE**.
 +</​WRAP>​
 +<WRAP column 62%>
 +|{{ Images_Cahier-301-02-039.png?​700 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +On se substitue à l'​utilisateur **__toto__** pour voir si tout se passera bien
 +
 +<​file>​
 +[[email protected] ~]# su - toto
 +
 +[[email protected]@tchana ~]$
 +</​file>​
 +
 +Aucune erreur.
 +
 +On affiche dans quel répertoire se trouve l'​utilisateur **__toto__**.
 +
 +<​file>​
 +[[email protected]@tchana ~]$ pwd
 +
 +/​var/​lib/​nethserver/​home/​toto
 +[[email protected]@tchana ~]$
 +</​file>​
 +
 +L'​utilisateur **__toto__** est correctement situé dans son répertoire personnel.
 +
 +On affiche le contenu de son répertoire personnel.
 +
 +<​file>​
 +[[email protected]@tchana ~]$ ls -als
 +
 +total 16
 +0 drwx------ ​ 2 [email protected] domain [email protected] ​ 83 17 oct.  11:32 .
 +0 drwxr-xr-x. 6 root                    root                             62 28 nov.  18:11 ..
 +4 -rw------- ​ 1 [email protected] domain [email protected] 245 28 nov.  17:15 .bash_history
 +4 -rw------- ​ 1 [email protected] domain [email protected] ​ 18 17 oct.  11:32 .bash_logout
 +4 -rw------- ​ 1 [email protected] domain [email protected] 193 17 oct.  11:32 .bash_profile
 +4 -rw------- ​ 1 [email protected] domain [email protected] 231 17 oct.  11:32 .bashrc
 +[[email protected]@tchana ~]$
 +</​file>​
 +
 +Il peut voir tout le contenu de son répertoire personnel. Tous ses anciens fichiers sont là.
 +
 +On retourne à l'​utilisateur **__root__**.
 +
 +<​file>​
 +[[email protected]@tchana ~]$ exit
 +
 +déconnexion
 +[[email protected] ~]#
 +</​file>​
 +Aucune erreur, tout s'est bien passé.
 +\\ 
 +\\ 
 +
 +===== Serveur DNS attribué par DHCP =====
 +
 +{{Images_Cahier-101-03-006.png?​25}} L'​ajout d'//​AD//​ comme fournisseur des comptes signifie que la page //DNS// du //Serveur NethServer//​ <wrap em>NE SERA PAS UTILISÉE!</​wrap>​\\ ​
 +{{Images_Cahier-101-03-003.png?​22}} L'​adresse //IP// du serveur //DNS// que nous allons distribuer aux clients <wrap em>DOIT ÊTRE</​wrap>​ celle du conteneur //AD//, c.-à-d. <wrap em>​10.10.10.76</​wrap>:​ l'​adresse //IP// donnée à la section **
 +[[nethserver_301_cahier_02_active_directoty#​Installation d'​Active Directory comme fournisseur des comptes|Installation d'​Active Directory comme fournisseur des comptes]]
 +**.
 +
 +<WRAP column 32%>
 +==== Ajustement du serveur DHCP ====
 +
 +**Configuration -> DHCP ->** onglet **Serveur DHCP**.
 +
 +On ajuste les paramètres du serveur //DHCP// pour que celui-ci fournisse la bonne adresse //IP// des serveurs //DNS / Wins//.
 +
 +**SOUMETTRE**.
 +</​WRAP>​
 +<WRAP column 60%>
 +|{{ Images_Cahier-301-02-040.png?​700 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +\\ 
 +
 +===== Configuration de la carte réseau de la station =====
 +
 +On s'​assure de la bonne configuration de la carte réseau de la station à //joindre à Active Directory//​.
 +
 +<WRAP column 30%>
 +<​nowiki>​-</​nowiki>​ Clac sur l'​**icône réseau**.\\ ​
 +<​nowiki>​-</​nowiki>​ **Ouvrir le Centre Réseau et partage**.
 +|{{ Images_Cahier-301-02-041.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 30%>
 +\\ 
 +**Modifier les paramètres de la carte**.
 +|{{ Images_Cahier-301-02-042.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 30%>
 +Double-cliquer sur l'​**icône de la carte réseau**.
 +|{{ Images_Cahier-301-02-043.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +**Détails...**
 +|{{ Images_Cahier-301-02-044.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 30%>
 +<​nowiki>​-</​nowiki>​ On s'​assure de la bonne configuration de la carte.\\ ​
 +<​nowiki>​-</​nowiki>​ **Fermer**.
 +|{{ Images_Cahier-301-02-045.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +**Fermer** toutes les fenêtres.
 +|{{ Images_Cahier-301-02-046.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +\\ 
 +
 +===== Quelques paramètres du fournisseur des comptes AD =====
 +
 +<​file>​
 +[[email protected] ~]# account-provider-test dump
 +
 +{
 +   "​BindDN"​ : "​[email protected]",​
 +   "​LdapURI"​ : "​ldaps://​nsdc-tchana.ad.micronator-dev.org",​
 +   "​DiscoverDcType"​ : "​ldapuri",​
 +   "​StartTls"​ : "",​
 +   "​port"​ : 636,
 +   "​host"​ : "​nsdc-tchana.ad.micronator-dev.org",​
 +   "​isAD"​ : "​1",​
 +   "​isLdap"​ : "",​
 +   "​UserDN"​ : "​dc=ad,​dc=micronator-dev,​dc=org",​
 +   "​GroupDN"​ : "​dc=ad,​dc=micronator-dev,​dc=org",​
 +   "​BindPassword"​ : "​OwSvR7Cg_9XbT28w",​
 +   "​BaseDN"​ : "​dc=ad,​dc=micronator-dev,​dc=org",​
 +   "​LdapUriDn"​ : "​ldap:///​dc%3Dad%2Cdc%3Dmicronator-dev%2Cdc%3Dorg"​
 +}
 +[[email protected] ~]#
 +</​file>​
 +\\ 
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?​25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +
 +===== Ajustement de Self Service Password pour AD =====
 +
 +{{Images_Cahier-101-03-006.png?​25}} Nous ajustons //Self Service Password// pour qu'il fonctionne sous //Active Directory// en se référant au **
 +[[nethserver_301_cahier_03_self_service_password_active_directory|Cahier-03:​]]
 +** //Self Service Password & Active Directory// du "Cours NethServe-301"​.
 +\\ 
 +
 +===== Instantané VirtualBox =====
 +
 +{{Images_Cahier-101-03-004.png?​25}} À ce stade-ci, on peut prendre un instantané de la machine virtuelle afin de pouvoir y revenir en cas d'une future erreur de manipulation.
 +\\ 
 +\\ 
 +
 +====== Changement des mots de passe ======
 +
 +===== Prérequis =====
 +
 +{{Images_Cahier-101-03-006.png?​25}} Si ce n'est déjà fait, il faut maintenant ajuster la configuration de //Self Service Password// pour l'​adapter à //Active Directory//​.\\ ​
 +Veillez consulter le 
 +**
 +[[nethserver_301_cahier_03_self_service_password_active_directory|Cahier-03:​]]
 +** //Self Service Password & Active Directory// du "Cours NethServe-301"​ et plus particulièrement,​ les manipulations du chapitre //Self Service Password & Active Directory//​.
 +\\ 
 +
 +===== Téléversement du fichier d'​exportation =====
 +
 +On doit copier le fichier ''/​root/​exportation.ldif'',​ créé en format //LDIF// au paragraphe **
 +[[nethserver_301_cahier_02_active_directoty#​Fichier d'​exportation LDIF créé par le script|Fichier d'​exportation LDIF créé par le script]]
 +**, contenant les Question/​Réponse des utilisateurs dans le répertoire:​ ''/​var/​lib/​machines/​nsdc/​var/​lib/​samba/​private/''​.
 +
 +On copie le fichier ''/​root/​exportation.ldif''​ tout en le renommant ''​file.ldif''​.
 +
 +<​file>​
 +[[email protected] ~]# cp /​root/​exportation.ldif /​var/​lib/​machines/​nsdc/​var/​lib/​samba/​private/​file.ldif
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +On vérifie.
 +
 +<​file>​
 +[[email protected] ~]# ls -ls /​var/​lib/​machines/​nsdc/​var/​lib/​samba/​private/​file.ldif
 +
 +4 -rw-r--r-- 1 root root 337  1 déc.  10:08 exportation.ldif
 +[[email protected] ~]#
 +</​file>​
 +\\ 
 +
 +===== Importation =====
 +
 +//​Référence://​ [[https://​wiki.nethserver.org/​doku.php?​id=howto:​useful_commands#​modify_the_samba4_ad_settings|https://​wiki.nethserver.org/​doku.php?​id=howto:​useful_commands#​modify_the_samba4_ad_settings]]
 +
 +On importe les Question/​Réponse.
 +
 +<​file>​
 +[[email protected] ~]# /​usr/​bin/​systemd-run -M nsdc                \
 +                         ​-q ​                                 \
 +                         -t /​usr/​bin/​ldbmodify ​              \
 +                         -H /​var/​lib/​samba/​private/​sam.ldb ​  \
 +                         /​var/​lib/​samba/​private/​file.ldif
 +
 +Modified 3 records successfully
 +[[email protected] ~]#
 +</​file>​
 +
 +Les Question/​Réponse de nos trois utilisateurs ont été importés dans //Active Directory//​.
 +\\ 
 +
 +===== Suppression du fichier file.ldif =====
 +
 +{{Images_Cahier-101-03-008.png?​25}} Pour la sécurité, on supprime le fichier ''​file.ldif'',​ car il n'est plus utile.
 +
 +<​file>​
 +[[email protected] ~]# rm -rf  /​var/​lib/​machines/​nsdc/​var/​lib/​samba/​private/​file.ldif
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +On vérifie.
 +
 +<​file>​
 +[[email protected] ~]# ls -als /​var/​lib/​machines/​nsdc/​var/​lib/​samba/​private/​file.ldif
 +
 +ls: impossible d'​accéder à /​var/​lib/​machines/​nsdc/​var/​lib/​samba/​private/​file.ldif:​ Aucun fichier ou dossier de ce type
 +[[email protected] ~]#
 +</​file>​
 +\\ 
 +
 +===== Changement du mot de passe par question =====
 +
 +==== Exemple avec l'​utilisateur toto ====
 +
 +Vu que l'​utilisateur **__toto__** ne connaît pas le nouveau mot de passe qu'//​Active Directory// lui a octroyé, il doit utiliser la méthode de changement de mot de passe par réponse à sa question préalablement choisie. Il se rend donc à la page https://​www.micronator-dev.org/​ssp et clique **Question** afin de pouvoir changer son mot de passe.
 +
 +<WRAP column 55%>
 +<​nowiki>​-</​nowiki>​ L'​utilisateur **__toto__** entre son identifiant,​\\ ​
 +<​nowiki>​-</​nowiki>​ choisit sa question,​\\ ​
 +<​nowiki>​-</​nowiki>​ entre sa réponse, \\ 
 +<​nowiki>​-</​nowiki>​ entre son nouveau mot de passe,​\\ ​
 +<​nowiki>​-</​nowiki>​ le confirme,​\\ ​
 +<​nowiki>​-</​nowiki>​ répond au //​reCaptcha//​\\ ​
 +<​nowiki>​-</​nowiki>​ et clique **Envoyer**.
 +|{{ Images_Cahier-301-02-047.png?​600 }}|
 +</​WRAP>​
 +<WRAP column 37%>
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +\\ 
 +L'​opération a réussi.
 +|{{ Images_Cahier-301-02-048.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +Pour vérifier son nouveau mot de passe, l'​utilisateur **__toto__** se connecte à //Webmail// en allant à: https://​www.micronator-dev.org/​webmail.
 +
 +<WRAP column 46%>
 +L'​utilisateur **__toto__** entre sont identifiant et son nouveau mot de passe **-> ​ Connexion**.
 +|{{ Images_Cahier-301-02-049.png?​500 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +Le nouveau mot de passe de l'​utilisateur **__toto__** a bien été changé et il est fonctionnel.
 +|{{ Images_Cahier-301-02-050.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +==== Autres utilisateurs ====
 +
 +Tous les autres utilisateurs exécutent les mêmes manipulations que celles utilisées par **''​toto''​** pour changer leur mot de passe.
 +\\
 +
 +<​html>​
 +<div align="​center"​ style="​font-size:​130%">​
 +<​b><​i>​Active Directory</​i>​ et le gestionnaire des mots de passe</​br><​i>​Self Service Password</​i>​ fonctionnent correctement.</​b>​
 +</​div>​
 +</​html>​
 +\\ 
 +
 +====== Certificat Let's Encrypt ======
 +
 +===== Description =====
 +
 +Il nous faut ajuster le certificat //​Let'​s Encrypt// afin d'y inclure le nom et les //CNAME// de notre domaine //Active Directory//​.
 +
 +===== Ajout de CNAME chez le régistraire du domaine =====
 +
 +Affichage des **CNAME** + **FQDN** de notre domaine. Le nom **tchana** est celui de notre //Serveur NethServer//​.
 +
 +<​file>​
 +[[email protected] ~]# account-provider-test dump
 +
 +{
 +   "​BindDN"​ : "​[email protected]",​
 +   "​LdapURI"​ : "​ldaps://​nsdc-tchana.ad.micronator-dev.org",​
 +   "​DiscoverDcType"​ : "​ldapuri",​
 +   "​StartTls"​ : "",​
 +   "​port"​ : 636,
 +   "​host"​ : "​nsdc-tchana.ad.micronator-dev.org",​
 +   "​isAD"​ : "​1",​
 +   "​isLdap"​ : "",​
 +   "​UserDN"​ : "​dc=ad,​dc=micronator-dev,​dc=org",​
 +   "​GroupDN"​ : "​dc=ad,​dc=micronator-dev,​dc=org",​
 +   "​BindPassword"​ : "​OwSvR7Cg_9XbT28w",​
 +   "​BaseDN"​ : "​dc=ad,​dc=micronator-dev,​dc=org",​
 +   "​LdapUriDn"​ : "​ldap:///​dc%3Dad%2Cdc%3Dmicronator-dev%2Cdc%3Dorg"​
 +}
 +[[email protected] ~]#
 +</​file>​
 +
 +{{Images_Cahier-101-03-006.png?​25}} Pour un serveur directement branché à l'​Internet,​ il faut ajouter les trois enregistrements //CNAME//: **__ad__**, **__nscd-tchana.ad__** et **__adserver.ad__** chez le régistraire de notre nom de domaine.\\ ​
 +{{Images_icone-201-003_Note.png?​25}} Ici, nous utilisons [[http://​cloudflare.com/​|cloudflare.com]] comme notre régistraire de domaine.
 +
 +<WRAP centeralign>​**ad**</​WRAP>​
 +{{ Images_Cahier-301-02-051.png?​700 }}
 +
 +<WRAP centeralign>​**nscd-tchana.ad**</​WRAP>​
 +{{ Images_Cahier-301-02-052.png?​700 }}
 +
 +<WRAP centeralign>​**adserver.ad**</​WRAP>​
 +{{ Images_Cahier-301-02-053.png?​700 }}
 +
 +<WRAP centeralign>​**Résultat final**</​WRAP>​
 +{{ Images_Cahier-301-02-054.png?​700 }}
 +\\ 
 +
 +Pour plus de détails, voir le chapitre **
 +[[nethserver_101_cahier_05_vdsl_fqdn_internet_et_nethserver#​Régistraire de domaines|Régistraire de domaines]]
 +** dans le **Cahier-05:​** //VDSL, FQDN, Internet et NethServer//​ du "Cours NethServer-101"​.
 +
 +Voir aussi le chapitre **
 +[[nethserver_101_cahier_04_local_certificat_let_encrypt#​Certificat pour un domaine LOCAL|Certificat pour un domaine LOCAL]]
 +** dans le **Cahier-04:​** //​NethServer LOCAL & Certificat Let's Encrypt// du "Cours NethServer-101"​.
 +\\ 
 +
 +===== Serveur sur un réseau LOCAL =====
 +
 +Voir le chapitre **
 +[[nethserver_101_cahier_04_local_certificat_let_encrypt#​Certificat pour un domaine LOCAL|Certificat pour un domaine LOCAL]]
 +** dans le **Cahier-04:​** //​NethServer LOCAL & Certificat Let's Encrypt// du "Cours NethServer-101"​.
 +
 +Pour la demande du certificat //​Let'​s Encrypt//. il faut ajouter les trois enregistrements //CNAME//: **__ad__**, **__nscd.tchana.ad__** et **__adserver.ad__**.
 +
 +==== Certificat de test (--test) ====
 +
 +<​file>​
 +[[email protected] ~]# /​root/​.acme.sh/​acme.sh ​                                            \
 +                      --issue ​                                                      \
 +                      --dns dns_cf ​                                                 \
 +                      -d micronator-dev.org ​                                        \
 +                      -d www.micronator-dev.org ​                                    \
 +                      -d mail.micronator-dev.org ​                                   \
 +                      -d wpad.micronator-dev.org ​                                   \
 +                      -d ad.micronator-dev.org ​                                     \
 +                      -d nscd-tchana.ad.micronator-dev.org ​                         \
 +                      -d adserver.ad.micronator-dev.org ​                            \
 +                      --cert-file /​etc/​pki/​tls/​certs/​cert.pem ​                      \
 +                      --ca-file /​etc/​pki/​tls/​certs/​chain.pem ​                       \
 +                      --key-file /​etc/​pki/​tls/​private/​privkey.pem ​                  \
 +                      --reloadcmd "/​sbin/​e-smith/​signal-event certificate-update" ​  \
 +                      --test
 +
 +...
 +[sam. déc.  7 12:02:55 EST 2019] Your cert is in  /​root/​.acme.sh/​micronator-dev.org/​micronator-dev.org.cer
 +[sam. déc.  7 12:02:55 EST 2019] Your cert key is in  /​root/​.acme.sh/​micronator-dev.org/​micronator-dev.org.key
 +[sam. déc.  7 12:02:55 EST 2019] The intermediate CA cert is in  /​root/​.acme.sh/​micronator-dev.org/​ca.cer
 +[sam. déc.  7 12:02:55 EST 2019] And the full chain certs is there: ​ /​root/​.acme.sh/​micronator-dev.org/​fullchain.cer
 +[sam. déc.  7 12:02:55 EST 2019] Installing cert to:/​etc/​pki/​tls/​certs/​cert.pem
 +[sam. déc.  7 12:02:55 EST 2019] Installing CA to:/​etc/​pki/​tls/​certs/​chain.pem
 +[sam. déc.  7 12:02:55 EST 2019] Installing key to:/​etc/​pki/​tls/​private/​privkey.pem
 +[sam. déc.  7 12:02:55 EST 2019] Run reload cmd: /​sbin/​e-smith/​signal-event certificate-update
 +[sam. déc.  7 12:02:59 EST 2019] Reload success
 +[[email protected] ~]#
 +</​file>​
 +
 +==== Certificat officiel ====
 +
 +La demande d'un certificat de //test// est réussie, on peut demander un certificat //​officiel//​.\\ ​
 +{{Images_Cahier-101-03-006.png?​25}} Vu que le certificat de //test// est valide pour une période de __90 jours__, on remplace le paramètre ''​--test''​ par ''​--force''​ afin de "​forcer"​ le renouvellement.
 +
 +<​file>​
 +[[email protected] ~]# /​root/​.acme.sh/​acme.sh ​                                            \
 +                      --issue ​                                                      \
 +                      --dns dns_cf ​                                                 \
 +                      -d micronator-dev.org ​                                        \
 +                      -d www.micronator-dev.org ​                                    \
 +                      -d mail.micronator-dev.org ​                                   \
 +                      -d wpad.micronator-dev.org ​                                   \
 +                      -d ad.micronator-dev.org ​                                     \
 +                      -d nscd-tchana.ad.micronator-dev.org ​                         \
 +                      -d adserver.ad.micronator-dev.org ​                            \
 +                      --cert-file /​etc/​pki/​tls/​certs/​cert.pem ​                      \
 +                      --ca-file /​etc/​pki/​tls/​certs/​chain.pem ​                       \
 +                      --key-file /​etc/​pki/​tls/​private/​privkey.pem ​                  \
 +                      --reloadcmd "/​sbin/​e-smith/​signal-event certificate-update" ​  \
 +                      --force
 +
 +...
 +[sam. déc.  7 12:17:12 EST 2019] Your cert is in  /​root/​.acme.sh/​micronator-dev.org/​micronator-dev.org.cer
 +[sam. déc.  7 12:17:12 EST 2019] Your cert key is in  /​root/​.acme.sh/​micronator-dev.org/​micronator-dev.org.key
 +[sam. déc.  7 12:17:12 EST 2019] The intermediate CA cert is in  /​root/​.acme.sh/​micronator-dev.org/​ca.cer
 +[sam. déc.  7 12:17:12 EST 2019] And the full chain certs is there: ​ /​root/​.acme.sh/​micronator-dev.org/​fullchain.cer
 +[sam. déc.  7 12:17:12 EST 2019] Installing cert to:/​etc/​pki/​tls/​certs/​cert.pem
 +[sam. déc.  7 12:17:12 EST 2019] Installing CA to:/​etc/​pki/​tls/​certs/​chain.pem
 +[sam. déc.  7 12:17:12 EST 2019] Installing key to:/​etc/​pki/​tls/​private/​privkey.pem
 +[sam. déc.  7 12:17:12 EST 2019] Run reload cmd: /​sbin/​e-smith/​signal-event certificate-update
 +[sam. déc.  7 12:17:15 EST 2019] Reload success
 +[[email protected] ~]#
 +</​file>​
 +
 +==== Vérification ====
 +
 +=== À la console du serveur ===
 +
 +Certificat publique.
 +
 +<​file>​
 +[[email protected] ~]# ls -als /​etc/​pki/​tls/​certs/​cert.pem
 +
 +4 -rw-r--r-- 1 root root 2143  7 déc.  12:17 /​etc/​pki/​tls/​certs/​cert.pem
 +[[email protected] ~]#
 +</​file>​
 +
 +Chaîne de certification.
 +
 +<​file>​
 +[[email protected] ~]# ls -als /​etc/​pki/​tls/​certs/​chain.pem
 +
 +4 -rw-r--r-- 1 root root 1648  7 déc.  12:17 /​etc/​pki/​tls/​certs/​chain.pem
 +[[email protected] ~]#
 +</​file>​
 +
 +Clé privée.
 +
 +<​file>​
 +[[email protected] ~]# ls -als /​etc/​pki/​tls/​private/​privkey.pem
 +
 +4 -rw------- 1 root root 1679  7 déc.  12:17 /​etc/​pki/​tls/​private/​privkey.pem
 +[[email protected] ~]#
 +</​file>​
 +
 +=== Avec un navigateur ===
 +
 +On se rend à https://​www.micronator-dev.org.
 +
 +Il n'est pas nécessaire d'​ajouter une exception pour le certificat car, il a été émis par une autorité de certification reconnue. Le cadenas est vert.
 +
 +<WRAP column 46%>
 +On clique le **cadenas** pour afficher les informations de la connexion puis, on clique l'​icône <wrap em>></​wrap>​.
 +|{{ Images_Cahier-301-02-055.png?​500 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +\\ 
 +**Plus d'​informations**.
 +|{{ Images_Cahier-301-02-056.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 46%>
 +Afficher le certificat.
 +|{{ Images_Cahier-301-02-057.png?​500 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +Tous nos //CNAME// sont présents.
 +|{{ Images_Cahier-301-02-058.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +\\ 
 +
 +===== Renouvellement =====
 +
 +À chaque jour, une tâche //cron// vérifie le nombre de jours restant pour la validité. ​
 +
 +<​file>​
 +[[email protected] ~]# crontab -l
 +
 +56 0 * * * "/​root/​.acme.sh"/​acme.sh --cron --home "/​root/​.acme.sh"​ > /dev/null
 +[[email protected] ~]#
 +</​file>​
 +
 +{{Images_icone-201-003_Note.png?​25}} Le renouvellement se fera automatiquement lorsqu'​il ne restera que __30__ jours de validité.
 +
 +<​html>​
 +<div align="​center"​ style="​font-size:​130%">​
 +<b>Le certificat <​i>​Let'​s Encrypt</​i>​ fonctionne correctement pour notre <​i>​Serveur NethServer</​i>​ LOCAL.</​b>​
 +</​div>​
 +</​html>​
 +\\ 
 +\\ 
 +
 +===== Serveur branché directement à l'​Internet =====
 +
 +==== Répertoire well-known ====
 +
 +//​Référence://​ [[https://​dev-notes.eu/​2017/​01/​apache-directives-in-config-vs-htaccess/​|https://​dev-notes.eu/​2017/​01/​apache-directives-in-config-vs-htaccess/​]]\\ ​
 +Référence:​ [[http://​httpd.apache.org/​docs/​current/​howto/​htaccess.html#​page-header|http://​httpd.apache.org/​docs/​current/​howto/​htaccess.html#​page-header]].
 +
 +  * Pour un serveur branché directement à l'​Internet,​ lors d'une demande d'un certificat à //​Let'​s Encrypt//, ce dernier doit pouvoir accéder au répertoire ''​.well-known''​ et à son sous-répertoire ''​acme-challenge''​.
 +
 +  * On peut faire la demande de certificat à la page de l'​interface Web: **Configuration -> Certificat du serveur ->** on déroule le menu et on choisit **Requête de certificat Let's Encrypt**.
 +
 +  * Pour plus de détails, voir le **
 +[[nethserver_101_cahier_05_vdsl_fqdn_internet_et_nethserver|Cahier-05:​]]
 +** //​NethServer-101,​ Cahier-05: VDSL, FQDN, Internet et NethServer//​ du Cours "​NethServer-101"​.
 +
 +Pour ce genre de serveur, nous devons créer un fichier ''/​etc/​httpd/​conf.d/​z_well-known.conf''​ pour indiquer à //Apache// de rendre accessibles le répertoire ''​.well-known''​ et son sous-répertoire ''​acme-challenge''​.
 +
 +=== Création du fichier z_well-known.conf ===
 +
 +{{Images_Cahier-101-03-006.png?​25}} Prendre tout le contenu de l'​encadré pour la commande.
 +
 +<​file>​
 +cat > /​etc/​httpd/​conf.d/​z_well-known.conf <<'​EOT'​
 +Alias "/​.well-known/​acme-challenge/"​ "/​var/​www/​html/​.well-known/​acme-challenge/"​
 +<​Directory "/​var/​www/​html/​.well-known/​acme-challenge/">​
 +   ​Require all granted
 +   ​Options -Indexes +FollowSymLinks
 +   ​AllowOverride All
 +</​Directory>​
 +
 +EOT
 +
 +</​file>​
 +
 +On vérifie.
 +
 +<​file>​
 +[[email protected] ~]# ls -als /​etc/​httpd/​conf.d/​z_well-known.conf
 +
 +4 -rw-r--r-- 1 root root 231  7 déc.  13:46 /​etc/​httpd/​conf.d/​z_well-known.conf
 +[[email protected] ~]#
 +</​file>​
 +
 +On affiche le contenu du fichier.
 +
 +<​file>​
 +[[email protected] ~]# cat /​etc/​httpd/​conf.d/​z_well-known.conf
 +
 +Alias "/​.well-known/​acme-challenge/"​ "/​var/​www/​html/​.well-known/​acme-challenge/"​
 +<​Directory "/​var/​www/​html/​.well-known/​acme-challenge/">​
 +   ​Require all granted
 +   ​Options -Indexes +FollowSymLinks
 +   ​AllowOverride All
 +</​Directory>​
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +{{Images_Cahier-101-03-006.png?​25}} Il n'y a pas de ligne vide au dessus de ''​Alias...''​ Ci-dessus, Nous en avons inséré une afin de faciliter la copie de la commande.
 +
 +=== Sauvegarde du fichier ===
 +
 +On vérifie si le nom du fichier ''/​etc/​httpd/​conf/​z_well-known.conf''​ est déjà inclus dans le fichier d'​inclusion de la sauvegarde des données: ''/​etc/​backup-data.d/​custom.include'',​ sinon on l'​insère.
 +
 +{{Images_Cahier-101-03-006.png?​25}} Prendre tout le contenu de l'​encadré pour la commande.
 +
 +<​file>​
 +NouvelleInclusion="/​etc/​httpd/​conf/​z_well-known.conf"​
 +if grep -Fxq "​$NouvelleInclusion"​ /​etc/​backup-data.d/​custom.include
 +then
 +    # L'​entrée a été trouvée dans custom.include
 +    echo -e "\nLe fichier custom.include contient déjà l'​entrée:​\n$NouvelleInclusion \n"
 +else
 +    # L'​entrée n'a pas été trouvée dans custom.include
 +    echo -e "​$NouvelleInclusion"​ >> /​etc/​backup-data.d/​custom.include
 +    echo -e "​\nL'​entrée:​ $NouvelleInclusion a été ajoutée\n"​
 +fi
 +
 +</​file>​
 +
 +On vérifie.
 +
 +<​file>​
 +[[email protected] ~]# cat /​etc/​backup-data.d/​custom.include | grep z_well-known.conf
 +
 +/​etc/​httpd/​conf/​z_well-known.conf
 +[[email protected] ~]#
 +</​file>​
 +
 +Ci-dessus, il n'y a pas de ligne vide avant ''/​etc/​httpd/​conf/​z_well-known.conf''​. Nous en avons inséré une afin de faciliter la copie de la commande.
 +
 +=== Redémarrage du démon httpd ===
 +
 +On redémarre le démon //Apache// afin qu'il relise ses fichiers de configuration.
 +
 +<​file>​
 +[[email protected] ~]# systemctl restart httpd
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +==== Demande d'un nouveau certificat Let's Encrypt ====
 +
 +{{Images_Cahier-101-03-006.png?​25}} Seulement pour un //Serveur NethServer//​ branché directement à l'​Internet.\\ ​
 +{{Images_Cahier-101-03-006.png?​25}} Le certificat sera émis pour le nom du premier //FQDN// entré.
 +
 +<WRAP column 46%>
 +**Configuration -> Certificat du serveur ->** on déroule le menu **-> Requête de certificat Let's Encrypt**.
 +|{{ Images_Cahier-301-02-059.png?​500 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +<​nowiki>​-</​nowiki>​ On entre notre adresse courriel.\\ ​
 +<​nowiki>​-</​nowiki>​ On entre tous nos //CNAME// + //​FQDN//​.\\ ​
 +<​nowiki>​-</​nowiki>​ **REQUÊTE DE CERTIFICAT LET'S ENCRYPT**.
 +|{{ Images_Cahier-301-02-060.png?​500 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +==== Certificat par défaut ====
 +
 +{{Images_Cahier-101-03-006.png?​25}} Les captures d'​écran ci-dessous ont été prise d'un autre //Serveur NethServer//,​ mais elles reflètent exactement la marche à suivre pour définir le certificat émis par //​Let'​s Encrypt// comme certificat par défaut.
 +
 +{{Images_icone-201-003_Note.png?​25}} On désigne le nouveau certificat émis par //​Let'​s Encrypt// en tant que celui qui sera utilisé par défaut, car c'est le certificat standard auto-signé qui l'est encore comme le démontre le crochet de la colonne **//​Défaut//​** de la capture d'​écran ci-dessous.
 +
 +<WRAP column 62%>
 +<​nowiki>​-</​nowiki>​ On déroule le menu à l'​extrême droite de la ligne du certificat //​Let'​s Encrypt//​.\\ ​
 +<​nowiki>​-</​nowiki>​ **Set as default**.
 +|{{ Images_Cahier-301-02-061.png?​700 }}|
 +</​WRAP>​
 +<WRAP column 30%>
 +\\ 
 +**CONFIRM**.
 +|{{ Images_Cahier-301-02-062.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +{{Images_Cahier-101-03-006.png?​25}} C'est le certificat //​Let'​s Encrypt// qui sera maintenant utilisé par défaut.
 +
 +{{ Images_Cahier-301-02-063.png?​700 }}
 +
 +{{Images_icone-201-003_Note.png?​25}} Pour plus de détails, voir le chapitre **
 +[[nethserver_101_cahier_05_vdsl_fqdn_internet_et_nethserver#​Certificat Let's Encrypt|Certificat Let's Encrypt]]
 +** dans le **Cahier-05:​** //VDSL, FQDN, Internet et NethServer//​ du "Cours NethServer-101"​. ​
 +\\ 
 +\\ 
 +
 +====== Appendices ======
 +
 +{{Images_icone-201-003_Note.png?​25}} Les exemples de ce chapitre proviennent de la section **
 +[[nethserver_201_cahier_04_dokuwiki#​Appendices#​|Appendices]]
 +** du **Cahier-201-04:​** //​DokuWiki//​ du "Cours NethServer-201"​.
 +
 +===== Écran conventionnel de démarrage =====
 +
 +<WRAP column 46%>
 +Si nous voulons voir l'​écran conventionnel de démarrage tel que ci-contre, il suffit de supprimer un seul paramètre dans le fichier de configuration de //grub//:
 +
 +<WRAP centeralign>​
 + ''/​etc/​default/​grub''​
 +</​WRAP>​
 +|{{ Images_Cahier-101-03-368.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +|{{ Images_Cahier-101-03-367.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +==== Suppression du paramètre rhgb ====
 +
 +Ligne originale dans le fichier ''/​etc/​default/​grub''​.
 +
 +<WRAP box>
 +<​file>​
 +GRUB_CMDLINE_LINUX="​crashkernel=auto rd.lvm.lv=VolGroup/​lv_root rd.lvm.lv=VolGroup/​lv_swap nodmraid rhgb quiet"
 +</​file>​
 +</​WRAP>​
 +
 +Après avoir enlevé le paramètre **rhgb**.
 +
 +<WRAP box>
 +<​file>​
 +GRUB_CMDLINE_LINUX="​crashkernel=auto rd.lvm.lv=VolGroup/​lv_root rd.lvm.lv=VolGroup/​lv_swap nodmraid quiet"
 +</​file>​
 +</​WRAP>​
 +
 +On signale le changement en régénérant le fichier de configuration.
 +
 +<​file>​
 +[[email protected] ~]# grub2-mkconfig -o /​boot/​grub2/​grub.cfg
 +
 +Generating grub configuration file ...
 +Found linux image: /​boot/​vmlinuz-3.10.0-957.5.1.el7.x86_64
 +Found initrd image: /​boot/​initramfs-3.10.0-957.5.1.el7.x86_64.img
 +Found linux image: /​boot/​vmlinuz-3.10.0-957.el7.x86_64
 +Found initrd image: /​boot/​initramfs-3.10.0-957.el7.x86_64.img
 +Found linux image: /​boot/​vmlinuz-0-rescue-8ee070fd1a7a4e8daf17a7dae9f85ac1
 +Found initrd image: /​boot/​initramfs-0-rescue-8ee070fd1a7a4e8daf17a7dae9f85ac1.img
 +done
 +[[email protected] ~]#
 +</​file>​
 +
 +{{Images_Cahier-101-03-005.png?​25}} Au prochain réamorçage,​ le nouveau fichier ''​grub''​ sera effectif.
 +
 +===== Nom du serveur dans l'​écran de connexion à Webmail =====
 +
 +<WRAP column 50%>
 +À l'​écran de connexion à Webmail, dans le champ //​**Serveur**//,​ le nom du domaine principal du serveur apparaît.
 +
 +On peut supprimer complètement l'​affichage de cette ligne. Utile surtout si nous avons plusieurs domaines hébergés sur le //Serveur NethServer//,​ car peu importe le domaine auquel nous nous connectons, c'est toujours le nom du domaine principal qui est affiché.
 +
 +Pour supprimer l'​affichage de cette ligne, il nous faut modifier le fichier de configuration de //PHP//:\\
 +
 +<WRAP centeralign>​
 +''/​etc/​roundcubemail/​config.inc.php''​
 +</​WRAP>​
 +</​WRAP>​
 +<WRAP column 40%>
 +|{{ Images_Cahier-101-03-340.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +et y ajouter la ligne suivante: ​ ''​config['​default_host'​] = '​127.0.0.1';''​.
 +
 +Par contre, si nous modifions directement ce fichier, le prochain ré-amorçage écrasera la modification lorsque le serveur assemblera les gabarits de configuration du système.
 +
 +{{Images_Cahier-101-03-003.png?​22}} Il nous faut donc créer un //gabarit personnalisé//​ et y insérer la nouvelle ligne de configuration. Ainsi, lors de l'​assemblage des gabarits, le serveur incorporera le gabarit personnalisé au gabarit standard de configuration de //PHP//.
 +
 +Création du répertoire pour le gabarit personnalisé.
 +
 +<​file>​
 +[[email protected] ~]# mkdir -p /​etc/​e-smith/​templates-custom/​etc/​roundcubemail/​config.inc.php
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +On crée le fichier ''​91CacherNomDuServeur''​ et on y insère la ligne de configuration.
 +
 +{{Images_Cahier-101-03-006.png?​25}}Prendre tout le contenu de l'​encadré pour la commande.
 +
 +<​file>​
 +cat > /​etc/​e-smith/​templates-custom/​etc/​roundcubemail/​config.inc.php/​91CacherNomDuServeur <<'​EOT'​
 +
 +$config['​default_host'​] = '​127.0.0.1';​
 +
 +EOT
 +
 +
 +</​file>​
 +
 +On vérifie.
 +
 +<​file>​
 +[[email protected] ~]# cat /​etc/​e-smith/​templates-custom/​etc/​roundcubemail/​config.inc.php/​91CacherNomDuServeur
 +
 +$config['​default_host'​] = '​127.0.0.1';​
 +[[email protected] ~]#
 +</​file>​
 +
 +{{Images_Cahier-101-03-006.png?​25}}Il n'y a pas de ligne vide avant __$config...__ Nous en avons inséré une pour faciliter la copie de la commande.
 +
 +On signale le changement.
 +
 +<​file>​
 +[[email protected] ~]# expand-template /​etc/​roundcubemail/​config.inc.php
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +On redémarre le démon ''​httpd''​.
 +
 +<​file>​
 +[[email protected] ~]# systemctl restart httpd
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +<WRAP column 50%>
 +On se rend à l'//​URL//​ de connexion à Webmail: https://​www.micronator-dev.org/​webmail/​. ​
 +Le domaine du serveur ne s'​affiche plus.
 +</​WRAP>​
 +<WRAP column 40%>
 +|{{ Images_Cahier-101-03-341.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +==== Sauvegarde ====
 +
 +On vérifie si le nom du répertoire ''/​etc/​e-smith/​templates-custom/​etc/​roundcubemail/''​ est déjà présent dans le fichier d'​inclusion de la sauvegarde des données: ''/​etc/​backup-data.d/​custom.include'',​ sinon on l'​insère.
 +
 +{{Images_Cahier-101-03-006.png?​25}}Prendre tout le contenu de l'​encadré pour la commande.
 +
 +<​file>​
 +NouvelleInclusion="/​etc/​e-smith/​templates-custom/​etc/​roundcubemail/"​
 +if grep -Fxq "​$NouvelleInclusion"​ /​etc/​backup-data.d/​custom.include
 +then
 +    # L'​entrée a été trouvée dans custom.include
 +    echo -e "\nLe fichier custom.include contient déjà l'​entrée:​\n$NouvelleInclusion \n"
 +else
 +    # L'​entrée n'a pas été trouvée dans custom.include
 +    echo -e "​$NouvelleInclusion"​ >> /​etc/​backup-data.d/​custom.include
 +    echo -e "​\nL'​entrée:​ $NouvelleInclusion a été ajoutée\n"​
 +fi
 +
 +
 +</​file>​
 +
 +On vérifie.
 +
 +<​file>​
 +[[email protected] ~]# cat /​etc/​backup-data.d/​custom.include |  grep roundcube
 +
 +/​etc/​e-smith/​templates-custom/​etc/​roundcubemail/​
 +[[email protected] ~]#
 +</​file>​
 +
 +Ci-dessus, il n'y a pas de ligne vide avant __/​etc/​e-smith/​templates-custom/​etc/​roundcubemail/​__. Nous en avons inséré une afin de faciliter la copie de la commande.
 +
 +===== Langue à la console du serveur =====
 +
 +On affiche les langues offertes à la console du serveur.
 +
 +    [[email protected] ~]# localectl list-locales | grep fr_
 +    ​
 +    fr_BE
 +    fr_BE.iso88591
 +    [email protected]
 +    fr_BE.utf8
 +    [email protected]
 +    fr_CA
 +    fr_CA.iso88591
 +    fr_CA.utf8
 +    fr_CH
 +    fr_CH.iso88591
 +    fr_CH.utf8
 +    fr_FR
 +    fr_FR.iso88591
 +    [email protected]
 +    fr_FR.utf8
 +    [email protected]
 +    fr_LU
 +    fr_LU.iso88591
 +    [email protected]
 +    fr_LU.utf8
 +    [email protected]
 +    [[email protected] ~]#
 +
 +On ajuste la langue désirée pour l'​affichage. On choisit ''​fr<​nowiki>​_</​nowiki>​FR.utf8'',​ car ce choix affectera aussi celui de la traduction pour l'​interface Web. Pour l'​instant,​ la traduction ''​fr<​nowiki>​_</​nowiki>​FR''​ est plus avancé que celle de ''​fr<​nowiki>​_</​nowiki>​CA''​.
 +
 +    [[email protected] ~]# localectl set-locale LANG=fr_FR.utf8
 +    ​
 +    [[email protected] ~]#
 +
 +{{Images_icone-201-003_Note.png?​25}} Dorénavant,​ la page de connexion offrira //Français (France)// comme langue par défaut au lieu de //English (United States)// si nous avons installé le module //**Langue Française**//​.
 +
 +On pourra vérifier, après le prochain redémarrage,​ en lançant la commande ci-dessous.
 +
 +    [[email protected] ~]# ls -als toto
 +    ​
 +    ls: impossible d'​accéder à toto: Aucun fichier ou dossier de ce type
 +    [[email protected] ~]#
 +
 +===== Langue de l'​interface Web =====
 +
 +On change la langue de l'​interface.
 +
 +<WRAP column 30%>
 +**Administration ​ ->  Software center** //(peut prendre un certain temps)// ​ **->​** ​ on coche **French language**.
 +|{{ Images_Cahier-101-03-112.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +**ADD**.
 +|{{ Images_Cahier-101-03-113.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 30%>
 +\\ 
 +\\ 
 +**APPLY CHANGES**.
 +|{{ Images_Cahier-101-03-114.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 22%>
 +\\ 
 +Le //RPM// //​nethserver-lang-fr//​ s'​installe.
 +|{{ Images_Cahier-101-03-115.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 22%>
 +\\ 
 +\\ 
 +**Reload page**.
 +|{{ Images_Cahier-101-03-116.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 22%>
 +On se __déconnecte/​reconnecte__ pour activer la traduction française.\\ ​
 +|{{ Images_Cahier-101-03-117.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 22%>
 +<​nowiki>​-</​nowiki>​ Par défaut, //Français (France)// est affiché.\\ ​
 +<​nowiki>​-</​nowiki>​ **LOGIN**.
 +|{{ Images_Cahier-101-03-118.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +===== Table de mappe de clavier =====
 +
 +On affiche les différentes mappes de clavier(( **Table de mappe de clavier**: n.f. Disposition des touches d'un clavier.\\ ​
 +//​Référence://​ [[http://​www.granddictionnaire.com/​ficheOqlf.aspx?​Id_Fiche=18050861#​eng|http://​www.granddictionnaire.com/​ficheOqlf.aspx?​Id_Fiche=18050861#​eng]]. \\ \\ )) "​ca"​ disponibles.
 +
 +<​file>​
 +[[email protected] ~]# localectl list-keymaps | grep ca
 +
 +ca
 +ca-eng
 +ca-fr-dvorak
 +ca-fr-legacy
 +ca-multi
 +ca-multix
 +dvorak-ca-fr
 +es-cat
 +ph-capewell-dvorak
 +ph-capewell-qwerf2k6
 +[[email protected] ~]#
 +</​file>​
 +
 +On active le clavier //​**ca-multi**//​.
 +
 +<​file>​
 +[[email protected] ~]# localectl set-keymap ca-multi
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +On vérifie.
 +
 +<​file>​
 +[[email protected] ~]# localectl
 +
 +   ​System Locale: LANG=fr_FR.UTF-8
 +       VC Keymap: ca-multi
 +      X11 Layout: us
 +[[email protected] ~]#
 +</​file>​
 +
 +===== Fermeture automatique de session (session timeout) =====
 +
 +//​Référence://​ [[http://​docs.nethserver.org/​en/​v7/​access.html#​session-timeouts|http://​docs.nethserver.org/​en/​v7/​access.html#​session-timeouts]]. \\ 
 +Par défaut //(à partir de NethServer 7.5.1804)//,​ une session de gestion du serveur se termine après **60** minutes d'​inactivité //(délai d'​inactivité)//​ et expire 8 heures après la connexion //(durée de vie de la session)//.
 +
 +La commande ci-dessous définit **2** heures de //délai d'​inactivité//​ et **16** heures de //durée de vie de la session// maximale. Le temps est exprimé en secondes.
 +
 +<​file>​
 +[[email protected] ~]# config setprop httpd-admin MaxSessionIdleTime 7200 MaxSessionLifeTime 57600
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +Désactivation des délais.
 +
 +<​file>​
 +[[email protected] ~]# config setprop httpd-admin MaxSessionIdleTime ''​ MaxSessionLifeTime ''​
 +
 +[[email protected] ~]#
 +</​file> ​
 +
 +{{Images_Cahier-101-03-006.png?​25}} ​ Les nouvelles valeurs de délais affecteront les nouvelles sessions. Ils ne changent aucune session active.
 +
 +===== Fuseau horaire =====
 +
 +Pour le fuseau horaire, il existe un fichier pour //​**Montréal**//​.
 +
 +<​file>​
 +[[email protected] ~]# ls -ls /​usr/​share/​zoneinfo/​America/​ -> grep Montreal
 +
 + 4 -rw-r--r-- ​ 3 root root 3477  1 avril 08:27 Montreal
 +[[email protected] ~]#
 +</​file>​
 +
 +==== Changement du fuseau horaire ====
 +
 +On affiche le fuseau horaire actuel.
 +
 +<​file>​
 +[[email protected] ~]# ls -l /​etc/​localtime
 +
 +lrwxrwxrwx 1 root root 37 19 mai   23:48 /​etc/​localtime -> ../​usr/​share/​zoneinfo/​America/​Toronto
 +[[email protected] ~]#
 +</​file>​
 +
 +On change le fuseau horaire pour celui de //​Montréal//​.
 +
 +<​file>​
 +[[email protected] ~]# timedatectl set-timezone America/​Montreal
 +
 +[[email protected] ~]#
 +</​file>​
 +
 +On vérifie.
 +
 +<​file>​
 +[[email protected] ~]# ls -l /​etc/​localtime
 +
 +lrwxrwxrwx 1 root root 38 22 mai   14:02 /​etc/​localtime -> ../​usr/​share/​zoneinfo/​America/​Montreal
 +[[email protected] ~]#
 +</​file>​
 +
 +Voilà! Le fuseau horaire //​Montréal//​ est récupéré...
 +
 +===== Certificat Let's Encrypt =====
 +
 +==== Description ====
 +
 +Un certificat émis par l'​autorité de certification //​Let'​s Encrypt// vous permettra de chiffrer les connexions de votre serveur avec une clé //TLS/SSL// reconnue mondialement. Les utilisateurs pourront utiliser //https//.
 +
 +//​Référence://​ [[https://​fr.wikipedia.org/​wiki/​Let'​s_Encrypt|https://​fr.wikipedia.org/​wiki/​Let'​s_Encrypt]]. \\ 
 +//​Let'​s Encrypt// est une autorité de certification //(CA)// lancée le 3 décembre 2015 //(Bêta Version Publique)//​. Cette autorité fournit des certificats gratuits //X.509// pour le protocole cryptographique //TLS// au moyen d'un mécanisme automatisé destiné à se passer du processus complexe actuel impliquant la création manuelle, la validation, la signature, l'​installation et le renouvellement des certificats pour la sécurisation des sites Internet.
 +
 +=== Examen du certificat ===
 +
 +{{Images_Cahier-101-03-006.png?​25}} ​ On examine le certificat émis par //​Let'​s Encrypt// pour notre serveur //​dorgee.micronator-101.org//​ qui est directement branché à l'​Internet.
 +
 +Si la demande de certificat a fonctionnée sans erreur, essayez de vous connecter à la page de l'​interface Web du //Serveur NethServer//​. Le certificat devrait incorporer tous les noms d'​hôtes que vous avez inclus et être valide pour les quatre-vingt-dix prochains jours.
 +
 +On se connecte à l'​interface Web: **https://​www.micronator-101.org:​980**.
 +
 +<WRAP column 30%>
 +<​nowiki>​-</​nowiki>​ Le cadenas est __vert__. \\ 
 +<​nowiki>​-</​nowiki>​ On se logue.
 +|{{ Images_Cahier-101-03-369.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 30%>
 +<​nowiki>​-</​nowiki>​ On clique le **cadenas**.\\ ​
 +<​nowiki>​-</​nowiki>​ On clique l'​icône ​ "<​wrap em>​**>​**</​wrap>"​.
 +|{{ Images_Cahier-101-03-370.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 30%>
 +\\
 +**Plus d'​informations**.
 +|{{ Images_Cahier-101-03-371.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP center>
 +<WRAP column 46%>
 +\\
 +\\
 +<​nowiki>​-</​nowiki>​ Onglet **Sécurité**.\\
 +<​nowiki>​-</​nowiki>​ Afficher le certificat.
 +|{{ Images_Cahier-101-03-372.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +<​nowiki>​-</​nowiki>​ Onglet **Détails**.\\ ​
 +<​nowiki>​-</​nowiki>​ //**Émis pour**// ​ //​micronator-101.org//​\\ ​
 +<​nowiki>​-</​nowiki>​ //**Émis par**// ​ //​Let'​s Encrypt Authority X3//\\
 +<​nowiki>​-</​nowiki>​ On voit la date de début et de fin.
 +|{{ Images_Cahier-101-03-373.png?​400 }}|</​WRAP>​
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP center>
 +<WRAP column 46%>
 +\\
 +\\
 +<​nowiki>​-</​nowiki>​ **Validité ​ ->  Pas après**.\\ ​
 +<​nowiki>​-</​nowiki>​ Le certificat est valide pour 90 jours.
 +|{{ Images_Cahier-101-03-374.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +<​nowiki>​-</​nowiki>​ **Nom alternatif du sujet du certificat**.\\ ​
 +<​nowiki>​-</​nowiki>​ Tous nos //CNAME// choisis lors de la demande du certificat sont affichés.\\ ​
 +<​nowiki>​-</​nowiki>​ **Fermer** toutes les fenêtres du certificat.\\
 +|{{ Images_Cahier-101-03-375.png?​400 }}|</​WRAP>​
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +==== Vérification par Qualsys SSLLabs ====
 +
 +{{Images_Cahier-101-03-006.png?​25}} ​ <wrap em>​__Seulement pour un serveur directement branché à l'​Internet.__</​wrap>​\\ ​
 +Une fois que vous avez obtenu votre certificat, testez-le en vous rendant chez //Qualsys SSLLabs//, [[https://​www.ssllabs.com/​ssltest/​|https://​www.ssllabs.com/​ssltest/​]].\\ ​
 +Soumettez le nom //FQDN// de votre domaine pour vérifier que le certificat fonctionne correctement.
 +
 +<WRAP center>
 +<WRAP column 46%>
 +//​**Hostname:​**//​\\  ​
 +**micronator-101.org ​ ->  Submit**.
 +|{{ Images_Cahier-101-03-376.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +<​nowiki>​-</​nowiki>​ //**Overall Rating**// ​ →  A.\\ 
 +<​nowiki>​-</​nowiki>​ //​**Certificate**// ​ →  100%.
 +|{{ Images_Cahier-101-03-377.png?​400 }}|</​WRAP>​
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +===== Changement du mot de passe de root =====
 +
 +//​Référence://​ [[https://​www.rootusers.com/​how-to-reset-root-user-password-in-centos-rhel-7/​|https://​www.rootusers.com/​how-to-reset-root-user-password-in-centos-rhel-7/​]].\\ ​
 +Réinitialiser le mot de passe de **__root__** est normalement une tâche simple si vous êtes déjà connecté avec les privilèges de **__root__**. Toutefois, si vous oubliez le mot de passe et devez le changer, les choses deviennent un peu plus difficiles.\\
 +Le processus a changé de la version 6 de //​CentOS/​RHEL//​ //(Red Hat Enterprise Linux)// à la version 7. Auparavant, vous démarriez en mode //​mono-utilisateur//,​ puis changiez le mot de passe en tant qu'​utilisateur **__root__**. À partir de la version 7, les modes équivalents sont: //mode de secours// et //mode d’urgence//​. Cependant, ces modes d'​opération nécessitent le mot de passe de **__root__** avant de pouvoir faire quoi que ce soit. Cette section va vous guider dans le nouveau processus pour changer le mot de passe perdu de **__root__**. Cette procédure sera exécutée à la console du système Linux, assurez-vous donc que vous y avez accès avant de commencer.\\ ​
 +{{Images_Cahier-101-03-003.png?​22}} ​ Comme pour toutes les tâches de maintenance du système, assurez-vous de disposer d'une sauvegarde/​instantané du système avant de poursuivre.
 +
 +Si votre système Linux est en cours d'​exécution,​ redémarrez-le. S'il ne roule pas, démarrez-le.
 +
 +Pour //CentOS 7//, le menu de démarrage vous laissera 5 secondes pour sélectionner le noyau du système d’exploitation à démarrer. Ces 5 secondes sont importantes,​ car elles permettent aux administrateurs de sélectionner différents noyaux ou d’éditer les paramètres du noyau existant avant le démarrage.
 +
 +Dans le menu de démarrage, appuyez sur <wrap em>​e</​wrap>​ pour modifier le noyau existant tel qu'​indiqué ci-dessous.
 +
 +{{ Images_Cahier-101-03-378.png?​800 }}
 +\\
 +
 +Dans les options de ''​grub'',​ recherchez la ligne qui commence par ''​linux16''​ et allez à la fin. Entrez ''​rd.break''​ à la fin de cette ligne tel qu'​indiqué ci-dessous.
 +
 +<​file>​
 +rd.break
 +</​file>​
 +
 +{{ Images_Cahier-101-03-379.png?​800 }}
 +\\
 +
 +Appuyez sur **[Ctrl]** + **[x]** pour démarrer avec ces options qui vous amèneront à l'​invite //​initramfs//​ avec un //shell root//.
 +
 +{{ Images_Cahier-101-03-380.png?​800 }}
 +\\
 +
 +À ce stade, le système de fichiers racine est monté en mode lecture seule //(ro)// dans le répertoire ''/​sysroot''​ et doit être remonté avec les autorisations de lecture/​écriture //(rw)// pour que nous puissions réellement apporter certaines modifications. Ceci est réalisé avec la commande ''​mount -o  remount,​rw ​ /​sysroot''​.
 +
 +<​file>​
 +switch_root:/#​ mount -o  remount,​rw ​ /sysroot
 +
 +switch_root:/#​
 +</​file>​
 +
 +{{ Images_Cahier-101-03-381.png?​800 }}
 +\\
 +
 +Une fois le système de fichiers remonté, changez-le en une //prison chroot// afin que le répertoire ''/​sysroot''​ soit utilisé comme racine du système de fichiers. Ceci est nécessaire pour que toutes les commandes que nous exécuterons se rapportent à ''/​sysroot''​. La commande à lancer est ''​chroot ​ /​sysroot''​.
 +
 +<​file>​
 +switch_root:/#​ chroot /sysroot
 +
 +sh-4.2#
 +</​file>​
 +
 +{{ Images_Cahier-101-03-382.png?​800 }}
 +\\
 +
 +À partir d'ici, le mot de passe de **__root__** peut être réinitialisé à l’aide de la commande ''​passwd''​.
 +
 +<​file>​
 +sh-4.2# passwd
 +
 +Changing password for user root.
 +New password: Nouveau-mot-de-passe-de-root
 +Retype new passwd: Nouveau-mot-de-passe-de-root
 +passwd: all authentification tokens updated successfully.
 +sh-4.2#
 +</​file> ​
 +
 +{{ Images_Cahier-101-03-383.png?​800 }}
 +\\
 +
 +Si vous n'​utilisiez pas SELinux, vous pourriez redémarrer à ce stade et tout irait bien. Cependant, par défaut, //​CentOS/​RHEL-7//​ active SELinux. Nous devons donc corriger le contexte du fichier ''/​etc/​shadow''​. En effet, lorsque la commande ''​passwd''​ est exécutée, elle crée un nouveau fichier ''/​etc/​shadow''​. SELinux n'​étant pas en cours d'​exécution dans ce mode, le fichier est créé sans aucun contexte SELinux, ce qui peut entraîner des problèmes lors du redémarrage.
 +
 +On crée le fichier ''/​.autorelabel''​ à l’aide de ''​touch''​.
 +
 +<​file>​
 +sh-4.2# touch /​.autorelabel
 +
 +sh-4.2#
 +</​file> ​
 +
 +{{Images_Cahier-101-03-006.png?​25}} ​ La création de ce fichier effectuera automatiquement un ré-étiquetage de tous les fichiers au prochain démarrage. Notez que cela peut prendre un certain temps en fonction de la quantité de fichiers que vous avez. Peut prendre environ **2** minutes pour un serveur //​CentOS-7//​ ordinaire.
 +
 +On quitte l'​environnement //chroot//.
 +
 +<​file>​
 +sh-4.2# exit
 +
 +exit
 +sh-4.2#
 +</​file>  ​
 +
 +On quitte le shell racine ''​initramfs''​ //(peut prendre un certain temps, être patient...)//​. Le serveur s'​amorce.
 +
 +<​file>​
 +sh-4.2# exit
 +
 +logout
 +...
 +</​file>​
 +
 +==== Vérification ====
 +
 +__À la console du serveur__, vous devriez pouvoir vous connecter et utiliser le système avec le nouveau mot de passe que vous avez créé.
 +
 +===== ERROR Failed to send host log message =====
 +
 +Cette erreur s'​affiche seulement lors de l'​amorçage d'un serveur roulant sous //​VirtualBox//​.
 +
 +{{ Images_Cahier-101-03-384.png?​800 }}
 +\\
 +
 +<WRAP center>
 +<WRAP column 46%>
 +<​nowiki>​-</​nowiki>​ On arrête le //Serveur NethServer//​.\\ ​
 +<​nowiki>​-</​nowiki>​ À l'​écran //​VirtualBox//,​ on sélectionne la machine ​ **-> ​ État actuel ​ ->  Configuration**.
 +|{{ Images_Cahier-101-03-385.png?​400 }}|
 +\\
 +Au retour, on amorce le //Serveur NethServer//​ et le message ne s'​affichera plus.
 +</​WRAP>​
 +<WRAP column 46%>
 +\\
 +**Affichage ->** onglet **Écran -> Contrôleur graphique ->** on change pour **VboxVGA -> OK**.
 +|{{ Images_Cahier-101-03-386.png?​400 }}|
 +</​WRAP>​
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +===== Martian source =====
 +
 +Si dans le fichier journal ''/​var/​log/​messages'',​ vous voyez plusieurs lignes telles que ci-dessous, c'est que l'//​IP//​ de la passerelle du réseau vert de la carte //enp0s3// ou les //Serveurs DNS// ne sont corrects.
 +
 +<​file>​
 +...IPv4: martian source 192.168.1.1...
 +...IPv4: martian source 192.168.1.1...
 +...IPv4: martian source 192.168.1.1...
 +</​file>​
 +
 +=== Passerelle du réseau de la carte enp0s3 ===
 +
 +On trouve notre passerelle en lançant un ''​traceroute''​ vers google.com.
 +
 +<​file>​
 +[[email protected] ~]# traceroute google.com
 +
 +traceroute to google.com (172.217.165.14),​ 30 hops max, 60 byte packets
 + ​1 ​ lo0-0-lns03-tor.teksavvy.com (206.248.155.139) ​ 10.367 ms  11.449 ms  11.487 ms
 + ​2 ​ ae0-2150-bdr01-tor.teksavvy.com (69.196.136.172) ​ 11.523 ms  11.793 ms  11.826 ms
 + ​3 ​ 72.14.212.134 (72.14.212.134) ​ 11.868 ms  12.430 ms  12.306 ms
 + ​4 ​ 74.125.244.161 (74.125.244.161) ​ 12.736 ms 74.125.244.145 (74.125.244.145) ​ 14.002 ms 74.125.244.161 (74.125.244.161) ​ 13.174 ms
 + ​5 ​ 216.239.40.255 (216.239.40.255) ​ 13.577 ms  13.923 ms 216.239.41.175 (216.239.41.175) ​ 13.923 ms
 + ​6 ​ yyz12s06-in-f14.1e100.net (172.217.165.14) ​ 13.020 ms  12.009 ms  11.291 ms
 +[[email protected] ~]#
 +</​file>​
 +L'​adresse IP de la ligne #1 est //​206.248.155.139//​ et elle est donc la passerelle utilisée par notre connexion.
 +\\
 +
 +<WRAP column 46%>
 +**Configuration ​ ->  Réseau ​ ->  Périphérique enp0s3 ​ →  Éditer**.
 +
 +On change l'//​IP//​ de la passerelle pour l'//​IP//​ du rôle __<​nowiki>​LAN</​nowiki>​ (vert)__ / __enp0s3__ ->  **206.248.155.139**.
 +
 +**SOUMETTRE**.
 +</​WRAP>​
 +<WRAP column 46%>
 +|{{ Images_Cahier-101-03-395.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +==== Serveurs DNS ====
 +
 +//​Référence://​ [[https://​korben.info/​1-1-1-1-ou-9-9-9-9-ou-8-8-8-8-quel-dns-choisir.html|https://​korben.info/​1-1-1-1-ou-9-9-9-9-ou-8-8-8-8-quel-dns-choisir.html]].\\ ​
 +... Le //DNS// de //​Cloudflare//​ est un excellent //DNS//, car il est le plus rapide, mais aussi parce qu'ils ont pris les devants et s'​engagent à ne pas revendre les données, et ne conservent pas les logs au-delà de 24h...\\ ​
 +Le principal avantage bien sûr, c'est que contrairement au //DNS// de Google qui permet de mieux vous profiler pour vous balancer de la pub, on sait que //​Cloudflare//​ ne trempe pas là dedans. Cela reste une boîte américaine,​ donc c'est évidemment à prendre avec toutes les précautions d'​usage...
 +
 +//​Référence://​ pour //8.8.8.8// -  [[https://​www.dnsperf.com/​dns-resolver/​google|https://​www.dnsperf.com/​dns-resolver/​google]].
 +
 +//Autre référence://​ comparaison mondiale des performances de différents //​DNS//: ​ [[https://​medium.com/​@nykolas.z/​dns-resolvers-performance-compared-cloudflare-x-google-x-quad9-x-opendns-149e803734e5|https://​medium.com/​@nykolas.z/​dns-resolvers-performance-compared-cloudflare-x-google-x-quad9-x-opendns-149e803734e5]].
 +
 +//​Référence://​ pour ci-dessous //​1.1.1.1// ​ -  [[https://​www.dnsperf.com/#​!dns-resolvers|https://​www.dnsperf.com/#​!dns-resolvers]].
 +
 +<WRAP center>
 +<WRAP column 46%>
 +|{{ Images_Cahier-101-03-396.png?​400 }}|
 +</​WRAP>​
 +<WRAP column 46%>
 +|{{ Images_Cahier-101-03-397.png?​400 }}|</​WRAP>​
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 46%>
 +**Configuration ​ ->  Réseau ​ ->  Serveurs DNS**.
 +
 +On ajuste les //**DNS Primaire**//​ et //​**Secondaire**//​.
 +
 +{{Images_Cahier-101-03-005.png?​25}} Le serveur //**DNS primaire**//​ **1.1.1.1** est le plus rapide et le plus utilisée de tout l'​Internet.
 +
 +Le serveur //**DNS secondaire**//​ **206.248.182.3** est le défaut de notre FAI.
 +
 +**Soumettre**.
 +</​WRAP>​
 +<WRAP column 46%>
 +|{{ Images_Cahier-101-03-398.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +Si votre //FAI// filtre l'​adresse //​1.1.1.1//,​ prendre //8.8.8.8// ou une de celles citées dans la référence [[https://​medium.com/​@nykolas.z/​dns-resolvers-performance-compared-cloudflare-x-google-x-quad9-x-opendns-149e803734e5|https://​medium.com/​@nykolas.z/​dns-resolvers-performance-compared-cloudflare-x-google-x-quad9-x-opendns-149e803734e5]]. ​
 +\\ 
 +\\ 
 +
 +====== Introduction à l'​éditeur vi ======
 +
 +//​Référence://​ <​del>​http://​www.iro.umontreal.ca/​~dift3830/​vi.html</​del>​. //​(Dernière consultation,​ le 30 mai 2016. Novembre 2018, ce lien n'est plus fonctionnel.)//​
 +
 +**''​vi''​** est un éditeur de texte très puissant. Sa convivialité par contre lui fait défaut. Ceci dit, il est toujours utile d'en connaître les rudiments, car son omniprésence est presque garantie sur les systèmes modernes.
 +
 +La documentation de ''​vi''​ étant très abondante, on se limitera pour cette démo aux commandes les plus usuelles.
 +
 +Tout d'​abord l'​invocation. On peut invoquer ''​vi''​ à partir du shell de plusieurs façons dont en voici quelques-unes:​
 +
 +- **''​vi''​**:​ -> ouvre ''​vi''​ avec un contenu vide.
 +- **''​vi nom_de_fichier''​**:​ -> ouvre un fichier et l'​affiche à l'​écran.
 +- **''​vi +nom_de_fichier''​**:​ -> ouvre un fichier et positionne le curseur à la fin de celui-ci.
 +
 +Dès son invocation, ''​vi''​ se met en mode **commande**,​ dans ce mode il est possible d'​entrer les commandes qui seront vues plus bas. Si on tape une commande susceptible de modifier un texte //​(insertion d'un caractère par exemple)//, ''​vi''​ bascule en mode **édition**;​ dans ce mode tout caractère tapé sera considéré comme faisant partie du texte, tandis que les caractères saisis en mode //​commande//,​ seront eux interprétés comme étant des commandes et ne seront jamais rajoutés au texte.
 +
 +Afin de basculer du mode //​édition//​ au mode //​commande//​ il suffit de presser la touche **[Échap]**.
 +
 +<WRAP column 45%>
 +Nous allons commencer par invoquer ''​vi''​ à partir du shell en tapant:
 +<​file>​
 +vi
 +</​file>​
 +
 +Ce qui devrait donner l'​affichage ci-contre:
 +
 +''​vi''​ est déjà en mode //​commande//,​ pour le faire passer en mode //​édition//,​ on tape la commande ''​i''​ //​(insert)//​ qui nous permet d'​insérer du texte.
 +
 +<​file>​
 +i
 +</​file>​
 +</​WRAP>​
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-01-018.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +<WRAP column 45%>
 +Après avoir tapé le texte suivant:
 +
 +<​file>​
 +vi est un éditeur de texte très
 + 
 +utile pour la communauté des 
 +administrateurs.
 +</​file>​
 +
 +On obtient l'​affichage ci-contre.
 +</​WRAP>​
 +<WRAP column 45%>
 +|{{ Images_Cahier-101-01-019.png?​400 }}|
 +</​WRAP>​
 +<WRAP clear></​WRAP>​
 +
 +Après cela, on pourrait passer en mode //​commande//​ par simple pression sur la touche [Échap].
 +
 +Une fois en mode //​commande//,​ on voudrait par exemple, éliminer la ligne blanche qui se trouve juste après la première. Pour ce faire, on positionne le curseur a la hauteur de la 2e ligne et on tape ''​dd''​.
 +
 +Ceci aura pour effet de supprimer la ligne.
 +
 +Si on est satisfait, il ne nous reste plus qu'à sauvegarder le document sous le nom ''​texte1.txt''​ à l'aide de la commande suivante:
 +
 +<​file>​
 +:w texte1.txt
 +</​file>​
 +
 +//(Pour les sauvegardes ultérieures,​ il n'est pas nécessaire d'​ajouter le nom du fichier)//.
 +
 +Afin de quitter ''​vi''​ il suffit de taper la commande:
 +
 +<​file>​
 +:q texte1.txt
 +</​file>​
 +
 +Les commandes abondent dans ''​vi'',​ on n'en citera que quelques-unes.
 +
 +^ <WRAP centeralign>​\\ Principales commandes de vi</​WRAP>​ ^^
 +|//​**Commande**//​|//​**Effets**//​|
 +|i (insert)|Insère un texte sur le curseur|
 +|I|Insère au début de la ligne|
 +|a (append)|Insère après le curseur|
 +|A|Insère à la fin de la ligne|
 +|Les flèches|pour les déplacements|
 +|Ctrl-F (forward)|Défiler d'un écran vers le bas|
 +|Ctrl-B (backward)|Défiler d'un écran vers le haut|
 +|nG (goto)|va à la nième ligne dans le texte|
 +|G|Va à la fin du texte|
 +|x|Effacer le caractère courant|
 +|dd|Effacer la ligne courante|
 +|D|Effacer depuis la position du curseur jusqu'​à la fin de la ligne|
 +|db (DeleteBegining)|Effacer depuis la position courante jusqu'​au début de la ligne|
 +|/​chaîne|rechercher la chaîne '​chaîne'​ dans le texte, on peut taper '​n'​ pour voir les autres occurrences|
 +|:w fichier|copie le texte courant sur le disque sous le nom fichier |
 +|:wq (write & quit)|écrit le fichier sur le disque et quitte vi.|
 +|:​q!|Quitter sans sauvegarder.|
 +|:set nu|Affiche le numérotage des lignes.|
 +\\ 
 +\\ 
 +{{NS-101_002_Banniere_Victoire.png?​50}} ​ Victoire totale, hissons la bannière de la victoire.
 +\\ 
 +
 +----
 +
 +====== Crédits ======
 +
 +© 2019  RF-232\\ ​
 +Auteur: Michel-André.\\ ​
 +Remerciement:​ Tous les contributeurs GNU/​GPL.\\ ​
 +Intégré par: Michel-André Robillard CLP\\ 
 +Contact: michelandre at micronator.org
 +
 +Répertoire de ce document: <​nowiki>​E:​\000_DocPourRF232_general\RF-232_NethServer-301\RF-232_Cours_NethServer-301-02_ActiveDirectory_2019-12-24_11h59.odt.</​nowiki>​
 +
 +Historique des modifications:​
 +
 +^Version^Date^Commentaire^Auteur|
 +|0.0.1|2019-10-02|Début.|M.-A. Robillard|
 +|12345678901 | | |12345678901|
 +
 +
 +<​html><​hr style="​width:​50%;​ margin: 0 auto;"></​html>​
 +
 +===== AVIS DE NON-RESPONSABILITÉ =====
 +
 +Ce document est uniquement destiné à informer. Les informations,​ ainsi que les contenus et fonctionnalités de ce do­cument sont fournis sans engagement et peuvent être modifiés à tout moment. RF‑232 n'​offre aucune garantie quant à l'​actualité,​ la conformité,​ l'​exhaustivité,​ la qualité et la durabilité des informations,​ contenus et fonctionnalités de ce document. L'​accès et l'​utilisation de ce document se font sous la seule responsabilité du lecteur ou de l'​utilisateur.
 +
 +RF‑232 ne peut être tenu pour responsable de dommages de quelque nature que ce soit, y compris des dommages di­rects ou indirects, ainsi que des dommages consécutifs résultant de l'​accès ou de l'​utilisation de ce document ou de son contenu.
 +
 +Chaque internaute doit prendre toutes les mesures appropriées //(mettre à jour régulièrement son logiciel antivirus, ne pas ouvrir des documents suspects de source douteuse ou non connue)// de façon à protéger le contenu de son ordina­teur de la contamination d'​éventuels virus circulant sur la Toile.
 +
 +Toute reproduction interdite
 +Vous reconnaissez et acceptez que tout le contenu de ce document, incluant mais sans s’y limiter, le texte et les images, sont protégés par le droit d’auteur, les marques de commerce, les marques de service, les brevets, les secrets industriels et les autres droits de propriété intellectuelle. Sauf autorisation expresse de RF-232, vous acceptez de ne pas vendre, délivrer une licence, louer, modifier, distribuer, copier, reproduire, transmettre,​ afficher publiquement,​ exécuter en public, publier, adapter, éditer ou créer d’oeuvres dérivées de ce document et de son contenu.
 +
 +==== Avertissement====
 +
 +Bien que nous utilisions ici un vocabulaire issu des techniques informatiques,​ nous ne prétendons nullement à la précision technique de tous nos propos dans ce domaine.
 +\\
 +\\
nethserver_301_cahier_02_active_directory.txt · Dernière modification: 2019-12-26 19:35 par michelandre