Outils pour utilisateurs

Outils du site


nethserver_201_cahier_08_self_service_password

Différences

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

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
nethserver_201_cahier_08_self_service_password [2019-12-22 16:10] michelandrenethserver_201_cahier_08_self_service_password [2025-01-12 19:30] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +\\ 
 +{{ Images_Cahier-201-08-001.png?650 }}
 +\\ 
 +====== Description générale ======
  
 +Le **Cahier-08** du "Cours NethServer-201" décrit l'installation et la configuration de **Self Service Password** sur un //Serveur NethServer-7.6.1810//.
 +
 +{{Images_Cahier-101-03-006.png?25}} Nous allons utiliser la machine virtuelle du **
 +[[nethserver_101_cahier_04_local_certificat_let_encrypt|Cahier-04]]
 +:** //NethServer LOCAL & Certificat Let's Encrypt// du "Cours NethServer-101".
 +
 +===== Self Service Password =====
 +
 +//Self Service Password// est une application //PHP// qui permet aux utilisateurs de modifier leur mot de passe dans un annuaire //LDAP//.
 +
 +L'application peut être utilisée sur des répertoires //LDAPv3// standard //(OpenLDAP, OpenDS, ApacheDS, 389 DS, RHDS, DSEE Sun Oracle, Novell, etc.)// et également sur //Active Directory//.
 +
 +//Self Service Password// présente les caractéristiques suivantes:
 +
 +  - Mode LDAP
 +  - Mode Active Directory
 +  - Politique locale de mot de passe:
 +    - Longueur minimum / maximum
 +    - Caractères interdits
 +    - Compteurs de caractères minuscules, majuscules, numériques ou spéciaux
 +    - Contrôle de la réutilisation de l'ancien de mot de passe
 +    - Complexité //(classe différente de caractères)//
 +  - Messages d'aide
 +  - Réinitialisation par question
 +  - Réinitialisation par jeton courriel //(jeton envoyé par messagerie électronique)//
 +  - Réinitialisation par SMS //(via le service externe Email2SMS)//
 +  - reCAPTCHA //(Google API)//
 +  - Notification par courriel après changement de mot de passe
 +
 +===== Documentation SSP =====
 +
 +<WRAP centeralign>
 +[[https://ltb-project.org/documentation/self-service-password/latest/start|https://ltb-project.org/documentation/self-service-password/latest/start]].
 +</WRAP>
 +
 +===== But de ce cahier =====
 +
 +Installer et configurer //Self Service Password// sur un //Serveur NethServer-7.6.1810// virtuel sur le réseau LOCAL.
 +
 +{{Images_icone-201-003_Note.png?25}} Les procédures sont exactement les mêmes pour un //Serveur NethServer// physique directement branché ou non à l'Internet.
 +
 +{{ Images_Cahier-201-08-003.png?400 }}
 +\\
 +
 +{{ Images_Cahier-201-08-004.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>
 +[root@dorgee ~]# 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
 +[root@dorgee ~]#
 +</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-201-08-005.png?700 }}
 +
 +===== 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]].
 +\\ 
 +\\ 
 +
 +====== Préparation de l'environnement de travail ======
 +
 +===== Configuration du poste de travail =====
 +
 +Voir la section //À savoir// du 
 +[[nethserver_101_cahier_03_creation_un_serveur_virtuel#À savoir|Cahier-03]]
 +: //Création d'un Serveur NethServer virtuel// du "Cours NethServer-101".
 +
 +<WRAP column 61%>
 +==== Vérification ====
 +
 +**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 31%>
 +|{{ Images_Cahier-201-02-007.png?400 }}|
 +</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-201-02-008.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
 +root@10.10.10.75'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
 +
 +***********************************************
 +[root@tchana ~]#
 +</file>
 +
 +==== Adresse IP ====
 +
 +On vérifie les adresses //IP// du serveur.
 +
 +<file>
 +[root@tchana ~]# 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
 +
 +[root@tchana ~]#
 +</file>
 +
 +==== Fail2ban ====
 +
 +On vérifie que le pare-feu //Fail2ban// soit installé.
 +
 +<file>
 +[root@tchana ~]# 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
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie que //Fail2ban// roule sur le serveur.
 +
 +<file>
 +[root@tchana ~]# 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
 +[root@tchana ~]#
 +</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>
 +[root@tchana ~]# 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@tchana ~]#
 +</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-201-02-020.png?600}}
 +==== Utilisateur michelandre ====
 +
 +**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".
 +\\ 
 +\\ 
 +
 +{{ Images_Cahier-201-08-013.png?600}}
 +==== Autres utilisateurs ====
 +
 +Nous créons deux autres utilisateurs: **__toto__** et **__titi__**, nous activons //Remote shell (SSH)// et nous leur donnons un mot de passe.
 +<WRAP clear></WRAP>
 +\\
 +
 +{{ Images_Cahier-201-08-014.png?600}}
 +==== Groupes ====
 +
 +Nous créons un nouveau groupe **__grp-utilisateurs__** et y insérons **__toto__** et **__titi__**.
 +<WRAP clear></WRAP>
 +\\ 
 +
 +==== Répertoires personnels ====
 +
 +À la connexion //PuTTY//, on se substitue à **__toto__**, on retourne à **__root__**, même procédure pour **__titi__** et **__michelandre__**.
 +
 +Ces connexions auront comme principal avantage de créer le répertoire personnel de **__toto__**, **__titi__** et de **__michelandre__**.
 +
 +<file>
 +[root@tchana ~]# su - toto
 +
 +Creating home directory for toto@micronator-dev.org.
 +[toto@micronator-dev.org@tchana ~]$
 +</file>
 +
 +<file>
 +[toto@micronator-dev.org@tchana ~]$ exit
 +
 +logout
 +[root@tchana ~]#
 +</file>
 +
 +<file>
 +[root@tchana ~]# su - titi
 +
 +Creating home directory for titi@micronator-dev.org.
 +[titi@micronator-dev.org@tchana ~]$
 +</file>
 +
 +<file>
 +[titi@micronator-dev.org@tchana ~]$ exit
 +
 +logout
 +[root@tchana ~]#
 +</file>
 +
 +<file>
 +[root@tchana ~]# su - michelandre
 +
 +Creating home directory for michelandre@micronator-dev.org.
 +[michelandre@micronator-dev.org@tchana ~]$
 +</file>
 +
 +<file>
 +[michelandre@micronator-dev.org@tchana ~]$ exit
 +
 +logout
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie la création des répertoires personnels.
 +
 +<file>
 +[root@tchana ~]# ls -ls /var/lib/nethserver/home
 +
 +total 0
 +0 drwx------ 2 michelandre@micronator-dev.org locals@micronator-dev.org 83 20 oct.  18:02 michelandre
 +0 drwx------ 2 titi@micronator-dev.org        locals@micronator-dev.org 83 20 oct.  18:02 titi
 +0 drwx------ 2 toto@micronator-dev.org        locals@micronator-dev.org 83 20 oct.  18:01 toto
 +[root@tchana ~]#
 +</file>
 +
 +==== Répertoires de courriels ====
 +
 +On se rends à https://www.micronator-dev.org/webmail/ et on se logue avec l'utilisateur **__toto__**.
 +
 +Après s'être connecté à Webmail, **__toto__** envoie un courriel à **__michelandre__**. On répète les même opérations avec l'utilisateur **__titi__**.
 +
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-08-015.png?500 }}|
 +</WRAP>
 +<WRAP column 62%>
 +|{{ Images_Cahier-201-08-016.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +On vérifie la réception des courriels par **__michelandre__**.
 +</WRAP>
 +<WRAP column 62%>
 +|{{ Images_Cahier-201-08-017.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +On vérifie la création des répertoires courriels.
 +
 +<file>
 +[root@tchana ~]# ls -ls /var/lib/nethserver/vmail
 +
 +total 4
 +0 drwx------ 3 vmail vmail 21 19 avril  2019 admin@micronator-dev.org
 +0 drwx------ 3 vmail vmail 21 19 avril  2019 michelandre@micronator-dev.org
 +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 titi@micronator-dev.org
 +0 drwx------ 3 vmail vmail 21 14 oct.  17:19 toto@micronator-dev.org
 +0 drwx------ 3 vmail vmail 21  8 janv.  2019 vmail
 +0 drwx------ 3 vmail vmail 21 19 avril  2019 vmail@micronator-dev.org
 +[root@tchana ~]#
 +</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 =====
 +
 +Version //PHP// actuelle pour notre //Serveur NethServer-7.6-1810//.
 +
 +<file>
 +[root@tchana ~]# php --version
 +
 +PHP 5.4.16 (cli) (built: Oct 30 2018 19:30:51)
 +Copyright (c) 1997-2013 The PHP Group
 +Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
 +[root@tchana ~]#
 +</file>
 +
 +Comme on le voit, notre version //5.4.16// de //PHP// est légèrement vieillotte.
 +
 +{{Images_icone-201-003_Note.png?25}} Nous allons installer la //Collection PHP// qui fournit une version plus récente tout en gardant installée la version originale.
 +
 +==== Collections de logiciels ====
 +
 +{{Images_icone-201-001_doigt.png?22}} Les développeurs de //RedHat// ont pensé qu'un inconvénient, avec entre autres la version 5 de //PHP//, allait survenir tôt ou tard et ont écrit les paquetages des //Collections//.
 +
 +Tous les //RPM// des //Collections// sont installés dans le répertoire ''/opt''; ce qui empêche toutes interférences ou conflits avec les installations par défaut.
 +
 +=== PHP ===
 +Le but de la //Collection PHP// est d'installer //PHP-5.6//, //PHP-7.0//, //PHP-7.1//, //PHP-7.2//, //PHP-7.3// et //PHP-7.4// parallèlement à la version installée par défaut avec //NethServer-7.6.1810//, sans devoir supprimer ou modifier cette dernière. Cette //Collection// utilise les //RPM// du référentiel **remi** qui sont en fait, les mêmes que ceux sur le site Web officiel, mais ils ont l'avantage de fournir plus de choix. Cette //Collection// nécessite d'installer le référentiel **stephdl**.
 +
 +==== Prérequis pour l'installation de la Collection PHP ====
 +
 +//Référence:// [[https://wiki.nethserver.org/doku.php?id=php-scl|https://wiki.nethserver.org/doku.php?id=php-scl]].
 +
 +Il faut installer les référentiels //stephdl// et //remi// pour pouvoir installer la //Collection PHP//.
 +
 +=== Référentiel stephdl ===
 +
 +//Référence:// [[https://wiki.nethserver.org/doku.php?id=stephdl_repository|https://wiki.nethserver.org/doku.php?id=stephdl_repository]].
 +
 +On vérifie si le référentiel //stephdl// est déjà installé.
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep nethserver-stephdl
 +
 +nethserver-stephdl-1.0.8-1.ns7.sdl.noarch
 +[root@tchana ~]#
 +</file>
 +
 +Si ce n'est déjà fait, on installe ce référentiel.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# yum install -y  http://mirror.de-labrusse.fr/NethServer/7/x86_64/nethserver-stephdl-1.0.8-1.ns7.sdl.noarch.rpm
 +
 +...
 +Transaction Summary
 +============================================================================================
 +Install  1 Package
 +
 +Total size: 40 k
 +Installed size: 40 k
 +...
 +Installed:
 +  nethserver-stephdl-1.0.8-1.ns7.sdl.noarch
 +
 +Complete!
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +Vérification.
 +
 +<WRAP box round>
 +<file>
 +[root@tchana ~]# rpm -qa | grep stephdl
 +
 +nethserver-stephdl-1.0.8-1.ns7.sdl.noarch
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +=== Référentiel remi ===
 +
 +<file>
 +[root@tchana ~]# yum install -y http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
 +
 +...
 +Transaction Summary
 +============================================================================================
 +Install  1 Package
 +
 +Total size: 23 k
 +Installed size: 23 k
 +...
 +Installed:
 +  remi-release.noarch 0:7.7-1.el7.remi
 +
 +Complete!
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[[root@tchana ~]# rpm -qa | grep remi
 +
 +remi-release-7.7-1.el7.remi.noarch
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +==== Installation de la Collection PHP ====
 +
 +<file>
 +[root@tchana ~]# yum install -y nethserver-php-scl --enablerepo=stephdl
 +
 +...
 +Résumé de la transaction
 +============================================================================================
 +Installation   1 Paquet (+152 Paquets en dépendance)
 +
 +Taille totale des téléchargements : 57 M
 +Taille d'installation : 167 M
 +...
 +  Installation : scl-utils-20130529-19.el7.x86_64                                     1/153
 +...
 +  Vérification : php71-php-common-7.1.33-1.el7.remi.x86_64                          153/153
 +...
 +Installé :
 +    nethserver-php-scl.x86_64 0:1.2.8-1.ns7.sdl
 +
 +Dépendances installées :
 +  enchant.x86_64 1:1.6.0-8.el7
 +...
 +  tcl.x86_64 1:8.5.13-8.el7
 +
 +Terminé !
 +[root@tchana ~]#
 +</file>
 +
 +==== Mise à jour de la Collection ====
 +
 +//NethServer-7.6.1810// utilise intrinsèquement le référentiel //remi-safe//. Ce qui signifie qu'il est activé par défaut.
 +
 +Exemple de la mise à jour de la Collection PHP.
 +
 +<file>
 +[root@tchana ~]# yum update -y nethserver-php-scl --enablerepo=stephdl
 +
 +Modules complémentaires chargés : changelog, fastestmirror, nethserver_events
 +Loading mirror speeds from cached hostfile
 + * epel: epel.mirror.constant.com
 + * remi-safe: mirror.team-cymru.com
 +No packages marked for update
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} S'il y avait une mise à jour, elle serait installée avec cette commande.\\ 
 +{{Images_icone-201-003_Note.png?25}} La mise à jour du //Serveur NethServer// s'occupe aussi de celle de la Collection PHP.
 +
 +==== Usage ====
 +
 +Normalement, l'interface Web devrait être complète et vous ne devriez pas devoir utiliser la ligne de commande. Si vous pensez que //Stéphane de Labrusse// pourrait améliorer les paramètres //PHP// en apportant plus d'options, veuillez le lui demander: //stephdl arobas de-labrusse point fr//.
 +
 +Les réglages sont répartis à deux endroits.
 +
 +  - **Gestion -> Hôtes virtuels**.\\ 
 +À cette page, après avoir créé un hôte virtuel, vous pouvez choisir la version que vous utiliserez pour l'//Ibay/virtualhost// //(par défaut, la version PHP d’Apache)//.\\ Vu que //NethServer// utilise un script //CGI// pour gérer la version de //PHP//, vous ne pourrez pas ajuster les paramètres //PHP// avec le module //nethserver-phpsettings//; vous devez régler les paramètres à l'aide du fichier ''php.ini'' correspondant. //Stéphane de Labrusse// voulait coder quelque chose de "cool" afin que tous les paramètres ne soient pas basés uniquement sur des commandes ''db…'' Il a alors crée une page de configuration.\\ 
 +\\ 
 +
 +  -  **Configuration -> Paramètres PHP**.\\ 
 +À cette page, vous pouvez choisir la version //PHP// que vous souhaitez utiliser __pour l’ensemble du serveur__.\\ Lorsqu'//Apache// est le gestionnaire de //PHP//, vous pouvez alors définir les paramètres //PHP// avec le module //nethserver-phpsettings//. En d'autres termes, si vous souhaitez utiliser le module //nethserver-phpsettings// et que vous avez besoin d'une version spécifique de //PHP//, vous devez utiliser cette version __pour tout le serveur__. Bien sûr, vous pouvez revenir à la version par défaut en cas de problème avec une ancienne application Web. Dans d’autres parties de cette page de configuration, vous pouvez ajuster les paramètres //PHP// pour toutes les versions de //PHP//.
 +\\ 
 +
 +==== Répertoire d'installation ====
 +
 +{{Images_icone-201-003_Note.png?25}} Toutes les versions //PHP// de la //Collection// proviennent du référentiel //remi-safe// et sont installées dans le répertoire ''/opt/remi''.
 +
 +On vérifie la présence du référentiel //remi-safe// sur le //Serveur NethServer//.
 +
 +<file>
 +[root@tchana ~]# yum repolist | grep remi
 +
 +* remi-safe: mirror.team-cymru.com
 +remi-safe                   Safe Remi's RPM repository for Enterprise Lin  3 621
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie le répertoire ''/opt''.
 +
 +<file>
 +[root@tchana ~]# ls -ls /opt
 +
 +total 0
 +0 drwxr-xr-x. 7 root root 81  4 janv.  2019 puppetlabs
 +0 drwxr-xr-x  8 root root 84 16 nov.  13:58 remi
 +0 drwxr-xr-x  2 root root  6 30 oct.   2018 rh
 +[root@tchana ~]#
 +</file>
 +
 +On affiche le répertoire ''/opt/remi''.
 +
 +<file>
 +[root@tchana ~]# ls -ls /opt/remi
 +
 +total 0
 +0 dr-xr-xr-x 3 root root 32 16 nov.  13:57 php56
 +0 dr-xr-xr-x 3 root root 32 16 nov.  13:57 php70
 +0 dr-xr-xr-x 3 root root 32 16 nov.  13:58 php71
 +0 dr-xr-xr-x 3 root root 32 16 nov.  13:57 php72
 +0 dr-xr-xr-x 3 root root 32 16 nov.  13:58 php73
 +0 dr-xr-xr-x 3 root root 32 16 nov.  13:57 php74
 +[root@tchana ~]#
 +</file>
 +
 +==== PHP72 par défaut après une connexion à la ligne de commande ====
 +
 +//Référence:// [[http://appdev.oit.umn.edu/2015/02/11/scl/|http://appdev.oit.umn.edu/2015/02/11/scl/]]
 +
 +On crée le fichier d'activation qui sera lu lors d'une connexion à une console du //Serveur NethServer//.
 +
 +{{Images_icone-201-004_Triangle.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /etc/profile.d/activer-php72.sh <<'EOT'
 +#!/bin/bash
 +source /opt/remi/php72/enable
 +if [[ "$X_SCLS" != *php72* ]]; then
 +src="`scl enable php72 'echo $X_SCLS'`"
 +pkgs=(${src// / })
 +uniq=($(printf "%s\n" "${pkgs[@]}" | sort -u));
 +export X_SCLS="${uniq[@]}"
 +fi
 +EOT
 +
 +
 +</file>
 +
 +On rend le fichier exécutable.
 +
 +<file>
 +[root@tchana ~]# chmod +x /etc/profile.d/activer-php72.sh
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -als /etc/profile.d/activer-php72.sh
 +
 +4 -rwxr-xr-x 1 root root 215 16 nov.  14:03 /etc/profile.d/activer-php72.sh
 +[root@tchana ~]#
 +</file>
 +
 +=== Vérification si PHP72 est le défaut===
 +
 +{{Images_icone-201-004_Triangle.png?25}} On ferme la connexion //PuTTY// et on en ouvre une nouvelle.
 +
 +On vérifie l'installation de la //Collection//.
 +
 +<file>
 +[root@tchana ~]# rpm -qa | grep scl-
 +
 +centos-release-scl-rh-2-3.el7.centos.noarch
 +centos-release-scl-2-3.el7.centos.noarch
 +scl-utils-20130529-19.el7.x86_64
 +nethserver-php-scl-1.2.8-1.ns7.sdl.x86_64
 +</file>
 +
 +//Collections// installées.
 +
 +<file>
 +[root@tchana ~]# scl -l
 +
 +php56
 +php70
 +php71
 +php72
 +php73
 +php74
 +[root@tchana ~]#
 +</file>
 +
 +Quel est le //PHP// par défaut?
 +
 +<file>
 +[root@tchana ~]# which php
 +
 +/opt/remi/php72/root/usr/bin/php
 +[root@tchana ~]#
 +</file>
 +
 +Quelle est sa version?
 +
 +<file>
 +[root@tchana ~]# 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
 +[root@tchana ~]#
 +</file>
 +
 +Notre fichier ''activer-php72.sh'' fonctionne correctement.
 +\\ 
 +
 +=== Sauvegarde du fichier d'activation ===
 +
 +On vérifie si le nom du fichier ''/etc/profile.d/activer-php72.sh'' 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_icone-201-004_Triangle.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +NouvelleInclusion="/etc/profile.d/activer-php72.sh"
 +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>
 +[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /etc/profile.d/activer-php72.sh
 +
 +/etc/profile.d/activer-php72.sh
 +[root@tchana ~]#
 +</file>
 +
 +Ci-dessus, il n'y a pas de ligne vide avant ''/etc/profile.d/activer-php72.sh''. Nous en avons inséré une afin de faciliter la copie de la commande.
 +\\ 
 +
 +==== Mise à jour de la Collection ====
 +
 +//NethServer-7.6.1810//  utilise intrinsèquement le référentiel //remi-safe//. Ce qui signifie qu'il est activé par défaut. Lancez simplement la commande suivante pour mettre à jour la Collection PHP:
 +
 +<file>
 +[root@tchana ~]# yum update -y nethserver-php-scl --enablerepo=stephdl
 +
 +Loaded plugins: changelog, fastestmirror, nethserver_events
 +Loading mirror speeds from cached hostfile
 + * ce-base: it.centos.contactlab.it
 + * ce-extras: it.centos.contactlab.it
 + * ce-updates: it.centos.contactlab.it
 + * epel: epel.mirror.constant.com
 + * nethforge: mirror.nethserver.org
 + * nethserver-base: mirror.nethserver.org
 + * nethserver-updates: mirror.nethserver.org
 + * remi-safe: rpms.remirepo.net
 +No packages marked for update
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-004_Triangle.png?25}} S'il y avait une mise à jour, elle serait installée avec cette commande.\\ 
 +{{Images_icone-201-003_Note.png?25}} La mise à jour du //Serveur NethServer// s'occupe aussi de celle de la //Collection PHP//.
 +\\ 
 +
 +==== Ajustement des paramètres PHP ====
 +
 +Les valeurs de certains paramètres de //PHP// ne sont pas suffisants pour certains ajouts. Ces paramètres sont: **''MemoryLimit''**, **''PostMaxSize''** et **''UploadMaxFilesize''**. Il faut les ajuster.
 +
 +Affichage des paramètres par défaut.
 +
 +<file>
 +[root@tchana ~]# config show php72
 +
 +php72=configuration
 +    AllowUrlFopen=On
 +    ExposePhp=0
 +    MaxExecutionTime=30
 +    MaxFileUpload=20
 +    MaxInputTime=60
 +    MemoryLimit=128
 +    PostMaxSize=20
 +    UploadMaxFilesize=10
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_icone-201-001_doigt.png?22}} Il faut obligatoirement que le paramètre ''PostMaxSize'' soit plus grand que celui de ''UploadMaxFilesize''. Si on modifie l'un, il faut vérifier l'autre pour que la correspondance des grandeurs soit respectée.
 +\\ 
 +
 +Ci-dessous, le caractère <wrap em>></wrap> signifie "plus grand que".\\ 
 +{{Images_icone-201-004_Triangle.png?25}} Nous allons ajuster: ''MemoryLimit'' //(250M)// <wrap em>></wrap> ''PostMaxSize'' //(100M)// <wrap em>></wrap> ''UploadMaxFilesize'' //(75M)//.
 +\\ 
 +
 +=== MemoryLimit ===
 +
 +Chaque fois qu'un client fait une requête au serveur Web, //PHP// génère un processus //PHP//. Le travail de ce processus est de générer du code HTML qu'il envoie au client. Le processus fournit un temps d'exécution à un script qui crée la réponse à la requête. La limite de mémoire ''MemoryLimit'' est la quantité maximale de mémoire que ce processus peut utiliser. Si la limite est atteinte ou dépassée, le processus échoue et //Apache// signale une erreur //HTTP 500//.
 +
 +=== PostMaxSize ===
 +
 +Le paramètre ''PostMaxSize'' définit la taille maximale autorisée pour les données d'un //post//. Ce paramètre affecte également le téléchargement de fichiers. Pour télécharger des fichiers volumineux, cette valeur doit absolument être toujours supérieure à ''UploadMaxFilesize''.
 +
 +<WRAP column 30%>
 +=== UploadMaxFilesize ===
 +
 +Pour certaines extensions, telles qu'entre autres //WooCommerce//, //WordPress// doit autoriser le téléversement de fichiers et la grandeur de ceux-ci ne peut dépasser la limite définie par le paramètre ''UploadMaxFilesize'' de //PHP//.\\ 
 +La limite ci-contre, __est celle de WordPress__.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-02-200.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +
 +=== Version PHP par défaut ===
 +
 +On définit la version //PHP// par défaut pour //Apache//.
 +
 +**Configuration -> Paramètres PHP ->** onglet **Version PHP Apache ->** cliquer  **Php72 SCL Version -> SOUMETTRE**.
 +</WRAP>
 +<WRAP column 60%>
 +|{{ Images_Cahier-201-08-021.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +=== Ajustements des paramètres de la version PHP-7.2 ===
 +
 +Onglet **Php V7.2 SCL**\\
 +Ajuster tel que ci-contre //(250M - 100M - 75M)//\\ 
 +**-> SOUMETTRE**.
 +
 +{{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%>
 +Onglet **Version par défaut de PHP**\\ 
 +Ajuster tel que ci-contre //(250M - 75M - 75M)//\\ 
 +**-> SOUMETTRE**.\\
 +
 +{{Images_icone-201-006_Securite.png?25}} //**Autoriser l'accès PHP aux fichiers distants**// 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 ===
 +
 +== MemoryLimit ==
 +
 +<file>
 +[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i Memory_Limit
 +
 +memory_limit                           = 250M
 +[root@tchana ~]#
 +</file>
 +
 +== PostMaxSize ==
 +
 +<file>
 +[root@tchana ~]# cat /etc/opt/remi/php72/php.ini | grep -i post_max_size
 +
 +post_max_size                          = 100M
 +[root@tchana ~]#
 +</file>
 +
 +== UploadMaxFilesize ==
 +
 +<file>
 +[root@tchana ~]# 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>
 +[root@tchana ~]# config show php72
 +
 +php72=configuration
 +    AllowUrlFopen=Off
 +    ExposePhp=0
 +    MaxExecutionTime=30
 +    MaxFileUpload=20
 +    MaxInputTime=60
 +    MemoryLimit=250
 +    PostMaxSize=100
 +    UploadMaxFilesize=75
 +[root@tchana ~]#
 +</file>
 +
 +==== Installation du module PHP pour AD ====
 +
 +<file>
 +[root@tchana ~]# 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é !
 +[root@tchana ~]#
 +</file>
 +
 +==== phpinfo.php ====
 +
 +On crée un fichier qui affichera toutes les information de //PHP//. \\ 
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /var/www/html/phpinfo.php <<'EOT'
 +<?php
 +// Affiche toutes les informations de PHP, par défaut INFO_ALL
 +phpinfo();
 +?>
 +EOT
 +
 +
 +</file>
 +
 +On ajuste le //propriétaire:groupe//.
 +
 +<file>
 +[root@tchana ~]# chown apache:apache /var/www/html/phpinfo.php
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +<file>
 +[root@tchana ~]# ls -ls /var/www/html/phpinfo.php
 +
 +4 -rw-r--r-- 1 apache apache 84 16 nov.  14:16 /var/www/html/phpinfo.php
 +[root@tchana ~]#
 +</file>
 +
 +<WRAP column 30%>
 +On lance le fichier: https://www.micronator-dev.org/phpinfo.php.
 +
 +On examine la section //Core// qui affiche qu'on utilise la version PHP-7.2.24.
 +</WRAP>
 +<WRAP column 62%>
 +|{{ Images_Cahier-201-08-024.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +Le test est terminé, on supprime le fichier.
 +
 +<file>
 +[root@tchana ~]# rm -rf /var/www/html/phpinfo.php
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie la suppression.
 +
 +<file>
 +[root@tchana ~]# ls -ls /var/www/html/phpinfo.php
 +
 +ls: impossible d'accéder à /var/www/html/phpinfo.php: Aucun fichier ou dossier de ce type
 +[root@tchana ~]#
 +</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.
 +\\ 
 +\\ 
 +
 +====== Installation de Self Service Password ======
 +
 +===== Introduction =====
 +
 +On veut que les utilisateurs puissent changer leur mot de passe sans utiliser un //VPN// et sans exposer le gestionnaire Web du serveur à l'ensemble de l'Internet.
 +
 +===== Téléchargement =====
 +
 +{{ Images_Cahier-201-08-025.png?300}}
 +//Lien de téléchargement://  [[https://ltb-project.org/download#self_service_password|https://ltb-project.org/download#self_service_password]].
 +
 +On téléverse le fichier **ltb-project-self-service-password-1.3.tar.gz** dans le répertoire **/root**.
 +<WRAP clear></WRAP>
 +
 +===== Installation =====
 +
 +On vérifie le téléchargement du fichier.
 +
 +<file>
 +[root@tchana ~]# ls -als ltb-project-self-service-password-1.3.tar.gz
 +
 +1704 -rw-r--r-- 1 root root 1744823 Nov  4 16:15 ltb-project-self-service-password-1.3.tar.gz
 +[root@tchana ~]#
 +</file>
 +
 +On crée un répertoire pour //SSP//.
 +
 +<file>
 +[root@tchana ~]# mkdir /usr/share/self-service-password
 +
 +[root@tchana ~]#
 +</file>
 +
 +On extraie l'archive //tar.gz// dans le répertoire pour //SSP//.
 +
 +<file>
 +[root@tchana ~]# tar -zxvf /root/ltb-project-self-service-password-1.3.tar.gz -C /usr/share/self-service-password --strip-components=1
 +
 +ltb-project-self-service-password-1.3/index.php
 +...
 +ltb-project-self-service-password-1.3/fonts/fontawesome-webfont.ttf
 +[root@tchana ~]#
 +</file>
 +
 +On ajuste **__R__**écursivement le //propriétaire:groupe// de tout le répertoire de //SSP//.
 +
 +<file>
 +[root@tchana ~]# chown -R apache:apache /usr/share/self-service-password/
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie le répertoire de //SSP//.
 +
 +<file>
 +[root@tchana ~]# ls -lsd /usr/share/self-service-password/
 +
 +0 drwxr-xr-x 11 apache apache 182 16 nov.  14:23 /usr/share/self-service-password/
 +[root@tchana ~]#
 +</file>
 +
 +Par sécurité, on enlève **__R__**écursivement tous les droits à "other" à l'intérieur du répertoire de //SSP//.
 +
 +<file>
 +[root@tchana ~]# chmod -R o-rwx /usr/share/self-service-password/*
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -als /usr/share/self-service-password/
 +
 +total 68
 + 0 drwxr-xr-x   11 apache apache   182 16 nov.  14:23 .
 + 4 drwxr-xr-x. 119 root   root    4096 16 nov.  14:23 ..
 + 0 drwxrwx---    2 apache apache    28 10 juil.  2018 conf
 + 0 drwxrwx---    2 apache apache   179 10 juil.  2018 css
 + 4 drwxrwx---    2 apache apache  4096 10 juil.  2018 fonts
 + 0 drwxrwx---    2 apache apache   152 10 juil.  2018 images
 +12 -rw-rw----    1 apache apache  9787 10 juil.  2018 index.php
 + 0 drwxrwx---    2 apache apache    57 10 juil.  2018 js
 + 4 drwxrwx---    2 apache apache  4096 10 juil.  2018 lang
 + 0 drwxrwx---    3 apache apache   108 10 juil.  2018 lib
 +36 -rw-rw----    1 apache apache 35147 10 juil.  2018 LICENCE
 + 4 -rw-rw----    1 apache apache  2952 10 juil.  2018 menu.php
 + 0 drwxrwx---    2 apache apache   164 10 juil.  2018 pages
 + 4 -rw-rw----    1 apache apache  1994 10 juil.  2018 README.md
 + 0 drwxrwx---    2 apache apache    33 10 juil.  2018 scripts
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +===== Ajout d'un fichier de configuration à Apache =====
 +
 +On ajoute un fichier de configuration **self-service-passord.conf** à //Apache// qui intégrera //SSP//.
 +
 +{{Images_Cahier-101-03-006.png?25}} Prendre tout le contenu de l'encadré pour la commande.
 +
 +<file>
 +cat > /etc/httpd/conf.d/self-service-passord.conf <<'EOT'
 +Alias  /ssp  /usr/share/self-service-password
 +
 +<Directory /usr/share/self-service-password>
 +        AllowOverride all
 +        <IfVersion >= 2.3>
 +            Require all granted
 +        </IfVersion>
 +        <IfVersion < 2.3>
 +            Order Deny,Allow
 +            Allow from all
 +        </IfVersion>
 +        DirectoryIndex index.php
 +        AddDefaultCharset UTF-8
 +</Directory>
 + 
 +<Directory /usr/share/self-service-password/scripts>
 +        AllowOverride None
 +        <IfVersion >= 2.3>
 +            Require all denied
 +        </IfVersion>
 +        <IfVersion < 2.3>
 +            Order Deny,Allow
 +            Deny from all
 +        </IfVersion>
 +</Directory>
 +
 +
 +EOT
 +
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /etc/httpd/conf.d/self-service-passord.conf
 +
 +Alias  /ssp  /usr/share/self-service-password
 +
 +<Directory /usr/share/self-service-password>
 +        AllowOverride all
 +        <IfVersion >= 2.3>
 +            Require all granted
 +        </IfVersion>
 +        <IfVersion < 2.3>
 +            Order Deny,Allow
 +            Allow from all
 +        </IfVersion>
 +        DirectoryIndex index.php
 +        AddDefaultCharset UTF-8
 +</Directory>
 +
 +<Directory /usr/share/self-service-password/scripts>
 +        AllowOverride None
 +        <IfVersion >= 2.3>
 +            Require all denied
 +        </IfVersion>
 +        <IfVersion < 2.3>
 +            Order Deny,Allow
 +            Deny from all
 +        </IfVersion>
 +</Directory>
 +
 +[root@tchana ~]#
 +</file>
 +
 +{{Images_Cahier-101-03-006.png?25}} Ci-dessus, il n'y a pas de ligne vide avant ''Alias  /ssp  /usr/share/self-service-password''. Nous en avons inséré une afin de faciliter la copie de la commande.
 +
 +On vérifie la syntaxe de notre fichier de configuration.
 +
 +<file>
 +[root@tchana ~]# apachectl configtest
 +
 +Syntax OK
 +[root@tchana ~]#
 +</file>
 +
 +On redémarre //Apache//.
 +
 +<file>
 +[root@tchana ~]# systemctl restart httpd
 +
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +===== Vérification de l'installation =====
 +
 +<WRAP column 30%>
 +On vérifie le fonctionnement de //SSP// en se rendant à l'//URL//:
 +
 + https://www.micronator-dev.org/ssp/.
 +
 +//SSP// fonctionne correctement.
 +
 +On peut procéder à sa configuration.
 +</WRAP>
 +<WRAP column 62%>
 +|{{ Images_Cahier-201-08-026.png?700 }}|
 +</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.
 +\\ 
 +\\ 
 +
 +====== Configuration de SSP ======
 +
 +===== Description =====
 +
 +Tous les paramètres de configuration de //SSP// sont contenus dans le fichier ''/usr/share/self-service-password/conf/config.inc.php''.\\ 
 +{{Images_Cahier-101-03-006.png?25}} Afin de ne pas être affecté par une mise à niveau, __vous ne devez pas modifier les valeurs dans ce fichier__.\\ 
 +{{Images_Cahier-101-03-004.png?25}} Si on veut modifier un paramètre de la configuration de //SSP//, on crée un fichier ''config.inc.local.php'' qu'on ajoute dans le répertoire ''/usr/share/self-service-password/conf/''.
 +
 +Les paramètres spécifiés dans le fichier ''config.inc.local.php'' ont préséance sur ceux du fichier ''config.inc.php''.
 +
 +===== Fichier config.inc.local.php =====
 +
 +On crée le fichier de configuration locale.
 +
 +<file>
 +[root@tchana ~]# touch /usr/share/self-service-password/conf/config.inc.local.php
 +
 +[root@tchana ~]#
 +</file>
 +
 +On change le //propriétaire:groupe//.
 +
 +<file>
 +[root@tchana ~]# chown apache:apache /usr/share/self-service-password/conf/config.inc.local.php
 +
 +[root@tchana ~]#
 +</file>
 +
 +On ajuste les droits.
 +
 +<file>
 +[root@tchana ~]# chmod 440 /usr/share/self-service-password/conf/config.inc.local.php
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -ls /usr/share/self-service-password/conf/config.inc.local.php
 +
 +0 -r--r----- 1 apache apache 0 16 nov.  15:23 /usr/share/self-service-password/conf/config.inc.local.php
 +[root@tchana ~]#
 +</file>
 +
 +==== Paramètres LDAP ====
 +
 +On affiche les paramètres //LDAP//.
 +
 +<file>
 +[root@tchana ~]# cat /etc/libuser.conf
 +
 +# ================= DO NOT MODIFY THIS FILE =================
 +#
 +# Manual changes will be lost when this file is regenerated.
 +#
 +# Please read the developer's guide, which is available
 +# at NethServer official site: https://www.nethserver.org
 +#
 +#
 +
 +
 +[defaults]
 +    modules = ldap
 +    crypt_style = sha512
 +    create_modules = ldap
 +
 +[groupdefaults]
 +    LU_GROUPNAME = %n
 +
 +[import]
 +    login_defs = /etc/login.defs
 +    default_useradd = /etc/default/useradd
 +
 +[ldap]
 +    userBranch = ou=People
 +    password = kN_7IjCs35FxCrGn
 +    basedn = dc=directory,dc=nh
 +    groupBranch = ou=Groups
 +    binddn = cn=libuser,dc=directory,dc=nh
 +    bindtype = simple
 +    server = ldap://127.0.0.1
 +
 +[userdefaults]
 +    LU_GIDNUMBER = %u
 +    LU_USERNAME = %n
 +[root@tchana ~]#
 +</file>
 +
 +Nous utiliserons les paramètres sous //[ldap]// pour la configuration du fichier ''config.inc.local.php'' de //SSP//.
 +
 +==== Logo ====
 +
 +On peut télécharger notre logo en format //png// dans le répertoire ''/usr/share/self-service-password/images/''.
 +
 +<file>
 +[root@tchana ~]# ls -ls /usr/share/self-service-password/images/*logo*
 +
 +28 -rw-r----- 1 apache apache 26620   8 mai  2017 /usr/share/self-service-password/images/logo_Micronator_250x65_TB.png
 +16 -rw-rw---- 1 apache apache 12656 10 juil. 2018 /usr/share/self-service-password/images/ltb-logo.png
 +[root@tchana ~]#
 +</file>
 +
 +==== config.inc.local.php ====
 +
 +On copie tout le contenu de l'encadré ci-dessous dans le fichier ''config.inc.local.php''.
 +
 +{{Images_Cahier-101-03-003.png?22}}Si on copie les lignes de l'encadré __depuis le fichier PDF de ce cahier__, il faut enlever de la copie, les en-têtes de haut et de bas de pages.
 +
 +<file>
 +<?php
 +
 +##### FICHIER DE CONFIGURATION: config.inc.local.php
 +
 +## 2019-11-17, Michel-André.
 +## 2019-11-18_12h49 - $ldap_url, $ldap_binddn et $ldap_bindpw
 +##                    proviennent du fichier /etc/libuser.conf.
 +
 +
 +##### CONFIGURATION GÉNÉRALE
 +$lang = "fr";
 +$show_menu = true;
 +
 +## Notification d'un changement de mot de passe
 +# Utilisez cette option pour envoyer un courrier de confirmation à 
 +# l'utilisateur, juste après une changement de mot de passe par jeton réussi.
 +# défaut -> false
 +$notify_on_change = true; 
 +
 +## Action par défaut
 +# Par défaut, la page de modification du mot de passe est affichée. Vous pouvez
 +# configurer quelle page doit être affichée lorsqu'aucune action n'est définie.
 +# Valeurs possibles:
 +# change <- défaut
 +# sendtoken <- tout faire par jeton courriel
 +# sendsms >- utiliser le courrier SMS
 +$default_action = "change";
 +
 +## Utilisation de sms
 +# Pour activer cette fonctionnalité, il faut que l'usager ait déjà spécifié son numéro de
 +# mobile dans ses préférences. Disponible avec le module NethServer "WebTop 5 groupware".
 +# défaut -> false
 +$use_sms = false;
 +
 +##### QUESTION
 +# Vous pouvez activer ou désactiver la fonctionnalité de changement de mot de passe par
 +# question.
 +# défaut -> false
 +$use_questions = true;
 +
 +# Les mots-clé doivent être en minuscule et sans accents.
 +$messages['questions']['voiture'] = "Quelle fut votre première voiture?";
 +$messages['questions']['ecole'] = "L'école primaire de votre 1ère année?";
 +$messages['questions']['ami'] = "Quel était le mom de votre meilleur ami d'enfance?";
 +$messages['questions']['datenaissance'] = "Quelle est votre date de naissance: AAAA-MM-JJ?";
 +$messages['questions']['saison'] = "Quelle est votre saison préférée?";
 +
 +# Vous devez configurer $keyphrase (Phrase de passe) pour que le chiffrement de la réponse
 +# fonctionne. À votre choix, mais ne doit pas être modifiée par la suite.
 +$keyphrase = "ABCdefGHIjkl";
 +# Chiffrage de la réponse à la question dans l'annuaire.
 +# défaut -> true
 +# Pour la ompatibilité avec Active Directory -> false 
 +$crypt_answers = false;
 +
 +
 +##### STRATÉGIE DE MOT DE PASSE LOCAL DÉBUT
 +# Celle-ci est appliquée avant la politique de mot de passe de l'annuaire.
 +# Longueur minimale.
 +$pwd_min_length = 7;
 +# Longueur maximale.
 +# Définir à 0 pour désactiver le contrôle de la longueur maximale.
 +$pwd_max_length = 16;
 +# Nombre minimum de caractères en minuscule.
 +$pwd_min_lower = 3;
 +# Nombre maximal de caractères en majuscule.
 +$pwd_min_upper = 1;
 +# Nombre minimum de caractères numériques.
 +$pwd_min_digit = 1;
 +# Nombre minimum de caractères non-alphanumériques.
 +$pwd_min_special = 1;
 +# L'expression employée ci-dessous signifie que les caractères spéciaux sont tous les
 +# caractères sauf les caractères alphabétiques et numériques.
 +$pwd_special_chars = "^a-zA-Z0-9";
 +# Caractères défendus.
 +# Vous pouvez empêcher certains caractères d'être utilisés dans le mot de passe.
 +$pwd_forbidden_chars = "@";
 +# Ne pas réutiliser le même mot de passe qu'actuellement.
 +# true <- Défaut ** On ne peut pas utiliser le même mot de passe.
 +# false          ** On peut utiliser le même mot de passe.
 +$pwd_no_reuse = true;
 +# Vérifier que le mot de passe est différent de celui du login.
 +$pwd_diff_login = true;
 +# Vous pouvez définir le nombre de classes de caractères différentes
 +# (minuscule, majuscule, chiffre, non-alphanumérique) dans le mot de passe.
 +$pwd_complexity = 2;
 +# Permet de vérifier si le mot de passe a déjà été compromis, en utilisant la
 +# base de données https://haveibeenpwned.com/.
 +# Défaut -> false.
 +$use_pwnedpasswords = false;
 +# Afficher le message des contraintes de la stratégie de mot de passe:
 +# always <- défaut.
 +# never
 +# onerror
 +$pwd_show_policy = "always";
 +# Endroit pour affichager le message de la stratégie de mot de passe:
 +# above - (en haut) <- défaut
 +# below - (en bas)
 +$pwd_show_policy_pos = "above";
 +##### STRATÉGIE DE MOT DE PASSE LOCAL FIN
 +
 +
 +##### LOGO
 +$logo = "images/logo_Micronator_250x65_TB.png";
 +
 +
 +##### JOURNAL
 +# Par défaut, les URL générées sont consignées dans le journal des erreurs Apache.
 +# Ce comportement peut être modifié pour les insérer dans un fichier spécifique.
 +# L'utilisateur Apache doit avoir le droit d'écriture sur ce fichier.
 +$reset_request_log = "/var/log/self-service-password";
 +
 +
 +##### LDAP EN TANT QUE FOURNISSEUR DES COMPTES - DÉBUT
 +# Adresse du serveur
 +# Ce paramètre se trouve dans le fichier:  /etc/libuser.conf
 +# Pour utiliser SSL, définiR ldaps dans l'URL.
 +$ldap_url = "ldaps://127.0.0.1";
 +
 +## Justificatif - nom et mot de passe
 +# Ces paramètres se trouvent dans le fichier:  /etc/libuser.conf
 +$ldap_binddn = "cn=libuser,dc=directory,dc=nh";
 +$ldap_bindpw = "kN_7IjCs35FxCrGn";
 +
 +# Celui qui change les mots de passe.
 +$who_change_password = "manager";
 +
 +# Recherche
 +# Pour définir la base de la recherche et le filtre de recherche.
 +# Ces paramètres se trouvent dans le fichier:  /etc/libuser.conf
 +$ldap_base = "dc=directory,dc=nh";
 +# Filtre pour la recherche
 +$ldap_filter = "(&(objectClass=person)(uid={login})(!(uid=admin)))";
 +
 +# Définit l'attribut LDAP où est stockée l'adresse courriel de l'utilisateur.
 +$mail_attribute = "mail";
 +
 +# Attribut de la réponse
 +# Définit l'attribut dans lequel la réponse à la question sera stockée. Le nom
 +# de l'attribut doit être en minuscule, ceci est requis par l'API php-ldap.
 +$answer_objectClass = "extensibleObject";
 +$answer_attribute = "info";
 +##### LDAP EN TANT QUE FOURNISSEUR DES COMPTES - FIN
 +
 +
 +##### COURRIELS - DÉBUT
 +# 1) Tout d'abord, l'utilisateur entrera son identifiant et son adresse
 +#    adresse courriel. Un courriel lui est alors envoyé.
 +# 2) Ensuite, l'utilisateur clique sur le lien dans le courriel reçu et peut alors
 +#    définir un nouveau mot de passe.
 +# Les sessions PHP sont utilisées pour stocker et récupérer les jetons côté serveur.
 +# On peut activer/désactiver cette fonction avec le paramètre "$use_tokens" ci-dessous.
 +# Défaut "false" désactive, et, l'icône n'apparaît plus en haut de l'écran.
 +$use_tokens = true;
 +
 +# Adresse courriel
 +# Vous pouvez également éviter de demander l'adresse courriel de l’utilisateur, seul son
 +# identifinat lui sera demandé. L'adresse courriel est récupérée depuis LDAP.
 +# Le défaut "false" demande l'adresse courriel et l'utilisateur doit entrer son adresse
 +# courriel. La valeur "true" ne la demande pas.
 +$mail_address_use_ldap = true;
 +
 +# Chiffrement des jetons
 +# Vous pouvez chiffrer les jetons pour protéger l'identifiant de session.
 +# true <- défaut
 +$crypt_tokens = true;
 +
 +# Durée de vie des jetons (en secondes)
 +# Vous devez définir une durée de vie pour les jetons, afin qu'ils soient supprimés s'ils ne
 +# sont pas utilisés.
 +# Défaut "3600".
 +$token_lifetime = "3600";
 +
 +# De qui le courriel doit-il provenir?
 +$mail_from = "admin@micronator-dev.org";
 +$mail_from_name = "Service des mots de passe";
 +$mail_signature = "";
 +
 +# Configuration de PHPMailer (voir https://github.com/PHPMailer/PHPMailer)
 +$mail_sendmailpath = '/usr/sbin/sendmail';
 +$mail_protocol = 'sendmail';
 +$mail_smtp_debug = 0;
 +$mail_debug_format = 'html'; #défaut=error_log
 +$mail_contenttype = 'text/plain';
 +$mail_wordwrap = 0;
 +$mail_charset = 'utf-8';
 +$mail_priority = 3;
 +$mail_newline = PHP_EOL;
 +##### COURRIELS - FIN
 +
 +##### FIN DU FICHIER DE CONFIGUTATION SSP: config.inc.local.php
 +
 +</file>
 +
 +<wrap em>#</wrap> Commentaire.
 +
 +<wrap em>/<nowiki>*</nowiki></wrap> Début d'un long commentaire.
 +
 +<wrap em><nowiki>*</nowiki>/</wrap> Fin d'un long commentaire.
 + 
 +{{Images_Cahier-101-03-006.png?25}} Surveillez les paramètres que vous devez remplacer par vos propres valeurs.
 + 
 +{{Images_Cahier-101-03-004.png?25}} Pour un premier test, on peut commenter la //STRATÉGIE DE MOT DE PASSE LOCAL//:\\ 
 +<wrap em>/<nowiki>*</nowiki></wrap> au début de la stratégie et <wrap em><nowiki>*</nowiki>/</wrap> à la fin de la stratégie.
 +
 +<file>
 +...
 +/*
 +##### STRATÉGIE DE MOT DE PASSE LOCAL DÉBUT
 +...
 +##### STRATÉGIE DE MOT DE PASSE LOCAL FIN
 +*/
 +...
 +</file>
 +\\ 
 +
 +<WRAP column 30%>
 +===== Vérification du lien ssp =====
 +
 +On se rend à l'URL:\\ 
 +https://www.micronator-dev.org/ssp/
 +
 +Tout s'affiche correctement.
 +
 +{{Images_icone-201-003_Note.png?25}} Ci-contre, la  STRATÉGIE DE MOT DE PASSE LOCAL n'a pas été commentée.
 +</WRAP>
 +<WRAP column 62%>
 +|{{ Images_Cahier-201-08-027.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== Journal (log) =====
 +
 +On crée le fichier pour le journal de //SSP//.
 +
 +<file>
 +[root@tchana ~]# touch /var/log/self-service-password
 +
 +[root@tchana ~]#
 +</file>
 +
 +On ajuste le //propriétaire:groupe//.
 +
 +<file>
 +[root@tchana ~]# chown apache:root /var/log/self-service-password
 +
 +[root@tchana ~]#
 +</file>
 +
 +On ajuste les droits
 +
 +<file>
 +[root@tchana ~]# chmod 600 /var/log/self-service-password
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -als /var/log/self-service-password
 +
 +0 -rw------- 1 apache root 0 16 nov.  16:58 /var/log/self-service-password
 +[root@tchana ~]#
 +</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.
 +\\ 
 +\\ 
 +
 +====== reCAPTCHA ======
 +
 +===== Description =====
 +
 +//Référence:// [[https://fr.wikipedia.org/wiki/ReCAPTCHA|https://fr.wikipedia.org/wiki/ReCAPTCHA]].
 +
 +**reCAPTCHA** est un système mettant à profit les capacités de reconnaissance des utilisateurs humains mobilisées par les tests //CAPTCHA//, pour améliorer par la même occasion le processus de numérisation de livres, là où échouent les systèmes de reconnaissance optique de caractères //(OCR)//.
 +
 +Mis au point par des chercheurs de la Carnegie Mellon School of Computer Science de l'université Carnegie-Mellon à Pittsburgh, dont était également issu le projet //CAPTCHA//
 +
 +En 2009, le projet //reCAPTCHA// est à même de numériser les archives du New York Times: en septembre 2009, environ 20 ans d'archives avaient été numérisés, et les responsables du projet espéraient avoir complètement numérisé les 110 autres années avant la fin de 2010.
 +
 +Le 16 septembre 2009, //Google// annonce l'acquisition de la société //reCAPTCHA//. Celle-ci sera notamment utilisée dans le processus de numérisation d'ouvrage //Google Books//.
 +
 +En décembre 2014, une nouvelle version de //reCAPTCHA// évite à l'internaute d'avoir à taper des caractères ou des chiffres: il n'a plus qu'à cliquer sur une case. Un système à base d'intelligence artificielle détecte s'il s'agit bien d'un clic fait par un humain et si c'est bien le cas, le //CAPTCHA// est validé.
 +
 +==== Connexion à Google ====
 +
 +On se rend à l'//URL//: [[https://accounts.google.com/signin/v2/identifier|https://accounts.google.com/signin/v2/identifier]].
 +
 +On crée un compte pour soi-même ou pour son entreprise et on se connecte avec son justificatif //Google//.
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-08-028.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-08-029.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-08-030.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 30%>
 +|{{ Images_Cahier-201-08-032.png?400 }}|
 +</WRAP>
 +<WRAP column 62%>
 +Lorsque le compte //Google// est créé et que nous sommes connecté, on clique l'icône **Applications Google  ->  Recherche** pour ouvrir une fenêtre de navigation.
 +
 +On entre: https://www.google.com/recaptcha/admin/create.
 +|{{ Images_Cahier-201-08-031.png?700 }}|
 +</WRAP>
 +
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 46%>
 +==== Configuration de la demande reCAPTCHA ====
 +
 +=== Libellé ===
 +
 +Entrez le libellé que vous souhaitez afin de vous en souvenir, c'est simplement un indicateur.
 +
 +<html>&#x2299;</html> reCAPTCHA version 2.
 +
 +<html>&#x2299;</html> Case à cocher "Je ne suis pas un robot".
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-08-033.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 46%>
 +=== Domaines ===
 +
 +Entrez votre nom de domaine sous la forme www.votredomaine.com //(sans http/https)//.
 +
 +=== Accepter les conditions d'utilisation de reCAPTCHA ===
 +
 +{{Images_Cahier-101-03-006.png?25}} Cochez __si vous acceptez les conditions d'utilisation__ de reCAPTCHA.
 +
 +=== Envoyer des alertes aux propriétaires ===
 +
 +Recevez des alertes si Google détecte un problème sur votre site; par exemple, une erreur de configuration ou une augmentation du trafic suspect. 
 +
 +<wrap em>Envoyer</wrap>.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-08-034.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 46%>
 +==== Clés reCAPTCHA ====
 +
 +La dernière étape consiste à copier les clés du site et les coller dans les champs dédiés dans le fichier ''config.inc.local.php'' de //SSP//.
 +
 +{{Images_Cahier-101-03-006.png?25}} Vous devez entrer la clé du site ainsi que la clé secrète.
 +
 +On se déconnecte de notre compte Google.
 +</WRAP>
 +<WRAP column 46%>
 +|{{ Images_Cahier-201-08-035.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Ajout au fichier config.inc.local.php =====
 +
 +On ajoute les lignes ci-dessous, entre "''##### COURRIELS - FIN''" et "''##### FIN DU FICHIER DE CONFIGUTATION SSP: config.inc.local.php''".
 +
 +Remplacez certaines valeurs par vos paramètres personnel.
 +
 +<file>
 +...
 +##### COURRIELS - FIN
 +
 +
 +##### reCAPTCHA v2 de Google - DÉBUT
 +## CAPTCHA
 +# 2019-11-18_16h00 / VotreNomDeCourriel@gmail.com // Indice sur votre mot de pass GooGle
 +# défaut=false pour ne pas utiliser reCAPTCHA
 +$use_recaptcha = true;
 +
 +# Clé publique 
 +$recaptcha_publickey = "VOTRE CLÉ PUBLIQUE reCPATCHA";
 +
 +# Clé privée (secrète)
 +$recaptcha_privatekey = "VOTRE CLÉ PRIVÉE reCPATCHA";
 +
 +# Personnalisation (voir https://developers.google.com/recaptcha/docs/display)
 +$recaptcha_theme = "light";
 +$recaptcha_type = "image";
 +$recaptcha_size = "normal";
 +
 +# Méthode de requête reCAPTCHA
 +# 'null' <- défaut, mais non-fonctionnel.
 +# '\ReCaptcha\RequestMethod\CurlPost' <- fonctionnel.
 +$recaptcha_request_method = '\ReCaptcha\RequestMethod\CurlPost'; 
 +##### reCAPTCHA v2 de Google - FIN
 +
 +
 +##### FIN DU FICHIER DE CONFIGUTATION SSP: config.inc.local.php
 +</file>
 +
 +{{Images_Cahier-101-03-004.png?25}} Pour désactiver //reCaptcha//, vous pouvez mettre le paramètre **//$use_recaptcha//** à **false**.
 +\\ 
 +
 +<WRAP column 30%>
 +===== Vérification de reCaptcha =====
 +
 +Afin de voir s'afficher //reCAPTCHA// avant le bouton **Envoyer**, on se rend à notre page SSP:\\ 
 +https://www.micronator-dev.org/ssp\\ 
 +
 +</WRAP>
 +<WRAP column 65%>
 +|{{ Images_Cahier-201-08-036.png?700 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +<WRAP column 30%>
 +\\ 
 +On clique **Je ne suis pas un robot**.
 +|{{ Images_Cahier-201-08-037.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +<nowiki>-</nowiki> On sélectionne les images.\\ 
 +<nowiki>-</nowiki> **VALIDER**.
 +|{{ Images_Cahier-201-08-038.png?400 }}|
 +</WRAP>
 +<WRAP column 30%>
 +\\ 
 +Notre sélection d'images est validée.
 +|{{ Images_Cahier-201-08-039.png?400 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Sauvegarde du répertoire de SSP =====
 +
 +On vérifie si le nom du répertoire ''/usr/share/self-service-password/'' 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="/usr/share/self-service-password/"
 +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>
 +[root@tchana ~]# cat /etc/backup-data.d/custom.include | grep /usr/share/self-service-password/
 +
 +/usr/share/self-service-password/
 +[root@tchana ~]#
 +</file>
 +
 +Ci-dessus, il n'y a pas de ligne vide avant ''/usr/share/self-service-password/''. Nous en avons insérée une afin de faciliter la copie de la commande.
 +
 +===== 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.
 +\\ 
 +\\ 
 +
 +====== Exemples d'utilisation ======
 +
 +===== Préparation =====
 +
 +==== reCaptcha ====
 +
 +Vu que nous avons déjà vérifié le fonctionnement de //reCaptcha//, on peut désactiver cette fonction.
 +
 +<file>
 +[root@tchana ~]# sed -i 's/\$use_recaptcha \= true\;/\$use_recaptcha \= false\;/' /usr/share/self-service-password/conf/config.inc.local.php
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /usr/share/self-service-password/conf/config.inc.local.php | grep "use_recaptcha ="
 +
 +$use_recaptcha = false;
 +[root@tchana ~]#
 +</file>
 +
 +==== Stratégie de mot de passe ====
 +
 +On vérifie l'affichage de la stratégie de mot de passe.
 +
 +<file>
 +[root@tchana ~]# cat /usr/share/self-service-password/conf/config.inc.local.php | grep "pwd_show_policy"
 +
 +$pwd_show_policy = "always";
 +$pwd_show_policy_pos = "above";
 +[root@tchana ~]#
 +</file>
 +
 +Nous changeons la stratégie pour l'affichage en cas d'erreur seulement.
 +
 +<file>
 +[root@tchana ~]# sed -i 's/show_policy = "always"/show_policy = "onerror"/' /usr/share/self-service-password/conf/config.inc.local.php
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /usr/share/self-service-password/conf/config.inc.local.php | grep "show_policy ="
 +
 +$pwd_show_policy = "onerror";
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +===== Changement standard du mot de passe =====
 +
 +<WRAP column 46%>
 +L'utilisateur **__toto__** change son mot de passe.
 +|{{ Images_Cahier-201-08-040.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +L'opération a réussie.
 +|{{ Images_Cahier-201-08-041.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 46%>
 +L'utilisateur **__toto__** se connecte à //Webmail//.
 +|{{ Images_Cahier-201-08-042.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +Il a reçu un courriel indiquant que son mot de passe a été changé.
 +|{{ Images_Cahier-201-08-043.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Enregistrement d'une réponse à une question =====
 +
 +<WRAP column 46%>
 +**Question  ->  enregistré une question**.
 +|{{ Images_Cahier-201-08-044.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +L'utilisateur **__toto__** choisit une question et y répond.
 +|{{ Images_Cahier-201-08-045.png?500 }}|
 +
 +|{{ Images_Cahier-201-08-046.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +{{Images_Cahier-101-03-006.png?25}} La conformité de la réponse à la question n'est pas vérifiée. On peut entrer une réponse bidon très longue, mais lorsqu'on changera son mot de passe par question, il faudra utiliser la même question et donner exactement la même réponse bidon.
 +\\ 
 +\\ 
 +
 +===== Changement par question =====
 +
 +<WRAP column 46%>
 +L'utilisateur **__toto__** répond à sa question et change son mot de passe.
 +|{{ Images_Cahier-201-08-047.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +\\ 
 +L'opération a réussi.
 +|{{ Images_Cahier-201-08-048.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Changement par jeton =====
 +
 +<WRAP column 46%>
 +**Mail** **->** l'utilisateur __**toto**__ entre son identifiant  **->  Envoyer**.
 +|{{ Images_Cahier-201-08-049.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +Un courriel a été envoyé.
 +|{{ Images_Cahier-201-08-050.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\ 
 +
 +<WRAP column 46%>
 +Si ce n'est déjà fait, l'utilisateur **__toto__** se connecte à //Webmail//.
 +|{{ Images_Cahier-201-08-051.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +L'utilisateur **__toto__** clique le lien reçu.
 +|{{ Images_Cahier-201-08-052.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +<WRAP column 46%>
 +L'utilisateur **__toto__** entre son nouveau mot de passe et le confirme  **->  Envoyer**.
 +|{{ Images_Cahier-201-08-053.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +\\ 
 +L'opération a réussi.
 +|{{ Images_Cahier-201-08-054.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +\\
 +
 +===== Erreur dûe à la stratégie de mot de passe =====
 +
 +Au paragraphe 
 +[[nethserver_201_cahier_08_self_service_password#Stratégie de mot de passe|Stratégie de mot de passe]]
 +, nous avons choisi d'afficher la stratégie de mot de passe seulement lors d'un manque de conformité à la stratégie.
 +
 +<WRAP column 46%>
 +\\ 
 +L'utilisateur **__toto__** entre un mot de passe sans caractères spéciaux.
 +|{{ Images_Cahier-201-08-055.png?500 }}|
 +</WRAP>
 +<WRAP column 46%>
 +<nowiki>-</nowiki> L'erreur est signalée.\\ 
 +<nowiki>-</nowiki> La stratégie de mot de passe est affichée.
 +|{{ Images_Cahier-201-08-056.png?500 }}|
 +</WRAP>
 +<WRAP clear></WRAP>
 +
 +===== reCaptcha =====
 +
 +On réactive //reCaptcha//.
 +
 +<file>
 +[root@tchana ~]# sed -i 's/\$use_recaptcha \= false\;/\$use_recaptcha \= true\;/' /usr/share/self-service-password/conf/config.inc.local.php
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# cat /usr/share/self-service-password/conf/config.inc.local.php | grep "use_recaptcha ="
 +
 +$use_recaptcha = true;
 +[root@tchana ~]#
 +</file>
 +\\ 
 +
 +===== Stratégie de mot de passe =====
 +
 +On remet l'affichage de la stratégie de mot de passe à **always**.
 +
 +<WRAP box>
 +<file>
 +[root@tchana ~]# sed -i 's/show_policy = "onerror"/show_policy = "always"/' /usr/share/self-service-password/conf/config.inc.local.php
 +
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +On vérifie.
 +
 +<WRAP box>
 +<file>
 +[root@tchana ~]# cat /usr/share/self-service-password/conf/config.inc.local.php | grep "show_policy ="
 +
 +$pwd_show_policy = "always";
 +[root@tchana ~]#
 +</file>
 +</WRAP>
 +
 +<WRAP centeralign>**Notre installation de Self Service Password fonctionne correctement dans son entier.**</WRAP>
 +\\
 +\\
 +
 +====== 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-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>
 +[root@tchana ~]# 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
 +[root@tchana ~]#
 +</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>
 +[root@tchana ~]# mkdir -p /etc/e-smith/templates-custom/etc/roundcubemail/config.inc.php
 +
 +[root@tchana ~]#
 +</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>
 +[root@tchana ~]# cat /etc/e-smith/templates-custom/etc/roundcubemail/config.inc.php/91CacherNomDuServeur
 +
 +$config['default_host'] = '127.0.0.1';
 +[root@tchana ~]#
 +</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>
 +[root@tchana ~]# expand-template /etc/roundcubemail/config.inc.php
 +
 +[root@tchana ~]#
 +</file>
 +
 +On redémarre le démon ''httpd''.
 +
 +<file>
 +[root@tchana ~]# systemctl restart httpd
 +
 +[root@tchana ~]#
 +</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>
 +[root@tchana ~]# cat /etc/backup-data.d/custom.include |  grep roundcube
 +
 +/etc/e-smith/templates-custom/etc/roundcubemail/
 +[root@tchana ~]#
 +</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.
 +
 +    [root@tchana ~]# localectl list-locales | grep fr_
 +    
 +    fr_BE
 +    fr_BE.iso88591
 +    fr_BE.iso885915@euro
 +    fr_BE.utf8
 +    fr_BE@euro
 +    fr_CA
 +    fr_CA.iso88591
 +    fr_CA.utf8
 +    fr_CH
 +    fr_CH.iso88591
 +    fr_CH.utf8
 +    fr_FR
 +    fr_FR.iso88591
 +    fr_FR.iso885915@euro
 +    fr_FR.utf8
 +    fr_FR@euro
 +    fr_LU
 +    fr_LU.iso88591
 +    fr_LU.iso885915@euro
 +    fr_LU.utf8
 +    fr_LU@euro
 +    [root@tchana ~]#
 +
 +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''.
 +
 +    [root@tchana ~]# localectl set-locale LANG=fr_FR.utf8
 +    
 +    [root@tchana ~]#
 +
 +{{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.
 +
 +    [root@tchana ~]# ls -als toto
 +    
 +    ls: impossible d'accéder à toto: Aucun fichier ou dossier de ce type
 +    [root@tchana ~]#
 +
 +===== 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>
 +[root@tchana ~]# 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
 +[root@tchana ~]#
 +</file>
 +
 +On active le clavier //**ca-multi**//.
 +
 +<file>
 +[root@tchana ~]# localectl set-keymap ca-multi
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# localectl
 +
 +   System Locale: LANG=fr_FR.UTF-8
 +       VC Keymap: ca-multi
 +      X11 Layout: us
 +[root@tchana ~]#
 +</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>
 +[root@tchana ~]# config setprop httpd-admin MaxSessionIdleTime 7200 MaxSessionLifeTime 57600
 +
 +[root@tchana ~]#
 +</file>
 +
 +Désactivation des délais.
 +
 +<file>
 +[root@tchana ~]# config setprop httpd-admin MaxSessionIdleTime '' MaxSessionLifeTime ''
 +
 +[root@tchana ~]#
 +</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>
 +[root@tchana ~]# ls -ls /usr/share/zoneinfo/America/ -> grep Montreal
 +
 + 4 -rw-r--r--  3 root root 3477  1 avril 08:27 Montreal
 +[root@tchana ~]#
 +</file>
 +
 +==== Changement du fuseau horaire ====
 +
 +On affiche le fuseau horaire actuel.
 +
 +<file>
 +[root@tchana ~]# ls -l /etc/localtime
 +
 +lrwxrwxrwx 1 root root 37 19 mai   23:48 /etc/localtime -> ../usr/share/zoneinfo/America/Toronto
 +[root@tchana ~]#
 +</file>
 +
 +On change le fuseau horaire pour celui de //Montréal//.
 +
 +<file>
 +[root@tchana ~]# timedatectl set-timezone America/Montreal
 +
 +[root@tchana ~]#
 +</file>
 +
 +On vérifie.
 +
 +<file>
 +[root@tchana ~]# ls -l /etc/localtime
 +
 +lrwxrwxrwx 1 root root 38 22 mai   14:02 /etc/localtime -> ../usr/share/zoneinfo/America/Montreal
 +[root@tchana ~]#
 +</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>
 +[root@dorgee ~]# traceroute google.com
 +
 +traceroute to google.com (172.217.165.14), 30 hops max, 60 byte packets
 +  lo0-0-lns03-tor.teksavvy.com (206.248.155.139)  10.367 ms  11.449 ms  11.487 ms
 +  ae0-2150-bdr01-tor.teksavvy.com (69.196.136.172)  11.523 ms  11.793 ms  11.826 ms
 +  72.14.212.134 (72.14.212.134)  11.868 ms  12.430 ms  12.306 ms
 +  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
 +  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
 +  yyz12s06-in-f14.1e100.net (172.217.165.14)  13.020 ms  12.009 ms  11.291 ms
 +[root@dorgee ~]#
 +</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-201\RF-232_Cours_NethServer-201-08_SelfServicePassword_2019-11-22_11h34.odt.</nowiki>
 +
 +Historique des modifications:
 +
 +^Version^Date^Commentaire^Auteur|
 +|0.0.1|2019-11-16|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.
 +\\
 +\\