Eric Streit 5 лет назад
Сommit
737b1e5ca4
100 измененных файлов с 6586 добавлено и 0 удалено
  1. 2 0
      .vscode/settings.json
  2. 0 0
      README.md
  3. 673 0
      docs/1-un.md
  4. 1911 0
      docs/10-dix.md
  5. 238 0
      docs/11-onze.md
  6. 537 0
      docs/12-douze.md
  7. 18 0
      docs/13-treize.md
  8. 6 0
      docs/14-quatorze.md
  9. 68 0
      docs/15-quinze.md
  10. 9 0
      docs/16-seize.md
  11. 52 0
      docs/17-dixsept.md
  12. 55 0
      docs/18-dixhuit.md
  13. 413 0
      docs/19-dixneuf.md
  14. 378 0
      docs/2-deux.md
  15. 50 0
      docs/20-vingt.md
  16. 285 0
      docs/3-trois.md
  17. 118 0
      docs/4-quatre.md
  18. 841 0
      docs/5-cinq.md
  19. 97 0
      docs/6-six.md
  20. 335 0
      docs/7-sept.md
  21. 272 0
      docs/8-huit.md
  22. 228 0
      docs/9-neuf.md
  23. BIN
      docs/Images/Debian-Stretch-01.png
  24. BIN
      docs/Images/Debian-Stretch-02.png
  25. BIN
      docs/Images/Debian-Stretch-03.png
  26. BIN
      docs/Images/Debian-Stretch-04.png
  27. BIN
      docs/Images/Debian-Stretch-05.png
  28. BIN
      docs/Images/Debian-Stretch-06.png
  29. BIN
      docs/Images/Debian-Stretch-07.png
  30. BIN
      docs/Images/Debian-Stretch-08.png
  31. BIN
      docs/Images/Debian-Stretch-09.png
  32. BIN
      docs/Images/Debian-Stretch-10.png
  33. BIN
      docs/Images/Debian-Stretch-11.png
  34. BIN
      docs/Images/Debian-Stretch-12.png
  35. BIN
      docs/Images/Debian-Stretch-13.png
  36. BIN
      docs/Images/Debian-Stretch-14.png
  37. BIN
      docs/Images/Debian-Stretch-15.png
  38. BIN
      docs/Images/Debian-Stretch-16.png
  39. BIN
      docs/Images/Debian-Stretch-17.png
  40. BIN
      docs/Images/Debian-Stretch-18.png
  41. BIN
      docs/Images/Debian-Stretch-19.png
  42. BIN
      docs/Images/Debian-Stretch-20.png
  43. BIN
      docs/Images/Debian-Stretch-21.png
  44. BIN
      docs/Images/Debian-Stretch-22.png
  45. BIN
      docs/Images/Debian-Stretch-23.png
  46. BIN
      docs/Images/Debian-Stretch-24.png
  47. BIN
      docs/Images/Debian-Stretch-25.png
  48. BIN
      docs/Images/Debian-Stretch-26.png
  49. BIN
      docs/Images/Debian-Stretch-27.png
  50. BIN
      docs/Images/Debian-Stretch-28.png
  51. BIN
      docs/Images/Debian-Stretch-29.png
  52. BIN
      docs/Images/Debian-Stretch-30.png
  53. BIN
      docs/Images/Debian-Stretch-31.png
  54. BIN
      docs/Images/Debian-Stretch-32.png
  55. BIN
      docs/Images/Debian-Stretch-33.png
  56. BIN
      docs/Images/Debian-Stretch-34.png
  57. BIN
      docs/Images/Debian-Stretch-crypted-12_28_37.png
  58. BIN
      docs/Images/Debian-Stretch-crypted-12_28_55.png
  59. BIN
      docs/Images/Debian-Stretch-crypted-12_29_00.png
  60. BIN
      docs/Images/Debian-Stretch-crypted-12_29_06.png
  61. BIN
      docs/Images/Debian-Stretch-crypted-12_29_12.png
  62. BIN
      docs/Images/Debian-Stretch-crypted-12_29_33.png
  63. BIN
      docs/Images/Debian-Stretch-crypted-12_29_39.png
  64. BIN
      docs/Images/Debian-Stretch-crypted-12_29_44.png
  65. BIN
      docs/Images/Debian-Stretch-crypted-12_29_57.png
  66. BIN
      docs/Images/Debian-Stretch-crypted-12_30_06.png
  67. BIN
      docs/Images/Debian-Stretch-crypted-12_30_13.png
  68. BIN
      docs/Images/Debian-Stretch-crypted-12_30_21.png
  69. BIN
      docs/Images/Debian-Stretch-crypted-12_30_29.png
  70. BIN
      docs/Images/Debian-Stretch-crypted-12_30_36.png
  71. BIN
      docs/Images/Debian-Stretch-crypted-12_30_40.png
  72. BIN
      docs/Images/Debian-Stretch-crypted-12_30_45.png
  73. BIN
      docs/Images/Debian-Stretch-crypted-12_30_52.png
  74. BIN
      docs/Images/Debian-Stretch-crypted-12_30_55.png
  75. BIN
      docs/Images/Debian-Stretch-crypted-12_31_07.png
  76. BIN
      docs/Images/Debian-Stretch-crypted-12_31_10.png
  77. BIN
      docs/Images/Debian-Stretch-crypted-12_31_14.png
  78. BIN
      docs/Images/Debian-Stretch-crypted-12_31_29.png
  79. BIN
      docs/Images/Debian-Stretch-crypted-12_31_33.png
  80. BIN
      docs/Images/Debian-Stretch-crypted-12_31_41.png
  81. BIN
      docs/Images/Debian-Stretch-crypted-12_31_50.png
  82. BIN
      docs/Images/Debian-Stretch-crypted-12_31_54.png
  83. BIN
      docs/Images/Debian-Stretch-crypted-12_31_59.png
  84. BIN
      docs/Images/Debian-Stretch-crypted-12_32_02.png
  85. BIN
      docs/Images/Debian-Stretch-crypted-12_32_06.png
  86. BIN
      docs/Images/Debian-Stretch-crypted-12_32_19.png
  87. BIN
      docs/Images/Debian-Stretch-crypted-12_33_20.png
  88. BIN
      docs/Images/Debian-Stretch-crypted-12_33_35.png
  89. BIN
      docs/Images/Debian-Stretch-crypted-12_33_41.png
  90. BIN
      docs/Images/Debian-Stretch-crypted-12_33_47.png
  91. BIN
      docs/Images/Debian-Stretch-crypted-12_33_53.png
  92. BIN
      docs/Images/Debian-Stretch-crypted-12_34_00.png
  93. BIN
      docs/Images/Debian-Stretch-crypted-12_34_20.png
  94. BIN
      docs/Images/Debian-Stretch-crypted-12_34_28.png
  95. BIN
      docs/Images/Debian-Stretch-crypted-12_34_33.png
  96. BIN
      docs/Images/Debian-Stretch-crypted-12_34_47.png
  97. BIN
      docs/Images/Debian-Stretch-crypted-12_34_54.png
  98. BIN
      docs/Images/Debian-Stretch-crypted-12_35_06.png
  99. BIN
      docs/Images/Debian-Stretch-crypted-12_35_13.png
  100. BIN
      docs/Images/Debian-Stretch-crypted-12_35_21.png

+ 2 - 0
.vscode/settings.json

@@ -0,0 +1,2 @@
+{
+}


+ 673 - 0
docs/1-un.md

@@ -0,0 +1,673 @@
+# Installation d'un serveur Debian/Stretch sécurisé
+
+## Schéma de notre installation "at home"
+
+Notre installation se compose donc d'une **box**, Freebox dans mon cas qui sera notre passerelle vers Internet. Free permet d'avoir une adresse IPV6 dans l'abonnement de base. IL suffit de l'activer dans la configuration de votre box.
+
+A compléter pour d'autres FAIs et boxes.
+
+J'ai la chance de bénéficier d'une connexion **fibre**, adaptée à l'installation d'un serveur à la maison. (Débit d'upload suffisant).
+
+Notre serveur sera connecté à la box (au routeur) dans la zone **DMZ**. C'est une zone qui sera accessible de l'extérieur, de tout l'internet donc. C'est pourquoi nous aurons à prendre des mesures de sécurité adéquates.
+
+Notre réseau local sera également connecté à la box, soit par câble (filaire) soit par wifi.
+
+---
+
+![Shéma de mon réseau](Images/reseau.png)
+
+## Prérequis
+
+1.  Un serveur
+
+    Il vous faut un serveur, accessible chez vous (je décris ici l'installation d'un "home" serveur, même si la plupart des explications seront également valables pour un serveur hébergé ou dédié.
+
+    ![Mon petit Serveur](Images/mon-serveur.jpg)
+
+    Mon serveur est motorisé par un vieux microprocesseur Atom à 1,6Ghz, appuyé par 2 Go de RAM et un disque SSD de 240 Go. Il sera relié à un clavier et un écran pendant la phase d'installation.
+
+    Ce serveur est assez ancien (2007) et l'amorçage n'est pas basé sur UEFI, mais un bios standard. Je rajouterai une partie dédiée à l'amorçage UEFI dès que j'aurai un serveur/machine de bureau supportant ce mécanisme. (oui, mon matériel est ancien ....)
+
+2.  Un nom de domaine
+
+    Un nom de domaine est indispensable si vous voulez que votre serveur soit accessible de l'extérieur. Il vous faudra choisir un nom, enregistré chez un “registrar” comme OVH, Gandi ou autre.
+    Mon domaine réservé est **yojik.net**.
+
+    > **example.com** est un nom de domaine couramment utilisé dans les tutoriels.
+
+3.  Un nom de machine
+
+    Déterminez le nom de votre machine: le mien sera **atom**.
+
+    >  Le nom complet de ma machine serait donc: **atom.yojik.net**
+
+4.  Une adresse IP fixe
+
+    Une adresse IP fixe est nécessaire même s'il est possible de travailler avec des adresses dynamiques. Des FAIs comme Free, OVH proposent des IPs fixes (IPV4) et un pool d'adresses IPV6. D'autres fournisseurs d'accès proposent ces adresses fixes / IPV6 avec un supplément d'abonnement.
+
+5.  Un compte utilisateur
+
+    L'installateur Debian vous demandera un mot de passe pour le compte root (super-utilisteur): notez le bien. Nous le changerons ensuite, après l'installation de base. Nous utiliserons un générateur de mots de passe; il y en a pléthore.
+
+    Ensuite, il vous demandera de définir un compte utilisateur, ici, un compte d'administration. Nous ne nous connecterons qu'avec ce compte (SSH) et interdirons l'accès au compte super-utilisateur (root) par SSH.
+
+    Définissez votre nom d'administrateur ainsi que son mot de passe. Il ne sera utile que dans les premières étapes. Nous sécuriserons l'accès SSH en n'utilisant que des connexions par clef, et uniquement pour le compte administrateur. L'accès SSH pour le compte super-utilisateur sera bloqué.
+
+    Nous modifierons également les mots de passe administrateur et super-utilisateur par la suite.
+
+## Récapitulatif
+
+| Nom de la machine | Domaine   | Adresse IPV4    | Comptes            | Mot de passe |
+| ----------------- | --------- | --------------- | ------------------ | ------------ |
+| atom              | yojik.net | 192.168.111.160 | ericadmin          | \*\*\*       |
+|                   |           |                 | root               | \*\*\*       |
+
+## Préparation de l'installation
+
+### Téléchargement de l'image ISO netinstall
+
+( ISO de taille minimale, récupération des éléments suivants sur Debian.org par le réseau)
+
+Rendez-vous à l'adresse suivante [Debian.org](https://www.debian.org/CD/netinst/) et choisissez l'image amd64 ou I386 ou autre suivant l'architecture de votre serveur. Mon serveur utilisera l'image i386.
+Il existe des images “non-officielles” comprenant les firmwares de périphériques. (partie software des périphériques).
+L'adresse est la suivante: [Debian.org + firmwares](https://cdimage.debian.org/cdimage/unofficial/non-free/firmware/)
+
+### Copie de l'image sur une clef USB
+
+Il vous faut déterminer le périphérique utilisé par votre clef. Insérez la dans votre ordinateur Linux et dans un terminal root, lancez la commande : **dmesg**. Cherchez les lignes qui correspondent à votre clef USB.
+Voici un extrait sur ma machine:
+
+---
+
+```
+usb 4-7: new high-speed USB device number 2 using ehci-pci
+[ 9381.149286] usb 4-7: New USB device found, idVendor=1b1c, idProduct=1ab1
+[ 9381.149291] usb 4-7: New USB device strings: Mfr=1, Product=2, SerialNumber=3
+[ 9381.149293] usb 4-7: Product: Voyager
+[ 9381.149295] usb 4-7: Manufacturer: Corsair
+[ 9381.149298] usb 4-7: SerialNumber: AA00000000000108
+[ 9381.198595] usb-storage 4-7:1.0: USB Mass Storage device detected
+[ 9381.198931] scsi host8: usb-storage 4-7:1.0
+[ 9381.199458] usbcore: registered new interface driver usb-storage
+[ 9381.200839] usbcore: registered new interface driver uas
+[ 9382.519813] scsi 8:0:0:0: Direct-Access     Corsair  Voyager          1100 PQ: 0 ANSI: 0 CCS
+[ 9382.520679] sd 8:0:0:0: Attached scsi generic sg4 type 0
+[ 9383.462615] sd 8:0:0:0: [sdd] 31326208 512-byte logical blocks: (16.0 GB/14.9 GiB)
+[ 9383.463760] sd 8:0:0:0: [sdd] Write Protect is off
+[ 9383.463762] sd 8:0:0:0: [sdd] Mode Sense: 43 00 00 00
+[ 9383.464786] sd 8:0:0:0: [sdd] No Caching mode page found
+[ 9383.464792] sd 8:0:0:0: [sdd] Assuming drive cache: write through
+[ 9383.470824] sdd: sdd1 sdd2
+[ 9383.474661] sd 8:0:0:0: [sdd] Attached SCSI removable disk
+[ 9384.564005] ISO 9660 Extensions: Microsoft Joliet Level 3
+[ 9384.566879] ISO 9660 Extensions: Microsoft Joliet Level 3
+[ 9384.571964] ISO 9660 Extensions: RRIP_1991A
+```
+
+---
+
+Le périphérique utilisé sera donc (dans mon cas): **/dev/sdd**.
+Procédons maintenant à la copie de notre fichier ISO sur la clef. Il y a plusieurs possibilités, suivant votre OS (Linux, Mac, Windows) ou votre distribution (Fedora, Debian, etc. )
+
+* Copie avec un logiciel “spécialisé” comme unetbootin
+* Copie avec la commande **dd**
+
+C'est la dernière solution que j'utiliserai.
+L'image ISO est dans mon répertoire **Téléchargements**.
+
+> **dd if=./Téléchargements/debian-9.2.1-i386-netinst.iso of=/dev/sdd bs=4096**
+
+Le paramètre “bs=4096” est nécessaire pour certaines clef USB.
+
+### Modification du BIOS
+
+Il vous faudra certainement aller dans le BIOS de votre serveur, touche DEL, F12, ESC, F10 ou autre (voyez l'écran d'accueil au démarrage qui indique habituellement la touche à utiliser) pour entrer dans le paramétrage du BIOS et indiquer sur quel périphérique le serveur va démarrer.
+
+Insérez votre clef et modifiez l'ordre de Boot (quel périphérique sera utilisé pour amorcer la machine). L'opération inverse sera souvent nécessaire pour rétablir l'ordre initial de démarrage. (démarrage sur le disque dur)
+
+### Lancement de l'installation
+
+Éteignez votre serveur, insérez la clef USB si elle n'y est pas déjà et rallumez votre serveur. Il faudra taper sur une touche "DEL" ou "F12" ou autre pour accéder au menu de démarrage de votre serveur et choisir de démarrer (amorçage, booter) sur votre clef.
+
+## Installation du serveur sans chiffrage des partitions
+
+Nous utiliserons le mode texte, mais vous pouvez utiliser le mode graphique si vous voulez. Les écrans sont identiques.
+
+1.  Démarrage
+
+    ![Démarrage](Images/Debian-Stretch-01.png)
+
+2.  Choix du mode d'installation
+
+    **Texte** pour moi.
+
+3.  Choix de la langue (clavier, interface)
+
+    Langue d'installation: **Français**
+
+    ![Démarrage](Images/Debian-Stretch-02.png)
+
+    Situation géographique: **France**
+
+    ![Démarrage](Images/Debian-Stretch-03.png)
+
+    Configuration du clavier: **français**
+
+    ![Démarrage](Images/Debian-Stretch-04.png)
+
+
+4.  Choix du nom de la machine
+
+    Sans le nom de domaine: ici, **atom**
+
+    Le nom complet de la machine Debian est défini dans 2 fichiers:
+
+    * /etc/hostname: ce fichier contient le nom du serveur, **SANS** le nom de domaine. Ce fichier ne contient qu'une seule ligne (un mot): le nom de votre machine.
+    * /etc/hosts: ce fichier contient le nom complet de la machine. Il se présente ainsi:
+
+---
+
+```
+127.0.0.1       localhost
+
+# serveurs
+
+192.168.111.160         atom.yojik.net             atom
+
+# The following lines are desirable for IPv6 capable hosts
+::1     localhost ip6-localhost ip6-loopback
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
+```
+
+---
+
+Vous voyez ici la correspondance entre le nom complet du serveur, son nom comme il est écrit dans /etc/hostname ainsi que son adresse IP (ici, IPV4). Nous rajouterons l'adresse IPV6 ensuite, après l'installation.
+
+![Démarrage](Images/Debian-Stretch-06.png)
+
+5.  Choix du nom de domaine
+
+    **yojik.net** (mettez le votre!)
+
+    ![Démarrage](Images/Debian-Stretch-08.png)
+
+6.  Saisie du mot de passe root (super-utilisateur)
+
+    ![Démarrage](Images/Debian-Stretch-09.png)
+
+    Confirmation du mot de passe super-utilisateur.
+
+    ![Démarrage](Images/Debian-Stretch-10.png)
+
+7.  Saisie du compte utilisateur
+
+    Ici, notre compte d'administrateur (admin ou celui de votre choix); en effet, nous ne nous connecterons jamais avec le compte **root**, uniquement avec le compte d'administration. L'accès **root** sera bloqué dans le fichier de configuration de **ssh**.
+
+    ![Démarrage](Images/Debian-Stretch-12.png)
+
+8.  Saisie du mot de passe utilisateur.
+
+    1.  Mot de passe
+
+        ![Démarrage](Images/Debian-Stretch-13.png)
+
+    2.  Confirmation de ce mot de passe.
+
+        ![Démarrage](Images/Debian-Stretch-14.png)
+
+9.  Partitionnement du disque
+
+    Ici, nous avons 2 solutions principalement:
+
+    * 1 partitionnement avec chiffrage du disque (manuel ou automatique)
+    * 2 partitionnement sans chiffrage
+
+    Nous verrons ici un partitionnement sans chiffrage. Le chiffrage sera vu dans une partie séparée car elle pose le problème de la saisie de la phrase de passe pour un serveur “distant”.
+
+    Ici, nous utiliserons un disque entier, avec tout dans une seule partition. Il est parfaitement possible de choisir un autre schéma de partitionnement, avec /home, /var, /tmp dans des partitions séparées.
+
+    ![Démarrage](Images/Debian-Stretch-15.png)
+
+    Choix d'une installation simplifiée:
+
+    ![Démarrage](Images/Debian-Stretch-16.png)
+
+    Choix du disque à partitionner:
+
+    ![Démarrage](Images/Debian-Stretch-17.png)
+
+    Schéma de partitionnement: (simplifié également ...)
+
+    ![Démarrage](Images/Debian-Stretch-18.png)
+
+    Confirmation du partitionnement choisi:
+
+    ![Démarrage](Images/Debian-Stretch-19.png)
+
+    ![Démarrage](Images/Debian-Stretch-20.png)
+
+10. Progression de l'installation
+
+    ![Démarrage](Images/Debian-Stretch-21.png)
+
+11. Configuration de l'outil de gestion des paquets
+
+    Nous n'avons pas d'autres sources de paquets pour l'instant:
+
+    ![Démarrage](Images/Debian-Stretch-22.png)
+
+12. Choix du miroir
+
+    **France** mais choisissez celui qui est le plus proche de votre localisation géographique.
+
+    ![Démarrage](Images/Debian-Stretch-23.png)
+
+    Choix du miroir de l'archive Debian: j'ai choisi **deb.debian.org**. Ce miroir renvoie vers le miroir le plus approprié et le plus rapide.
+
+    ![Démarrage](Images/Debian-Stretch-24.png)
+
+13. Choix du proxy
+
+    Choix du proxy: pas de proxy pour moi. Le proxy permet de passer par un serveur intermédiaire, par exemple, situé dans un autre pays.
+
+    ![Démarrage](Images/Debian-Stretch-25.png)
+
+    Progression de l'installation ...
+
+    ![Démarrage](Images/Debian-Stretch-26.png)
+
+1. Configuration de “popularity contest”
+
+    J'ai répondu: **oui**. Choisissez si vous voulez participer aux statistiques des paquets les plus employés.
+
+    ![Démarrage](Images/Debian-Stretch-28.png)
+
+15. Sélection des logiciels
+
+    Désélectionnez “environnement de bureau” et sélectionnez: **“serveur ssh”** et **“utilitaires usuels du système”**. Validez.
+
+    ![Démarrage](Images/Debian-Stretch-30.png)
+
+16. Installation de **grub** (gestionnaire d'amorçage) sur le disque.
+
+    ![Démarrage](Images/Debian-Stretch-31.png)
+
+17. Sélection du disque sur lequel installer le programme de démarrage **grub**.
+
+    J'ai choisi le disque installé dans mon serveur. On aurait aussi pu choisir un média amovible comme une clef USB.
+
+    ![Démarrage](Images/Debian-Stretch_08_21.png)
+
+18. Redémarrage
+
+    Enlevez la clef USB qui a permis de lancer l'installation et tapez **ENTER**.
+
+    ![Démarrage](Images/Debian-Stretch_08_56.png)
+
+19. S'identifier (se loguer).
+
+    ![Démarrage](Images/Debian-Stretch-32.png)
+
+    Ici, utilisateur **root**, puis saisie du mot de passe super-utilisateur.
+
+    Nous ferons notre première configuration à partir du clavier et de l'écran connectés à notre serveur. Cela n'est valable évidemment que si nous avons un accès physique à notre machine.
+
+    Pour une machine distante, la procédure est différente et nous nous connecterons avec **ssh**.
+
+    ![Démarrage](Images/Debian-Stretch_08_21.png)
+
+Et voilà, l'installation première est terminée.
+
+Il reste “quelques” étapes comme la configuration du réseau (nous avons utilisé la configuration automatique pendant l'installation), la sécurisation du serveur **ssh**, ainsi que l'installation de programmes de surveillance (monitoring), le pare-feu.
+
+
+## Installation de serveur avec chiffrage des partitions (méthode manuelle)
+
+Pour cela, il faut que le serveur soit accessible ... au démarrage, il vous sera demandé la clef de chiffrage. Nous verrons ensuite une méthode avec clef de chiffrage installée sur une clef USB ou carte mémoire, ce qui permettra un redémarrage automatique du serveur sans avoir à saisir la clef. (mais même avec ce système, il faut un accès physique au serveur.)
+
+Les première étapes sont identiques à la version non-chiffrée. Le chiffrement sera configuré lors du partitionnement du disque.
+
+1. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_28_37.png)
+
+1. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_28_55.png)
+
+2. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_29_00.png)
+
+3. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_29_06.png)
+
+4. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_29_12.png)
+
+5. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_29_33.png)
+
+6. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_29_44.png)
+
+7. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_29_57.png)
+
+8. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_30_06.png)
+
+9. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_30_13.png)
+
+10. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_30_21.png)
+
+11. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_30_29.png)
+
+12. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_30_36.png)
+
+13. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_30_40.png)
+
+14. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_30_45.png)
+
+15. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_30_52.png)
+
+16. ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_30_55.png)
+
+
+17. C'est ici que commencent les changements de configuration. Nous allons partitionner la disque en 3:
+
+    - la première partition est la partition /boot, non chiffrée
+    - la partition suivante est la partition swap, chiffrée
+    - la dernière est la partition root "/" chiffrée.
+ 
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_31_10.png)
+
+18. Nous allons utiliser la méthode manuelle pour pouvoir fixer nous-mêmes la taille de nos partitions:
+ 
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_31_14.png)
+
+19. Choix du disque à partitionner
+ 
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_31_41.png)
+
+20. Création de la table de partition
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_31_54.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_31_59.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_32_02.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_32_06.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_32_19.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_33_20.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_33_35.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_33_41.png)
+
+21. Choix du système de fichiers et du point de montage de la première partition (/boot).
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_33_47.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_33_53.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_34_00.png)
+
+22. Création des partitions suivantes (swap et "/")
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_34_20.png)
+
+23. Partition swap
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_34_28.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_34_33.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_34_47.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_34_54.png)
+
+24. Création de la partition root "/"
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_35_06.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_35_13.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_35_21.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_35_29.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_35_44.png)
+
+25. Configuration des volumes chiffrés
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_35_49.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_35_53.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_35_58.png)
+
+26. Choix des partitions à chiffrer (swap et root)
+
+     ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_36_06.png)
+
+     ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_36_10.png)
+
+     ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_36_18.png)
+
+     ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_36_31.png)
+
+     ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_36_36.png)
+
+     ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_37_56.png)
+
+     Vous noterez que j'ai choisi de ne PAS effacer les données du disque. En production, il faudra choisir OUI. Cette procédure permet de remplir les partitions avec des données aléatoires et donne une meilleure sécurité. Cette procédure est longue ...
+
+     ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_42_37.png)   
+
+     ![Démarrage-chiffré](Images/Debian-Stretch-crypted-12_42_43.png)
+
+27. Choix de la clef de chiffrage
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_09_02.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_09_11.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_09_22.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_09_51.png)
+
+28. Fin du partitionnement
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_10_17.png)
+
+29. Oups! oubli ... il nous faut configurer le point de montage "/"
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_10_23.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_10_40.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_12_48.png) 
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_13_10.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_13_29.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_13_33.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_13_39.png)
+
+30. Affichage de notre table de partitions
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_13_48.png)
+
+31. Fin du partitionnement
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_13_56.png)
+
+    ![Démarrage-chiffré](Images/Debian-Stretch-crypted-13_13_59.png) 
+
+    La fin de l'installation est identique à la version non-chiffrée.
+
+## Installation de serveur avec chiffrage des partitions (mode assisté LVM)
+
+   Le début de l'installation est identique. Nous allons passer directement à la partie partitionnement. (section 12)
+
+1.   ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_12_04.png)
+
+2.   ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_12_28.png) 
+
+3.   ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_12_36.png) 
+
+4.   ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_12_44.png)
+
+5.   ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_13_39.png)  
+
+6.   ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_13_48.png) 
+
+7.   ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_14_10.png)  
+
+8.   ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_14_20.png) 
+
+9.   ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_14_43.png) 
+
+10.   ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_14_48.png) 
+
+11.   ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_15_05.png) 
+
+12. Partitionnement en mode lvm chiffré
+  
+      On suit ce qui est indiqué sur les captures d'écran.
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_15_37.png) 
+
+13. Choix du disque à partitionner  
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_15_43.png)  
+
+14. Choisissez le mode que vous voulez: tout dans une partition ou des partitions séparées.
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_15_49.png) 
+
+15. On modifie les partitions
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_15_56.png) 
+
+16. Partitionnement en cours
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_16_08.png) 
+
+17. Effacement des données (écriture de données aléatoires sur le disque)
+  
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_17_26.png) 
+
+18. Saisie de la phrase de passe
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_30_48.png)  
+
+19. Suite
+  
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_31_19.png) 
+
+20. Affichage de vos choix
+  
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_31_43.png) 
+
+21. Confirmation de vos choix
+  
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_32_07.png) 
+
+22. Installation du système (comme précédemment)
+  
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_32_36.png) 
+
+23. 
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_45_36.png) 
+
+24. 
+  
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_45_51.png) 
+
+25. 
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_45_59.png) 
+
+26. 
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_46_07.png) 
+
+27. 
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_46_13.png)  
+
+28. 
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_46_48.png)
+
+29. 
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_49_04.png)
+
+30. 
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_09_49_25.png)
+
+31. 
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_10_04_01.png)
+
+32. 
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_10_04_11.png)
+
+33. 
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_10_15_52.png)
+
+34. Re-démarrage
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_10_16_06.png)
+
+35. Saisie de la phrase de passe pour débloquer l'accès au disque
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_10_16_15.png)
+
+36. Et voilà :)
+
+      ![Debian-chiffrée-lvm](Images/Debian-chiffrée_14_07_2018_10_16_31.png)
+
+
+## Installation de serveur avec chiffrage des partitions et clef de chiffrage sur support amovible
+
+  Nous allons voir ici une méthode pour éviter d'avoir à saisir la phrase de passe à chaque redémarrage. Nous allons ajouter une clef (en plus de celle que vous avez déjà). Cette clef sera composée par des données aléatoires d'un support amovible (clef usb, carte sdx, etc ... )
+  
+  Nous allons remplir le contenu de ce support avec des données aléatoires, et définir une portion de celle-ci comme clef. Il reste évident qu'il faut avoir un accès physique àa la machine  ...
+
+### Écriture de données aléatoires sur le support amovible.
+
+Vérifiez avec la commande **dmesg** quel est le périphérique amovible utilisé. Pour moi, c'est **sdb**.
+
+> dd if=/dev/urandom of=/dev/sdb bs=4096
+
+Nous avons utilisé la totalité de la clef. Il est possible aussi de formater la clef d'une façon habituelle en réservant un espace **non-formaté** et **non alloué** pour installer notre clef secrète. Pour cela, vous pouvez utiliser **gparted** par exemple.
+
+### Extraction de la clef à partir d'un secteur donné de la clef
+
+> dd if=/dev/sdb of=/root/secret.key bs=512 skip=8 count=16
+
+### Ajout de cette clef à cryptsetup
+
+On liste les partitions:
+
+> blkid
+
+On ajoute la clef dans le slot 1 (le slot 0 contient la phrase de passe entrée lors de l'installation.)
+
+> cryptsetup luksAddKey /dev/sda3 /root/secret.key --key-slot 1
+
+### Ajout d'une règle udev
+
+On crée le fichier: /etc/udev/rules.d/99-custom-usb.rules avec le contenu suivant:
+
+> SUBSYSTEMS=="usb", DRIVERS=="usb",SYMLINK+="usbdevice%n"
+
+Onb relance le serveur et on vérifie que la règle a bien été prise en compte:
+
+> ls -l /dev/usbdevices
+
+C'est bon.
+
+### Test

+ 1911 - 0
docs/10-dix.md

@@ -0,0 +1,1911 @@
+## Installation de **dovecot** et de l'authentification
+
+Pour l'instant, pour récupérer ses émails, il faut d'abord avoir un compte sur le serveur et se loguer. Ensuite, avec la commande mailx, on peut voir ses messages.
+Exemple:
+
+```shell
+ericadmin@aijan:~$ mailx
+"/var/mail/ericadmin": 2 messages 2 non lus
+>U   1 Eric Streit        dim. mai 20 08:4  20/742   essai d envoi à root
+ U   2 Eric Streit        dim. mai 20 08:5  19/736   un autre essai
+?
+```
+Nous allons installer dovecot qui est un serveur **pop/imap** et d'authentification **SASL**. Nous pourrons ensuite nous connecter sur le serveur avec un client mail comme **thunderbird**, et récupérer et envoyer nos messages avec celui-ci.
+
+### Installation des programmes
+
+Nous n'installerons que les programmes nécessaires à la gestion du protocole **imap** des courriers. Nous n'utilisons pas le protocole **pop3**.
+
+Tout d'abord, faites une copie de /etc/postfix/main.conf et /etc/postfix/master.conf:
+
+```shell
+# cp master.cf master.cf.orig
+# cp main.cf main.cf.orig
+```
+
+Nous allons maintenant configurer nos boites émail; 2 systèmes sont courants: fichier unique qui contient tous vos messages (type mbox) ou répertoire avec un fichier par émail (type maildir). Par défaut, le type est mbox.
+Nous allons changer cela (question de goût ...) Pour cela, nous aurons besoins des programmes utilitaires installés avec dovecot.
+
+### Choix de la base de données
+
+Nous utiliserons la base de données **sqlite**. Il est bien sûr préférable d'utiliser une base de données plus traditionnelle comme **mysql** ou **postgresql** si le nombre d'utilisateurs est important. Mon serveur de mails n'aura que moins de 10 adresses émail, donc, **sqlite** suffira.
+
+```shell
+root@adara:/home/www# apt install dovecot-common dovecot-imapd dovecot-sqlite
+Lecture des listes de paquets... Fait
+Construction de l arbre des dépendances
+Lecture des informations d état... Fait
+Note : sélection de « dovecot-core » au lieu de « dovecot-common »
+The following additional packages will be installed:
+  libexttextcat-2.0-0 libexttextcat-data libstemmer0d
+Paquets suggérés :
+  dovecot-gssapi dovecot-sieve dovecot-pgsql dovecot-mysql dovecot-ldap dovecot-pop3d dovecot-lmtpd dovecot-managesieved dovecot-solr dovecot-lucene ufw
+Les NOUVEAUX paquets suivants seront installés :
+  dovecot-core dovecot-imapd dovecot-sqlite libexttextcat-2.0-0 libexttextcat-data libstemmer0d
+0 mis à jour, 6 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 5 062 ko dans les archives.
+Après cette opération, 12,2 Mo d espace disque supplémentaires seront utilisés.
+Souhaitez-vous continuer ? [O/n] o
+Réception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 libexttextcat-data all 3.4.4-2 [167 kB]
+Réception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libexttextcat-2.0-0 amd64 3.4.4-2+b1 [16,2 kB]
+Réception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 libstemmer0d amd64 0+svn585-1+b2 [63,3 kB]
+Réception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-core amd64 1:2.2.27-3+deb9u2 [3 324 kB]
+Réception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-imapd amd64 1:2.2.27-3+deb9u2 [814 kB]
+Réception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-sqlite amd64 1:2.2.27-3+deb9u2 [677 kB]
+5 062 ko réceptionnés en 0s (6 873 ko/s)
+Sélection du paquet libexttextcat-data précédemment désélectionné.
+(Lecture de la base de données... 26792 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../0-libexttextcat-data_3.4.4-2_all.deb ...
+Dépaquetage de libexttextcat-data (3.4.4-2) ...
+Sélection du paquet libexttextcat-2.0-0:amd64 précédemment désélectionné.
+Préparation du dépaquetage de .../1-libexttextcat-2.0-0_3.4.4-2+b1_amd64.deb ...
+Dépaquetage de libexttextcat-2.0-0:amd64 (3.4.4-2+b1) ...
+Sélection du paquet libstemmer0d:amd64 précédemment désélectionné.
+Préparation du dépaquetage de .../2-libstemmer0d_0+svn585-1+b2_amd64.deb ...
+Dépaquetage de libstemmer0d:amd64 (0+svn585-1+b2) ...
+Sélection du paquet dovecot-core précédemment désélectionné.
+Préparation du dépaquetage de .../3-dovecot-core_1%3a2.2.27-3+deb9u2_amd64.deb ...
+Dépaquetage de dovecot-core (1:2.2.27-3+deb9u2) ...
+Sélection du paquet dovecot-imapd précédemment désélectionné.
+Préparation du dépaquetage de .../4-dovecot-imapd_1%3a2.2.27-3+deb9u2_amd64.deb ...
+Dépaquetage de dovecot-imapd (1:2.2.27-3+deb9u2) ...
+Sélection du paquet dovecot-sqlite précédemment désélectionné.
+Préparation du dépaquetage de .../5-dovecot-sqlite_1%3a2.2.27-3+deb9u2_amd64.deb ...
+Dépaquetage de dovecot-sqlite (1:2.2.27-3+deb9u2) ...
+Paramétrage de libstemmer0d:amd64 (0+svn585-1+b2) ...
+Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ...
+Paramétrage de libexttextcat-data (3.4.4-2) ...
+Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u3) ...
+Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
+Paramétrage de libexttextcat-2.0-0:amd64 (3.4.4-2+b1) ...
+Paramétrage de dovecot-core (1:2.2.27-3+deb9u2) ...
+
+Creating config file /etc/dovecot/dovecot.conf with new version
+
+Creating config file /etc/dovecot/dovecot-dict-auth.conf.ext with new version
+
+Creating config file /etc/dovecot/dovecot-dict-sql.conf.ext with new version
+
+Creating config file /etc/dovecot/dovecot-sql.conf.ext with new version
+
+Creating config file /etc/dovecot/conf.d/10-auth.conf with new version
+
+Creating config file /etc/dovecot/conf.d/10-director.conf with new version
+
+Creating config file /etc/dovecot/conf.d/10-logging.conf with new version
+
+Creating config file /etc/dovecot/conf.d/10-mail.conf with new version
+
+Creating config file /etc/dovecot/conf.d/10-master.conf with new version
+
+Creating config file /etc/dovecot/conf.d/10-tcpwrapper.conf with new version
+
+Creating config file /etc/dovecot/conf.d/15-lda.conf with new version
+
+Creating config file /etc/dovecot/conf.d/15-mailboxes.conf with new version
+
+Creating config file /etc/dovecot/conf.d/90-acl.conf with new version
+
+Creating config file /etc/dovecot/conf.d/90-plugin.conf with new version
+
+Creating config file /etc/dovecot/conf.d/90-quota.conf with new version
+
+Creating config file /etc/dovecot/conf.d/auth-checkpassword.conf.ext with new version
+
+Creating config file /etc/dovecot/conf.d/auth-deny.conf.ext with new version
+
+Creating config file /etc/dovecot/conf.d/auth-dict.conf.ext with new version
+
+Creating config file /etc/dovecot/conf.d/auth-master.conf.ext with new version
+
+Creating config file /etc/dovecot/conf.d/auth-passwdfile.conf.ext with new version
+
+Creating config file /etc/dovecot/conf.d/auth-sql.conf.ext with new version
+
+Creating config file /etc/dovecot/conf.d/auth-static.conf.ext with new version
+
+Creating config file /etc/dovecot/conf.d/auth-system.conf.ext with new version
+
+Creating config file /etc/dovecot/conf.d/auth-vpopmail.conf.ext with new version
+Created symlink /etc/systemd/system/multi-user.target.wants/dovecot.service → /lib/systemd/system/dovecot.service.
+Paramétrage de dovecot-imapd (1:2.2.27-3+deb9u2) ...
+
+Creating config file /etc/dovecot/conf.d/20-imap.conf with new version
+Paramétrage de dovecot-sqlite (1:2.2.27-3+deb9u2) ...
+Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ...
+Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u3) ...
+Traitement des actions différées (« triggers ») pour dovecot-core (1:2.2.27-3+deb9u2) ...
+root@adara:/home/www#
+```
+
+### Configuration du type de boîte aux lettres
+
+Cela se passe dans le fichier /etc/postfix/main.cf
+On rajoute les lignes suivantes:
+
+    home_mailbox = Maildir/
+    mailbox_command =
+
+Si ces lignes existaient avant, il faut les commenter (ajout d'un # en début de ligne.)
+On recharge le fichier de conf
+
+    service postfix reload
+
+Et on teste:
+
+```shell
+eric@aldebaran:~/Devs/Travail/Installation serveur/Tutorial$ mail ericadmin@aijan.yojik.net
+Cc: 
+Subject: Re-essai
+re-essai de aldebaran
+.
+eric@aldebaran:~/Devs/Travail/Installation serveur/Tutorial$ 
+```
+J'envoie un courrier à partir de mon desktop.
+Vérification sur le serveur:
+
+```shell
+ericadmin@aijan:~$ ls
+bin  index.html  Maildir  mbox
+ericadmin@aijan:~$
+```
+
+Le répertoire Maildir a bien été créé.
+Vérification de la réception des messages:
+
+```shell
+ricadmin@aijan:~$ cd Maildir/
+ericadmin@aijan:~/Maildir$ ls
+cur  new  tmp
+ericadmin@aijan:~/Maildir$ cd new/
+ericadmin@aijan:~/Maildir/new$ ls
+1526897441.V801Icc005dM227044.aijan  1526897501.V801Icc0060M464181.aijan  1526897576.V801Icc0061M979030.aijan
+ericadmin@aijan:~/Maildir/new$ 
+
+ericadmin@aijan:~/Maildir/new$ cat 1526897576.V801Icc0061M979030.aijan
+Return-Path: <eric@aldebaran.yojik.net>
+X-Original-To: ericadmin@aijan.yojik.net
+Delivered-To: ericadmin@aijan.yojik.net
+Received: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:6423:417b:6ef:ee21])
+	by aijan.yojik.net (Postfix) with ESMTP id EC11BD00903
+	for <ericadmin@aijan.yojik.net>; Mon, 21 May 2018 12:12:56 +0200 (CEST)
+Received: by aldebaran.yojik.net (Postfix, from userid 1000)
+	id 8B42920620A; Mon, 21 May 2018 12:12:56 +0200 (CEST)
+To: <ericadmin@aijan.yojik.net>
+Subject: Re-essai
+X-Mailer: mail (GNU Mailutils 3.1.1)
+Message-Id: <20180521101256.8B42920620A@aldebaran.yojik.net>
+Date: Mon, 21 May 2018 12:12:56 +0200 (CEST)
+From: eric@aldebaran.yojik.net (Eric Streit)
+
+re-essai de aldebaran
+.
+ericadmin@aijan:~/Maildir/new$ 
+```
+
+Les messages sont bien reçus. Par contre, mailx ne fonctionne plus (uniquement avec des fichiers mbox.)
+Pour lire nos messages, il nous faut installer le lecteur de courriers **mutt**.
+
+```shell
+root@aijan:/etc/postfix# apt install mutt
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  libgmime-2.6-0 libgpgme11 libnotmuch4 libtalloc2 libtokyocabinet9
+Paquets suggérés :
+  gpgsm urlview mixmaster
+Les NOUVEAUX paquets suivants seront installés :
+  libgmime-2.6-0 libgpgme11 libnotmuch4 libtalloc2 libtokyocabinet9 mutt
+0 mis à jour, 6 nouvellement installés, 0 à enlever et 12 non mis à jour.
+Il est nécessaire de prendre 2 433 ko dans les archives.
+Après cette opération, 8 665 ko d'espace disque supplémentaires seront utilisés.
+Souhaitez-vous continuer ? [O/n] o
+Réception de:1 http://deb.debian.org/debian stretch/main amd64 libtokyocabinet9 amd64 1.4.48-11+b1 [367 kB]
+Réception de:2 http://deb.debian.org/debian stretch/main amd64 libgpgme11 amd64 1.8.0-3+b2 [160 kB]
+Réception de:3 http://deb.debian.org/debian stretch/main amd64 libgmime-2.6-0 amd64 2.6.22+dfsg2-1 [232 kB]
+Réception de:4 http://deb.debian.org/debian stretch/main amd64 libtalloc2 amd64 2.1.8-1 [36,3 kB]
+....
+```
+
+On teste; on le lance avec la commande suivante:
+
+```shell
+ericadmin@aijan:~$ mutt -f ./Maildir/
+GPGME : protocole CMS non disponible
+3 gardé(s), 0 effacé(s).
+ericadmin@aijan:~$
+```
+
+Résultat: (extrait de l'écran)
+
+```shell
+q:Quitter  d:Effacer  u:Récup  s:Sauver  m:Message  r:Répondre  g:Groupe  ?:Aide
+   1 O + mai 21 root            (0,1K) Essai
+   2 O F mai 21 To root@localho (0,1K) essai d'envoi à root
+   3 O + mai 21 Eric Streit     (0,1K) Re-essai
+
+NeoMutt: ./Maildir/ [Msgs:3 Old:3 1,6K](threads/date)-
+```
+
+Nos émails sont bien là :) Nous pourrons supprimer mutt plus tard si nous voulons gagner un peu de place.
+
+## Architecture
+
+Avant de continuer à configurer notre serveur mail, il serait utile d'avoir une vue d'ensemble du système que nous allons configurer. Pour l'instant, nous n'avons apporté que peu de modifications aux fichiers de configuration (nous avons seulement changé le type de format de nos boîtes aux lettres :
+
+    mbox -> Maildir
+
+Si nous regardons quels ports sont écoutés; nous voyons que nous avons pour l'instant:
+
+    le port 22 (SSH)
+    le port 25 (Postfix)
+    le port 80 (Apache)
+    le port 443 (Apache)
+    le port 53 et 953 (Bind)
+
+et le port 143 (imap) de dovecot, mais dovecot n'est pas encore intégré à notre serveur mail et est **non-configuré**.
+
+```shell
+root@aijan:/home/ericadmin# netstat -tlnp
+Connexions Internet actives (seulement serveurs)
+Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name    
+tcp        0      0 192.168.111.240:53      0.0.0.0:*               LISTEN      536/named           
+tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      536/named           
+tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      603/sshd            
+tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      850/master          
+tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      536/named           
+tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      676/apache2         
+tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      607/dovecot         
+tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      676/apache2         
+tcp6       0      0 :::53                   :::*                    LISTEN      536/named           
+tcp6       0      0 :::22                   :::*                    LISTEN      603/sshd            
+tcp6       0      0 :::25                   :::*                    LISTEN      850/master          
+tcp6       0      0 ::1:953                 :::*                    LISTEN      536/named           
+tcp6       0      0 :::143                  :::*                    LISTEN      607/dovecot         
+root@aijan:/home/ericadmin# 
+```
+
+Notez la commande **netstat -tlnp** pour voir les ports ouverts ainsi que les programmes qui les gèrent.
+
+![Notre serveur de mail](Images/dessin.svg)
+
+Nous n'utiliserons pas le protocole Pop3 (ni sa variante pop3s). Le protocole Imap offre bien plus de possibilités. (parties rouges entourées de noir)
+
+## Schéma d'ensemble
+
+Les parties implémentées sont en rouge sur le dessin suivant:
+
+![Notre serveur de mail](Images/dessin1.svg)
+
+## Explication:
+
+### Les ports servis par Postfix
+
+1. Le port 25 est utilisé pour la communication entre serveurs smtp; il permet une connexion "en clair" ou chiffrée. Il peut être aussi utilisé pour l'envoi des mails à partir d'un client.  Nous l'avons d'ailleurs fait avec la commande **mail** et **telnet**. 
+2. Le port 587 est le port "submission", port utilisé par défaut par les **clients mail** pour **envoyer** du courrier sur le serveur (thunderbird, etc ...) qui le dispatche ensuite, soit dans les boîtes de courrier locales, soit à un destinataire extérieur.
+3. Le port 465 est un port qui a été réservé pour les communications chiffrées (SMTP over SSL): il était utilisé avant que STARTTLS ne soit utilisé; il a été enlevé des ports standards de mail.
+
+Le premier port (25) est un port d'entrée-sortie réservé à la communication entre serveurs ("mais permet aussi la submission de messages avec authentification".) Souvenez-vous que le port 25 est bloqué par de nombreux FAI. La communication peut être chiffrée ou non, suivant les possibilités du serveur et du client, et donc, les mots de passe peuvent passer en clair. La communication commence en mode "clair" et après négociation, passe en mode "chiffrée" si celle-ci est disponible: (STARTTLS)
+
+Les 2 derniers ports (465 et 587) sont des ports d'entrée de vos messages envoyés par des clients, après authentification, en mode chiffré ou non. 
+
+## Les ports servis par Dovecot
+
+1. Les ports 143 et 993 sont des ports réservés au protocole IMAP(s).
+2. Les port 110 et 995 sont des ports réservés au protocole POP3(s), mais nous ne l'utiliserons pas.
+
+Ces ports sont servis par Dovecot. Il permettent de gérer notre boîte mail, récupérer, effacer nos messages, créer des dossiers dans lesquels nous pouvons trier nos messages.
+
+## Ce que nous allons implémenter
+
+Nous implémenterons une politique particulière, comme celle décrite ici:
+[RasperryPi Email server Part 2](https://samhobbs.co.uk/2013/12/raspberry-pi-email-server-part-2-dovecot)
+Cet auteur sépare les communications entre serveurs (port 25) et client-serveur (ports 587 et 465). Il empêche les communications non-chifrées entre client et serveur, et utilise le port 465 pour les communications chiffrées (déprécié par le standard.)
+Jusqu'à maintenant, nous n'avons utilisé ni dovecot, ni base de données; l'authentification se faisant directement sur le serveur en accédant à notre compte sur le serveur (login par identifiant/mot de passe ou clef SSH).
+Nous allons implémenter l'accès par **Imap** et **Imaps** de nos courriers à partir de n'importe quelle machine et avec authentification (toujours pas de comptes virtuels.) L'authentification se faisait avant en se connectant sur nos comptes en **SSH**. Nous avons déjà généré auparavant nos clefs de chiffrage avec **certbot**. (voir le chapitre suivant ...)
+Elles sont situées dans **/etc/letsencrypt/live/atom.yojik.net**.
+Dovecot est un serveur Imap et pop3. Il assure en plus l'authentification.
+
+## Configuration de Dovecot
+
+1. Indiquer à Dovecot d'écouter sur toutes les interfaces, en IPV4 et IPV6. Le fichier à configurer (après copie) est **/etc/dovecot/dovecot.conf**; changer la ligne qui contient:
+
+    > listen =
+    en
+    listen =  *, ::
+
+2. Il faut lui indiquer **où** sont stockés nos mails et sous quel  **format**. Cela se configure dans le fichier:
+
+    /etc/dovecot/conf.d/10-mail.conf
+    Voici un extrait du contenu original:
+
+    ```shell
+    ## Mailbox locations and namespaces
+    ##
+    mail_location = mbox:~/mail:INBOX=/var/mail/%u
+    ```
+
+   Le format par défaut est **mbox** situé dans **/var/mail/user**
+   Nous allons changer cela en:
+
+    ```shell
+    mail_location = maildir:~/Maildir
+    ```
+
+   Dovecot utilisera notre boîte aux lettres située dans le home de chaque user, et dans le répertoire Maildir.
+
+   Souvenez-vous que nous avions configuré Postfix afin qu'il utilise le format Maidir.
+   
+3. Indiquer à Postfix d'utiliser dovecot pour l'accès aux mails ainsi que pour l'authentification.
+
+   Nous allons modifier le fichier **/etc/postfix/main.cf** et ajouter les lignes suivantes:
+
+    > smtpd_sasl_type = dovecot
+    smtpd_sasl_path = private/auth
+    smtpd_sasl_auth_enable = yes
+
+    Nous allons indiquer à Dovecot de répondre aux demandes d'authentification de postfix:
+    Après avoir fait une sauvegarde du fichier original /etc/dovecot/conf.d/10-master.conf (toujours sauvegarder les fichiers avant modifications!), nous allons modifier le mécanisme d'authentification de docvecot. Pour cela nous allons remplacer la partie intitulée **service auth** par ce qui suit:
+  
+     ```shell
+    service auth {
+	 unix_listener /var/spool/postfix/private/auth {
+		 mode = 0660
+		 user = postfix
+		 group = postfix
+		 }
+	 }
+   ```
+
+4. Autorisons maintenant le **plain login**; nous allons modifier le fichier   **/etc/dovecot/conf.d/10-auth.conf** en ajoutant ou modifiant les lignes suivantes:
+    > disable_plaintext_auth = no
+    auth_mechanisms = plain login
+
+On relance postfix et dovecot pour prendre en compte les modifications.
+	```shell
+	root@atom:/etc/postfix# systemctl restart postfix
+	root@atom:/etc/postfix# systemctl restart dovecot
+	```
+	On vérifie que tout s'est bien passé avec la commande:
+	```shell
+	root@atom:/etc/postfix# tail -f /var/log/daemon.log 
+	Nov 26 12:47:22 atom systemd[1]: Stopped Postfix Mail Transport Agent (instance -).
+	Nov 26 12:47:22 atom systemd[1]: Starting Postfix Mail Transport Agent (instance -)...
+Nov 26 12:47:23 atom systemd[1]: Started Postfix Mail Transport Agent (instance -).
+	Nov 26 12:47:23 atom systemd[1]: Starting Postfix Mail Transport Agent...
+	Nov 26 12:47:23 atom systemd[1]: Started Postfix Mail Transport Agent.
+	Nov 26 12:47:28 atom systemd[1]: Stopping Dovecot IMAP/POP3 email server...
+	Nov 26 12:47:29 atom systemd[1]: Stopped Dovecot IMAP/POP3 email server.
+	Nov 26 12:47:29 atom systemd[1]: Starting Dovecot IMAP/POP3 email server...
+	Nov 26 12:47:29 atom systemd[1]: dovecot.service: PID file /var/run/dovecot/master.pid not readable (yet?) after start: No such file or directory
+	Nov 26 12:47:29 atom systemd[1]: Started Dovecot IMAP/POP3 email server.
+	```
+	On quitte avec Ctrl C. 
+	C'est bon.
+
+
+4. Test 1: Nous allons nous connecter avec telnet; voici la capture de la session:
+   Tout d'abord, création d'un nouvel utilisateur de nom testmail et mot de passe testmail (oui, rien de bien original). A partir du compte root, nous allons envoyer un message à cet utilisateur (voir au-dessus pour comment faire avec la commande mail.)
+   Testons si le message est bien arrivé:
+
+   ```shell
+      root@atom:/etc/postfix# adduser testmail
+Ajout de l'utilisateur « testmail25 » ...
+Ajout du nouveau groupe « testmail25 » (1001) ...
+Ajout du nouvel utilisateur « testmail25 » (1001) avec le groupe « testmail25 » ...
+Création du répertoire personnel « /home/testmail25 »...
+Copie des fichiers depuis « /etc/skel »...
+   Entrez le nouveau mot de passe UNIX : 
+   Retapez le nouveau mot de passe UNIX : 
+   passwd: password updated successfully
+   Changing the user information for testmail
+   Enter the new value, or press ENTER for the default
+	   Full Name []: 
+	   Room Number []: 
+	   Work Phone []: 
+	   Home Phone []: 
+	   Other []: 
+Cette information est-elle correcte ? [O/n]o
+root@atom:/etc/postfix# mail testmail
+Cc: 
+Subject: Essai 7
+Essai 7
+.
+root@atom:/etc/postfix# su - testmail
+testmail25@atom:~$ mutt -f ./Maildir/
+GPGME : protocole CMS non disponible
+1 gardé(s), 0 effacé(s).   
+   ```
+
+   Le message est bien arrivé. Essayons avec les commandes Imap; il nous faut installer telnet avant:
+
+   > apt install telnet
+
+Nous pouvons donc nous connecter aux ports suivants: 143 et 993.
+
+   ```shell
+   root@aijan:/home/ericadmin# telnet localhost 143
+   Trying ::1...
+   Connected to localhost.
+   Escape character is '^]'.
+   * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
+   x1 LOGIN testmail testmail
+   x1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in
+   x2 SELECT Inbox
+   * FLAGS (\Answered \Flagged \Deleted \Seen \Draft)
+   * OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft \*)] Flags permitted.
+   * 1 EXISTS
+   * 1 RECENT
+   * OK [UNSEEN 1] First unseen.
+   * OK [UIDVALIDITY 1527165527] UIDs valid
+   * OK [UIDNEXT 2] Predicted next UID
+   x2 OK [READ-WRITE] Select completed (0.000 + 0.000 secs).
+   x4 LOGOUT
+   * BYE Logging out
+   x4 OK Logout completed (0.000 + 0.000 secs).
+   Connection closed by foreign host.
+   root@aijan:/home/ericadmin#
+   ```
+    Ça marche: **OK [UNSEEN 1] First unseen.**
+Nous nous sommes connectés avec le mot de passe en clait (testmail pour l'utilisateur testmail.)
+
+5. Test 2: envoi de mail
+   Connexion sur le port 25 (postfix) en utilisant l'authentification gérée par dovecot.
+   Nous avons chiffré le mot de passe avec la commande suivante:
+   > printf '\0%s\0%s' 'testmail' 'testmail' | openssl base64
+   AHRlc3RtYWlsAHRlc3RtYWls
+
+   ```shell
+   root@aijan:/home/ericadmin# telnet localhost 25
+   Trying ::1...
+   Connected to localhost.
+   Escape character is '^]'.
+   220 aijan.yojik.net ESMTP Postfix (Debian/GNU)
+   ehlo localhost
+   250-aijan.yojik.net
+   250-PIPELINING
+   250-SIZE 10240000
+   250-VRFY
+   250-ETRN
+   250-STARTTLS
+   250-AUTH PLAIN LOGIN
+   250-ENHANCEDSTATUSCODES
+   250-8BITMIME
+   250-DSN
+   250 SMTPUTF8
+   AUTH PLAIN AHRlc3RtYWlsAHRlc3RtYWls
+   235 2.7.0 Authentication successful
+   mail from: testmail
+   250 2.1.0 Ok
+   data
+   554 5.5.1 Error: no valid recipients
+   rcpt to: ericounet26200@gmail.com
+   250 2.1.5 Ok
+   data
+   354 End data with <CR><LF>.<CR><LF>
+   Subject: mon, premier mail avec sasl
+   mon premier mail avec sasl
+   .
+   250 2.0.0 Ok: queued as A664BD004A1
+   quit
+   221 2.0.0 Bye
+   Connection closed by foreign host.
+   root@aijan:/home/ericadmin# 
+   ```
+   Vérification de la bonne réception du message: le message est bien reçu.
+   
+## Configuration des certificats
+
+Jusqu'à présent, nous avons utilisé les certificats fournis par Debian à l'installation.
+Nous allons utiliser les certificats que nous avons créés auparavant avec letsencrypt.
+Il y a 2 lignes à modifier dans /etc/postfix/main.cf:
+> smtpd_tls_cert_file = /etc/letsencrypt/live/toto.yojik.net/fullchain.pem
+> smtpd_tls_key_file = /etc/letsencrypt/live/toto.yojik.net/privkey.pem
+
+Bien entendu, modifiez la partie **toto.yojik.net** par le nom de votre serveur mail et pour lequel vous avez généré les certificats.
+Il y a 3 lignes à ajouter/modifier dans /etc/dovecot/conf.d/10-ssl.conf
+> ssl = required
+> ssl_cert = </etc/letsencrypt/live/toto.yojik.net/fullchain.pem
+> ssl_key = </etc/letsencrypt/live/toto.yojik.net/privkey.pem
+
+Comme avant, personnalisez avec votre nom de serveur mail.
+Relancez vos serveurs avec les commandes suivantes:
+
+```shell
+root@aijan:/home/ericadmin# systemctl restart postfix
+root@aijan:/home/ericadmin# systemctl restart dovecot
+```
+Bien vérifier dans les logs (/var/log/daemon.log) que tout s'est bien passé (pas d'erreur de frappe par exemple ...)
+
+### Test
+
+Nous allons refaire les tests déjà réalisés précédemment pour vérifier que "rien n'est cassé" suite à la modification de nos certificats.
+
+```shell
+root@aijan:/home/ericadmin# telnet localhost 25
+Trying ::1...
+Connected to localhost.
+Escape character is '^]'.
+220 aijan.yojik.net ESMTP Postfix (Debian/GNU)
+ehlo aijan.yojik.net
+250-aijan.yojik.net
+250-PIPELINING
+250-SIZE 10240000
+250-VRFY
+250-ETRN
+250-STARTTLS
+250-AUTH PLAIN LOGIN
+250-ENHANCEDSTATUSCODES
+250-8BITMIME
+250-DSN
+250 SMTPUTF8
+AUTH PLAIN AHRlc3RtYWlsAHRlc3RtYWls
+235 2.7.0 Authentication successful
+mail from: testmail
+250 2.1.0 Ok
+rcpt to: ericounet26200@gmail.com
+250 2.1.5 Ok
+data
+354 End data with <CR><LF>.<CR><LF>
+subject: essai
+un essai
+.
+250 2.0.0 Ok: queued as 9EEF6D0002E
+quit
+502 5.5.2 Error: command not recognized
+quit
+221 2.0.0 Bye
+Connection closed by foreign host.
+root@aijan:/home/ericadmin# 
+
+```
+Ça fonctionne. L'authentification avec les nouveaux certificats est assurée.
+
+### Test de la connexion sur le port 993 à partir d'un ordinateur extérieur
+
+```
+eric@aldebaran:~$ openssl s_client -connect yojik.net:993
+CONNECTED(00000003)
+depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
+verify return:1
+depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
+verify return:1
+depth=0 CN = atom.yojik.net
+verify return:1
+---
+Certificate chain
+ 0 s:/CN=atom.yojik.net
+   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
+ 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
+   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
+---
+Server certificate
+-----BEGIN CERTIFICATE-----
+MIIFVTCCBD2gAwIBAgISA2ymxMSWOd9z4d5MhK1RarzkMA0GCSqGSIb3DQEBCwUA
+MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
+ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODExMTExNTI2NDhaFw0x
+OTAyMDkxNTI2NDhaMBkxFzAVBgNVBAMTDmF0b20ueW9qaWsubmV0MIIBIjANBgkq
+hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr+SwsS/VwilSnazx4Y9Xj9OIzYPx2s5W
+kxocZT7BMdO0oKNKolbe6AJMGrNKf5TjQu9EN+yal6rNZUOrrR7dS2gKvRjyH2mW
+5JniCW/osYVkHglgjvNbihQP4IBY9brvvtIW9reKyA9adq5zHHRW2RNaBG18oXFa
+mQb+uFGiCkpyjGK7XYmPkVA7DM6TtciFBGeTmY15vF4aniPQtu1TuksEc+WDvWfR
+K9ebYXghqBJd1OigtgVhOpDiSAnxjtx9wcjHuic/9wU8iI2VdkOB0xoMxlRNjQSZ
+DWgRCiZr/LwtoX6bSWzJex1kW7Q/zQnvA1eaKqD6mCIp5uO7KiK5AQIDAQABo4IC
+ZDCCAmAwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
+BQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQyxrlKdL9RV+v8Y7YwH4mV0iq4
+EDAfBgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBvBggrBgEFBQcBAQRj
+MGEwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwLmludC14My5sZXRzZW5jcnlwdC5v
+cmcwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5v
+cmcvMBkGA1UdEQQSMBCCDmF0b20ueW9qaWsubmV0MEwGA1UdIARFMEMwCAYGZ4EM
+AQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0
+c2VuY3J5cHQub3JnMIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcA4mlLribo6UAJ
+6IYbtjuD1D7n/nSI+6SPKJMBnd3x2/4AAAFnA5jZtQAABAMASDBGAiEAshqJHr2M
+l6n+9Dd31jkskn3lxh5iC7FTfPZoKxZGT6ECIQDDby9vNMmzh8eYysYr5UuTE4R9
+VOko3rzQZgj51O/nEQB2AGPy283oO8wszwtyhCdXazOkjWF3j711pjixx2hUS9iN
+AAABZwOY2bgAAAQDAEcwRQIhAPTO+Wry4Fl2+HddFMsWpfYJQ7dkXtW93N1+z77y
+ofgMAiB76ad1N7+AVOh4YvrRboK31F5cs3YJnKmKxINWkrI70TANBgkqhkiG9w0B
+AQsFAAOCAQEAJ1BYUTWpCIIYD0FKB9vuCEfYrg1NNHhYYr0jUKR49EPLO8DS1aRp
+KK1tr9EZti2lOYaEOKNo4dQkLLKgsF1kovHreosvXPF2oXRbN6UdVu+67fhIokD5
+FIS9pphaxIHEC4A9h7JK0LHJHMG9ySRDBbtz9Y0b7z5jGIxX0yzaqBcPJVG26SJm
+uyiys2bklC+N3mYAVYb/c3VWdCWzusHks+HCTx2y+YkqVkvCepdQYFoUKpk6ScSc
+Fz6r0DWBXGmhJLg0K+KxfXGUtTtwDjnBZCocX3FrQsQNrbYtvLyK2QhDv1Mr6V96
+P11a4LV3qq2eTfoIiNd9m2iqCJ7/pSWIjw==
+-----END CERTIFICATE-----
+subject=/CN=atom.yojik.net
+issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
+---
+No client certificate CA names sent
+Peer signing digest: SHA512
+Server Temp Key: ECDH, P-384, 384 bits
+---
+SSL handshake has read 3236 bytes and written 334 bytes
+Verification: OK
+---
+New, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384
+Server public key is 2048 bit
+Secure Renegotiation IS supported
+Compression: NONE
+Expansion: NONE
+No ALPN negotiated
+SSL-Session:
+    Protocol  : TLSv1.2
+    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
+    Session-ID: D488F9943CD771D5DF400C676729BDF315F5CBD01128E922D7DBCC0D80B467F3
+    Session-ID-ctx: 
+    Master-Key: 45BF00E99AA29FB83E1395741E3A506800473105882554C46B50639665B600000E1F3048F051EF5E12D6C0804A0698D8
+    PSK identity: None
+    PSK identity hint: None
+    SRP username: None
+    TLS session ticket lifetime hint: 7200 (seconds)
+    TLS session ticket:
+    0000 - 59 1e 77 bc e8 c1 0e f8-c9 f2 38 f8 f9 f0 e9 4f   Y.w.......8....O
+    0010 - 4b 91 2a 39 73 cc a6 85-f2 22 96 ae 4a a3 84 b8   K.*9s...."..J...
+    0020 - e8 de 9b 34 74 1a d9 e7-88 f5 d1 bb 4c 2d 59 f2   ...4t.......L-Y.
+    0030 - 0e 99 1e bd b7 82 ef 32-ab 0c 1a 33 c0 dd 31 6a   .......2...3..1j
+    0040 - 5b 38 fc c5 27 29 d7 a3-ae f0 a5 bb 66 a0 b4 eb   [8..')......f...
+    0050 - 7c 95 f2 16 cb 92 5c f3-7f c0 30 33 ec 77 f0 a8   |.....\...03.w..
+    0060 - 8f 5e 9c f7 de c9 4f 95-1a 0e 09 27 7a 45 b0 db   .^....O....'zE..
+    0070 - 84 ba 72 37 f1 a2 f5 95-43 0c e2 eb a3 18 94 a8   ..r7....C.......
+    0080 - b3 d4 d7 15 4c 81 08 a2-17 3f 7b 15 fe 81 d8 5c   ....L....?{....\
+    0090 - 74 60 ac 5e 2a 5a 22 07-6f ba 03 4f d5 46 5a 04   t`.^*Z".o..O.FZ.
+
+    Start Time: 1543235404
+    Timeout   : 7200 (sec)
+    Verify return code: 0 (ok)
+    Extended master secret: yes
+---
+* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
+1 Login testmail testmail
+1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in
+QUIT
+DONE
+eric@aldebaran:~$ 
+```
+Le **OK [CAPABILITY ...** indique que la connexion s'est faite normalement; les caractéristiques du certificat sont affichées au-dessus. Le **Logged: in** indique que l'authentification a marché.
+
+Nous avons donc testé les ports 25, 143 et 993 avec succès.
+
+## Configuration d'un port qui n'accepte que les communications chiffrées.
+
+Pour l'instant, postfix n'écoute que le port 25 (vous pouvez le vérifier avec la commande **netstat -tlpn**.
+Dans le fichier /etc/postfix/master.cf, seul la ligne suivante est active (décommentée):
+> smtp      inet  n       -       y       -       -       smtpd
+Nous allons mettre postfix en écoute du port 465:
+Dans le fichier /etc/postfix/master.cf, la ligne à décommenter est la suivante:
+> # smtps     inet  n       -       -       -       -       smtpd
+
+pour obtenir:
+> smtps     inet  n       -       -       -       -       smtpd
+
+### Test
+
+On relance postfix et on regarde les ports servis:
+
+```shell
+root@aijan:/home/ericadmin# service postfix restart
+root@aijan:/home/ericadmin# netstat -tlpn
+Connexions Internet actives (seulement serveurs)
+Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name
+tcp        0      0 192.168.111.240:53      0.0.0.0:*               LISTEN      552/named
+tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      552/named
+tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      580/sshd
+tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      2159/master
+tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      552/named
+tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      649/apache2
+tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      1792/dovecot
+tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      649/apache2
+tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      2159/master
+tcp6       0      0 :::53                   :::*                    LISTEN      552/named
+tcp6       0      0 :::22                   :::*                    LISTEN      580/sshd
+tcp6       0      0 :::25                   :::*                    LISTEN      2159/master
+tcp6       0      0 ::1:953                 :::*                    LISTEN      552/named
+tcp6       0      0 :::143                  :::*                    LISTEN      1792/dovecot
+tcp6       0      0 :::465                  :::*                    LISTEN      2159/master
+root@aijan:/home/ericadmin# 
+
+```
+Le port 465 est ouvert et servi par postfix.
+
+### test de connexion sur le port 465
+
+```shell
+root@aijan:/home/ericadmin# telnet localhost 465
+Trying ::1...
+Connected to localhost.
+Escape character is '^]'.
+220 aijan.yojik.net ESMTP Postfix (Debian/GNU)
+ehlo aijan.yojik.net
+250-aijan.yojik.net
+250-PIPELINING
+250-SIZE 10240000
+250-VRFY
+250-ETRN
+250-STARTTLS
+250-AUTH PLAIN LOGIN
+250-ENHANCEDSTATUSCODES
+250-8BITMIME
+250-DSN
+250 SMTPUTF8
+quit
+221 2.0.0 Bye
+Connection closed by foreign host.
+root@aijan:/home/ericadmin# 
+```
+La connexion se fait normalement.
+Nous allons maintenant bloquer les communications non-chiffrées; les paramètres à modifier sont dans /etc/postfix/master.conf (2 premiers paramètres de la ligne smtps à décommenter.)
+
+> smtps     inet  n       -       -       -       -       smtpd
+>   -o syslog_name=postfix/smtps
+>   -o smtpd_tls_wrappermode=yes
+
+### Test
+
+1. Essai avec communication non-chifrée:
+
+```shell
+root@aijan:/home/ericadmin# telnet localhost 465                                            
+Trying ::1...
+Connected to localhost.
+Escape character is '^]'.
+Connection closed by foreign host.
+root@aijan:/home/ericadmin# 
+```
+
+La communication est refusée.
+
+2. Essai avec communication chiffrée (nous utilisons **openssl** pour cela):
+
+```shell
+root@adara:/etc# openssl s_client -connect localhost:465 -quiet
+depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
+verify return:1
+depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
+verify return:1
+depth=0 CN = adara.yojik.eu
+verify return:1
+220 adara.yojik.eu ESMTP Postfix (Debian/GNU)
+ehlo me
+250-adara.yojik.eu
+250-PIPELINING
+250-SIZE 10240000
+250-VRFY
+250-ETRN
+250-AUTH PLAIN LOGIN
+250-ENHANCEDSTATUSCODES
+250-8BITMIME
+250-DSN
+250 SMTPUTF8
+quit
+221 2.0.0 Bye
+root@adara:/etc# 
+```
+
+La communication est acceptée et fonctionne. Nous voyons aussi notre certificat Letsencrypt vérifié.
+
+Il reste une modification à faire pour n'autoriser que les communications chiffrées:
+Dans /etc/postfix/main.cf ajouter ou modifier la ligne suivante:
+> smtpd_tls_auth_only = yes
+
+Et rechargez Postfix.
+
+### Test
+
+```shell
+root@aijan:/home/ericadmin# telnet localhost 25
+Trying ::1...
+Connected to localhost.
+Escape character is '^]'.
+220 aijan.yojik.net ESMTP Postfix (Debian/GNU)
+ehlo aijan.yojik.net
+250-aijan.yojik.net
+250-PIPELINING
+250-SIZE 10240000
+250-VRFY
+250-ETRN
+250-STARTTLS
+250-ENHANCEDSTATUSCODES
+250-8BITMIME
+250-DSN
+250 SMTPUTF8
+quit
+221 2.0.0 Bye
+Connection closed by foreign host.
+root@aijan:/home/ericadmin# 
+```
+
+On voit que la ligne "250-AUTH PLAIN LOGIN" est absente, ce qui confirme que Postfix a bien pris en compte notre dernière modification.
+
+## Interdiction de communications non-chiffrées sur le port 465
+
+Nous allons rajouter/modifier une "restriction" à la ligne gérant le port 465 dans /etc/postfix/master.cf
+
+> smtps     inet  n       -       -       -       -       smtpd
+>   -o syslog_name=postfix/smtps
+>   -o smtpd_tls_wrappermode=yes
+>   -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
+
+La dernière ligne est rajoutée, dé-commentée, modifiée (suivant le cas). On recharge postfix et on teste.
+
+### Test
+
+```shell
+root@aijan:/etc/postfix# telnet localhost 465
+Trying ::1...
+Connected to localhost.
+Escape character is '^]'.
+quit
+Connection closed by foreign host.
+root@aijan:/etc/postfix# 
+```
+
+Ça fonctionne.
+
+## Ajout de la gestion du port 587
+
+Dans le fichier /etc/postfix/master.cf, dé-commentez les lignes suivantes et modifiez les comme indiqué. Ce sont les mêmes modifications que celles effectuées pour le port 465.
+
+```shell
+submission inet n       -       y       -       -       smtpd
+  -o syslog_name=postfix/submission
+  -o smtpd_tls_security_level=encrypt
+  -o smtpd_sasl_auth_enable=yes
+
+Ainsi que 
+
+ -o smtpd_recipient_restrictions=
+```
+
+### Test
+
+```shell
+root@aijan:/etc/bind# netstat -tlnp
+Connexions Internet actives (seulement serveurs)
+Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name    
+tcp        0      0 192.168.111.240:53      0.0.0.0:*               LISTEN      3410/named          
+tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      3410/named          
+tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      580/sshd            
+tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      4080/master         
+tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      3410/named          
+tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      649/apache2         
+tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      2668/dovecot        
+tcp        0      0 0.0.0.0:587             0.0.0.0:*               LISTEN      4080/master         
+tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      2668/dovecot        
+tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      649/apache2         
+tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      4080/master         
+tcp6       0      0 :::53                   :::*                    LISTEN      3410/named          
+tcp6       0      0 :::22                   :::*                    LISTEN      580/sshd            
+tcp6       0      0 :::25                   :::*                    LISTEN      4080/master         
+tcp6       0      0 ::1:953                 :::*                    LISTEN      3410/named          
+tcp6       0      0 :::993                  :::*                    LISTEN      2668/dovecot        
+tcp6       0      0 :::587                  :::*                    LISTEN      4080/master         
+tcp6       0      0 :::143                  :::*                    LISTEN      2668/dovecot        
+tcp6       0      0 :::465                  :::*                    LISTEN      4080/master         
+root@aijan:/etc/bind# 
+```
+
+Le port 587 est géré.
+
+## Ajout de la gesion du port 993 (imap avec SSL/TLS)
+
+Nous allons modifier la configuration de dovecot pour la prise en charge de ce port.
+
+Il n'est pas encore "servi" comme nous l'avons vu avec la commande **netstat -tlpn** (vu auparavant.)
+
+Le fichier à modifier est: /etc/dovecot/conf.d/10-master.conf
+La partie du fichier à modifier est la suivante:
+
+> service imap-login {
+>   inet_listener imap {
+>     #port = 143
+>   }
+>   inet_listener imaps {
+>     #port = 993
+>     #ssl = yes
+>   }
+
+pour donner ceci:
+
+> service imap-login {
+>   inet_listener imap {
+>     port = 143
+>   }
+>   inet_listener imaps {
+>     port = 993
+>     ssl = yes
+>   }
+
+Dans le fichier /etc/dovecot/conf.d/10-ssl.conf:
+> ssl = yes
+> ssl_protocols = !SSLv3
+
+### Test
+
+```shell
+root@aijan:/etc/dovecot# netstat -tlpn
+Connexions Internet actives (seulement serveurs)
+Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name    
+tcp        0      0 192.168.111.240:53      0.0.0.0:*               LISTEN      552/named           
+tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      552/named           
+tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      580/sshd            
+tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      2376/master         
+tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      552/named           
+tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      649/apache2         
+tcp        0      0 0.0.0.0:993             0.0.0.0:*               LISTEN      2668/dovecot        
+tcp        0      0 0.0.0.0:143             0.0.0.0:*               LISTEN      2668/dovecot        
+tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      649/apache2         
+tcp        0      0 0.0.0.0:465             0.0.0.0:*               LISTEN      2376/master         
+tcp6       0      0 :::53                   :::*                    LISTEN      552/named           
+tcp6       0      0 :::22                   :::*                    LISTEN      580/sshd            
+tcp6       0      0 :::25                   :::*                    LISTEN      2376/master         
+tcp6       0      0 ::1:953                 :::*                    LISTEN      552/named           
+tcp6       0      0 :::993                  :::*                    LISTEN      2668/dovecot        
+tcp6       0      0 :::143                  :::*                    LISTEN      2668/dovecot        
+tcp6       0      0 :::465                  :::*                    LISTEN      2376/master         
+root@aijan:/etc/dovecot# 
+```
+Le port 993 est actif.
+
+## Mise en route
+
+Pour l'instant, notre Firewall n'autorise aucune conenxion sur les port 143, 993, 465, 587. Nous allons ouvrir les ports. Avant cela, il nous faut supprimer l'utilisateur **testmail** ...
+
+> userdel testmail
+
+Pensez à supprimer le répertoire home de cet utlisateur:
+
+> rm -Rf /home/testmail
+
+Ceci fait, ouvrons nos ports. Voici les lignes à ajouter à notre programme firewall.sh. Il suffira de le lancer et de sauver la configuration (comme déjà vu précédemment)
+
+```shell
+   #mail!!
+
+    # Mail SMTP:25
+    $IPT -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
+    $IPT -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
+
+    $IP6T -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
+    $IP6T -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
+
+    # Mail SMTP:587
+    $IPT -t filter -A INPUT -p tcp --dport 587 -j ACCEPT
+    $IPT -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT
+
+    $IP6T -t filter -A INPUT -p tcp --dport 597 -j ACCEPT
+    $IP6T -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT
+
+     # Mail IMAP:143
+     $IPT -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
+     $IPT -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT
+
+     $IP6T -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
+     $IP6T -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT
+
+    # Mail IMAPS:993
+    $IPT -t filter -A INPUT -p tcp --dport 993 -j ACCEPT
+    $IPT -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT
+
+    $IP6T -t filter -A INPUT -p tcp --dport 993 -j ACCEPT
+    $IP6T -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT
+
+    # Mail 465
+    $IPT -t filter -A INPUT -p tcp --dport 465 -j ACCEPT
+    $IPT -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT
+
+    $IP6T -t filter -A INPUT -p tcp --dport 465 -j ACCEPT
+    $IP6T -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT
+```
+### Test
+
+```shell
+root@aijan:/home/ericadmin/bin# ./firewall.sh restart
+firewall stopped [OK]
+firewall started [OK]
+root@aijan:/home/ericadmin/bin# iptables -L
+Chain INPUT (policy DROP)
+target     prot opt source               destination         
+ACCEPT     all  --  anywhere             anywhere            
+ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:domain
+ACCEPT     udp  --  anywhere             anywhere             udp dpt:domain
+ACCEPT     tcp  --  192.168.111.150      anywhere            
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:smtp
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:submission
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:imap2
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:imaps
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:urd
+
+Chain FORWARD (policy DROP)
+target     prot opt source               destination         
+
+Chain OUTPUT (policy ACCEPT)
+target     prot opt source               destination         
+ACCEPT     all  --  anywhere             anywhere            
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh
+ACCEPT     udp  --  anywhere             anywhere             udp dpt:ntp
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:http
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:https
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:smtp
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:submission
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:imap2
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:imaps
+ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:urd
+root@aijan:/home/ericadmin/bin# 
+```
+
+Les ports sont bien ouverts.
+Et on sauvegarde:
+
+> service netfilter-persistent save
+
+```shell
+root@aijan:/home/ericadmin/bin# service netfilter-persistent save
+[....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
+run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save
+done.
+root@aijan:/home/ericadmin/bin# 
+```
+
+Les règles IPV4 et IPV6 sont sauvegardées.
+
+## Mise en place du fichier  "auto-configuration" Mozilla
+
+A voir ....
+
+## Test en situation ...
+
+### Lecture des messages
+
+A partir de ma machine de bureau, test de connexion en IMAP, liste des messages, et lecture du contenu (port 993):
+
+```shell
+eric@aldebaran:~$ openssl s_client -connect atom.yojik.net:993 -quiet
+depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
+verify return:1
+depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
+verify return:1
+depth=0 CN = aijan.yojik.net
+verify return:1
+* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
+a login ericadmin eBnIDQ+FZZI=
+a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in
+b select inbox
+* FLAGS (\Answered \Flagged \Deleted \Seen \Draft NonJunk)
+* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft NonJunk \*)] Flags permitted.
+* 3 EXISTS
+* 0 RECENT
+* OK [UIDVALIDITY 1527410684] UIDs valid
+* OK [UIDNEXT 4] Predicted next UID
+b OK [READ-WRITE] Select completed (0.000 + 0.000 secs).
+c FETCH 1:* FLAGS
+* 1 FETCH (FLAGS (\Seen NonJunk))
+* 2 FETCH (FLAGS (\Seen NonJunk))
+* 3 FETCH (FLAGS (\Seen))
+c OK Fetch completed (0.001 + 0.000 secs).
+d Fetch BODY[TEXT]                              
+d BAD Error in IMAP command FETCH: Invalid arguments (0.000 + 0.000 secs).
+d fetch body
+d BAD Error in IMAP command FETCH: Invalid arguments (0.000 + 0.000 secs).
+d FETCH 1 body
+* 1 FETCH (BODY ("text" "plain" ("charset" "us-ascii") NIL NIL "7bit" 10 2))
+d OK Fetch completed (0.002 + 0.000 + 0.001 secs).
+e fetch 2 body
+* 2 FETCH (BODY ("text" "plain" ("charset" "us-ascii") NIL NIL "7bit" 3 1))
+e OK Fetch completed (0.001 + 0.000 secs).
+f fetch 2 body[]
+* 2 FETCH (BODY[] {466}
+Return-Path: <ericadmin@aijan.yojik.net>
+X-Original-To: root@localhost
+Delivered-To: root@localhost
+Received: by aijan.yojik.net (Postfix, from userid 1000)
+	id 6D42CD00904; Mon, 21 May 2018 12:11:41 +0200 (CEST)
+To: <root@localhost>
+Subject: essai d'envoi à root
+X-Mailer: mail (GNU Mailutils 3.1.1)
+Message-Id: <20180521101141.6D42CD00904@aijan.yojik.net>
+Date: Mon, 21 May 2018 12:11:41 +0200 (CEST)
+From: ericadmin@aijan.yojik.net (Eric Streit)
+
+.
+)
+f OK Fetch completed (0.001 + 0.000 secs).
+g fetch 3 body[]
+* 3 FETCH (BODY[] {735}
+Return-Path: <eric@aldebaran.yojik.net>
+X-Original-To: ericadmin@aijan.yojik.net
+Delivered-To: ericadmin@aijan.yojik.net
+Received: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:6423:417b:6ef:ee21])
+	by aijan.yojik.net (Postfix) with ESMTP id EC11BD00903
+	for <ericadmin@aijan.yojik.net>; Mon, 21 May 2018 12:12:56 +0200 (CEST)
+Received: by aldebaran.yojik.net (Postfix, from userid 1000)
+	id 8B42920620A; Mon, 21 May 2018 12:12:56 +0200 (CEST)
+To: <ericadmin@aijan.yojik.net>
+Subject: Re-essai
+X-Mailer: mail (GNU Mailutils 3.1.1)
+Message-Id: <20180521101256.8B42920620A@aldebaran.yojik.net>
+Date: Mon, 21 May 2018 12:12:56 +0200 (CEST)
+From: eric@aldebaran.yojik.net (Eric Streit)
+
+re-essai de aldebaran
+.
+)
+g OK Fetch completed (0.001 + 0.000 secs).
+h logout
+* BYE Logging out
+h OK Logout completed (0.000 + 0.000 secs).
+eric@aldebaran:~$ 
+```
+A partir de ma machine de bureau, test de connexion en IMAP, liste des messages, et lecture du contenu (port 143):
+
+```
+eric@aldebaran:~$ telnet aijan.yojik.net 143
+Trying 192.168.111.240...
+Connected to aijan.yojik.net.
+Escape character is '^]'.
+* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready.
+ehlo aldebaran.yojik.eu
+ehlo BAD Error in IMAP command received by server.
+a login ericadmin eBnIDQ+FZZI=
+a OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in
+b select inbox
+* FLAGS (\Answered \Flagged \Deleted \Seen \Draft NonJunk)
+* OK [PERMANENTFLAGS (\Answered \Flagged \Deleted \Seen \Draft NonJunk \*)] Flags permitted.
+* 3 EXISTS
+* 0 RECENT
+* OK [UIDVALIDITY 1527410684] UIDs valid
+* OK [UIDNEXT 4] Predicted next UID
+b OK [READ-WRITE] Select completed (0.000 + 0.000 secs).
+c logout
+* BYE Logging out
+c OK Logout completed (0.000 + 0.000 secs).
+Connection closed by foreign host.
+eric@aldebaran:~$ 
+```
+La récupération des messages s'est bien passée.
+
+### Envoi de messages
+
+Image de la configuration à faire sur **thunderbird**:
+
+L'envoi de messages à partir de Thunderbird fonctionne. Il faut bien configurer le port smtp à 465 ...
+
+Image de la configuration à faire.
+
+L'envoi sur mon serveur personnel a échoué: l'adresse IPV4 fournie par FREE était sur une liste de blocage (anti-spams). J'ai demandé à être enlevé de cette liste, ce qui va prendre 48H environ.
+
+Ré-essai ensuite ...
+
+1. Envoi d'un message sur le compte du serveur à partir de la machine de bureau (thunderbird): ça marche.
+2.  Réception des messages sur la machine de bureau (thunderbird): ça marche.
+3. Envoi d'un message à partir du compte du serveur (thunderbird): ça marche.
+
+## Installation d'un analyseur des logs mail
+
+### Installation
+
+```
+apt-get install pflogsumm
+```
+### Utilisation
+
+```
+pflogsumm -d today /var/log/mail.log
+```
+Vous obtiendrez une analyse approfondie des logs de la partie mail.
+
+
+Bien: la configuration est quasi terminée: il nous reste à ajouter SPF, DKIM, Dane et DNSSEC. et les comptes virtuels ...
+
+
+
+
+
+
+
+
+
+A faire:
+
+mettre le fichier mozilla de configuration automatique
+tester à distance
+
+Ajouter des utilisateurs virtuels (dbm, sqlite, mariadb)
+
+
+Analyse des logs:
+
+
+Just install it by(for Debian/Ubuntu, for other Linux distr. you need other installation command)
+
+    apt-get install pflogsumm
+
+Get today's summary by:
+
+    pflogsumm -d today /var/log/mail.log
+
+Résultat:
+
+****************
+root@adara:/home/ericadmin# pflogsumm -d today /var/log/mail.log
+Postfix log summaries for Jul  1
+
+Grand Totals
+
+messages
+
+     24   received
+     23   delivered
+      0   forwarded
+      0   deferred
+      0   bounced
+     29   rejected (55%)
+      0   reject warnings
+      0   held
+      0   discarded (0%)
+
+   2248k  bytes received
+   2248k  bytes delivered
+     17   senders
+     13   sending hosts/domains
+      3   recipients
+      2   recipient hosts/domains
+
+
+Per-Hour Traffic Summary
+
+    time          received  delivered   deferred    bounced     rejected
+    --
+    0000-0100           0          0          0          0          0 
+    0100-0200           0          0          0          0          0 
+    0200-0300           0          0          0          0          0 
+    0300-0400           0          0          0          0          3 
+    0400-0500           0          0          0          0          7 
+    0500-0600           0          0          0          0          1 
+    0600-0700           1          1          0          0          1 
+    0700-0800           2          2          0          0          1 
+    0800-0900           4          4          0          0          7 
+    0900-1000           4          4          0          0          2 
+    1000-1100          10          9          0          0          2 
+    1100-1200           2          2          0          0          1 
+    1200-1300           0          0          0          0          2 
+    1300-1400           0          0          0          0          0 
+    1400-1500           0          0          0          0          0 
+    1500-1600           1          1          0          0          2 
+    1600-1700           0          0          0          0          0 
+    1700-1800           0          0          0          0          0 
+    1800-1900           0          0          0          0          0 
+    1900-2000           0          0          0          0          0 
+    2000-2100           0          0          0          0          0 
+    2100-2200           0          0          0          0          0 
+    2200-2300           0          0          0          0          0 
+    2300-2400           0          0          0          0          0 
+
+Host/Domain Summary: Message Delivery 
+--
+ sent cnt  bytes   defers   avg dly max dly host/domain
+ -- -  -  - - --
+     21     2241k       0     4,6 s   47,0 s  yojik.eu
+      2     7008        0     0,8 s    1,0 s  picapo.net
+
+Host/Domain Summary: Messages Received 
+
+ msg cnt   bytes   host/domain
+ -- -  --
+      7     1918k  yojik.eu
+      4    12773   lists.oasis-open.org
+      2    29818   nongnu.org
+      1    61932   sg.booking.com
+      1    53567   bounces.amazon.fr
+      1    46492   bounce.newsletter.delamaison.fr
+      1    36499   mail.bitwarden.com
+      1    36232   infos.materiel.net
+      1    25976   newsdesmarq.ccemails.com
+      1    20320   tradepubs.nl00.net
+      1     6892   5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com
+      1     4987   hussein.org
+      1     2021   inhrr.gob.ve
+
+Senders by message count
+
+      6   goulya@yojik.eu
+      2   m17n-list-bounces+eric=yojik.eu@nongnu.org
+      1   bounces+3318447-412f-eric=yojik.eu@mail.bitwarden.com
+      1   bounces+4713178-1151-eric=yojik.eu@sg.booking.com
+      1   email@newsdesmarq.ccemails.com
+      1   do_not_reply=netgear.com__413ah3rz7vwihm9c.ly8u7ddmyngfvref@5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com
+      1   eric@yojik.eu
+      1   20180701072218f38c0af2e0e840cf938ae502e570p0eu@bounces.amazon.fr
+      1   bounce-419_HTML-28507929-182305-7304800-452@bounce.newsletter.delamaison.fr
+      1   p-m8bl38j2p7vg88u3n3hrzdpp4rcbq9n7x8cvc2fn23u5pwpnseghvzq-BHP30@infos.materiel.net
+      1   Offers@tradepubs.nl00.net
+      1   info@hussein.org
+      1   docbook-apps-return-14782-eric=yojik.eu@lists.oasis-open.org
+      1   docbook-apps-return-14783-eric=yojik.eu@lists.oasis-open.org
+      1   docbook-apps-return-14784-eric=yojik.eu@lists.oasis-open.org
+      1   docbook-return-3958-eric=yojik.eu@lists.oasis-open.org
+      1   maria.rueda@inhrr.gob.ve
+
+Recipients by message count
+
+     15   eric@yojik.eu
+      6   goulya@yojik.eu
+      2   nico@picapo.net
+
+Senders by message size
+--
+   1917k  goulya@yojik.eu
+  61932   bounces+4713178-1151-eric=yojik.eu@sg.booking.com
+  53567   20180701072218f38c0af2e0e840cf938ae502e570p0eu@bounces.amazon.fr
+  46492   bounce-419_HTML-28507929-182305-7304800-452@bounce.newsletter.delamaison.fr
+  36499   bounces+3318447-412f-eric=yojik.eu@mail.bitwarden.com
+  36232   p-m8bl38j2p7vg88u3n3hrzdpp4rcbq9n7x8cvc2fn23u5pwpnseghvzq-BHP30@infos.materiel.net
+  29818   m17n-list-bounces+eric=yojik.eu@nongnu.org
+  25976   email@newsdesmarq.ccemails.com
+  20320   Offers@tradepubs.nl00.net
+   6892   do_not_reply=netgear.com__413ah3rz7vwihm9c.ly8u7ddmyngfvref@5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com
+   4987   info@hussein.org
+   4275   docbook-apps-return-14782-eric=yojik.eu@lists.oasis-open.org
+   3589   docbook-return-3958-eric=yojik.eu@lists.oasis-open.org
+   2564   docbook-apps-return-14784-eric=yojik.eu@lists.oasis-open.org
+   2345   docbook-apps-return-14783-eric=yojik.eu@lists.oasis-open.org
+   2021   maria.rueda@inhrr.gob.ve
+   1124   eric@yojik.eu
+
+Recipients by message size
+--
+   1916k  goulya@yojik.eu
+ 333462   eric@yojik.eu
+   7008   nico@picapo.net
+
+message deferral detail: none
+
+message bounce detail (by relay): none
+
+message reject detail
+
+  RCPT
+    blocked using zen.spamhaus.org (total: 2)
+           1   amazonaws.com
+           1   b941c024.business.dg-w.de
+    cannot find your hostname (total: 25)
+           9   183.159.95.6
+           3   210.239.8.55
+           3   114.228.155.122
+           2   2406:fc00:1:7:214:22ff:fe08:eb34
+           2   117.63.127.41
+           2   159.89.236.50
+           1   140.127.1.29
+           1   37.49.227.169
+           1   80.211.61.89
+           1   222.95.187.160
+    Client host rejected: Access denied (total: 2)
+           2   80.211.61.89
+
+message reject warning detail: none
+
+message hold detail: none
+
+message discard detail: none
+
+smtp delivery failures: none
+
+Warnings
+--
+  smtpd (total: 16)
+         6   hostname host89-61-211-80.serverdedicati.aruba.it does not reso...
+         3   hostname host-210.239.8.55.n-cube.ne.jp does not resolve to add...
+         2   mm-115-58-214-37.mogilev.dynamic.pppoe.byfly.by[37.214.58.115]:...
+         2   hostname 41.127.63.117.broad.cz.js.dynamic.163data.com.cn does ...
+         1   hostname hn.kd.ny.adsl does not resolve to address 115.57.125.2...
+         1   hostname mails.npust.edu.tw does not resolve to address 140.127...
+         1   hostname 82-64-48-5.subs.proxad.net does not resolve to address...
+
+Fatal Errors: none
+
+Panics: none
+
+Master daemon messages: none
+root@adara:/home/ericadmin# 
+
+****************
+
+
+
+Installation de rainloop (webmail)
+
+Télécharger la version communautaire sur le site, et la décompresser dans votre répertoire web (/home/www/ pour moi)
+
+Installation des dépendances: librairies et programmes
+
+
+
+root@adara:/home/ericadmin/bin# apt install unzip
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+Paquets suggérés :
+  zip
+Les NOUVEAUX paquets suivants seront installés :
+  unzip
+0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 170 ko dans les archives.
+Après cette opération, 547 ko d'espace disque supplémentaires seront utilisés.
+Réception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 unzip amd64 6.0-21 [170 kB]
+170 ko réceptionnés en 0s (5 565 ko/s)
+Sélection du paquet unzip précédemment désélectionné.
+(Lecture de la base de données... 27662 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../unzip_6.0-21_amd64.deb ...
+Dépaquetage de unzip (6.0-21) ...
+Traitement des actions différées (« triggers ») pour mime-support (3.60) ...
+Paramétrage de unzip (6.0-21) ...
+Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
+root@adara:/home/ericadmin/bin# mc
+
+root@adara:/home/ericadmin/bin# 
+root@adara:/etc# mc
+
+root@adara:/home/www# mkdir rainloop
+
+root@adara:/etc# apt search php | grep curl
+
+WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
+
+php-curl/stable 1:7.0+49 all
+php7.0-curl/stable,stable 7.0.27-0+deb9u1 amd64
+root@adara:/etc# apt install php7.0-curl
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  libcurl3 php-common php7.0-common psmisc
+Les NOUVEAUX paquets suivants seront installés :
+  libcurl3 php-common php7.0-common php7.0-curl psmisc
+0 mis à jour, 5 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 1 333 ko dans les archives.
+Après cette opération, 6 149 ko d'espace disque supplémentaires seront utilisés.
+Souhaitez-vous continuer ? [O/n] o
+Réception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 psmisc amd64 22.21-2.1+b2 [123 kB]
+Réception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-common all 1:49 [14,1 kB]
+Réception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-common amd64 7.0.27-0+deb9u1 [877 kB]
+Réception de:4 http://security.debian.org/debian-security stretch/updates/main amd64 libcurl3 amd64 7.52.1-5+deb9u6 [291 kB]
+Réception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-curl amd64 7.0.27-0+deb9u1 [27,4 kB]
+1 333 ko réceptionnés en 0s (3 062 ko/s)                              
+Sélection du paquet libcurl3:amd64 précédemment désélectionné.
+(Lecture de la base de données... 27680 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../libcurl3_7.52.1-5+deb9u6_amd64.deb ...
+Dépaquetage de libcurl3:amd64 (7.52.1-5+deb9u6) ...
+Sélection du paquet psmisc précédemment désélectionné.
+Préparation du dépaquetage de .../psmisc_22.21-2.1+b2_amd64.deb ...
+Dépaquetage de psmisc (22.21-2.1+b2) ...
+Sélection du paquet php-common précédemment désélectionné.
+Préparation du dépaquetage de .../php-common_1%3a49_all.deb ...
+Dépaquetage de php-common (1:49) ...
+Sélection du paquet php7.0-common précédemment désélectionné.
+Préparation du dépaquetage de .../php7.0-common_7.0.27-0+deb9u1_amd64.deb ...
+Dépaquetage de php7.0-common (7.0.27-0+deb9u1) ...
+Sélection du paquet php7.0-curl précédemment désélectionné.
+Préparation du dépaquetage de .../php7.0-curl_7.0.27-0+deb9u1_amd64.deb ...
+Dépaquetage de php7.0-curl (7.0.27-0+deb9u1) ...
+Paramétrage de psmisc (22.21-2.1+b2) ...
+Paramétrage de libcurl3:amd64 (7.52.1-5+deb9u6) ...
+Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ...
+Paramétrage de php-common (1:49) ...
+Created symlink /etc/systemd/system/timers.target.wants/phpsessionclean.timer → /lib/systemd/system/phpsessionclean.timer.
+Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
+Paramétrage de php7.0-common (7.0.27-0+deb9u1) ...
+
+Creating config file /etc/php/7.0/mods-available/calendar.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/ctype.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/exif.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/fileinfo.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/ftp.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/gettext.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/iconv.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/pdo.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/phar.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/posix.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/shmop.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/sockets.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/sysvmsg.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/sysvsem.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/sysvshm.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/tokenizer.ini with new version
+Paramétrage de php7.0-curl (7.0.27-0+deb9u1) ...
+
+Creating config file /etc/php/7.0/mods-available/curl.ini with new version
+root@adara:/etc# apt search php | grep iconv
+
+WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
+
+libhtml-wikiconverter-phpwiki-perl/stable 0.51-2 all
+php-symfony-polyfill-iconv/stable 1.2.0-1 all
+root@adara:/etc# apt install php-symfony-polyfill-iconv
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+Les NOUVEAUX paquets suivants seront installés :
+  php-symfony-polyfill-iconv
+0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 124 ko dans les archives.
+Après cette opération, 1 585 ko d'espace disque supplémentaires seront utilisés.
+Réception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-symfony-polyfill-iconv all 1.2.0-1 [124 kB]
+124 ko réceptionnés en 0s (817 ko/s)     
+Sélection du paquet php-symfony-polyfill-iconv précédemment désélectionné.
+(Lecture de la base de données... 27826 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../php-symfony-polyfill-iconv_1.2.0-1_all.deb ...
+Dépaquetage de php-symfony-polyfill-iconv (1.2.0-1) ...
+Paramétrage de php-symfony-polyfill-iconv (1.2.0-1) ...
+root@adara:/etc# apt search php | grep json
+
+WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
+
+jsonlint/stable 1.5.0-1 all
+php-json/stable 1:7.0+49 all
+php-json-schema/stable 1.6.1-2 all
+php7.0-json/stable,stable 7.0.27-0+deb9u1 amd64
+root@adara:/etc# apt install php-json
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  php7.0-json
+Les NOUVEAUX paquets suivants seront installés :
+  php-json php7.0-json
+0 mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 22,0 ko dans les archives.
+Après cette opération, 80,9 ko d'espace disque supplémentaires seront utilisés.
+Souhaitez-vous continuer ? [O/n] o
+Réception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-json amd64 7.0.27-0+deb9u1 [17,0 kB]
+Réception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-json all 1:7.0+49 [5 050 B]
+22,0 ko réceptionnés en 0s (839 ko/s)
+Sélection du paquet php7.0-json précédemment désélectionné.
+(Lecture de la base de données... 27895 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../php7.0-json_7.0.27-0+deb9u1_amd64.deb ...
+Dépaquetage de php7.0-json (7.0.27-0+deb9u1) ...
+Sélection du paquet php-json précédemment désélectionné.
+Préparation du dépaquetage de .../php-json_1%3a7.0+49_all.deb ...
+Dépaquetage de php-json (1:7.0+49) ...
+Paramétrage de php7.0-json (7.0.27-0+deb9u1) ...
+
+Creating config file /etc/php/7.0/mods-available/json.ini with new version
+Paramétrage de php-json (1:7.0+49) ...
+root@adara:/etc# apt search php | grep libxml
+
+WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
+
+root@adara:/etc# apt search php | grep xml
+
+WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
+
+libsmokeqtxml4-3/stable 4:4.14.3-1.1 amd64
+libsmokeqtxmlpatterns4-3/stable 4:4.14.3-1.1 amd64
+php-horde-xml-element/stable 2.0.4-3 all
+php-horde-xml-wbxml/stable 2.0.3-3 all
+  Horde_Xml_Wbxml provides an API for encoding and decoding WBXML documents used in SyncML and other wireless applications
+php-sabre-xml/stable 1.4.2-1 all
+php-symfony-polyfill-xml/stable 1.2.0-1 all
+  Symfony polyfill for xml's utf8_encode and utf8_decode functions
+php-xml/stable 1:7.0+49 all
+php-xml-htmlsax3/stable 3.0.0+really3.0.0-3 all
+php-xml-rpc2/stable 1.1.3-0.1 all
+php-xml-svg/stable 1.1.0-2 all
+php-xmlrpc/stable 1:7.0+49 all
+php7.0-xml/stable,stable 7.0.27-0+deb9u1 amd64
+php7.0-xmlrpc/stable,stable 7.0.27-0+deb9u1 amd64
+root@adara:/etc# apt install php-xml
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  libxslt1.1 php7.0-xml
+Les NOUVEAUX paquets suivants seront installés :
+  libxslt1.1 php-xml php7.0-xml
+0 mis à jour, 3 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 351 ko dans les archives.
+Après cette opération, 992 ko d'espace disque supplémentaires seront utilisés.
+Souhaitez-vous continuer ? [O/n] o
+Réception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 libxslt1.1 amd64 1.1.29-2.1 [233 kB]
+Réception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-xml amd64 7.0.27-0+deb9u1 [112 kB]
+Réception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-xml all 1:7.0+49 [5 068 B]
+351 ko réceptionnés en 0s (7 580 ko/s)
+Sélection du paquet libxslt1.1:amd64 précédemment désélectionné.
+(Lecture de la base de données... 27907 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../libxslt1.1_1.1.29-2.1_amd64.deb ...
+Dépaquetage de libxslt1.1:amd64 (1.1.29-2.1) ...
+Sélection du paquet php7.0-xml précédemment désélectionné.
+Préparation du dépaquetage de .../php7.0-xml_7.0.27-0+deb9u1_amd64.deb ...
+Dépaquetage de php7.0-xml (7.0.27-0+deb9u1) ...
+Sélection du paquet php-xml précédemment désélectionné.
+Préparation du dépaquetage de .../php-xml_1%3a7.0+49_all.deb ...
+Dépaquetage de php-xml (1:7.0+49) ...
+Paramétrage de libxslt1.1:amd64 (1.1.29-2.1) ...
+Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ...
+Paramétrage de php7.0-xml (7.0.27-0+deb9u1) ...
+
+Creating config file /etc/php/7.0/mods-available/dom.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/simplexml.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/wddx.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/xml.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/xmlreader.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/xmlwriter.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/xsl.ini with new version
+Paramétrage de php-xml (1:7.0+49) ...
+root@adara:/etc# apt search php | grep dom
+
+WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
+
+  Convert to/from Koremutake Memorable Random Strings
+php-dompdf/stable 0.6.2+dfsg-3 all
+php-fdomdocument/stable 1.6.1-2 all
+  PHP Pear module for handling international domain names
+  PHP module for detecting registered domains and public suffixes
+php-random-compat/stable 2.0.2-2 all
+  PHP 5.x polyfill for random_bytes() and random_int() from PHP 7
+php-symfony-dom-crawler/stable 2.8.7+dfsg-1.3 all
+root@adara:/etc# apt install php-symfony-dom-crawler
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  php-symfony-polyfill-mbstring
+Paquets suggérés :
+  php-symfony-css-selector php-mbstring
+Les NOUVEAUX paquets suivants seront installés :
+  php-symfony-dom-crawler php-symfony-polyfill-mbstring
+0 mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 41,6 ko dans les archives.
+Après cette opération, 225 ko d'espace disque supplémentaires seront utilisés.
+Souhaitez-vous continuer ? [O/n] o
+Réception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-symfony-polyfill-mbstring all 1.2.0-1 [12,0 kB]
+Réception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-symfony-dom-crawler all 2.8.7+dfsg-1.3 [29,6 kB]
+41,6 ko réceptionnés en 0s (199 ko/s)  
+Sélection du paquet php-symfony-polyfill-mbstring précédemment désélectionné.
+(Lecture de la base de données... 27947 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../php-symfony-polyfill-mbstring_1.2.0-1_all.deb ...
+Dépaquetage de php-symfony-polyfill-mbstring (1.2.0-1) ...
+Sélection du paquet php-symfony-dom-crawler précédemment désélectionné.
+Préparation du dépaquetage de .../php-symfony-dom-crawler_2.8.7+dfsg-1.3_all.deb ...
+Dépaquetage de php-symfony-dom-crawler (2.8.7+dfsg-1.3) ...
+Paramétrage de php-symfony-polyfill-mbstring (1.2.0-1) ...
+Paramétrage de php-symfony-dom-crawler (2.8.7+dfsg-1.3) ...
+root@adara:/etc# apt search php | grep openssl
+
+WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
+
+root@adara:/etc# apt search php | grep ssl
+
+WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
+
+root@adara:/etc# apt install php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-xml
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+php7.0-curl is already the newest version (7.0.27-0+deb9u1).
+php7.0-xml is already the newest version (7.0.27-0+deb9u1).
+php7.0-xml passé en « installé manuellement ».
+The following additional packages will be installed:
+  libmagic-mgc libmagic1 php7.0-cli php7.0-opcache php7.0-readline
+Paquets suggérés :
+  php-pear file
+Les NOUVEAUX paquets suivants seront installés :
+  libapache2-mod-php7.0 libmagic-mgc libmagic1 php7.0 php7.0-cli php7.0-opcache php7.0-readline
+0 mis à jour, 7 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 2 984 ko dans les archives.
+Après cette opération, 14,3 Mo d'espace disque supplémentaires seront utilisés.
+Souhaitez-vous continuer ? [O/n] o
+Réception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmagic-mgc amd64 1:5.30-1+deb9u1 [222 kB]
+Réception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmagic1 amd64 1:5.30-1+deb9u1 [111 kB]
+Réception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-opcache amd64 7.0.27-0+deb9u1 [77,5 kB]
+Réception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-readline amd64 7.0.27-0+deb9u1 [12,2 kB]
+Réception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-cli amd64 7.0.27-0+deb9u1 [1 284 kB]
+Réception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 libapache2-mod-php7.0 amd64 7.0.27-0+deb9u1 [1 224 kB]
+Réception de:7 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0 all 7.0.27-0+deb9u1 [52,9 kB]
+2 984 ko réceptionnés en 0s (10,9 Mo/s)
+Sélection du paquet libmagic-mgc précédemment désélectionné.
+(Lecture de la base de données... 27977 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../0-libmagic-mgc_1%3a5.30-1+deb9u1_amd64.deb ...
+Dépaquetage de libmagic-mgc (1:5.30-1+deb9u1) ...
+Sélection du paquet libmagic1:amd64 précédemment désélectionné.
+Préparation du dépaquetage de .../1-libmagic1_1%3a5.30-1+deb9u1_amd64.deb ...
+Dépaquetage de libmagic1:amd64 (1:5.30-1+deb9u1) ...
+Sélection du paquet php7.0-opcache précédemment désélectionné.
+Préparation du dépaquetage de .../2-php7.0-opcache_7.0.27-0+deb9u1_amd64.deb ...
+Dépaquetage de php7.0-opcache (7.0.27-0+deb9u1) ...
+Sélection du paquet php7.0-readline précédemment désélectionné.
+Préparation du dépaquetage de .../3-php7.0-readline_7.0.27-0+deb9u1_amd64.deb ...
+Dépaquetage de php7.0-readline (7.0.27-0+deb9u1) ...
+Sélection du paquet php7.0-cli précédemment désélectionné.
+Préparation du dépaquetage de .../4-php7.0-cli_7.0.27-0+deb9u1_amd64.deb ...
+Dépaquetage de php7.0-cli (7.0.27-0+deb9u1) ...
+Sélection du paquet libapache2-mod-php7.0 précédemment désélectionné.
+Préparation du dépaquetage de .../5-libapache2-mod-php7.0_7.0.27-0+deb9u1_amd64.deb ...
+Dépaquetage de libapache2-mod-php7.0 (7.0.27-0+deb9u1) ...
+Sélection du paquet php7.0 précédemment désélectionné.
+Préparation du dépaquetage de .../6-php7.0_7.0.27-0+deb9u1_all.deb ...
+Dépaquetage de php7.0 (7.0.27-0+deb9u1) ...
+Paramétrage de php7.0-readline (7.0.27-0+deb9u1) ...
+
+Creating config file /etc/php/7.0/mods-available/readline.ini with new version
+Paramétrage de php7.0-opcache (7.0.27-0+deb9u1) ...
+
+Creating config file /etc/php/7.0/mods-available/opcache.ini with new version
+Paramétrage de libmagic-mgc (1:5.30-1+deb9u1) ...
+Paramétrage de libmagic1:amd64 (1:5.30-1+deb9u1) ...
+Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ...
+Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
+Paramétrage de php7.0-cli (7.0.27-0+deb9u1) ...
+update-alternatives: utilisation de « /usr/bin/php7.0 » pour fournir « /usr/bin/php » (php) en mode automatique
+update-alternatives: utilisation de « /usr/bin/phar7.0 » pour fournir « /usr/bin/phar » (phar) en mode automatique
+update-alternatives: utilisation de « /usr/bin/phar.phar7.0 » pour fournir « /usr/bin/phar.phar » (phar.phar) en mode automatique
+
+Creating config file /etc/php/7.0/cli/php.ini with new version
+php_invoke: Enable module fileinfo for cli sapi
+php_invoke: Enable module dom for cli sapi
+php_invoke: Enable module xmlwriter for cli sapi
+php_invoke: Enable module sysvsem for cli sapi
+php_invoke: Enable module ftp for cli sapi
+php_invoke: Enable module curl for cli sapi
+php_invoke: Enable module xml for cli sapi
+php_invoke: Enable module gettext for cli sapi
+php_invoke: Enable module ctype for cli sapi
+php_invoke: Enable module json for cli sapi
+php_invoke: Enable module sockets for cli sapi
+php_invoke: Enable module sysvmsg for cli sapi
+php_invoke: Enable module xsl for cli sapi
+php_invoke: Enable module simplexml for cli sapi
+php_invoke: Enable module xmlreader for cli sapi
+php_invoke: Enable module exif for cli sapi
+php_invoke: Enable module shmop for cli sapi
+php_invoke: Enable module sysvshm for cli sapi
+php_invoke: Enable module pdo for cli sapi
+php_invoke: Enable module tokenizer for cli sapi
+php_invoke: Enable module calendar for cli sapi
+php_invoke: Enable module wddx for cli sapi
+php_invoke: Enable module iconv for cli sapi
+php_invoke: Enable module posix for cli sapi
+php_invoke: Enable module phar for cli sapi
+Paramétrage de libapache2-mod-php7.0 (7.0.27-0+deb9u1) ...
+
+Creating config file /etc/php/7.0/apache2/php.ini with new version
+php_invoke: Enable module fileinfo for apache2 sapi
+php_invoke: Enable module dom for apache2 sapi
+php_invoke: Enable module xmlwriter for apache2 sapi
+php_invoke: Enable module sysvsem for apache2 sapi
+php_invoke: Enable module ftp for apache2 sapi
+php_invoke: Enable module curl for apache2 sapi
+php_invoke: Enable module xml for apache2 sapi
+php_invoke: Enable module gettext for apache2 sapi
+php_invoke: Enable module ctype for apache2 sapi
+php_invoke: Enable module json for apache2 sapi
+php_invoke: Enable module sockets for apache2 sapi
+php_invoke: Enable module sysvmsg for apache2 sapi
+php_invoke: Enable module xsl for apache2 sapi
+php_invoke: Enable module simplexml for apache2 sapi
+php_invoke: Enable module xmlreader for apache2 sapi
+php_invoke: Enable module exif for apache2 sapi
+php_invoke: Enable module shmop for apache2 sapi
+php_invoke: Enable module sysvshm for apache2 sapi
+php_invoke: Enable module pdo for apache2 sapi
+php_invoke: Enable module tokenizer for apache2 sapi
+php_invoke: Enable module calendar for apache2 sapi
+php_invoke: Enable module wddx for apache2 sapi
+php_invoke: Enable module iconv for apache2 sapi
+php_invoke: Enable module posix for apache2 sapi
+php_invoke: Enable module phar for apache2 sapi
+Module mpm_event disabled.
+Enabling module mpm_prefork.
+apache2_switch_mpm Switch to prefork
+apache2_invoke: Enable module php7.0
+Paramétrage de php7.0 (7.0.27-0+deb9u1) ...
+root@adara:/etc# mc
+
+root@adara:/etc# a2ensite webmail
+Enabling site webmail.
+To activate the new configuration, you need to run:
+  systemctl reload apache2
+root@adara:/etc# cd /home/www
+root@adara:/home/www# ls
+divers	faqfctt  goulya  homepage  New-FSI  rainloop  wordpress
+root@adara:/home/www# cd rainloop/
+root@adara:/home/www/rainloop# find . -type d -exec chmod 755 {} \;
+root@adara:/home/www/rainloop# find . -type f -exec chmod 644 {} \;
+root@adara:/home/www/rainloop# chown -R www-data:www-data .
+root@adara:/home/www/rainloop# service apache2 restart
+root@adara:/home/www/rainloop# mc
+
+root@adara:/home/www/rainloop# service apache2 restart
+root@adara:/home/www/rainloop# apt search php | grep sqlite
+
+WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
+
+php-sqlite3/stable 1:7.0+49 all
+php7.0-sqlite3/stable,stable 7.0.27-0+deb9u1 amd64
+root@adara:/home/www/rainloop# apt install php7.0-sqlite3
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+Les NOUVEAUX paquets suivants seront installés :
+  php7.0-sqlite3
+0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 24,8 ko dans les archives.
+Après cette opération, 111 ko d'espace disque supplémentaires seront utilisés.
+Réception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-sqlite3 amd64 7.0.27-0+deb9u1 [24,8 kB]
+24,8 ko réceptionnés en 0s (299 ko/s)
+Sélection du paquet php7.0-sqlite3 précédemment désélectionné.
+(Lecture de la base de données... 28052 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../php7.0-sqlite3_7.0.27-0+deb9u1_amd64.deb ...
+Dépaquetage de php7.0-sqlite3 (7.0.27-0+deb9u1) ...
+Traitement des actions différées (« triggers ») pour libapache2-mod-php7.0 (7.0.27-0+deb9u1) ...
+Paramétrage de php7.0-sqlite3 (7.0.27-0+deb9u1) ...
+
+Creating config file /etc/php/7.0/mods-available/sqlite3.ini with new version
+
+Creating config file /etc/php/7.0/mods-available/pdo_sqlite.ini with new version
+Traitement des actions différées (« triggers ») pour libapache2-mod-php7.0 (7.0.27-0+deb9u1) ...
+root@adara:/home/www/rainloop# service apache2 restart
+root@adara:/home/www/rainloop# 
+
+Ajouter https avec certbot --apache
+
+
+
+
+
+
+
+
+
+
+
+```
+
+```
+
+
+
+

+ 238 - 0
docs/11-onze.md

@@ -0,0 +1,238 @@
+## Installation des certificats letsencrypt
+
+
+---
+
+```
+root@aijan:/home/ericadmin/bin# apt install certbot python-certbot-apache
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  augeas-lenses libaugeas0 python-acme python-augeas python-certbot python-cffi-backend python-chardet python-configargparse python-configobj python-cryptography
+  python-dnspython python-enum34 python-funcsigs python-idna python-ipaddress python-mock python-openssl python-parsedatetime python-pbr python-pkg-resources python-psutil
+  python-pyasn1 python-pyicu python-requests python-rfc3339 python-setuptools python-six python-tz python-urllib3 python-zope.component python-zope.event
+  python-zope.hookable python-zope.interface
+...
+```
+
+---
+
+Bien, les programmes sont installés. Nous allons créer des certificats pour les zones suivantes, après avoir créé les hôtes virtuels apache.
+
+> yojik.net
+
+> www.yojik.net
+
+> atom.yojik.net
+
+Les 2 premiers concernent le site web, le dernier, le serveur de mail. Nous allons d'abord rajouter les noms manquants dans le fichier de zone DNS; pour l'instant, nous n'avons déclaré qu'un seul nom: aijan.yojik.net. Rajoutons les suivants avec des enregistrements CNAME. Ne pas oublier d'incrémenter le compteur situé dans le fichier de zone DNS après chaque modification.
+
+
+Nous ajoutons ici la référence du serveur web, avec un enregistrement  CNAME: www.yojik.eu
+
+---
+
+```
+www             IN CNAME  aijan.yojik.net.
+```
+
+---
+
+Relecture des fichiers de configuration par bind:
+
+---
+
+```
+root@aijan:/home/ericadmin# service bind9 reload
+```
+
+---
+
+
+
+### lancement du programme certbot
+
+
+> certbot --apache
+
+---
+
+```
+root@aijan:/home/ericadmin# certbot --apache
+Saving debug log to /var/log/letsencrypt/letsencrypt.log
+
+Which names would you like to activate HTTPS for?
+-------------------------------------------------------------------------------
+1: yojik.net
+2: www.yojik.net
+-------------------------------------------------------------------------------
+Select the appropriate numbers separated by commas and/or spaces, or leave input
+blank to select all options shown (Enter 'c' to cancel):1 2
+Obtaining a new certificate
+Performing the following challenges:
+Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.
+Client with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.
+
+```
+
+---
+
+Bon, il y a un problème ... après recherche sur le web, il se trouve que le programme certbot de Debian/stretch n'est pas à jour (modification due à un problème de sécurité.) (lien: https://community.letsencrypt.org/t/solution-client-with-the-currently-selected-authenticator-does-not-support-any-combination-of-challenges-that-will-satisfy-the-ca/49983)
+
+Il nous faut ajouter dans /etc/sources.list le dépot **backports** pour obtenir le fichier qui suit:
+(lien: https://backports.debian.org/Instructions/)
+
+---
+
+```
+root@aijan:/home/ericadmin# cat /etc/apt/sources.list
+# 
+
+# deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 NETINST 20171209-12:10]/ stretch main
+
+#deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 NETINST 20171209-12:10]/ stretch main
+
+deb http://deb.debian.org/debian/ stretch main contrib non-free
+deb-src http://deb.debian.org/debian/ stretch main contrib non-free
+
+deb http://security.debian.org/debian-security stretch/updates main contrib non-free
+deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free
+
+# stretch-updates, previously known as 'volatile'
+deb http://deb.debian.org/debian/ stretch-updates main contrib non-free
+deb-src http://deb.debian.org/debian/ stretch-updates main contrib non-free
+
+deb http://ftp.debian.org/debian stretch-backports main contrib non-free
+
+
+```
+
+---
+
+Notez la dernière ligne rajoutée au fichier. Ensuite,entrez les commandes suivantes:
+
+> apt update
+> apt-get install python-certbot-apache -t stretch-backports
+
+Un grand nombre de paquets vont être installés ...
+
+On relance le programme certbot:
+
+> certbot --apache
+
+Cette fois-ci, ça fonctionne.
+
+---
+
+```
+root@aijan:/home/ericadmin# certbot --apache
+Saving debug log to /var/log/letsencrypt/letsencrypt.log
+Plugins selected: Authenticator apache, Installer apache
+
+Which names would you like to activate HTTPS for?
+-------------------------------------------------------------------------------
+1: yojik.net
+2: www.yojik.net
+-------------------------------------------------------------------------------
+Select the appropriate numbers separated by commas and/or spaces, or leave input
+blank to select all options shown (Enter 'c' to cancel): 1
+Obtaining a new certificate
+Performing the following challenges:
+http-01 challenge for yojik.net
+Waiting for verification...
+Cleaning up challenges
+Created an SSL vhost at /etc/apache2/sites-available/yojiknet-le-ssl.conf
+Deploying Certificate to VirtualHost /etc/apache2/sites-available/yojiknet-le-ssl.conf
+Enabling available site: /etc/apache2/sites-available/yojiknet-le-ssl.conf
+
+Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
+-------------------------------------------------------------------------------
+1: No redirect - Make no further changes to the webserver configuration.
+2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
+new sites, or if you're confident your site works on HTTPS. You can undo this
+change by editing your web server's configuration.
+-------------------------------------------------------------------------------
+Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
+Redirecting vhost in /etc/apache2/sites-enabled/yojiknet.conf to ssl vhost in /etc/apache2/sites-available/yojiknet-le-ssl.conf
+
+-------------------------------------------------------------------------------
+Congratulations! You have successfully enabled https://yojik.net
+
+You should test your configuration at:
+https://www.ssllabs.com/ssltest/analyze.html?d=yojik.net
+-------------------------------------------------------------------------------
+
+IMPORTANT NOTES:
+ - Congratulations! Your certificate and chain have been saved at:
+   /etc/letsencrypt/live/yojik.net/fullchain.pem
+   Your key file has been saved at:
+   /etc/letsencrypt/live/yojik.net/privkey.pem
+   Your cert will expire on 2018-08-19. To obtain a new or tweaked
+   version of this certificate in the future, simply run certbot again
+   with the "certonly" option. To non-interactively renew *all* of
+   your certificates, run "certbot renew"
+ - If you like Certbot, please consider supporting our work by:
+
+   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
+   Donating to EFF:                    https://eff.org/donate-le
+
+root@aijan:/home/ericadmin# 
+
+```
+
+---
+
+On retape les mêmes commandes pour générer les certificats pour le domaine **www.yojik.net**.
+
+Testez votre configuration comme indiqué ci-dessus. Vous devez obtenir une note **A**.
+
+Il nous faut maintenant créer un certificat pour notre serveur mail:
+
+
+---
+
+``root@aijan:/home/ericadmin# certbot certonly -d aijan.yojik.net
+Saving debug log to /var/log/letsencrypt/letsencrypt.log
+
+How would you like to authenticate with the ACME CA?
+-------------------------------------------------------------------------------
+1: Apache Web Server plugin - Beta (apache)
+2: Spin up a temporary webserver (standalone)
+3: Place files in webroot directory (webroot)
+-------------------------------------------------------------------------------
+Select the appropriate number [1-3] then [enter] (press 'c' to cancel): 1
+Plugins selected: Authenticator apache, Installer None
+Obtaining a new certificate
+Performing the following challenges:
+http-01 challenge for aijan.yojik.net
+Waiting for verification...
+Cleaning up challenges
+
+IMPORTANT NOTES:
+ - Congratulations! Your certificate and chain have been saved at:
+   /etc/letsencrypt/live/aijan.yojik.net/fullchain.pem
+   Your key file has been saved at:
+   /etc/letsencrypt/live/aijan.yojik.net/privkey.pem
+   Your cert will expire on 2018-08-19. To obtain a new or tweaked
+   version of this certificate in the future, simply run certbot
+   again. To non-interactively renew *all* of your certificates, run
+   "certbot renew"
+ - If you like Certbot, please consider supporting our work by:
+
+   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
+   Donating to EFF:                    https://eff.org/donate-le
+
+root@aijan:/home/ericadmin# 
+`
+
+```
+
+---
+
+
+Voilà, le certificat est créé.
+
+
+
+

+ 537 - 0
docs/12-douze.md

@@ -0,0 +1,537 @@
+
+# Ajout des enregistrements **spf** au fichier de zone DNS
+
+Nous allons maintenant ajouter un enregistrement **spf** à notre configuration. SPF est un enregistrement qui déclare quelle machine est responsable et autorisée à envoyer des mails pour notre domaine. Cela permet d'éviter que nos mails soient considérés comme du **spam**.
+
+La syntaxe de la ligne à ajouter est assez simple. Il existe des générateurs de ligne SPF, comme https://www.spfwizard.net/ ou https://mxtoolbox.com/SPFRecordGenerator.aspx.
+
+Le site http://www.openspf.org/ contient tout ce qu'il faut savoir à propos de SPF, syntaxe, paramètres etc ...
+
+Pour mon serveur, j'ai choisi une politique stricte de rejet des mails qui ne viennent pas d'uns source autorisée.
+
+Voici la ligne à rajouter au fichier de zone. C'est le paramètre "-all" qui détermine la politique (de rejet ici). Nous aurions pu mettre **~all** pour une politique moins stricte.
+
+```shell
+; spf
+yojik.net.       IN      TXT     "v=spf1 a mx mx:adara.yojik.net a:adara.yojik.net -all"
+yojik.net.       IN      SPF     "v=spf1 a mx mx:adara.yojik.net a:adara.yojik.net -all"
+```
+
+On recharge bind pour la prise en compte des modifications:
+
+> service bind9 restart
+
+Il nous reste à configurer postfix pour prendre en compte cet enregistrement et effectuer les validations.
+
+## Installation des logiciels nécessaires
+
+```shell
+root@aijan:/etc/bind# apt-get install postfix-policyd-spf-python
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  python3-authres python3-dns python3-spf
+Paquets suggérés :
+  python3-yaml
+Les NOUVEAUX paquets suivants seront installés :
+  postfix-policyd-spf-python python3-authres python3-dns python3-spf
+0 mis à jour, 4 nouvellement installés, 0 à enlever et 12 non mis à jour.
+Il est nécessaire de prendre 153 ko dans les archives.
+Après cette opération, 494 ko d'espace disque supplémentaires seront utilisés.
+Souhaitez-vous continuer ? [O/n] o
+Réception de:1 http://deb.debian.org/debian stretch/main amd64 python3-dns all 3.1.1-1 [27,5 kB]
+Réception de:2 http://deb.debian.org/debian stretch/main amd64 python3-authres all 0.900-1 [17,5 kB]
+Réception de:3 http://deb.debian.org/debian stretch/main amd64 python3-spf all 2.0.12t-3 [64,1 kB]
+Réception de:4 http://deb.debian.org/debian stretch/main amd64 postfix-policyd-spf-python all 2.0.1-1 [43,8 kB]
+153 ko réceptionnés en 0s (1 533 ko/s)                
+Sélection du paquet python3-dns précédemment désélectionné.
+(Lecture de la base de données... 40435 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../python3-dns_3.1.1-1_all.deb ...
+Dépaquetage de python3-dns (3.1.1-1) ...
+Sélection du paquet python3-authres précédemment désélectionné.
+Préparation du dépaquetage de .../python3-authres_0.900-1_all.deb ...
+Dépaquetage de python3-authres (0.900-1) ...
+Sélection du paquet python3-spf précédemment désélectionné.
+Préparation du dépaquetage de .../python3-spf_2.0.12t-3_all.deb ...
+Dépaquetage de python3-spf (2.0.12t-3) ...
+Sélection du paquet postfix-policyd-spf-python précédemment désélectionné.
+Préparation du dépaquetage de .../postfix-policyd-spf-python_2.0.1-1_all.deb ...
+Dépaquetage de postfix-policyd-spf-python (2.0.1-1) ...
+Paramétrage de python3-authres (0.900-1) ...
+Paramétrage de python3-dns (3.1.1-1) ...
+Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
+Paramétrage de python3-spf (2.0.12t-3) ...
+Paramétrage de postfix-policyd-spf-python (2.0.1-1) ...
+root@aijan:/etc/bind# 
+```
+
+## Doc Debian
+
+This package must be integrated with Postfix to be effective:
+
+ 1. Add the following to /etc/postfix/master.cf:
+
+        policyd-spf  unix  -       n       n       -       0       spawn
+            user=policyd-spf argv=/usr/bin/policyd-spf
+
+ 2. Configure the Postfix policy service in /etc/postfix/main.cf:
+
+        smtpd_recipient_restrictions =
+            ...
+            reject_unauth_destination
+            check_policy_service unix:private/policyd-spf
+            ...
+
+        policyd-spf_time_limit = 3600
+
+    NOTE:  Specify check_policy_service AFTER reject_unauth_destination or
+    else your system can become an open relay.
+
+ 3. Reload Postfix.
+
+## Configuration de postfix
+
+Dans le fichier /etc/postfix/master.cf, il faut rajouter le service suivant:
+
+policyd-spf  unix  -       n       n       -       0       spawn
+    user=policyd-spf argv=/usr/bin/policyd-spf
+
+### Test
+
+Je teste ma configuration sur les sites:
+> [Mxtoolbox](https://mxtoolbox.com/)
+> [Kitterman](https://kitterman.com/spf/validate.html)
+> [Mail-tester](https://www.mail-tester.com/spf-dkim-check)
+
+Les tests ne fonctionnent pas ... en fait, cela vient de la config IPV6 du serveur. La configuration automatique avec privext 2 donne plusieurs adresses IPV6 à la machine (avec le même préfixe, bien sûr). Mais l'adresse de la machine ne correspond plus à l'adresse de la machine déclarée dans bind. Et SPF ne peut plus fonctionner.
+
+La solution a été de configurer manuellement l'adresse IPV6 dans /etc/network/interfaces de la façon suivante:
+
+```shell
+iface enp2s0 inet6 static
+address 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93
+netmask 64
+gateway 2a01:e0a:54:c220:OOOO:0000:000:0001
+
+```
+
+On va aussi modifier la configuration de Postfix pour permettre l'envoi de messages de l'extérieur de la machine (uniquement les utilisateurs enregistrés, bien sûr).
+
+J'ai modifié /etc/postfix/main.cf de la façon suivante: j'ai ajouté ceci au fichier:
+
+```shell
+smtpd_recipient_restrictions =
+        permit_sasl_authenticated,
+        permit_mynetworks,
+        reject_unauth_destination,
+        check_policy_service unix:private/policyd-spf
+```
+
+et commenté les lignes correspondantes dans la section submission et smtps du fichier /etc/postfix/master.cf:
+
+```shell
+#  -o smtpd_sender_restrictions=$mua_sender_restrictions
+```
+
+J'ai simplement transféré les restrictions **smtpd_sender_restrictions** qui étaient dans main.cf dans master.cf.
+
+Après modifications, tout marche comme il faut, vérification SPF comprise.
+
+```shell
+root@aijan:/home/ericadmin# tail -f /var/log/mail.log
+May 28 11:58:06 aijan dovecot: imap-login: Login: user=<ericadmin>, method=PLAIN, rip=192.168.111.150, lip=192.168.111.240, mpid=1901, TLS, session=<I0V6J0FtWODAqG+W>
+May 28 11:58:26 aijan postfix/smtpd[1902]: connect from adara.yojik.eu[91.121.72.10]
+May 28 11:58:26 aijan policyd-spf[1907]: prepend Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=91.121.72.10; helo=adara.yojik.eu; envelope-from=eric@yojik.eu; receiver=<UNKNOWN>
+May 28 11:58:26 aijan postfix/smtpd[1902]: C701DD004F2: client=adara.yojik.eu[91.121.72.10]
+May 28 11:58:26 aijan postfix/cleanup[1908]: C701DD004F2: message-id=<4c621385-3822-cb78-9c1d-7e9f43c3fc52@yojik.eu>
+May 28 11:58:26 aijan postfix/qmgr[867]: C701DD004F2: from=<eric@yojik.eu>, size=1414, nrcpt=1 (queue active)
+May 28 11:58:26 aijan postfix/smtpd[1902]: disconnect from adara.yojik.eu[91.121.72.10] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7
+May 28 11:58:26 aijan postfix/local[1909]: C701DD004F2: to=<ericadmin@yojik.net>, relay=local, delay=0.23, delays=0.21/0.01/0/0, dsn=2.0.0, status=sent (delivered to maildir)
+May 28 11:58:26 aijan postfix/qmgr[867]: C701DD004F2: removed
+May 28 11:59:00 aijan dovecot: imap-login: Login: user=<ericadmin>, method=PLAIN, rip=192.168.111.150, lip=192.168.111.240, mpid=1915, TLS, session=<FoqwKkFtduDAqG+W>
+```
+
+La ligne **May 28 11:43:12 aijan policyd-spf[1830]: prepend Received-SPF: Pass (mailfrom) identity=mailfrom; ** montre que notre contrôle SPF fonctionne comme il faut.
+
+# Installation de DKIM
+
+DKIM (DomainKeys Identified Mail) est un système qui vous permet d'ajouter aux entêtes de vos émails une signature qui vous identifie et qui permet aux autres serveurs mails de la vérifier. L'entête peut être configuré pour garantir que le mail n'a pas été modifié après signature (on peut générer une clef qui signe tout ou partie du message, selon configuration)
+
+L'installation et la configuration de DKIM nécessite 3 étapes:
+
+1. Configuration de DKIM
+   
+  Nous commençons par l'installation de opendkim.
+  
+  ```shell
+  root@aijan:/home/ericadmin# apt install opendkim
+  Lecture des listes de paquets... Fait
+  Construction de l'arbre des dépendances       
+  Lecture des informations d'état... Fait
+  The following additional packages will be installed:
+  dns-root-data liblua5.1-0 libmemcached11 libmemcachedutil2 libmilter1.0.1 libopendbx1 libopendbx1-sqlite3 libopendkim11 librbl1 libunbound2 libvbr2
+  Paquets suggérés :
+  ... etc ...
+  ```
+  
+  Une fois installé, nous allons configurer opendkim: cela se fait dans le fichier /etc/opendkim.conf
+  
+  Création des répertoires:
+  > mkdir -p /etc/opendkim/keys/yojik.net/
+  
+  Permissions:
+  > chmod u=rw,go=r /etc/opendkim.conf
+  > chown -R opendkim:opendkim /etc/opendkim
+  > chmod go-rw /etc/opendkim/keys
+
+  Un fichier opendkim.conf entièrement commenté est disponible dans /usr/share/doc/opendkim/examples.
+  Voici notre fichier de configuration; adaptez-le en fonction de votre domaine, bien sûr:
+  
+  ```shell
+  # This is a basic configuration that can easily be adapted to suit a standard
+  # installation. For more advanced options, see opendkim.conf(5) and/or
+  # /usr/share/doc/opendkim/examples/opendkim.conf.sample.
+  
+  # Log to syslog
+  Syslog                       yes
+  # Required to use local socket with MTAs that access the socket as a non-
+  # privileged user (e.g. Postfix)
+  ## UMask                        002
+  
+  # Sign for example.com with key in /etc/mail/dkim.key using
+  # selector '2007' (e.g. 2007._domainkey.example.com)
+  Domain                  yojik.net
+  KeyFile         /etc/opendkim/keys/yojik.net/yojik.private
+  Selector                yojik
+  
+  # Commonly-used options; the commented-out versions show the defaults.
+  #Canonicalization       simple
+  #Mode                   sv
+  #SubDomains             no
+  #ADSPAction            continue
+  
+  # Always oversign From (sign using actual From and a null From to prevent
+  # malicious signatures header fields (From and/or others) between the signer
+  # and the verifier.  From is oversigned by default in the Debian pacakge
+  # because it is often the identity key used by reputation systems and thus
+  # somewhat security sensitive.
+  OversignHeaders         From
+  
+  # List domains to use for RFC 6541 DKIM Authorized Third-Party Signatures
+  # (ATPS) (experimental)
+  
+  #ATPSDomains            example.com
+  
+  AutoRestart             Yes
+  AutoRestartRate         10/1h
+  UMask                   002
+  Syslog                  yes
+  SyslogSuccess           Yes
+  LogWhy                  Yes
+  Canonicalization        relaxed/simple
+  
+  ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
+  InternalHosts           refile:/etc/opendkim/TrustedHosts
+  KeyTable                refile:/etc/opendkim/KeyTable
+  SigningTable            refile:/etc/opendkim/SigningTable
+  
+  Mode                    sv
+  PidFile                 /var/run/opendkim/opendkim.pid
+  SignatureAlgorithm      rsa-sha256
+  
+  UserID                  opendkim:opendkim
+  
+  Socket                  inet:12301@localhost
+  ```
+  
+  Postix accédera à opendkim à travers le port 12301.
+  Il nous reste 3 fichiers à configurer/créer, ainsi que générer les clefs privées et publiques.
+
+  1. /etc/opendkim/SigningTable
+     Ce fichier ne contient qu'une seule ligne:
+     > *@yojik.net yojik._domainkey.yojik.net
+  2. /etc/opendkim/KeyTable
+     Ce fichier ne contient qu'une seule ligne:
+     > yojik._domainkey.yojik.net yojik.net:yojik:/etc/opendkim/keys/yojik.net/yojik.private
+  3. /etc/opendkim/TrustedHosts
+     > 127.0.0.1
+     > ::1
+     > localhost
+     > 
+     > yojik.net 
+     Ne pas modifier les 3 premières lignes qui sont nécessaires à opendkim ...
+  4. Création des clefs publiques et privées
+     > cd /etc/opendkim/keys/yojik.net/
+     > opendkim-genkey -b 2048 -h rsa-sha256 -r -s yojik -d yojik.net -v
+     Un erreur apparaît: il nous faut installer opendkim-tools:
+     > apt install opendkim-tools
+     2 fichiers sont crées: la clef publique et la clef privée. Nous allons renommer ces 2 clefs.
+     > mv mv 201805.private yojik.private
+     > mv 201805.txt yojik.txt
+     Note du 9 décembre 2018: les fichiers sont crées avec les noms corrects; pas besoin de les renommer.
+     On réapplique la modification des permissions:
+     
+     ```
+     root@aijan:/etc/opendkim/keys# cd /etc
+      root@aijan:/etc# chown -R opendkim:opendkim /etc/opendkim
+      root@aijan:/etc# chmod -R go-rw /etc/opendkim/keys
+      root@aijan:/etc# 
+      ```
+
+      On relance opendkim pour voir s'il y a des erreurs:
+      > systemctl restart opendkim
+      
+      On lance:
+      > netstat -tlnp
+      et on voit la ligne:
+      > tcp        0      0 127.0.0.1:12301         0.0.0.0:*               LISTEN      2395/opendkim
+      C'est bon .. le service est en place.
+
+
+2. Ajout de DKIM à Postix
+   On va rajouter la gestion de DKIM à Postfix dans le fichier /etc/postfix/main.cf
+   On ajoute les lignes suivantes:
+   > milter_default_action = accept
+   > milter_protocol = 2
+   > smtpd_milters = inet:localhost:12301 
+   > non_smtpd_milters = inet:localhost:12301 
+   
+   On relance Postfix par:
+   > service postfix restart
+   
+
+3. Ajout d'un enregistrement DNS
+   On ajoute la partie entre double-quotes du fichier /etc/opendkim/keys/yojik.net/yojik.txt à la ligne suivante:
+   Attention à la syntaxe: ne pas oublier le "." derrière yojik.net!
+   > yojik._domainkey.yojik.net.<>IN<->TXT<>( "v=DKIM1; h=rsa-sha256; k=rsa; s=email; p=;")
+     Ajouter la clef derrière p= (supprimer les doubles quotes du début, milieu et fin de clef: ex:
+     "ljjoj" "dfjj")
+
+    Test:
+    > opendkim-testkey -d yojik.net -s yojik
+   
+   Si votre clef est de longueur 2048, il va falloir la découper ... et utiliser le format "multi-lignes" comme ce qui suit:
+```shell
+  ; multi-line format
+  name._domainkey IN TXT ("v=DKIM1"
+                         "p=MIGfMA0G ... "
+                         "oGeLnQg ... "
+                         "tdC2UzJ1lW ... "
+                         "MmPSPDdQPNUYckcQ2QIDAQAB")
+```
+    Une chose à vérifier: le point "." à la fin du nom de domaine (première partie de la ligne). Les messages d'erreur style "erreur de syntaxe" n'aident pas beaucoup ...  
+
+    Cette fois-ci, tout est bon. J'ai adopté une technique pour coller ma clef dans l'enregistrement dns: je fais un:
+    > cat fichier_de_zone fichier_de_clef > fichier_de_zone.new
+    J'édite le fichier (les retours-chariot etc ...) et je remplace le fichier original (que je sauve d'abord) en incrémentant le numero de série dans le fichier.
+
+4. Test
+   On envoie un message pour voir s'il est bien signé.
+   Je redémarre le serveur et j'envoie un message.
+
+    Voilà les résultats:
+
+    > ARC-Authentication-Results: i=1; mx.google.com;
+    >        dkim=pass header.i=@yojik.net header.s=yojik header.b=CE0b13ii;
+    >        spf=pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender)     > smtp.mailfrom=ericadmin@yojik.net
+    > Received-SPF: pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender)    > client-ip=82.64.48.5;
+    > Authentication-Results: mx.google.com;
+    >        dkim=pass header.i=@yojik.net header.s=yojik header.b=CE0b13ii;
+    >        spf=pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender)     > smtp.mailfrom=ericadmin@yojik.net
+    > Received: from [192.168.111.150] (unknown [192.168.111.150])
+    > 	by aijan.yojik.net (Postfix) with ESMTPSA id AFB9ED004F3
+    > 	for <ericounet26200@gmail.com>; Thu, 31 May 2018 12:09:41 +0200 (CEST)
+    > DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yojik.net; s=yojik;
+    > 	t=1527761381; bh=ay9Odp/rKTenfDlpDmHqBM+YFfCITM3u/keXU6iwx20=;
+    > 	h=To:From:Subject:Date:From;
+    > 	b=CE0b13iiZgEQgrd7EngBovulGeU6QnSU/cKzia42u9s9B+S/dxUsm1u7JRjBrTLLg
+    > 	 /c/uW05pdE5QS+9y3dvZtji0hogr0H87nRpZE7QBZaFLpVWGpUTukRsJ47JskO+Cwi
+    > 	 4cRYjeyUOLTY8Gc8uQaiS79CDko8E107fsfoUGV8=
+
+    Tout est bon ....
+
+    **IL est recommandé de changer les clefs DKIM tous les mois!**
+
+
+## Author Domain Signing Practices (ADSP)Permalink
+  Nous allons rajouter un enregistrement DNS qui va indiquer que tous les émails issus par yojik.net doivent être signés par DKIM. C'est une sécurité supplémentaire.
+  La syntaxe est assez simple:
+  > _adsp._domainkey.yojik.net.      IN      TXT     "dkim=all"
+  Le paramètre dkim accepte d'autres valeurs moins strictes, mais j'ai choisi la plus stricte.
+  Ne pas oublier d'incrémenter le numéro de série du fichier de zone après modification.
+  Rechargez bind.
+  > service bind9 restart (ou reload)
+
+  Tout est OK.
+
+  Note: ADSP et Dmarc remplissent le même rôle. Après consultation d'experts, ADSP est "obsolète". Nous allons donc enlever ce service (commenter la ligne DNS) et configurer DMARC.
+
+## DMARC
+Dmarc (Domain Message Authentication, Reporting & Conformance) indique les politiques d'envoi des messages issus du domaine concerné (grâce à DKIM et SPF), indique quelle politique utiliser si les conditions ne sont pas respectées (validations SPF ou DKIM , et peut éventuellement demander un rapport en cas d'échec de livraison du message.
+
+La mise en place de DMARC nécessite de configurer/installer opendmarc, de mettre en place l'enregistrement TXT dans le fichier de zone DNS et de configurer le **hook** dans Postfix.
+
+### Installation de Opendmarc
+```
+root@aijan:/home/ericadmin# apt install opendmarc
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  libdbd-mysql-perl libdbi-perl libencode-locale-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libopendbx1-mysql libopendmarc2
+  libspf2-2 libtimedate-perl liburi-perl publicsuffix
+...
+Paramétrage de libdbd-mysql-perl (4.041-2) ...
+Paramétrage de opendmarc (1.3.2-2+deb9u1) ...
+Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ...
+Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u3) ...
+```
+Voilà, opendmarc est installé. Passons à sa configuration.
+
+### Configuration de Opendmarc
+
+2 fichiers sont à configurer.
+La configuration se fait dans /etc/opendmarc.conf et dans /etc/default/opendmarc:
+Comme d'habitude, faite une copie de sauvegarde du fichier d'origine avant modification.
+
+**Fichier /etc/opendmarc.conf**:
+
+```shell
+# This is a basic configuration that can easily be adapted to suit a standard
+# installation. For more advanced options, see opendkim.conf(5) and/or
+# /usr/share/doc/opendmarc/examples/opendmarc.conf.sample.
+
+##  AuthservID (string)
+##  <-->defaults to MTA name
+#
+# AuthservID name
+
+##  FailureReports { true | false }
+##  <-->default "false"
+##
+# FailureReports false
+
+PidFile /var/run/opendmarc/opendmarc.pid
+
+##  RejectFailures { true | false }
+##  <-->default "false"
+##
+RejectFailures false
+
+##  Socket socketspec
+##  <-->default (none)
+##
+##  Specifies the socket that should be established by the filter to receive
+##  connections from sendmail(8) in order to provide service.  socketspec is
+##  in one of two forms: local:path, which creates a UNIX domain socket at
+##  the specified path, or inet:port[@host] or inet6:port[@host] which creates
+##  a TCP socket on the specified port for the appropriate protocol family.
+##  If the host is not given as either a hostname or an IP address, the
+##  socket will be listening on all interfaces.  This option is mandatory
+##  either in the configuration file or on the command line.  If an IP
+##  address is used, it must be enclosed in square brackets.
+#
+# Socket local:/var/run/opendmarc/opendmarc.sock
+Socket inet:54444@localhost
+
+##  Syslog { true | false }
+##  <-->default "false"
+##
+##  Log via calls to syslog(3) any interesting activity.
+#
+Syslog true
+
+##  SyslogFacility facility-name
+##  <-->default "mail"
+##  
+##  Log via calls to syslog(3) using the named facility.  The facility names
+##  are the same as the ones allowed in syslog.conf(5).
+#
+# SyslogFacility mail
+
+##  TrustedAuthservIDs string
+##  <-->default HOSTNAME
+##  
+##  Specifies one or more "authserv-id" values to trust as relaying true
+##  upstream DKIM and SPF results.  The default is to use the name of
+##  the MTA processing the message.  To specify a list, separate each entry
+##  with a comma.  The key word "HOSTNAME" will be replaced by the name of
+##  the host running the filter as reported by the gethostname(3) function.
+#
+# TrustedAuthservIDs HOSTNAME
+
+
+##  UMask mask
+##  <-->default (none)
+##  
+##  Requests a specific permissions mask to be used for file creation.  This
+##  only really applies to creation of the socket when Socket specifies a
+##  UNIX domain socket, and to the HistoryFile and PidFile (if any); temporary
+##  files are normally created by the mkstemp(3) function that enforces a
+##  specific file mode on creation regardless of the process umask.  See
+##  umask(2) for more information.
+#
+UMask 0002
+
+##  UserID user[:group]
+##  <-->default (none)
+##  
+##  Attempts to become the specified userid before starting operations.
+##  The process will be assigned all of the groups and primary group ID of
+##  the named userid unless an alternate group is specified.
+#
+UserID opendmarc
+
+## Path to system copy of PSL (needed to determine organizational domain)
+#
+PublicSuffixList /usr/share/publicsuffix/
+
+IgnoreHosts /etc/opendmarc/ignore.hosts
+HistoryFile /var/run/opendmarc/opendmarc.dat
+#for testing:
+SoftwareHeader true
+```
+On crée le répertoire suivant: /etc/opendmarc et on crée un fichier qui va contenir la liste des machines auxquelles vous avez confiance.
+
+```
+root@aijan:/etc# mkdir /etc/opendmarc
+```
+On crée le fichier **/etc/opendmarc/ignore.hosts** avec le contenu suivant (le fichier ignore.hosts a été déclaré dans le fichier /etc/opendmarc.conf):
+> localhost
+> 192.168.111.0/24
+
+Les mails envoyés par les machines listées dans ce fichier ne seront pas testés. Ici, le serveur de mail lui-même et les machines du réseau local familial.
+
+On ajoute la ligne suivante à /etc/default/opendmarc:
+> SOCKET=inet:54444@localhost
+
+Notre daemon écoutera sur le port 54444. On relance opendmarc par la commande suivante:
+
+> service opendmarc restart
+
+Mise en place du hook dans postfix:
+Nous modifierons les 2 lignes suivantes dans le fichier: /etc/postfix/main.cf:
+
+> smtpd_milters = inet:localhost:12301,inet:localhost:54444
+> non_smtpd_milters = inet:localhost:12301,inet:localhost:54444
+
+On recharge postfix (comme d'habitude ...)
+Configuration de l'enregistrement DNS dans le fichier de zone (ne pas oublier d'incrémenter le compteur!):
+
+> _dmarc.yojik.net.   TXT ( "v=DMARC1; p=none; sp=reject; pct=10; adkim=r;aspf=r;fo=1;ri=86400;rua=mailto:ericadmin@yojik.net")
+
+Test d'envoi de messages:
+> Authentication-Results: aijan.yojik.net; dmarc=pass 
+
+Ça fonctionne :)
+
+
+
+
+
+
+```
+
+```
+

+ 18 - 0
docs/13-treize.md

@@ -0,0 +1,18 @@
+
+## Ajout des comptes émail virtuels
+
+Tapez le numéro du message que vous voulez lire.
+Cela fonctionne très bien, mais oblige chacun à avoir un compte sur la machine.
+
+
+
+Nous allons ajouter maintenant des utilisateurs virtuels, comptes qui ne sont pas des **users** de la machine.
+
+Il est possible d'utiliser des fichiers **plats** ou différentes bases de données comme **mysql**, **postgresql**, **sqlite** ou plus simplement **dbm**. Ceci se configure dans les fichier **/etc/postfix/main.cf**.
+
+Pour les systèmes de bases de données **sql**, il faudra fournir les données d'accès à la base de données dans des fichiers séparés.
+
+Nous allons utiliser **sqlite** car le nombre de comptes émail sera très réduit.
+
+
+

+ 6 - 0
docs/14-quatorze.md

@@ -0,0 +1,6 @@
+# Gestion de clefs SSH multiples
+
+Le problème est le suivant: comment se connecter à partir du même poste client à plusieurs serveurs, avec des clefs différentes.
+
+
+

+ 68 - 0
docs/15-quinze.md

@@ -0,0 +1,68 @@
+# Utilisation d'une carte à puce pour s'authentifier
+
+Nous allons voir comment s'authentifier (SSH, login) avec une carte à puces (smartcard,openpgp).
+
+## Configuration de la carte à puce
+
+## Utilisation de la carte à puce pour chiffrer un fichier
+
+### Avec Nautilus
+
+Nous allons utiliser Nautilus avec le plugin **seahorse-nautilus**. Sélectionnez le fichier, ou le dossier à chiffrer. Clic gauche -> option Chiffrer. Une fenêtre de dialogue s'affiche et vous permet de choisir la clef de chiffrement. Une fenêtre vous demande ensuite le code PIN.
+
+Un fichier/dossier de même nom avec l'extension **.pgp** est créé. Vous pouvez supprimer le fichier original. 
+
+Le déchiffrage fonctionne d'une manière similaire.
+
+On peut noter qu'il est aussi possible de réaliser la même opération avec les clefs que vous avez déjà sur votre poste.
+
+### À la main
+
+Chiffrer le fichier
+
+gpg2 --encrypt <mon_fichier>
+
+Génère un fichier avec l’extension.gpg, illisible pour celui qui ne possède pas la clé.
+Déchiffrer le fichier
+
+gpg2 --output mon_fichier_dechiffre --decrypt mon_fichier.gpg
+
+A l’exécution de cette commande, une boîte de dialogue vous demande de rentrer le mot de passe. C’est la « passphrase » que vous aviez tapée au moment de la génération des clés.
+Et voilà le fichier « mon_fichier_dechiffre » apparaît et devient parfaitement lisible.
+
+[Lien](https://tutox.fr/2017/12/08/chiffrer-fichiers-gnupg/)
+
+Test: création d'un fichier texte, listage des clefs disponibles, chiffrage, déchiffrage.
+
+---
+```
+
+```
+---
+## Utilisation de la carte à puce pour chiffrer un émail (avec thunderbird et enigmail)
+
+## Utilisation de la carte à puce pour signer un fichier
+
+### Avec Nautilus
+
+Nous allons utiliser Nautilus avec le plugin **seahorse-nautilus**. Sélectionnez le fichier, ou le dossier à signer. Clic gauche -> option Signer. Une fenêtre de dialogue s'affiche et vous permet de choisir la clef de signature. Une fenêtre vous demande ensuite le code PIN.
+
+La vérification de la signature fonctionne d'une manière similaire.
+
+Un fichier/dossier de même nom avec l'extension **.sig** est créé. Vous pouvez supprimer le fichier original.
+
+On peut noter qu'il est aussi possible de réaliser la même opération avec les clefs que vous avez déjà sur votre poste.
+
+### À la main
+
+
+
+## Utilisation de la carte à puce pour signer un émail
+
+## Utilisation de la carte à puce pour chiffrer un dossier (Gnome3)
+
+## Utilisation de la carte à puce pour se connecter/s'authentifier à/sur un serveur SSH distant
+
+## Utilisation de la carte à puce pour s'authentifier sur un poste Debian/Linux (login)
+
+

+ 9 - 0
docs/16-seize.md

@@ -0,0 +1,9 @@
+# Utilisation d'un lecteur NFC et des "tags" pour l'authentification
+
+Nous allons configurer notre poste Linux/Debian afin d'utiliser un lecteur NFC et des tags pour l'authentification.
+
+Le but est:
+
+1. Se loguer sur la machine avec un tag
+2. figer/réveiller la session en cours avec le tag
+

+ 52 - 0
docs/17-dixsept.md

@@ -0,0 +1,52 @@
+# Installation de logwatch
+
+### Installation
+---
+```
+# apt install logwatch
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+Paquets suggérés :
+  fortune-mod
+Paquets recommandés :
+  libdate-manip-perl libsys-cpu-perl libsys-meminfo-perl
+Les NOUVEAUX paquets suivants seront installés :
+  logwatch
+0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 373 ko dans les archives.
+Après cette opération, 2 267 ko d'espace disque supplémentaires seront utilisés.
+Réception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 logwatch all 7.4.3+git20161207-2 [373 kB]
+373 ko réceptionnés en 0s (2 054 ko/s)
+Sélection du paquet logwatch précédemment désélectionné.
+(Lecture de la base de données... 30506 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../logwatch_7.4.3+git20161207-2_all.deb ...
+Dépaquetage de logwatch (7.4.3+git20161207-2) ...
+Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
+Paramétrage de logwatch (7.4.3+git20161207-2) ...
+```
+---
+
+### Configuration
+
+> vim /usr/share/logwatch/default.conf/logwatch.conf
+
+Il faut changer les lignes suivantes:
+
+> MailTo = root -> Mailto = adresse émail de l'administrateur
+>Range = Yesterday -> Range = All
+
+J'ai laissé **Range** à Yesterday pour limiter la taille du rapport.
+On teste en le lançant manuellement:
+
+On teste en le lençant manuellement:
+> logwatch --detail Low --mailto admin@example.net --service All --range today
+
+Bien sûr, remplacez l'adresse émail fictive par celle du compte administrateur de votre serveur.
+Vous devez recevoir le compte-rendu dans votre boîte mail.
+
+Mail bien reçu :)
+
+
+
+

+ 55 - 0
docs/18-dixhuit.md

@@ -0,0 +1,55 @@
+## Installation d'un webmail
+
+Le webmail permet de consulter/envoyer ses messages à partir d'un navigateur. Nous allons installer **rainloop**.
+Vous trouverez des informations complémentaires (installation, plugins, configuration) sur le site: [Rainloop](http://www.rainloop.net/). Il existe d'autres webmails, mais celui-ci me convient bien.
+
+### Installation
+
+1. Télécharger la version communautaire sur le site, et la décompresser dans votre répertoire web (/home/www/ pour moi)  
+  ```shell
+wget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip
+```
+Création du répertoire /var/www/html/webmail et décompression de l'archive zip dans celui-ci
+```
+mkdir /var/www/html/webmail
+cp /home/ericadmin/rainloop-community-latest.zip /var/www/html/webmail/
+cd /var/www/html/webmail
+unzip rainloop-community-latest.zip
+```
+
+2. Installation des dépendances: librairies et programmes  
+  
+Il nous faut les extensions php suivantes:
+> cURL, json, libxml, dom, openssl, DateTime, PCRE, SPL, sqlite
+
+```
+root@adara:/etc# apt install php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-xml php7.0-sqlite3 
+```
+
+### configuration
+
+• Droits de lecture/écriture de l'application:
+
+cd /var/www/html/webmail/rainloop
+find . -type d -exec chmod 755 {} \;
+find . -type f -exec chmod 644 {} \;
+
+• Mise en place des propriétaires de l'application:
+
+cd /var/www/html/webmail/rainloop
+chown -R www-data:www-data .
+
+### Création du site webmail.yojik.net
+
+
+
+### Création du certificat pour webmail.yojik.net
+
+
+Nous allons créer un certificat pour notre site webmail.
+
+
+
+### Test
+
+

+ 413 - 0
docs/19-dixneuf.md

@@ -0,0 +1,413 @@
+
+
+## Installation de *git* et de *gogs*
+
+Nous allons installer un serveur git sur notre petit serveur. Gogs est un serveur git écrit en **go**.
+Nous allons l'installer progressivement, en ajoutant ensuite le démarrage par un service, et l'accès sur un port standard servi par **apache** et redirigé vers le port 3000 servi par **gogs**.
+Je me suis inspiré de la documentation officielle ainsi que de ce tutorial:
+[# How to Install Gogs Go Git Service on Ubuntu 16.04](https://www.howtoforge.com/tutorial/how-to-install-gogs-go-git-service-on-ubuntu-1604/)
+
+Commençons par installer **git**.
+
+### Installation de *git*
+
+```shell
+root@atom:~# apt-get install git
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  git-man liberror-perl patch rsync
+Paquets suggérés :
+  git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn ed diffutils-doc
+Les NOUVEAUX paquets suivants seront installés :
+  git git-man liberror-perl patch rsync
+0 mis à jour, 5 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 6 869 ko dans les archives.
+Après cette opération, 35,9 Mo d'espace disque supplémentaires seront utilisés.
+Souhaitez-vous continuer ? [O/n] o
+Réception de:1 http://deb.debian.org/debian stretch/main i386 liberror-perl all 0.17024-1 [26,9 kB]
+Réception de:2 http://deb.debian.org/debian stretch/main i386 git-man all 1:2.11.0-3+deb9u4 [1 433 kB]
+Réception de:3 http://deb.debian.org/debian stretch/main i386 git i386 1:2.11.0-3+deb9u4 [4 879 kB]
+Réception de:4 http://deb.debian.org/debian stretch/main i386 patch i386 2.7.5-1+deb9u1 [124 kB]
+Réception de:5 http://deb.debian.org/debian stretch/main i386 rsync i386 3.1.2-1+deb9u1 [407 kB]
+6 869 ko réceptionnés en 0s (12,4 Mo/s)
+Sélection du paquet liberror-perl précédemment désélectionné.
+(Lecture de la base de données... 37491 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../liberror-perl_0.17024-1_all.deb ...
+Dépaquetage de liberror-perl (0.17024-1) ...
+Sélection du paquet git-man précédemment désélectionné.
+Préparation du dépaquetage de .../git-man_1%3a2.11.0-3+deb9u4_all.deb ...
+Dépaquetage de git-man (1:2.11.0-3+deb9u4) ...
+Sélection du paquet git précédemment désélectionné.
+Préparation du dépaquetage de .../git_1%3a2.11.0-3+deb9u4_i386.deb ...
+Dépaquetage de git (1:2.11.0-3+deb9u4) ...
+Sélection du paquet patch précédemment désélectionné.
+Préparation du dépaquetage de .../patch_2.7.5-1+deb9u1_i386.deb ...
+Dépaquetage de patch (2.7.5-1+deb9u1) ...
+Sélection du paquet rsync précédemment désélectionné.
+Préparation du dépaquetage de .../rsync_3.1.2-1+deb9u1_i386.deb ...
+Dépaquetage de rsync (3.1.2-1+deb9u1) ...
+Paramétrage de git-man (1:2.11.0-3+deb9u4) ...
+Paramétrage de liberror-perl (0.17024-1) ...
+Paramétrage de rsync (3.1.2-1+deb9u1) ...
+Created symlink /etc/systemd/system/multi-user.target.wants/rsync.service → /lib/systemd/system/rsync.service.
+Paramétrage de patch (2.7.5-1+deb9u1) ...
+Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u6) ...
+Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
+Paramétrage de git (1:2.11.0-3+deb9u4) ...
+root@atom:~# 
+```
+### Installation de la base de données *Postgresql*
+Nous aurions pu utiliser à la place de **Postgresql**, **mysql** ou **sqlite3**.
+
+```
+root@atom:/home/ericadmin# apt install -y postgresql postgresql-client libpq-dev
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  libpq5 libsensors4 postgresql-9.6 postgresql-client-9.6 postgresql-client-common postgresql-common postgresql-contrib-9.6 sysstat
+Paquets suggérés :
+  postgresql-doc-9.6 lm-sensors postgresql-doc locales-all libdbd-pg-perl isag
+Les NOUVEAUX paquets suivants seront installés :
+  libpq-dev libpq5 libsensors4 postgresql postgresql-9.6 postgresql-client postgresql-client-9.6 postgresql-client-common postgresql-common
+  postgresql-contrib-9.6 sysstat
+0 mis à jour, 11 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 7 398 ko dans les archives.
+Après cette opération, 33,7 Mo d'espace disque supplémentaires seront utilisés.
+Réception de:1 http://deb.debian.org/debian stretch/main i386 libpq5 i386 9.6.10-0+deb9u1 [142 kB]
+Réception de:2 http://deb.debian.org/debian stretch/main i386 libpq-dev i386 9.6.10-0+deb9u1 [224 kB]
+Réception de:3 http://deb.debian.org/debian stretch/main i386 libsensors4 i386 1:3.4.0-4 [54,0 kB]
+Réception de:4 http://deb.debian.org/debian stretch/main i386 postgresql-client-common all 181+deb9u2 [79,2 kB]
+Réception de:5 http://deb.debian.org/debian stretch/main i386 postgresql-client-9.6 i386 9.6.10-0+deb9u1 [1 271 kB]
+Réception de:6 http://deb.debian.org/debian stretch/main i386 postgresql-common all 181+deb9u2 [217 kB]
+Réception de:7 http://deb.debian.org/debian stretch/main i386 postgresql-9.6 i386 9.6.10-0+deb9u1 [4 395 kB]
+Réception de:8 http://deb.debian.org/debian stretch/main i386 postgresql all 9.6+181+deb9u2 [55,8 kB]
+Réception de:9 http://deb.debian.org/debian stretch/main i386 postgresql-client all 9.6+181+deb9u2 [55,8 kB]
+Réception de:10 http://deb.debian.org/debian stretch/main i386 postgresql-contrib-9.6 i386 9.6.10-0+deb9u1 [531 kB]
+Réception de:11 http://deb.debian.org/debian stretch/main i386 sysstat i386 11.4.3-2 [373 kB]
+7 398 ko réceptionnés en 0s (11,8 Mo/s)           
+Préconfiguration des paquets...
+Sélection du paquet libpq5:i386 précédemment désélectionné.
+(Lecture de la base de données... 38406 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../00-libpq5_9.6.10-0+deb9u1_i386.deb ...
+Dépaquetage de libpq5:i386 (9.6.10-0+deb9u1) ...
+Sélection du paquet libpq-dev précédemment désélectionné.
+Préparation du dépaquetage de .../01-libpq-dev_9.6.10-0+deb9u1_i386.deb ...
+Dépaquetage de libpq-dev (9.6.10-0+deb9u1) ...
+Sélection du paquet libsensors4:i386 précédemment désélectionné.
+Préparation du dépaquetage de .../02-libsensors4_1%3a3.4.0-4_i386.deb ...
+Dépaquetage de libsensors4:i386 (1:3.4.0-4) ...
+Sélection du paquet postgresql-client-common précédemment désélectionné.
+Préparation du dépaquetage de .../03-postgresql-client-common_181+deb9u2_all.deb ...
+Dépaquetage de postgresql-client-common (181+deb9u2) ...
+Sélection du paquet postgresql-client-9.6 précédemment désélectionné.
+Préparation du dépaquetage de .../04-postgresql-client-9.6_9.6.10-0+deb9u1_i386.deb ...
+Dépaquetage de postgresql-client-9.6 (9.6.10-0+deb9u1) ...
+Sélection du paquet postgresql-common précédemment désélectionné.
+Préparation du dépaquetage de .../05-postgresql-common_181+deb9u2_all.deb ...
+Ajout de « détournement de /usr/bin/pg_config en /usr/bin/pg_config.libpq-dev par postgresql-common »
+Dépaquetage de postgresql-common (181+deb9u2) ...
+Sélection du paquet postgresql-9.6 précédemment désélectionné.
+Préparation du dépaquetage de .../06-postgresql-9.6_9.6.10-0+deb9u1_i386.deb ...
+Dépaquetage de postgresql-9.6 (9.6.10-0+deb9u1) ...
+Sélection du paquet postgresql précédemment désélectionné.
+Préparation du dépaquetage de .../07-postgresql_9.6+181+deb9u2_all.deb ...
+Dépaquetage de postgresql (9.6+181+deb9u2) ...
+Sélection du paquet postgresql-client précédemment désélectionné.
+Préparation du dépaquetage de .../08-postgresql-client_9.6+181+deb9u2_all.deb ...
+Dépaquetage de postgresql-client (9.6+181+deb9u2) ...
+Sélection du paquet postgresql-contrib-9.6 précédemment désélectionné.
+Préparation du dépaquetage de .../09-postgresql-contrib-9.6_9.6.10-0+deb9u1_i386.deb ...
+Dépaquetage de postgresql-contrib-9.6 (9.6.10-0+deb9u1) ...
+Sélection du paquet sysstat précédemment désélectionné.
+Préparation du dépaquetage de .../10-sysstat_11.4.3-2_i386.deb ...
+Dépaquetage de sysstat (11.4.3-2) ...
+Paramétrage de libpq5:i386 (9.6.10-0+deb9u1) ...
+Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ...
+Paramétrage de postgresql-client-common (181+deb9u2) ...
+Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u6) ...
+Paramétrage de postgresql-common (181+deb9u2) ...
+Adding user postgres to group ssl-cert
+
+Creating config file /etc/postgresql-common/createcluster.conf with new version
+
+Creating config file /etc/logrotate.d/postgresql-common with new version
+Building PostgreSQL dictionaries from installed myspell/hunspell packages...
+Removing obsolete dictionary files:
+Created symlink /etc/systemd/system/multi-user.target.wants/postgresql.service → /lib/systemd/system/postgresql.service.
+Paramétrage de libsensors4:i386 (1:3.4.0-4) ...
+Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
+Paramétrage de libpq-dev (9.6.10-0+deb9u1) ...
+Paramétrage de sysstat (11.4.3-2) ...
+
+Creating config file /etc/default/sysstat with new version
+update-alternatives: utilisation de « /usr/bin/sar.sysstat » pour fournir « /usr/bin/sar » (sar) en mode automatique
+Paramétrage de postgresql-client-9.6 (9.6.10-0+deb9u1) ...
+update-alternatives: utilisation de « /usr/share/postgresql/9.6/man/man1/psql.1.gz » pour fournir « /usr/share/man/man1/psql.1.gz » (psql.1.gz) en mode automatique
+Paramétrage de postgresql-9.6 (9.6.10-0+deb9u1) ...
+Creating new cluster 9.6/main ...
+  config /etc/postgresql/9.6/main
+  data   /var/lib/postgresql/9.6/main
+  locale fr_FR.UTF-8
+  socket /var/run/postgresql
+  port   5432
+update-alternatives: utilisation de « /usr/share/postgresql/9.6/man/man1/postmaster.1.gz » pour fournir « /usr/share/man/man1/postmaster.1.gz » (postmaster.1.gz) en mode automatique
+Paramétrage de postgresql (9.6+181+deb9u2) ...
+Paramétrage de postgresql-client (9.6+181+deb9u2) ...
+Paramétrage de postgresql-contrib-9.6 (9.6.10-0+deb9u1) ...
+Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u6) ...
+Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ...
+root@atom:/home/ericadmin# 
+```
+
+Lancement  du serveur Postgresql et configuration pour un lancement automatique au démarrage de la machine:
+> systemctl start postgresql
+systemctl enable postgresql
+```
+root@atom:/home/ericadmin# systemctl start postgresql
+root@atom:/home/ericadmin# systemctl enable postgresql
+Synchronizing state of postgresql.service with SysV service script with /lib/systemd/systemd-sysv-install.
+Executing: /lib/systemd/systemd-sysv-install enable postgresql
+root@atom:/home/ericadmin#
+```
+Nous allons nous connecter sous le user "postgres" pour configurer notre serveur de base de données et créer la base initiale pour **gogs**, ainsi que l'utilisateur **gogs**..
+
+Voici les données que nous allons utiliser:
+> gestionnaire principal de la base de données postgres: postgres
+> mot de passe correspondant : ****
+> utilisateur de la base de données postgres:  git 
+> mot de passe de l'utlisateur git dans postgres: ****
+> base de données postgres, appartenant à l'utilisateur git de postgres: gogsdb
+```
+root@atom:/home/ericadmin# su - postgres
+postgres@atom:~$ 
+```
+Nous allons lancer le shell *postgres* qui nous permettra de configurer notre base:
+
+```shell
+postgres@atom:~$ psql
+psql (9.6.10)
+Saisissez « help » pour l'aide.
+
+postgres=#
+```
+Création de l'utilisateur *git* ainsi que le *mot de passe* pour cet utilisateur:
+```
+postgres=# CREATE USER git CREATEDB;
+CREATE ROLE
+postgres=# \password git
+Saisissez le nouveau mot de passe : ****
+Saisissez-le à nouveau : ****
+postgres=# 
+```
+Remplacez bien sûr les **** par un vrai mot de passe et notez le bien soigneusement.
+
+Création de la base de donnée et vérification:
+```
+postgres=# CREATE DATABASE gogsdb OWNER git;
+CREATE DATABASE
+postgres=# \du
+                                             Liste des rôles
+ Nom du rôle |                                    Attributs                                    | Membre de 
+-------------+---------------------------------------------------------------------------------+-----------
+ git         | Créer une base                                                                  | {}
+ postgres    | Superutilisateur, Créer un rôle, Créer une base, Réplication, Contournement RLS | {}
+
+postgres=#  \l
+                                  Liste des bases de données
+    Nom    | Propriétaire | Encodage | Collationnement | Type caract. |    Droits d'accès     
+-----------+--------------+----------+-----------------+--------------+-----------------------
+ gogsdb    | git          | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | 
+ postgres  | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | 
+ template0 | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | =c/postgres          +
+           |              |          |                 |              | postgres=CTc/postgres
+ template1 | postgres     | UTF8     | fr_FR.UTF-8     | fr_FR.UTF-8  | =c/postgres          +
+           |              |          |                 |              | postgres=CTc/postgres
+(4 lignes)
+
+postgres=# 
+
+```
+Voilà, nous avons installé le serveur de base de données (postgres), la base de données nécessaire à *gogs* (gogsdb), ainsi que l'utilisateur *git* (au sein de la base de données) qui pourra gérer les données de **gogs**. 
+
+### Création de l'utilisateur *git* au sein du système
+> commande adduser
+Avant, n'oubliez pas de repasser sous utilisateur *root* en tapant *Ctrl D*
+```
+root@atom:/home/ericadmin# adduser --disabled-login --gecos 'Gogs' git
+Ajout de l'utilisateur « git » ...
+Ajout du nouveau groupe « git » (1001) ...
+Ajout du nouvel utilisateur « git » (1001) avec le groupe « git » ...
+Création du répertoire personnel « /home/git »...
+Copie des fichiers depuis « /etc/skel »...
+root@atom:/home/ericadmin# 
+```
+### Création d'un répertoire réservé au binaire *gogs* appartenant à l'utilisateur  *git*
+
+```
+root@atom:/home/ericadmin# su - git
+git@atom:~$ mkdir -p /home/git/bin
+git@atom:~$ 
+```
+### Téléchargement du binaire *gogs* dans notre répertoire nouvellement créé
+```
+git@atom:~$ cd bin
+git@atom:~/bin$ wget https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz
+--2018-11-29 14:12:26--  https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz
+Résolution de dl.gogs.io (dl.gogs.io)… 68.183.105.37
+Connexion à dl.gogs.io (dl.gogs.io)|68.183.105.37|:443… connecté.
+requête HTTP transmise, en attente de la réponse… 200 OK
+Taille : 20296268 (19M) [application/x-gzip]
+Sauvegarde en : « gogs_0.11.66_linux_386.tar.gz »
+
+gogs_0.11.66_linux_386.tar.gz        100%[====================================================================>]  19,36M  6,65MB/s    in 2,9s    
+
+2018-11-29 14:12:30 (6,65 MB/s) — « gogs_0.11.66_linux_386.tar.gz » sauvegardé [20296268/20296268]
+
+git@atom:~/bin$ 
+```
+Mon serveur est en i386, et pas en amd64: prenez la version qui correspond au système d'exploitation que vous avez installé. Maintenant, c'est quasi exclusivement du amd64 . Mon serveur est vieux .... (mais vaillant :) )
+
+### Décompression de l'archive et suppression de l'archive
+
+```
+git@atom:~/bin$ tar vxfz gogs_0.11.66_linux_386.tar.gz && rm gogs_0.11.66_linux_386.tar.gz 
+```
+Notez bien que toutes ces dernières étapes se font sous utilisateur **git**.
+
+Voici le résultat dans le répertoire *gogs* créé préalablement:
+
+```shell
+git@atom:~/bin/gogs$ ls
+gogs  LICENSE  public  README.md  README_ZH.md  scripts  templates
+git@atom:~/bin/gogs$
+```
+Bien, tous nos éléments sont en place, base de données, utilisateur *git*, programme *gogs*. Il nous reste à connecter le tout.
+Tapez :
+> ./gogs web
+
+et lancez votre navigateur sur le nom de votre serveur suivi de :3000
+Vous arriverez sur la page de configuration de *gogs*. Remplissez les champs avec les données précédemment entrées et que vous avez bien sûr notées ;). 
+Confirmez votre choix, reconnectez-vous et ça y est:)
+Créez ensuite un *utilisateur* avec son mot de passe (à noter précieusement ...)
+Il nous reste à installer les fichiers de lancement *systemd* ou *init*; pour moi, *systemd*, la redirection *apache*, les certificats *letsencrypt*.
+
+### Création de l'enregistrement *bind* 
+On ajoute un enregistrement CNAME
+> git	IN	CNAME atom.yojik.net.
+
+### Création du fichier de configuration d'*apache*
+On crée le fichier */etc/apache2/sites-available/git.conf avec le contenu suivant:
+Il faut activer les modules *apache* suivants avec *a2enmod*:
+> proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html
+
+```shell
+<VirtualHost *:80>
+    
+    ServerAdmin webmaster@localhost
+
+    ProxyPreserveHost On
+
+    # Servers to proxy the connection, or;
+    # List of application servers:
+    # Usage:
+    # ProxyPass / http://[IP Addr.]:[port]/
+    # ProxyPassReverse / http://[IP Addr.]:[port]/
+    # Example: 
+    ProxyPass / http://localhost:3000/
+    ProxyPassReverse / http://localhost:3000/
+
+    ServerName git.yojik.net
+    
+    ErrorLog ${APACHE_LOG_DIR}/error.log
+    CustomLog ${APACHE_LOG_DIR}/access.log combined
+</VirtualHost>
+```
+
+On *relance *apache*
+> service apache2 restart
+
+
+### Création du certificat *letsencrypt* correspondant 
+
+On lance la commande suivante:
+> certbot --apache
+Et on suit les instructions ...
+
+### Création des fichiers de configuration *systemd*
+Il y a un exemple de fichier dans le sous-répertoire scripts/systemd de *gogs*
+
+```shell
+root@atom:/etc/systemd/system# cat gogs.service 
+[Unit]
+ Description=Gogs
+ After=syslog.target
+ After=network.target
+ After=postgresql.service
+ 
+ [Service]
+ # Modify these two values and uncomment them if you have
+ # repos with lots of files and get an HTTP error 500 because
+ # of that
+ ###
+ #LimitMEMLOCK=infinity
+ #LimitNOFILE=65535
+ Type=simple
+ User=git
+ Group=git
+ WorkingDirectory=/home/git/bin/gogs
+ ExecStart=/home/git/bin/gogs/gogs web
+ Restart=always
+ Environment=USER=git HOME=/home/git/
+ 
+ [Install]
+ WantedBy=multi-user.target
+root@atom:/etc/systemd/system# 
+```
+Pour le lancer automatiquement au démarrage et activer la prise en compte par *systemd*, lancer:
+> systemctl daemon-reload
+> systemctl enable gogs
+
+```shell
+root@atom:/etc/systemd/system# systemctl enable gogs
+Created symlink /etc/systemd/system/multi-user.target.wants/gogs.service → /etc/systemd/system/gogs.service.
+root@atom:/etc/systemd/system# 
+```
+
+### Tests
+Lancez les commandes suivantes pour vous assurer que tout est fonctionnel:
+```shell
+root@atom:/etc/systemd/system# service gogs start
+root@atom:/etc/systemd/system# tail -f /var/log/daemon.log
+Dec 16 17:14:38 atom systemd[1]: Failed to start Gogs.
+Dec 16 17:14:38 atom systemd[1]: gogs.service: Unit entered failed state.
+Dec 16 17:14:38 atom systemd[1]: gogs.service: Failed with result 'exit-code'.
+Dec 16 17:16:09 atom systemd[1]: Reloading.
+Dec 16 17:16:09 atom systemd[1]: apt-daily.timer: Adding 6h 12min 40.966652s random time.
+Dec 16 17:16:13 atom systemd[1]: Started Gogs.
+Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Custom path: /home/git/bin/gogs/custom
+Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log
+Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace)
+Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916
+
+root@atom:/etc/systemd/system# service gogs stop
+root@atom:/etc/systemd/system# service gogs start
+root@atom:/etc/systemd/system# tail -f /var/log/daemon.log
+Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log
+Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace)
+Dec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916
+Dec 16 17:16:28 atom systemd[1]: Stopping Gogs...
+Dec 16 17:16:28 atom systemd[1]: Stopped Gogs.
+Dec 16 17:16:33 atom systemd[1]: Started Gogs.
+Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Custom path: /home/git/bin/gogs/custom
+Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log path: /home/git/bin/gogs/log
+Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log Mode: File (Trace)
+Dec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [ INFO] Gogs on Yojik.net 0.11.66.0916
+```
+
+Le lancement de gogs marche parfaitement.
+
+Connectez-vous à partir de votre navigateur sur *git.yojik.net* (ou plutôt l'url que vous avez définie auparavant); vous devez vous retrouver sur la page d'accueil de *gogs*.
+

+ 378 - 0
docs/2-deux.md

@@ -0,0 +1,378 @@
+
+# Premières étapes de sécurisation du serveur
+
+## Préambule
+
+**(à réaliser sur le serveur en mode super-utilisateur)**
+
+
+
+Pour mon usage personnel, j'installe systématiquement **mc**, petit programme de gestion de fichiers en mode texte qui permet de se déplacer facilement dans les répertoires, d'éditer, de déplacer les fichiers etc.
+
+```
+apt install mc
+```
+
+J'installe aussi **vim**, pour remplacer l'éditeur **vi** ou **nano** installé par défaut par Debian.
+
+```
+apt install vim
+```
+
+Installation des utilitaires système comme **netstat** **ifconfig** etc.
+
+```
+apt install net-tools
+```
+On ajoute les dépots non-free et contrib:
+
+vim /etc/apt/sources.list
+
+
+
+```
+deb http://debian.mirrors.ovh.net/debian stretch main contrib non-free
+deb-src http://debian.mirrors.ovh.net/debian stretch main main contrib non-free
+
+deb http://security.debian.org/debian-security stretch/updates main main contrib non-free
+deb-src http://security.debian.org/debian-security stretch/updates main main contrib non-free
+
+# stretch-updates, previously known as 'volatile'
+deb http://debian.mirrors.ovh.net/debian stretch-updates main main contrib non-free
+deb-src http://debian.mirrors.ovh.net/debian stretch-updates main main contrib non-free
+```
+
+
+Et on update et upgrade:
+
+```
+apt update && apt upgrade
+```
+
+
+## Récupération de l'IP du serveur:
+
+Il nous faut connaître l'adresse IP de notre serveur qui est allouée dynamiquement par **dhcp**.
+
+Nous utiliserons la commande **ifconfig**:
+
+
+
+```
+root@atom:/home/ericadmin# ifconfig
+enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
+        inet 192.168.111.23  netmask 255.255.255.0  broadcast 192.168.111.255
+        inet6 2a01:e0a:54:c220:223:54ff:fec6:a07  prefixlen 64  scopeid 0x0<global>
+        inet6 fe80::223:54ff:fec6:a07  prefixlen 64  scopeid 0x20<link>
+        ether 00:23:54:c6:0a:07  txqueuelen 1000  (Ethernet)
+        RX packets 9220  bytes 7825813 (7.4 MiB)
+        RX errors 0  dropped 0  overruns 0  frame 0
+        TX packets 2534  bytes 282820 (276.1 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 1  (Boucle locale)
+        RX packets 0  bytes 0 (0.0 B)
+        RX errors 0  dropped 0  overruns 0  frame 0
+        TX packets 0  bytes 0 (0.0 B)
+        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
+```
+
+
+
+Notre adresse IPV4 est: **192.168.111.23**
+
+## Sécurisation de ssh
+
+Voir le lien suivant: [Le blog de Guillaume](http://www.guillaume-leduc.fr/)
+
+### Opérations à effectuer sur le poste principal
+
+Nous générons notre paire de clefs pour l'authentification par clefs sur votre poste principal (si vous n'avez pas encore de jeu de clefs). Opération à effectuer sur votre poste principal.
+
+```
+ssh-keygen
+```
+
+Il vous faut copier maintenant la clef sur le serveur:
+
+
+
+```
+ssh-copy-id -i ~/.ssh/id_rsa.pub ericadmin@192.168.111.23
+
+ou
+
+ssh-copy-id ericadmin@192.168.111.23
+
+
+
+```
+
+N'oubliez pas de mettre vos identifiants propres, bien sûr.
+
+On teste comme le recommande ssh:
+
+
+
+```
+eric@aldebaran:~$ ssh 'ericadmin@91.121.72.10'
+Linux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64
+
+  Debian GNU/Linux 9 (stretch)
+
+  Linux adara.yojik.eu 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 GNU/Linux
+
+
+  Server	: 141519
+  IPv4		: 91.121.72.10
+  IPv6		: 2001:41d0:1:7d0a::1
+  Hostname	: adara.yojik.eu
+
+Last login: Sun Jun 24 15:08:32 2018 from 82.64.48.5
+```
+
+
+Et on teste qu'on peut passer super-utilisateur à partir de ce compte.
+
+
+
+```
+
+ericadmin@adara:~$ su
+Mot de passe : 
+root@adara:/home/ericadmin#
+```
+
+
+### Opérations à effectuer sur le **serveur** en mode super-utilisateur.
+
+La configuration se fait dans le fichier **/etc/ssh/sshd_config**, fichier qu'il va falloir éditer avec **vim** pas exemple.
+
+Nous allons d'abord en faire une copie de sauvegarde:
+
+```
+cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig
+```
+
+```
+vim /etc/ssh/sshd_config
+```
+
+Nous n'allons autoriser que la connexion d'un **user** d'administration (pas de connexion de **root** par exemple), activer l'**authentification par clefs**, et supprimer l'authentification par **login/mot de passe** (en mode ssh). Vous pourrez toujours vous connecter avec le couple login/mot de passe si vous avez un accès physique à votre serveur.
+
+Nous garderons le port standard d'écoute (rien à changer dans le fichier):
+
+```
+Port 22
+```
+
+Nous interdisons la connexion par **root**:
+
+```
+PermitRootLogin no
+```
+
+Activation de l'authentification par clef (rien à changer dans le fichier):
+
+```
+PubkeyAuthentication yes
+```
+
+Nous ajoutons une liste d'utilisateurs autorisés à se connecter.
+
+```
+AllowUsers ericadmin
+```
+
+A la place de **ericadmin** mettez bien sûr le nom de l'utilisateur que vous avez entré pendant la phase d'installation.
+
+Nous pouvons limiter le nombre de tentatives de connexion:
+
+```
+MaxAuthTries 1
+```
+
+Interdiction de la connexion par couple login/mot de passe:
+
+```
+PasswordAuthentication no
+```
+
+Désactivation de PAM
+
+```
+UsePAM no
+```
+
+Sauvegarde du fichier de configuration. (commande escape, suivie de ZZ pour vim)
+
+Redémarrage du service **ssh**
+
+```
+systemctl restart sshd
+```
+
+### Test de connexion:
+
+Sur votre ordinateur principal, dans un terminal, tapez:
+
+```
+ssh ericadmin@192.168.111.23
+```
+
+Vous devez être connectés (logués) sur le serveur.
+
+Essayez avec l'utilisateur root:
+
+```
+ssh root@192.168.111.23
+```
+
+Cela doit échouer.
+
+
+```
+eric@aldebaran:~$ ssh 'ericadmin@192.168.111.23'
+Last login: Sun Dec 17 16:37:40 2017 from 192.168.111.150
+ericadmin@atom:~$
+```
+
+Voilà pour la première phase.
+
+# Deuxième phase
+
+## Sécurisation des mots de passe
+
+J'utilise un générateur de mots de passe pour le compte **root** et le compte **ericadmin**.
+Il y a pléthore de générateurs de mots de passe, certains à base d'utilitaires tout prêts, d'autres créés à l'aide commande unix standards.
+
+Les 3 générateurs **tout prêts** les plus cités dans la documentation sont:
+
+* PWGEN
+* MAKPASSWD
+* PASSWORDMAKER
+
+Pour l'installation, utilisez les commandes suivantes:
+
+* apt install pwgen
+* apt install makepasswd
+* apt install passwordmaker-cli
+
+### Exemples d'utilisation de ces programmes:
+
+Utilisation de **pwgen**:
+
+Pour obtenir de l'aide à l'utilisation de cet utilitaire, tapez: **pwgen --help**. Vous pouvez faire varier le niveau de sécurité ainsi que le nombre de mots de passe générés et la longueur des mots de passe.
+
+
+
+```
+eric@aldebaran:~$ pwgen
+oow1Osho teM3chai Aim5shee Sheme1yo aiR6aem1 Vooxeiv0 Iabeenu1 kae7Xie5
+oacei4aV Ohb8ceib zo0shu6F Dob2chie Roo5eeLa fee5Nooh Phi0suim OMeigh2w
+nah2Ool5 Saix6lie EeNaem5u ooVoh3ki IN5aeF9p CuHu8Aib vaim2Jia chah0Ier
+ShieC6ze Teex4tie mei6ou7I Ath6aiFe uw4quoHa lad8Quee ohQuai9Y Sho5Eem6
+aoCaol3W ooGah9th bix6Aic9 thee1Coo lie0ahTe eiz0iiSh cieYu8Ie Ealu3chi
+vaeYee6c ahje9aeJ Sheenee7 eesh1Iez Odaa6kah aico6Jah aphahP4U aYePh1ev
+phohNie8 Chuut3ie eeb9ieDa ohp9AhGi efae5ooV Shiere5c ahV8riek Seegohv1
+Eetohy1a Lievoh0k jox3uf6K chai3Woo iecoh0Iu ieGh9tuz UMeex2ah Eathaur8
+Ood2oeho paeSah0p jaihoo1U eemoi9Ee ile1So4z OongeiN6 aaY9iuch ew3Iemoo
+Iech0Eey OoMie0ah OhBei1ae Ohsh4aik jah0faiT ioW7oz6t yee1Uphu ies4eeNa
+pooP8eeg iePoh4ya fooL3uqu ieGiej1X Ein7eifu ool7Olae eub5ooSe eyo8EiNu
+ach9ohWo Foog9Oev aej9geiH Thahg6Di eegei4Ai eN7quu3b waiK2ieg foThe7zi
+fu2Phoug iYaeg4if iLu6eeFi Aeshoo0i uxoGh6no id1TeRei diob7Pha vokuuN7h
+Chokei8J Iemee8ah eingei0E ubieh2Ch daiyu3EB QueiQu6H Jib0uwee wi9Xoodu
+eeL3osh2 Eo3Ae1ch bieWui2a ro6chiCo engu0ooF Eebeu2jo ee7Eey8t EiSeen5i
+ohNgai6i Iutaez4a xah1yeeG eGhi5Ouz vaiYu6ee fae0AeP5 jee0Ib2I OS3xuwae
+Eefohp1u eegiK6ae ohyuom7V Eij8eeNi Ou0ec7ye Eethoh4e eeHi2ugh ichoLae3
+UT8oopoo oox6Ohx9 ohbaL2hu oht9kaiR Ieho8Ou1 Ten6saet cae7Iexi daDuas9e
+ShiexaT7 Lei6etii ea4aoH8y ja8Zai8g phaeG6Hi sheNg8ee Oow5phae aa7gohPi
+nahS8Eeg ba6Roh9j ooRo6epo pheNoam1 johF7ii9 vuZ4Latu xai5og6H aeS8hu2I
+eric@aldebaran:~$
+```
+
+
+
+Vous pouvez prendre le mot de passe que vous voulez dans le tableau généré.
+Pour un seul mot de passe:
+
+
+
+```
+eric@aldebaran:~$ pwgen -1
+Eerai4Sh
+```
+
+
+
+Pour un mot de passe mieux sécurisé:
+
+
+
+```
+eric@aldebaran:~$ pwgen -1 -s
+tx2CqGyf
+```
+
+
+
+Encore plus sécurisé avec l'option -y:
+
+
+
+```
+eric@aldebaran:~$ pwgen -1 -s -y
+a+01K!U~
+```
+
+
+
+Utilisation de **makepasswd**:
+
+Tapez: **makepasswd --help** pour de l'aide à l'utilisation des paramètres.
+
+
+
+```
+makepasswd --count 5 --minchars 10
+```
+
+
+
+### Sécurisation du mot de passe super-utilisateur (root)
+
+Utilisez un des utilitaires ci-dessus. Attention à la longueur minimale!
+
+Sous le user “admin”, tapez: **passwd** pour changer le mot de passe admin.
+
+### Sécurisation du mot de passe administrateur
+
+Utilisez un des utilitaires ci-dessus. Attention à la longueur minimale!
+Sous le user “root”, tapez: **passwd** pour changer le mot de passe root.
+
+## Test du hostname
+
+La commande **hostname** nous indiquera le nom “court” de notre machine, et la commande **hostname -f** sa version longue avec le nom de domaine.
+
+
+
+```
+root@atom:/home/ericadmin# hostname
+atom
+root@atom:/home/ericadmin#
+```
+
+
+
+```shell
+root@atom:/home/ericadmin# hostname -f
+atom.yojik.net
+root@atom:/home/ericadmin#
+```
+
+
+
+Le résultat est bon.

+ 50 - 0
docs/20-vingt.md

@@ -0,0 +1,50 @@
+
+
+## Sécurisation des pages web
+
+
+### La configuration SSL
+
+La page https://mozilla.github.io/server-side-tls/ssl-config-generator/ permet de configurer mieux les pages servies par les serveurs web (apache pour moi), en donnant des règles concernant les certificats, les protocoles **ssl.**
+
+Voilà un exemple de configuration générée par le site Mozilla indiqué ci-dessus:
+
+```shell
+<VirtualHost *:443>
+    ...
+    SSLEngine on
+    SSLCertificateFile      /path/to/signed_certificate_followed_by_intermediate_certs
+    SSLCertificateKeyFile   /path/to/private/key
+
+    # Uncomment the following directive when using client certificate authentication
+    #SSLCACertificateFile    /path/to/ca_certs_for_client_authentication
+
+
+    # HSTS (mod_headers is required) (15768000 seconds = 6 months)
+    Header always set Strict-Transport-Security "max-age=15768000"
+    ...
+</VirtualHost>
+
+# modern configuration, tweak to your needs
+SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
+SSLCipherSuite          ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256
+SSLHonorCipherOrder     on
+SSLCompression          off
+SSLSessionTickets       off
+
+# OCSP Stapling, only in httpd 2.3.3 and later
+SSLUseStapling          on
+SSLStaplingResponderTimeout 5
+SSLStaplingReturnResponderErrors off
+SSLStaplingCache        shmcb:/var/run/ocsp(128000)
+```
+
+Il précise les protocoles recommandés ainsi que les méthodes de chiffrage actuellement sûres.
+ 
+###  La configuration des en-têtes.
+
+Les entêtes sont envoyés aux clients, et ils sont libres de les respecter ou non ... 
+On peut utiliser la page de test suivante pour configurer les entêtes renvoyés avec chaque page web: https://observatory.mozilla.org/analyze/www.yojik.net par exemple pour analyser le site www.yojik.net.
+
+Voilà un exemple de résultats, avec certains entêtes configurés et d'autres non; la note globale n'est pas bonne, et il faudra améliorer la configuration.
+

+ 285 - 0
docs/3-trois.md

@@ -0,0 +1,285 @@
+
+## Configuration du réseau
+
+Nous avons utilisé la configuration automatique du réseau (DHCP).
+
+Il est temps de configurer manuellement les adresses IP pour avoir des adresses fixes dans le temps (faisable aussi avec DHCP si on a un serveur DHCP configurable)
+
+### Configuration de l'IPV4
+
+Les éléments suivants ont été configurés dans l'interface de configuration de ma box (Freebox dans mon cas)
+
+Mon réseau domestique est: **192.168.111.0**
+Ma passerelle est: **192.168.111.254**
+
+J'ai choisi l'adresse suivante pour mon serveur: **192.168.111.160** et j'ai configuré cette adresse comme zone “DMZ” sur ma Freebox (zone démilitarisée, accessible de l'extérieur)
+
+La configuration se fait dans le fichier: **/etc/network/interfaces**
+
+Nous avons ceci:
+
+
+
+```
+source /etc/network/interfaces.d/*
+
+# The loopback network interface
+auto lo
+iface lo inet loopback
+
+# The primary network interface
+allow-hotplug enp4s0
+iface enp4s0 inet dhcp
+# This is an autoconfigured IPv6 interface
+iface enp4s0 inet6 auto
+```
+
+
+
+Vous noterez que le nom des interfaces a changé ...
+
+Modification de l'interface réseau IPV4:
+
+Les lignes concernées sont:
+
+
+
+```
+# The primary network interface
+allow-hotplug enp4s0
+iface enp4s0 inet dhcp
+```
+
+
+
+Modifiez ces lignes pour obtenir:
+
+
+
+```
+# The primary network interface
+allow-hotplug enp4s0
+# iface enp4s0 inet dhcp (ligne à commenter)
+# lignes à ajouter
+iface enp4s0 inet static
+# IP address
+    address 192.168.111.160
+# network address
+    network 192.168.111.0
+# subnet mask
+    netmask 255.255.255.0
+# broadcast address
+    broadcast 192.168.111.255
+# default gateway
+    gateway 192.168.111.254
+# name server
+    dns-nameservers 8.8.8.8 8.8.4.4
+```
+
+
+
+Explications:
+
+* enp4s0: c'est le nom donné par Debian à mon interface réseau
+* l'adresse IP est l'adresse que j'ai choisie dans mon réseau local pour mon serveur
+* nous avons ensuite l'adresse réseau
+* puis le masque
+* l'adresse de broadcast
+* et l'adresse de sortie de notre réseau (en fait l'adresse est fixée par notre routeur: la mienne est: 254)
+* les serveurs de nom: nous allons mettre un serveur de nom **provisoire** avant d'installer notre propre serveur de noms. J'ai pris ici les serveurs de Google.
+
+Sauvegarde du fichier et redémarrage du serveur.
+
+Vous noterez que la connexion par **ssh** échoue, car l'empreinte du serveur a changé.
+
+
+
+```
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
+Someone could be eavesdropping on you right now (man-in-the-middle attack)!
+It is also possible that a host key has just been changed.
+The fingerprint for the ECDSA key sent by the remote host is
+SHA256:w0HKVAyxVFC2t50O6hte6PioCIAjcwxus7Mm8/Q+NBo.
+Please contact your system administrator.
+Add correct host key in /home/eric/.ssh/known_hosts to get rid of this message.
+Offending ECDSA key in /home/eric/.ssh/known_hosts:14
+  remove with:
+  ssh-keygen -f "/home/eric/.ssh/known_hosts" -R atom
+ECDSA host key for atom has changed and you have requested strict checking.
+Host key verification failed.
+```
+
+
+
+Suivez les instructions données par le message de **ssh** et reconnectez-vous.
+
+
+
+```
+eric@aldebaran:~$ ssh ericadmin@atom
+The authenticity of host 'atom (192.168.111.160)' can't be established.
+ECDSA key fingerprint is SHA256:w0HKVAyxVFC2t50O6hte6PioCIAjcwxus7Mm8/Q+NBo.
+Are you sure you want to continue connecting (yes/no)? yes
+Warning: Permanently added 'atom,192.168.111.160' (ECDSA) to the list of known hosts.
+Last login: Mon Dec 25 10:57:50 2017 from 192.168.111.150
+ericadmin@atom:~$
+```
+
+
+
+Test de l'adresse IPV4 (mode super-utilisateur)
+
+
+
+```
+root@atom:/home/ericadmin# ifconfig
+enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
+        inet 192.168.111.160  netmask 255.255.255.0  broadcast 192.168.111.255
+        inet6 2a01:e0a:54:c220:223:54ff:fec6:a07  prefixlen 64  scopeid 0x0<global>
+        inet6 fe80::223:54ff:fec6:a07  prefixlen 64  scopeid 0x20<link>
+        ether 00:23:54:c6:0a:07  txqueuelen 1000  (Ethernet)
+        RX packets 1666  bytes 134780 (131.6 KiB)
+        RX errors 0  dropped 2  overruns 0  frame 0
+        TX packets 432  bytes 39182 (38.2 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 1  (Boucle locale)
+        RX packets 0  bytes 0 (0.0 B)
+        RX errors 0  dropped 0  overruns 0  frame 0
+        TX packets 0  bytes 0 (0.0 B)
+        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
+
+root@atom:/home/ericadmin#
+```
+
+
+
+Mon adresse IPV4 est la bonne: **192.168.111.160**
+
+### Configuration de l'IPV6
+
+Nous allons utiliser la configuration automatique. Un préfixe IPV6 nous est attribué par notre fournisseur d'accès. Nous disposons d'un pool gigantesque d'adresses IPV6 utilisables comme bon nous semble.
+
+Avec la configuration automatique, une adresse ipv6 est fabriquée à partir de l'adresse mac de notre interface réseau. C'est une adresse fixe qui ne changera pas tant que nous ne changerons pas le matériel réseau du serveur.
+
+En configuration manuelle, nous pouvons attribuer l'adresse de notre choix, comprise bien sûr dans le pool d'adresses.
+
+Nous allons ajouter une option qui permet d'augmenter la protection de la vie privée. Du fait du pool d'adresses disponibles, il est possible de demander au système de changer régulièrement d'adresses pour les requêtes extérieures. L'interface réseau de notre serveur peut être dotée de plusieurs adresses IPV6 simultanément. L'option à rajouter est: **privext 2**.
+
+> Note: nous devrons changer cette configuration ensuite car il faut que l'adresse unique renvoyée par le serveur DNS soit la même que l'adresse d'émission ...
+> L'adresse d'émission change avec le paramètre **privext 2** et cette adresse ne correspond pas avec celle renvoyée par le serveur DNS. Il nous faudra employer une adresse statique, et unique pour notre serveur (en IPV4 et IPV6.) 
+
+
+
+```
+#This is an autoconfigured IPv6 interface
+iface enp2s0 inet6 auto
+        privext 2
+```
+
+
+
+Le résultat est le suivant:
+
+
+
+```
+enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
+        inet 192.168.111.240  netmask 255.255.255.0  broadcast 192.168.111.255
+        inet6 2a01:e0a:54:c220:e128:ec57:4b1a:b078  prefixlen 64  scopeid 0x0<global>
+        inet6 fe80::3aea:a7ff:fea6:cf93  prefixlen 64  scopeid 0x20<link>
+        inet6 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93  prefixlen 64  scopeid 0x0<global>
+        ether 38:ea:a7:a6:cf:93  txqueuelen 1000  (Ethernet)
+        RX packets 7753  bytes 551016 (538.1 KiB)
+        RX errors 0  dropped 0  overruns 0  frame 0
+        TX packets 1579  bytes 152907 (149.3 KiB)
+        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
+        device interrupt 18  
+```
+
+
+
+Vous noterez la présence de 3 adresses ipv6.
+
+* Une adresse commençant par inet6 fe80:
+  Cette adresse n'est pas routée sur le réseau internet. Elle ne sert que pour le réseau local. Elle est marquée: «link».
+
+* 2 autres adresses ipv6 marquées «global»: l'une d'elle est l'adresse basée sur l'adresse mac de la carte réseau, l'autre a été générée par le système.
+
+Ces 3 adresses sont dans le pool d'adresses attribué par le FAI, et donc, les 64 premiers bits de l'adresse constituent le préfixe ipv6. Le pool d'adresses peu être de 64 bits ou 56 suivant les fournisseurs, ou moins encore.
+
+### Tester la configuration réseau
+
+Je teste la connexion IPV6 à partir de ma machine de bureau.
+
+Première adresse ipv6:
+
+
+
+```
+eric@aldebaran:~$ ping6 2a01:e0a:54:c220:e128:ec57:4b1a:b078
+PING 2a01:e0a:54:c220:e128:ec57:4b1a:b078(2a01:e0a:54:c220:e128:ec57:4b1a:b078) 56 data bytes
+64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=1 ttl=64 time=0.487 ms
+64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=2 ttl=64 time=0.339 ms
+64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=3 ttl=64 time=0.322 ms
+^C
+ 2a01:e0a:54:c220:e128:ec57:4b1a:b078 ping statistics 
+3 packets transmitted, 3 received, 0% packet loss, time 2046ms
+rtt min/avg/max/mdev = 0.322/0.382/0.487/0.077 ms
+eric@aldebaran:~$
+```
+
+
+
+2ème adresse ipv6:
+
+
+
+```
+eric@aldebaran:~$ ping6 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93
+PING 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93(2a01:e0a:54:c220:3aea:a7ff:fea6:cf93) 56 data bytes
+64 bytes from 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93: icmp_seq=1 ttl=64 time=0.571 ms
+64 bytes from 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93: icmp_seq=2 ttl=64 time=0.424 ms
+^C
+ 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 ping statistics 
+2 packets transmitted, 2 received, 0% packet loss, time 1020ms
+rtt min/avg/max/mdev = 0.424/0.497/0.571/0.076 ms
+```
+
+
+
+3ème adresse ipv6:
+
+
+
+```
+root@aldebaran:/home/eric#  ping6 -I enp4s0 fe80:0:0:0:3aea:a7ff:fea6:cf93
+PING fe80:0:0:0:3aea:a7ff:fea6:cf93(fe80::3aea:a7ff:fea6:cf93) from fe80::1e6f:65ff:fe92:dd1f%enp4s0 enp4s0: 56 data bytes
+64 bytes from fe80::3aea:a7ff:fea6:cf93%enp4s0: icmp_seq=1 ttl=64 time=0.336 ms
+64 bytes from fe80::3aea:a7ff:fea6:cf93%enp4s0: icmp_seq=2 ttl=64 time=0.357 ms
+^C
+ fe80:0:0:0:3aea:a7ff:fea6:cf93 ping statistics 
+2 packets transmitted, 2 received, 0% packet loss, time 1026ms
+rtt min/avg/max/mdev = 0.336/0.346/0.357/0.021 ms
+```
+
+
+
+Vous noterez que pour l'adresse «link» commençant par Fe80::, il faut spécifier l'interface réseau. (-i enp4s0 )
+
+Vous pouvez constater que tout marche comme il se doit.
+
+
+Il faut bien sûr tester la connectivité dans les 2 sens: serveur -> autre machine **ET**
+ autre machine -> serveur.
+
+Quelques liens:
+
+* [Linux France en français](http://www.linux-france.org/~openingault/gulliveripv6/theorie/addr.html#umacast)
+* [Cyberciti IPV6 Howto en anglais](https://www.cyberciti.biz/faq/howto-test-ipv6-network-with-ping6-command/)

+ 118 - 0
docs/4-quatre.md

@@ -0,0 +1,118 @@
+
+## Installation d'un serveur de temps
+
+L'horloge du serveur doit être exacte, et pour cela, nous nous référons à un serveur de temps. Le programme qui se connecte et met à jour l'horloge de notre serveur sera **ntp**.
+
+
+
+```
+root@atom:/home/ericadmin# apt install ntp
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  libopts25
+Paquets suggérés :
+  ntp-doc
+Les NOUVEAUX paquets suivants seront installés :
+  libopts25 ntp
+0 mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 689 ko dans les archives.
+Après cette opération, 2 035 ko d'espace disque supplémentaires seront utilisés.
+Souhaitez-vous continuer ? [O/n] o
+Réception de:1 http://deb.debian.org/debian stretch/main i386 libopts25 i386 1:5.18.12-3 [71,6 kB]
+Réception de:2 http://deb.debian.org/debian stretch/main i386 ntp i386 1:4.2.8p10+dfsg-3+deb9u1 [617 kB]
+689 ko réceptionnés en 0s (3 368 ko/s)
+Sélection du paquet libopts25:i386 précédemment désélectionné.
+(Lecture de la base de données... 31885 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../libopts25_1%3a5.18.12-3_i386.deb ...
+Dépaquetage de libopts25:i386 (1:5.18.12-3) ...
+Sélection du paquet ntp précédemment désélectionné.
+Préparation du dépaquetage de .../ntp_1%3a4.2.8p10+dfsg-3+deb9u1_i386.deb ...
+Dépaquetage de ntp (1:4.2.8p10+dfsg-3+deb9u1) ...
+Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u1) ...
+Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u1) ...
+Paramétrage de libopts25:i386 (1:5.18.12-3) ...
+Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
+Paramétrage de ntp (1:4.2.8p10+dfsg-3+deb9u1) ...
+Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u1) ...
+Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u1) ...
+```
+
+
+
+### Test du serveur de temps
+
+2 commandes permettent de vérifier l'état de **ntp**:
+
+> ntpq -p
+timedatectl
+
+Voilà le résultat de ces commandes sur mon serveur:
+
+
+
+```
+root@atom:/home/ericadmin# ntpq -p
+     remote           refid      st t when poll reach   delay   offset  jitter
+==============================================================================
+ 0.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.004
+ 1.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.004
+ 2.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.004
+ 3.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.004
+-dev2.pik.ba     213.251.128.249  2 u   93  128  377   13.413    0.144   0.177
+-ks3352891.kimsu 138.96.64.10     2 u  174  256  377   14.022    2.951   0.157
++www.mindstudios 193.79.237.14    2 u  108  128  377   11.008    0.594   0.134
+-gofish.zenvps.c 193.52.184.106   2 u  180  256  377   13.865    0.770   0.094
+*ip139.ip-5-196- 145.238.203.14   2 u    4  128  377   13.264    0.636   0.218
++leeto.nicolbola 145.238.203.14   2 u   97  128  377   10.257   -0.871   0.312
+
+
+root@atom:/home/ericadmin# timedatectl
+      Local time: lun. 2017-12-25 12:17:33 CET
+  Universal time: lun. 2017-12-25 11:17:33 UTC
+        RTC time: lun. 2017-12-25 11:17:33
+       Time zone: Europe/Paris (CET, +0100)
+ Network time on: yes
+NTP synchronized: yes
+ RTC in local TZ: no
+root@atom:/home/ericadmin#
+```
+
+
+
+Nous pouvons voir les serveurs connectés et l'état de la synchronisation.
+
+Si la dernière commande renvoie: **Network time on: No**, vous pouvez essayer de configurer le service **systemd** de la façon suivante:
+
+
+
+```
+# vim /etc/systemd/timesyncd.conf
+```
+
+
+
+Et ajoutez la ligne suivante:
+
+
+
+```
+[Time]
+Servers=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
+```
+
+
+
+Sauvez le fichier et testez la configuration de la façon suivante:
+
+
+
+```
+# timedatectl set-ntp true
+# timedatectl status
+```
+
+
+
+Vous devez retrouver: **Network time on: Yes**

+ 841 - 0
docs/5-cinq.md

@@ -0,0 +1,841 @@
+
+## Installation d'un pare-feu
+
+J'ai utilisé depuis toujours **iptables** "brut". Ayant lu beaucoup de bien de **ufw**, je vais tenter une installation de ce dernier.
+
+Après usage, il s'avère difficile de configurer **fail2ban** avec **ufw**.
+
+Je vais quand même laisser la doc de configuration de **ufw**, tout en préférant utiliser **iptables**.
+
+### Installation de iptables
+
+**Iptables** est installé automatiquement. Nous allons rajouter le paquet **iptables-persistent** pour assurer le lancement automatique de nos règles à l'allumage de la machine.
+
+---
+
+```
+root@aijan:/home/ericadmin# apt install iptables-persistent
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  netfilter-persistent
+Les NOUVEAUX paquets suivants seront installés :
+  iptables-persistent netfilter-persistent
+0 mis à jour, 2 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 19,5 ko dans les archives.
+Après cette opération, 79,9 ko d'espace disque supplémentaires seront utilisés.
+Souhaitez-vous continuer ? [O/n] o
+Réception de:1 http://deb.debian.org/debian stretch/main amd64 netfilter-persistent all 1.0.4+nmu2 [8 792 B]
+Réception de:2 http://deb.debian.org/debian stretch/main amd64 iptables-persistent all 1.0.4+nmu2 [10,7 kB]
+19,5 ko réceptionnés en 0s (198 ko/s)
+Préconfiguration des paquets...
+Sélection du paquet netfilter-persistent précédemment désélectionné.
+(Lecture de la base de données... 36713 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../netfilter-persistent_1.0.4+nmu2_all.deb ...
+Dépaquetage de netfilter-persistent (1.0.4+nmu2) ...
+Sélection du paquet iptables-persistent précédemment désélectionné.
+Préparation du dépaquetage de .../iptables-persistent_1.0.4+nmu2_all.deb ...
+Dépaquetage de iptables-persistent (1.0.4+nmu2) ...
+Paramétrage de netfilter-persistent (1.0.4+nmu2) ...
+Created symlink /etc/systemd/system/multi-user.target.wants/netfilter-persistent.service → /lib/systemd/system/netfilter-persistent.service.
+update-rc.d: warning: start and stop actions are no longer supported; falling back to defaults
+Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u1) ...
+Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
+Paramétrage de iptables-persistent (1.0.4+nmu2) ...
+root@aijan:/home/ericadmin#
+```
+
+---
+
+Vous noterez que le nom du serveur est différent. J'ai testé mon tutoriel sur un nouveau serveur (aijan.yojik.net.)
+
+Nous obtenons donc 2 fichiers de configuration, /etc/iptables/rules.v4 et /etc/iptables/rules.v6.
+
+En listant ces fichiers, aucune règle n'est encore enregistrée: tout passe, en entrée et en sortie.
+
+Ces fichiers sont mis à jour grâce aux commandes suivantes.
+
+---
+
+```
+iptables-save > /etc/iptables/rules.v4
+ip6tables-save > /etc/iptables/rules.v6
+```
+
+---
+
+Les commandes disponibles pour **netfilter-persistent** sont les suivantes:
+
+* systemctl start netfilter-persistent
+* systemctl stop netfilter-persistent
+* systemctl restart netfilter-persistent
+* systemctl stop netfilter-persistent
+* systemctl status netfilter-persistent
+
+Exemples d'utilisation suivant l'état de **netfilter-persistent**:
+
+---
+
+```
+root@aijan:/home/ericadmin# systemctl stop netfilter-persistent
+root@aijan:/home/ericadmin# systemctl status netfilter-persistent
+● (**point en rouge**) netfilter-persistent.service - netfilter persistent configuration
+   Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)
+   Active: failed (Result: exit-code) since Sun 2018-02-11 13:50:22 CET; 13s ago
+  Process: 1629 ExecStop=/usr/sbin/netfilter-persistent stop (code=exited, status=1/FAILURE)
+  Process: 1525 ExecStart=/usr/sbin/netfilter-persistent start (code=exited, status=0/SUCCESS)
+ Main PID: 1525 (code=exited, status=0/SUCCESS)
+
+févr. 11 13:42:02 aijan systemd[1]: Starting netfilter persistent configuration...
+févr. 11 13:42:02 aijan netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start
+févr. 11 13:42:02 aijan netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start
+févr. 11 13:42:02 aijan systemd[1]: Started netfilter persistent configuration.
+févr. 11 13:50:22 aijan systemd[1]: Stopping netfilter persistent configuration...
+févr. 11 13:50:22 aijan netfilter-persistent[1629]: Automatic flush disabled; use '/usr/sbin/netfilter-persistent flush'
+févr. 11 13:50:22 aijan systemd[1]: netfilter-persistent.service: Control process exited, code=exited status=1
+févr. 11 13:50:22 aijan systemd[1]: Stopped netfilter persistent configuration.
+févr. 11 13:50:22 aijan systemd[1]: netfilter-persistent.service: Unit entered failed state.
+févr. 11 13:50:22 aijan systemd[1]: netfilter-persistent.service: Failed with result 'exit-code'.
+root@aijan:/home/ericadmin#
+
+
+root@aijan:/home/ericadmin# systemctl start netfilter-persistent
+root@aijan:/home/ericadmin# systemctl status netfilter-persistent
+● (**point en vert**) netfilter-persistent.service - netfilter persistent configuration
+   Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)
+   Active: active (exited) since Sun 2018-02-11 13:51:09 CET; 2s ago
+  Process: 1629 ExecStop=/usr/sbin/netfilter-persistent stop (code=exited, status=1/FAILURE)
+  Process: 1641 ExecStart=/usr/sbin/netfilter-persistent start (code=exited, status=0/SUCCESS)
+ Main PID: 1641 (code=exited, status=0/SUCCESS)
+
+févr. 11 13:51:09 aijan systemd[1]: Starting netfilter persistent configuration...
+févr. 11 13:51:09 aijan netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start
+févr. 11 13:51:09 aijan netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start
+févr. 11 13:51:09 aijan systemd[1]: Started netfilter persistent configuration.
+root@aijan:/home/ericadmin#
+```
+
+---
+
+Pour sauver des règles “entrées à la main”, tapez:
+
+> **service netfilter-persistent save**
+
+---
+
+```
+root@aijan:/home/ericadmin# service netfilter-persistent save
+[....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
+run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save
+done.
+root@aijan:/home/ericadmin#
+```
+
+---
+
+### Configuration des règles iptables
+
+
+Nous allons les configurer avec un script donné par Nicolargo: [Site de NicoLargo](https://blog.nicolargo.com/2013/06/ma-methode-pour-gerer-les-regles-iptables.html)
+
+---
+```
+#! /bin/sh
+### BEGIN INIT INFO
+# Provides:          PersonalFirewall
+# Required-Start:    $remote_fs $syslog
+# Required-Stop:     $remote_fs $syslog
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: Personal Firewall
+# Description:
+### END INIT INFO
+
+# programme iptables IPV4 et IPV6
+IPT=/sbin/iptables
+IP6T=/sbin/ip6tables
+
+# Les IPs
+IPMAISON=192.168.111.150
+IP6MAISON=fe80::1e6f:65ff:fe92:dd1f
+
+# fonction qui démarre le firewall
+do_start() {
+
+    # Efface toutes les règles en cours. -F toutes. -X utilisateurs
+    $IPT -t filter -F
+    $IPT -t filter -X
+    $IPT -t nat -F
+    $IPT -t nat -X
+    $IPT -t mangle -F
+    $IPT -t mangle -X
+    #
+    $IP6T -t filter -F
+    $IP6T -t filter -X
+    # Il n'y a pas de NAT en IPV6
+    #$IP6T -t nat -F
+    #$IP6T -t nat -X
+    $IP6T -t mangle -F
+    $IP6T -t mangle -X
+
+    # stratégie (-P) par défaut : bloc tout l'entrant le forward et autorise le sortant
+    $IPT -t filter -P INPUT DROP
+    $IPT -t filter -P FORWARD DROP
+    $IPT -t filter -P OUTPUT ACCEPT
+    #
+    $IP6T -F INPUT
+    $IP6T -F FORWARD
+    $IP6T -X
+
+    # Loopback
+    $IPT -t filter -A INPUT -i lo -j ACCEPT
+    $IPT -t filter -A OUTPUT -o lo -j ACCEPT
+    #
+    $IP6T -t filter -A INPUT -i lo -j ACCEPT
+    $IP6T -t filter -A OUTPUT -o lo -j ACCEPT
+
+    # ICMP
+    $IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
+    $IPT -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT
+
+    # Permettre à une connexion ouverte de recevoir du trafic en entrée
+    $IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
+    #
+    $IP6T -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
+    $IP6T -A INPUT -p icmpv6 --icmpv6-type neighbor-solicitation -j ACCEPT
+    $IP6T -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -j ACCEPT
+    $IP6T -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT
+    $IP6T -A INPUT -j ACCEPT
+    $IP6T -A INPUT -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT
+    $IP6T -P INPUT DROP
+    $IP6T -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
+    $IP6T -A FORWARD -p icmpv6 --icmpv6-type echo-request -j ACCEPT
+    $IP6T -A FORWARD -i br0 -j ACCEPT
+    $IP6T -A FORWARD -i br1 -o sit_sixxs -j ACCEPT
+    $IP6T -P FORWARD DROP
+
+    # DNS:53
+    # /!\ Il faut autoriser le DNS AVANT de déclarer des hosts sinon pas de résolution de nom possible
+    $IPT -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
+    $IPT -t filter -A INPUT -p udp --dport 53 -j ACCEPT
+    
+    # DNS:53
+    $IP6T -t filter -A INPUT -p tcp --dport 53 -j ACCEPT
+    $IP6T -t filter -A INPUT -p udp --dport 53 -j ACCEPT
+
+   # DNS:953
+    # /!\ Il faut autoriser le DNS AVANT de déclarer des hosts sinon pas de résolution de nom possible
+    $IPT -t filter -A INPUT -p tcp --dport 953 -j ACCEPT
+    $IPT -t filter -A INPUT -p udp --dport 953 -j ACCEPT
+    #
+    $IP6T -t filter -A INPUT -p tcp --dport 953 -j ACCEPT
+    $IP6T -t filter -A INPUT -p udp --dport 953 -j ACCEPT
+
+
+    # accepte tout d'une ip en TCP (de la maison)
+    $IPT -t filter -A INPUT -p tcp -s $IPMAISON -j ACCEPT
+    $IP6T -t filter -A INPUT -p tcp -s $IP6MAISON -j ACCEPT
+
+    # ssh
+    $IPT -t filter -A INPUT -p tcp --dport 22  -j ACCEPT
+    $IPT -t filter -A OUTPUT -p tcp --dport 22  -j ACCEPT
+    #
+    $IP6T -t filter -A INPUT -p tcp --dport 22  -j ACCEPT
+    $IP6T -t filter -A OUTPUT -p tcp --dport 22  -j ACCEPT
+
+
+   #NTP out
+    $IPT -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
+    $IP6T -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT
+
+
+#    # HTTP + HTTPS Out
+#     $IPT -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
+#     $IPT -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
+
+#     $IP6T -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
+#     $IP6T -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
+
+#     # HTTP + HTTPS In
+#     $IPT -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
+#     $IPT -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
+
+#     $IP6T -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
+#     $IP6T -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
+
+
+#    # Mail SMTP:25
+#    $IPT -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
+#    $IPT -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
+
+#    $IP6T -t filter -A INPUT -p tcp --dport 25 -j ACCEPT
+#    $IP6T -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT
+
+
+#    # Mail SMTP:587
+#    $IPT -t filter -A INPUT -p tcp --dport 587 -j ACCEPT
+#    $IPT -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT
+
+#    $IP6T -t filter -A INPUT -p tcp --dport 597 -j ACCEPT
+#    $IP6T -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT
+
+#    # Mail IMAP:143
+#    $IPT -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
+#    $IPT -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT
+
+#    $IP6T -t filter -A INPUT -p tcp --dport 143 -j ACCEPT
+#    $IP6T -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT
+
+#    # Mail IMAPS:993
+#    $IPT -t filter -A INPUT -p tcp --dport 993 -j ACCEPT
+#    $IPT -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT
+#    $IP6T -t filter -A INPUT -p tcp --dport 993 -j ACCEPT
+#    $IP6T -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT
+
+#    # Mail 465
+#    $IPT -t filter -A INPUT -p tcp --dport 465 -j ACCEPT
+#    $IPT -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT
+
+#    $IP6T -t filter -A INPUT -p tcp --dport 465 -j ACCEPT
+#    $IP6T -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT
+
+
+    #
+    echo "firewall started [OK]"
+}
+
+# fonction qui arrête le firewall
+do_stop() {
+
+    # Efface toutes les règles
+    $IPT -t filter -F
+    $IPT -t filter -X
+    $IPT -t nat -F
+    $IPT -t nat -X
+    $IPT -t mangle -F
+    $IPT -t mangle -X
+    #
+    $IP6T -t filter -F
+    $IP6T -t filter -X
+    #$IP6T -t nat -F
+    #$IP6T -t nat -X
+    $IP6T -t mangle -F
+    $IP6T -t mangle -X
+
+    # remet la stratégie
+    $IPT -t filter -P INPUT ACCEPT
+    $IPT -t filter -P OUTPUT ACCEPT
+    $IPT -t filter -P FORWARD ACCEPT
+    #
+    $IP6T -t filter -P INPUT ACCEPT
+    $IP6T -t filter -P OUTPUT ACCEPT
+    $IP6T -t filter -P FORWARD ACCEPT
+
+    #
+    echo "firewall stopped [OK]"
+}
+
+# fonction status firewall
+do_status() {
+
+    # affiche les règles en cours
+    clear
+    echo Status IPV4
+    echo -----------------------------------------------
+    $IPT -L -n -v
+    echo
+    echo -----------------------------------------------
+    echo
+    echo status IPV6
+    echo -----------------------------------------------
+    $IP6T -L -n -v
+    echo
+}
+
+case "$1" in
+    start)
+        do_start
+        # quitte sans erreur
+        exit 0
+    ;;
+
+    stop)
+        do_stop
+        # quitte sans erreur
+        exit 0
+    ;;
+
+    restart)
+        do_stop
+        do_start
+        # quitte sans erreur
+        exit 0
+    ;;
+
+    status)
+        do_status
+        # quitte sans erreurs
+        exit 0
+    ;;
+
+    *)
+        # Si on ne tape ni "start" ni "stop"... on affiche une erreur
+        echo "Usage: /etc/init.d/firewall {start|stop|restart|status}"
+        # quitte le script avec un etat "en erreur"
+        exit 1
+    ;;
+
+esac
+
+```
+
+---
+
+
+Explications:
+
+---
+
+```
+Création de 4 chaînes pour faciliter les opérations:
+
+# iptables -N TCP
+# iptables -N UDP
+
+# ip6tables -N TCP
+# ip6tables -N UDP
+
+On est sur un serveur, pas un routeur, donc, on interdit la règle FORWARD:
+
+# iptables -P FORWARD DROP
+
+# ip6tables -P FORWARD DROP
+
+On autorise tout en sortie:
+
+# iptables -P OUTPUT ACCEPT
+
+# ip6tables -P OUTPUT ACCEPT
+
+
+Nous allons accepter les connexions déjà établies:
+
+# iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+
+# ip6tables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+
+
+En entrée, on commence par interdire tout; on ouvrira les ports suivantles besoins:
+
+# iptables -P INPUT DROP
+
+# ip6tables -P INPUT DROP
+
+
+Aoristaion des connexions **loopback** (internes):
+
+# iptables -A INPUT -i lo -j ACCEPT
+
+# ip6tables -A INPUT -i lo -j ACCEPT
+
+Nous allons interdire les paquets marqués **INVALID**; il faudra auparavant accepter les paquets **ICMPv6 Neighbor Discovery** qui apparaissent invalides:
+
+#iptables -A INPUT -p 41 -j ACCEPT
+
+#ip6tables -A INPUT -p 41 -j ACCEPT
+
+# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP
+
+# ip6tables -A INPUT -m conntrack --ctstate INVALID -j DROP
+
+Pour IPV6, il faut rajouter la règle suivante qui permet de faire passer le protocol de découverte des ordinateurs sur le même réseau:
+
+# ip6tables -A INPUT -s fe80::/10 -p ipv6-icmp -j ACCEPT
+
+L'adresse fe80:: est l'adresse ipv6 valable uniquement sur le réseau local.
+
+On accepte les paquets **ping**:
+
+# iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
+
+# ip6tables -A INPUT -p icmpv6 -m conntrack --ctstate NEW -j ACCEPT
+
+On peut maintenant accepter les nouveaux paquets entrants. Les connexions entrantes doivent commencer avec un paquet **SYNC**. Elles seront rejetées si ce n'est pas le cas:
+
+# iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP
+# iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP
+
+# ip6tables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP
+# ip6tables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP
+
+On rejette les paquets du protocole **icmp unreachable**
+
+# iptables -A INPUT -j REJECT --reject-with icmp-proto-unreachable
+
+# iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
+
+# ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 128 -m conntrack --ctstate NEW -j ACCEPT
+
+# ip6tables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
+
+
+Pour IPV6, nous pouvons rajouter un filtrage pour le "kernel reverse path filter":
+
+# ip6tables -t raw -A PREROUTING -m rpfilter -j ACCEPT
+# ip6tables -t raw -A PREROUTING -j DROP
+
+On accepte les paquets **ssh** sur le port 22 (changez ce port si vous avez configuré vos ports différemment)
+
+# iptables -A TCP -p tcp --dport 22 -j ACCEPT
+
+# ip6tables -A TCP -p tcp --dport 22 -j ACCEPT
+
+
+Règles pour le DNS et NTP (ports 53 et 41)
+
+# iptables -A INPUT  -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT
+# iptables -A OUTPUT  -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT
+# iptables -A INPUT  -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT
+# iptables -A OUTPUT  -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT
+
+
+# iptables -A INPUT  -p udp -m state --state ESTABLISHED --sport 123 -j ACCEPT
+# iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 123 -j ACCEPT
+
+La même chose pour IPV6:
+
+# ip6tables -A INPUT  -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT
+# ip6tables -A OUTPUT  -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT
+# ip6tables -A INPUT  -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT
+# ip6tables -A OUTPUT  -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT
+
+
+# ip6tables -A INPUT  -p udp -m state --state ESTABLISHED --sport 123 -j ACCEPT
+# ip6tables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 123 -j ACCEPT
+
+
+
+Nous pouvons maintenant lister nos règles. Nous allons commencer par IPV4:
+
+Listons les règles actuelles, ensuite ajoutons 2 règles et sauvons celles-ci, puis listons le résultat. Vous pouvez faire de même pour toutes les règles.
+
+root@aijan:/etc/iptables# cat rules.v4
+# Generated by iptables-save v1.6.0 on Sun Feb 11 14:27:32 2018
+*filter
+:INPUT ACCEPT [491:50774]
+:FORWARD ACCEPT [0:0]
+:OUTPUT ACCEPT [267:23983]
+COMMIT
+# Completed on Sun Feb 11 14:27:32 2018
+
+root@aijan:/etc/iptables# iptables -N TCP
+root@aijan:/etc/iptables# iptables -N UDP
+
+root@aijan:/etc/iptables# service netfilter-persistent save
+[....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save
+run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save
+done.
+
+
+oot@aijan:/etc/iptables# cat rules.v4
+# Generated by iptables-save v1.6.0 on Sun Feb 11 14:28:24 2018
+*filter
+:INPUT ACCEPT [13:888]
+:FORWARD ACCEPT [0:0]
+:OUTPUT ACCEPT [8:944]
+:TCP - [0:0]
+:UDP - [0:0]
+COMMIT
+# Completed on Sun Feb 11 14:28:24 2018
+
+Ne pas oublier de valider la règle d'acceptation des connexions existantes AVANT d'entrer la règle INPUT DROP  sinon, vous perdez toute connexion avec votre serveur :)
+
+Il suffit de répéter pour les autres règles puis pour IPV6.
+```
+
+---
+
+Nous obtenons donc les règles suivantes:
+
+Pour IPV4:
+
+---
+
+```
+root@aijan:/etc/iptables# cat rules.v4
+# Generated by iptables-save v1.6.0 on Sun Feb 11 15:33:41 2018
+*filter
+:INPUT DROP [0:0]
+:FORWARD DROP [0:0]
+:OUTPUT ACCEPT [105:27592]
+:TCP - [0:0]
+:UDP - [0:0]
+-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+-A INPUT -i lo -j ACCEPT
+-A INPUT -m conntrack --ctstate INVALID -j DROP
+-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
+-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
+-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
+-A INPUT -j REJECT --reject-with icmp-proto-unreachable
+-A INPUT -p tcp -j REJECT --reject-with tcp-reset
+-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
+COMMIT
+# Completed on Sun Feb 11 15:33:41 2018
+root@aijan:/etc/iptables#
+```
+
+---
+
+Pour IPV6:
+
+---
+
+```
+
+root@aijan:/etc/iptables# cat rules.v6
+# Generated by ip6tables-save v1.6.0 on Sun Feb 11 15:33:41 2018
+*raw
+:PREROUTING ACCEPT [0:0]
+:OUTPUT ACCEPT [0:0]
+-A PREROUTING -m rpfilter -j ACCEPT
+-A PREROUTING -j DROP
+COMMIT
+# Completed on Sun Feb 11 15:33:41 2018
+# Generated by ip6tables-save v1.6.0 on Sun Feb 11 15:33:41 2018
+*filter
+:INPUT DROP [1:144]
+:FORWARD DROP [0:0]
+:OUTPUT ACCEPT [0:0]
+:TCP - [0:0]
+:UDP - [0:0]
+-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
+-A INPUT -i lo -j ACCEPT
+-A INPUT -p ipv6 -j ACCEPT
+-A INPUT -m conntrack --ctstate INVALID -j DROP
+-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
+-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
+-A INPUT -p tcp -j REJECT --reject-with tcp-reset
+-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 128 -m conntrack --ctstate NEW -j ACCEPT
+-A OUTPUT -p ipv6-icmp -j ACCEPT
+-A TCP -p tcp -m tcp --dport 22 -j ACCEPT
+COMMIT
+# Completed on Sun Feb 11 15:33:41 2018
+root@aijan:/etc/iptables#
+
+```
+
+---
+
+### Test DNS et du serveur de temps (avec iptables actif)
+
+---
+
+```
+
+root@aijan:/home/ericadmin# nslookup www.gnome.org
+Server:		192.168.111.254
+Address:	192.168.111.254#53
+
+Non-authoritative answer:
+www.gnome.org	canonical name = proxy.gnome.org.
+Name:	proxy.gnome.org
+Address: 209.132.180.168
+Name:	proxy.gnome.org
+Address: 209.132.180.180
+
+root@aijan:/home/ericadmin# timedatectl status
+      Local time: dim. 2018-04-01 12:26:57 CEST
+  Universal time: dim. 2018-04-01 10:26:57 UTC
+        RTC time: dim. 2018-04-01 10:26:58
+       Time zone: Europe/Paris (CEST, +0200)
+ Network time on: yes
+NTP synchronized: yes
+ RTC in local TZ: no
+```
+
+---
+
+Ça fonctionne.
+
+### Installation de **ufw**
+
+J'avais (ai) choisi **ufw**; je ne l'ai encore jamais utilisé, donc, c'est l'occasion! Finalement, pas un très bon plan, même si cela a l'air très facile en premier lieu ... je vais rester sur du **iptables** brut avec **_iptables-persistent_**.
+
+Son installation est détaillée dans le paragraphe ci-dessus.
+
+---
+
+```
+root@atom:/home/ericadmin# apt install ufw
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances
+Lecture des informations d'état... Fait
+Les NOUVEAUX paquets suivants seront installés :
+  ufw
+0 mis à jour, 1 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 164 ko dans les archives.
+Après cette opération, 848 ko d'espace disque supplémentaires seront utilisés.
+Réception de:1 http://deb.debian.org/debian stretch/main i386 ufw all 0.35-4 [164 kB]
+164 ko réceptionnés en 0s (1 239 ko/s)
+Préconfiguration des paquets...
+Sélection du paquet ufw précédemment désélectionné.
+(Lecture de la base de données... 31776 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../archives/ufw_0.35-4_all.deb ...
+Dépaquetage de ufw (0.35-4) ...
+Paramétrage de ufw (0.35-4) ...
+
+Creating config file /etc/ufw/before.rules with new version
+
+Creating config file /etc/ufw/before6.rules with new version
+
+Creating config file /etc/ufw/after.rules with new version
+
+Creating config file /etc/ufw/after6.rules with new version
+Created symlink /etc/systemd/system/multi-user.target.wants/ufw.service → /lib/systemd/system/ufw.service.
+Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u1) ...
+Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
+Traitement des actions différées (« triggers ») pour rsyslog (8.24.0-1) ...
+```
+
+---
+
+### Configuration de **ufw**
+
+Après installation, le pare-feu est inactif.
+
+---
+
+```
+root@atom:/home/ericadmin# ufw status
+Status: inactive
+root@atom:/home/ericadmin#
+```
+
+---
+
+Nous allons autoriser les connexions **ssh** et **ntp**, seuls services en place pour l'instant.
+
+---
+
+```
+root@atom:/home/ericadmin# ufw allow 22
+Rules updated
+Rules updated (v6)
+root@atom:/home/ericadmin#
+
+root@atom:/etc/fail2ban# ufw allow ntp
+Rule added
+Rule added (v6)
+```
+
+---
+
+### Activation du pare-feu:
+
+---
+
+```
+root@atom:/home/ericadmin# ufw enable
+Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
+Firewall is active and enabled on system startup
+root@atom:/home/ericadmin#
+```
+
+---
+
+### Vérification:
+
+---
+
+```
+root@atom:/home/ericadmin# ufw status
+Status: active
+
+To                         Action      From
+--                         ------      ----
+22                         ALLOW       Anywhere
+123                        ALLOW       Anywhere
+22 (v6)                    ALLOW       Anywhere (v6)
+123 (v6)                   ALLOW       Anywhere (v6)
+
+root@atom:/home/ericadmin#
+```
+
+---
+
+Les connexions **ssh** et **ntp** sont autorisées, en **IPV4** et **IPV6**.
+
+Nous ajouterons des règles en fonction des services utilisés.
+
+### Pour désactiver le pare-feu:
+
+---
+
+```
+ufw disable
+```
+
+---
+
+### Activation du logging des actions de **ufw**
+
+---
+
+```
+root@atom:/home/ericadmin# ufw logging on
+Logging enabled
+root@atom:/home/ericadmin#
+```
+
+---
+
+Vous pouvez voiur l'ensemble des commandes de **ufw** en tapant:
+
+---
+
+```
+root@atom:/home/ericadmin# ufw --help
+
+Usage: ufw COMMAND
+
+Commands:
+ enable                          enables the firewall
+ disable                         disables the firewall
+ default ARG                     set default policy
+ logging LEVEL                   set logging to LEVEL
+ allow ARGS                      add allow rule
+ deny ARGS                       add deny rule
+ reject ARGS                     add reject rule
+ limit ARGS                      add limit rule
+ delete RULE|NUM                 delete RULE
+ insert NUM RULE                 insert RULE at NUM
+ route RULE                      add route RULE
+ route delete RULE|NUM           delete route RULE
+ route insert NUM RULE           insert route RULE at NUM
+ reload                          reload firewall
+ reset                           reset firewall
+ status                          show firewall status
+ status numbered                 show firewall status as numbered list of RULES
+ status verbose                  show verbose firewall status
+ show ARG                        show firewall report
+ version                         display version information
+
+Application profile commands:
+ app list                        list application profiles
+ app info PROFILE                show information on PROFILE
+ app update PROFILE              update PROFILE
+ app default ARG                 set default application policy
+
+root@atom:/home/ericadmin#
+```
+
+---
+
+Il faut re-tester la connectivité en IPV4 et IPV6
+
+1. Serveur -> extérieur
+2. Extérieur -> serveur
+
+On peut utiliser l'adresse **ipv6.google.com** pour vérifier la connexion IPV6 en dehors du réseau local.
+

+ 97 - 0
docs/6-six.md

@@ -0,0 +1,97 @@
+
+## Contrer les attaques de _brute-force_ avec **fail2ban**
+
+Fail2ban est un programme qui surveille les logs des services en place et détecte les tentatives d'attaques _brute-force_. Il mets automatiquement en quarantaine les IP attaquantes.
+
+### Installation
+
+---
+
+```
+root@atom:/home/ericadmin# apt install fail2ban
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  python3-pyinotify python3-systemd whois
+Paquets suggérés :
+  monit python-pyinotify-doc
+Les NOUVEAUX paquets suivants seront installés :
+  fail2ban python3-pyinotify python3-systemd whois
+0 mis à jour, 4 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 423 ko dans les archives.
+Après cette opération, 1 897 ko d'espace disque supplémentaires seront utilisés.
+Souhaitez-vous continuer ? [O/n] o
+Réception de:1 http://deb.debian.org/debian stretch/main i386 fail2ban all 0.9.6-2 [288 kB]
+Réception de:2 http://deb.debian.org/debian stretch/main i386 python3-pyinotify all 0.9.6-1 [26,9 kB]
+Réception de:3 http://deb.debian.org/debian stretch/main i386 python3-systemd i386 233-1 [34,4 kB]
+Réception de:4 http://deb.debian.org/debian stretch/main i386 whois i386 5.2.17~deb9u1 [73,8 kB]
+423 ko réceptionnés en 0s (1 996 ko/s)
+Sélection du paquet fail2ban précédemment désélectionné.
+(Lecture de la base de données... 31956 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../fail2ban_0.9.6-2_all.deb ...
+Dépaquetage de fail2ban (0.9.6-2) ...
+Sélection du paquet python3-pyinotify précédemment désélectionné.
+Préparation du dépaquetage de .../python3-pyinotify_0.9.6-1_all.deb ...
+Dépaquetage de python3-pyinotify (0.9.6-1) ...
+Sélection du paquet python3-systemd précédemment désélectionné.
+Préparation du dépaquetage de .../python3-systemd_233-1_i386.deb ...
+Dépaquetage de python3-systemd (233-1) ...
+Sélection du paquet whois précédemment désélectionné.
+Préparation du dépaquetage de .../whois_5.2.17~deb9u1_i386.deb ...
+Dépaquetage de whois (5.2.17~deb9u1) ...
+Paramétrage de fail2ban (0.9.6-2) ...
+Created symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service → /lib/systemd/system/fail2ban.service.
+Paramétrage de whois (5.2.17~deb9u1) ...
+Paramétrage de python3-systemd (233-1) ...
+Traitement des actions différées (« triggers ») pour systemd (232-25+deb9u1) ...
+Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
+Paramétrage de python3-pyinotify (0.9.6-1) ...
+root@atom:/home/ericadmin#
+```
+
+---
+
+### Paramétrage de **fail2ban**
+
+Pour fail2ban, il n'a rien à configurer pour l'instant. Seul ssh est surveillé.
+
+---
+
+Ici, pour l'utilisation avec ufw.
+
+Avec Debian, le fichier à configurer est: /etc/fail2ban/jail.d/defaults-debian.conf
+
+Par défaut, il contient
+
+---
+
+```
+[sshd]
+enabled = true
+```
+
+---
+
+Il va falloir l'éditer (n'oubliez pas de faire une sauvegarde avant!), pour obtenir ceci:
+
+---
+
+```
+[sshd]
+enabled = false
+
+[ssh-with-ufw]
+enabled = true
+port = 22
+filter = sshd
+action = ufw[application="OpenSSH", blocktype=reject]
+logpath = /var/log/auth.log
+maxretry = 3
+```
+
+---
+
+En effet, **fail2ban** fonctionne par défaut avec **iptables**. Il faut donc activer le fonctionnement avec **ufw**.
+
+On crée une nouvelle règle, appelée [ssh-with-ufw]. L'action **ufw** existe déjà par défaut dans l'installation.

+ 335 - 0
docs/7-sept.md

@@ -0,0 +1,335 @@
+
+## Installation d'un serveur de courrier basique
+
+Debian installe par défaut **exim4**. Nous allons le remplacer par postix (que nous étendrons ensuite pour avoir un serveur de courrier complet.
+
+Pensez à ouvrir les ports **25** du firewall.
+
+```
+apt install postfix
+```
+
+On supprime complètement **exim4** (fichiers de configuration):
+
+```
+apt remove --purge exim4*
+```
+
+On teste l'envoi de messages **entrants et sortants** après avoir chargé les programmes de mail utilitaires (sur le serveur et sur un autre poste):
+
+Chargement des utilitaires sur un poste extérieur.
+Exécutez la même commande sur le poste serveur en cours de configuration.
+
+```
+root@adara:~# apt install mailutils
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libmariadbclient18 libntlm0 libpython2.7 libpython2.7-minimal
+  libpython2.7-stdlib mailutils-common mysql-common
+Paquets suggérés :
+  mailutils-mh mailutils-doc
+Les NOUVEAUX paquets suivants seront installés :
+  guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libmariadbclient18 libntlm0 libpython2.7 libpython2.7-minimal
+  libpython2.7-stdlib mailutils mailutils-common mysql-common
+0 mis à jour, 15 nouvellement installés, 0 à enlever et 0 non mis à jour.
+Il est nécessaire de prendre 9 575 ko dans les archives.
+Après cette opération, 39,0 Mo d'espace disque supplémentaires seront utilisés.
+Souhaitez-vous continuer ? [O/n] o
+Réception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 libgc1c2 amd64 1:7.4.2-8 [208 kB]
+Réception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libltdl7 amd64 2.4.6-2 [389 kB]
+Réception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 guile-2.0-libs amd64 2.0.13+1-4 [2 232 kB]
+Réception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 libfribidi0 amd64 0.19.7-1+b1 [45,7 kB]
+Réception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 libntlm0 amd64 1.4-8 [20,9 kB]
+Réception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 libgsasl7 amd64 1.8.0-8+b2 [207 kB]
+Réception de:7 http://debian.mirrors.ovh.net/debian stretch/main amd64 libkyotocabinet16v5 amd64 1.2.76-4.2+b1 [298 kB]
+Réception de:8 http://debian.mirrors.ovh.net/debian stretch/main amd64 mailutils-common all 1:3.1.1-1 [642 kB]
+Réception de:9 http://debian.mirrors.ovh.net/debian stretch/main amd64 mysql-common all 5.8+1.0.2 [5 608 B]
+Réception de:10 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmariadbclient18 amd64 10.1.26-0+deb9u1 [779 kB]
+Réception de:11 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7-minimal amd64 2.7.13-2+deb9u2 [389 kB]
+Réception de:12 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7-stdlib amd64 2.7.13-2+deb9u2 [1 896 kB]
+Réception de:13 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7 amd64 2.7.13-2+deb9u2 [1 072 kB]
+Réception de:14 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmailutils5 amd64 1:3.1.1-1 [817 kB]
+Réception de:15 http://debian.mirrors.ovh.net/debian stretch/main amd64 mailutils amd64 1:3.1.1-1 [573 kB]
+9 575 ko réceptionnés en 0s (11,2 Mo/s)
+Sélection du paquet libgc1c2:amd64 précédemment désélectionné.
+(Lecture de la base de données... 22737 fichiers et répertoires déjà installés.)
+Préparation du dépaquetage de .../00-libgc1c2_1%3a7.4.2-8_amd64.deb ...
+Dépaquetage de libgc1c2:amd64 (1:7.4.2-8) ...
+Sélection du paquet libltdl7:amd64 précédemment désélectionné.
+Préparation du dépaquetage de .../01-libltdl7_2.4.6-2_amd64.deb ...
+Dépaquetage de libltdl7:amd64 (2.4.6-2) ...
+Sélection du paquet guile-2.0-libs:amd64 précédemment désélectionné.
+Préparation du dépaquetage de .../02-guile-2.0-libs_2.0.13+1-4_amd64.deb ...
+Dépaquetage de guile-2.0-libs:amd64 (2.0.13+1-4) ...
+Sélection du paquet libfribidi0:amd64 précédemment désélectionné.
+Préparation du dépaquetage de .../03-libfribidi0_0.19.7-1+b1_amd64.deb ...
+Dépaquetage de libfribidi0:amd64 (0.19.7-1+b1) ...
+Sélection du paquet libntlm0:amd64 précédemment désélectionné.
+Préparation du dépaquetage de .../04-libntlm0_1.4-8_amd64.deb ...
+Dépaquetage de libntlm0:amd64 (1.4-8) ...
+Sélection du paquet libgsasl7 précédemment désélectionné.
+Préparation du dépaquetage de .../05-libgsasl7_1.8.0-8+b2_amd64.deb ...
+Dépaquetage de libgsasl7 (1.8.0-8+b2) ...
+Sélection du paquet libkyotocabinet16v5:amd64 précédemment désélectionné.
+Préparation du dépaquetage de .../06-libkyotocabinet16v5_1.2.76-4.2+b1_amd64.deb ...
+Dépaquetage de libkyotocabinet16v5:amd64 (1.2.76-4.2+b1) ...
+Sélection du paquet mailutils-common précédemment désélectionné.
+Préparation du dépaquetage de .../07-mailutils-common_1%3a3.1.1-1_all.deb ...
+Dépaquetage de mailutils-common (1:3.1.1-1) ...
+Sélection du paquet mysql-common précédemment désélectionné.
+Préparation du dépaquetage de .../08-mysql-common_5.8+1.0.2_all.deb ...
+Dépaquetage de mysql-common (5.8+1.0.2) ...
+Sélection du paquet libmariadbclient18:amd64 précédemment désélectionné.
+Préparation du dépaquetage de .../09-libmariadbclient18_10.1.26-0+deb9u1_amd64.deb ...
+Dépaquetage de libmariadbclient18:amd64 (10.1.26-0+deb9u1) ...
+Sélection du paquet libpython2.7-minimal:amd64 précédemment désélectionné.
+Préparation du dépaquetage de .../10-libpython2.7-minimal_2.7.13-2+deb9u2_amd64.deb ...
+Dépaquetage de libpython2.7-minimal:amd64 (2.7.13-2+deb9u2) ...
+Sélection du paquet libpython2.7-stdlib:amd64 précédemment désélectionné.
+Préparation du dépaquetage de .../11-libpython2.7-stdlib_2.7.13-2+deb9u2_amd64.deb ...
+Dépaquetage de libpython2.7-stdlib:amd64 (2.7.13-2+deb9u2) ...
+Sélection du paquet libpython2.7:amd64 précédemment désélectionné.
+Préparation du dépaquetage de .../12-libpython2.7_2.7.13-2+deb9u2_amd64.deb ...
+Dépaquetage de libpython2.7:amd64 (2.7.13-2+deb9u2) ...
+Sélection du paquet libmailutils5:amd64 précédemment désélectionné.
+Préparation du dépaquetage de .../13-libmailutils5_1%3a3.1.1-1_amd64.deb ...
+Dépaquetage de libmailutils5:amd64 (1:3.1.1-1) ...
+Sélection du paquet mailutils précédemment désélectionné.
+Préparation du dépaquetage de .../14-mailutils_1%3a3.1.1-1_amd64.deb ...
+Dépaquetage de mailutils (1:3.1.1-1) ...
+Paramétrage de mysql-common (5.8+1.0.2) ...
+update-alternatives: utilisation de « /etc/mysql/my.cnf.fallback » pour fournir « /etc/mysql/my.cnf » (my.cnf) en mode automatique
+Paramétrage de libgc1c2:amd64 (1:7.4.2-8) ...
+Paramétrage de libmariadbclient18:amd64 (10.1.26-0+deb9u1) ...
+Paramétrage de libntlm0:amd64 (1.4-8) ...
+Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ...
+Paramétrage de libltdl7:amd64 (2.4.6-2) ...
+Paramétrage de libfribidi0:amd64 (0.19.7-1+b1) ...
+Traitement des actions différées (« triggers ») pour man-db (2.7.6.1-2) ...
+Paramétrage de libpython2.7-minimal:amd64 (2.7.13-2+deb9u2) ...
+Paramétrage de libkyotocabinet16v5:amd64 (1.2.76-4.2+b1) ...
+Paramétrage de libpython2.7-stdlib:amd64 (2.7.13-2+deb9u2) ...
+Paramétrage de mailutils-common (1:3.1.1-1) ...
+Paramétrage de libgsasl7 (1.8.0-8+b2) ...
+Paramétrage de guile-2.0-libs:amd64 (2.0.13+1-4) ...
+Paramétrage de libpython2.7:amd64 (2.7.13-2+deb9u2) ...
+Paramétrage de libmailutils5:amd64 (1:3.1.1-1) ...
+Paramétrage de mailutils (1:3.1.1-1) ...
+update-alternatives: utilisation de « /usr/bin/frm.mailutils » pour fournir « /usr/bin/frm » (frm) en mode automatique
+update-alternatives: utilisation de « /usr/bin/from.mailutils » pour fournir « /usr/bin/from » (from) en mode automatique
+update-alternatives: utilisation de « /usr/bin/messages.mailutils » pour fournir « /usr/bin/messages » (messages) en mode automatique
+update-alternatives: utilisation de « /usr/bin/movemail.mailutils » pour fournir « /usr/bin/movemail » (movemail) en mode automatique
+update-alternatives: utilisation de « /usr/bin/readmsg.mailutils » pour fournir « /usr/bin/readmsg » (readmsg) en mode automatique
+update-alternatives: utilisation de « /usr/bin/dotlock.mailutils » pour fournir « /usr/bin/dotlock » (dotlock) en mode automatique
+update-alternatives: utilisation de « /usr/bin/mail.mailutils » pour fournir « /usr/bin/mailx » (mailx) en mode automatique
+Traitement des actions différées (« triggers ») pour libc-bin (2.24-11+deb9u3) ...
+root@adara:~# 
+```
+### Test d'envoi d'un utilisateur du serveur à l'autre
+
+1. Root -> ericadmin
+```
+root@atom:/etc/fail2ban# mail ericadmin
+Cc: 
+Subject: Essai 1
+Essai 1
+.
+
+ericadmin@atom:~/bin$ mailx
+"/var/mail/ericadmin": 1 message 1 nouveau
+>N   1 root               lun. nov. 26 09:  14/451   Essai 1
+? 1
+Return-Path: <root@atom.yojik.net>
+X-Original-To: ericadmin@atom.yojik.net
+Delivered-To: ericadmin@atom.yojik.net
+Received: by atom.yojik.net (Postfix, from userid 0)
+	id 3AE0F460033; Mon, 26 Nov 2018 09:26:26 +0100 (CET)
+To: <ericadmin@atom.yojik.net>
+Subject: Essai 1
+X-Mailer: mail (GNU Mailutils 3.1.1)
+Message-Id: <20181126082626.3AE0F460033@atom.yojik.net>
+Date: Mon, 26 Nov 2018 09:26:26 +0100 (CET)
+From: root@atom.yojik.net (root)
+
+Essai 1
+.
+? q
+1 message sauvegardé dans /home/ericadmin/mbox
+0 message conservé dans /var/mail/ericadmin
+
+
+```
+2. ericadmin -> root
+```
+ericadmin@atom:~/bin$ mail root
+Cc: 
+Subject: Essai 2
+Essai 2
+.
+
+
+root@atom:/etc/fail2ban# mailx
+"/var/mail/root": 1 message 1 nouveau
+>N   1 Eric Streit        lun. nov. 26 09:  14/456   Essai 2
+? 1
+Return-Path: <ericadmin@atom.yojik.net>
+X-Original-To: root@atom.yojik.net
+Delivered-To: root@atom.yojik.net
+Received: by atom.yojik.net (Postfix, from userid 1000)
+	id 46220460036; Mon, 26 Nov 2018 09:27:04 +0100 (CET)
+To: <root@atom.yojik.net>
+Subject: Essai 2
+X-Mailer: mail (GNU Mailutils 3.1.1)
+Message-Id: <20181126082704.46220460036@atom.yojik.net>
+Date: Mon, 26 Nov 2018 09:27:04 +0100 (CET)
+From: ericadmin@atom.yojik.net (Eric Streit)
+
+Essai 2
+.
+
+```
+L'envoi des messages  entre utilisateurs du serveur serveur marche comme il faut.
+
+### Première étape de configuration de postfix
+
+Modifiez la ligne suivante dans /etc/postfix/main.cf:
+> mydestination = $myhostname, yojik.net, atom.yojik.net, localhost.yojik.net, localhost
+
+et relancez postfix avec:
+> service postfix restart
+
+### Test d'envoi de messages à partir de ce serveur sur mon serveur principal
+
+Envoi d'un message sur mon compte de messagerie en .eu:
+
+```
+ericadmin@atom:~$ echo "Et voilà un petit message" | mail -s "test du courrier sortant" ericadmin@yojik.eu
+```
+
+Le message est bien reçu.
+
+Vérifiez dans le dossier **spam**: comme il n'y a aucune sécurisation du serveur de courrier (pour l'instant), gmail ou autre, soit refuse de courrier, soit le met dans les spams.
+
+### Test d'envoi de messages à partir d'un poste extérieur
+
+
+Envoi d'un message à partir du poste extérieur **aldebaran** (n'oubliez pas d'ouvrir le port 25 dans les règles iptables ...):
+
+```
+eric@aldebaran:~$ echo "Et voilà un petit message" | mail -s "test du courrier 1" ericadmin@atom.yojik.net
+```
+
+Test de réception sur le serveur:
+
+```
+ericadmin@atom:~$ mailx
+"/var/mail/ericadmin": 1 message 1 nouveau
+>N   1 Eric Streit        dim. nov. 11 13:  16/724   test du courrier 1
+? 1
+Return-Path: <eric@aldebaran.yojik.net>
+X-Original-To: ericadmin@atom.yojik.net
+Delivered-To: ericadmin@atom.yojik.net
+Received: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:e5c4:aee0:d068:64f6])
+	by atom.yojik.net (Postfix) with ESMTP id 0B3CF12085A
+	for <ericadmin@atom.yojik.net>; Sun, 11 Nov 2018 13:09:08 +0100 (CET)
+Received: by aldebaran.yojik.net (Postfix, from userid 1000)
+	id 40DF310CAC3; Sun, 11 Nov 2018 13:09:07 +0100 (CET)
+Subject: test du courrier 1
+To: <ericadmin@atom.yojik.net>
+X-Mailer: mail (GNU Mailutils 3.1.1)
+Message-Id: <20181111120907.40DF310CAC3@aldebaran.yojik.net>
+Date: Sun, 11 Nov 2018 13:09:07 +0100 (CET)
+From: eric@aldebaran.yojik.net (Eric Streit)
+
+Et voilà un petit message
+? q
+1 message sauvegardé dans /home/ericadmin/mbox
+0 message conservé dans /var/mail/ericadmin
+```
+
+Le message est bien reçu par le serveur de mail de yojik.net. Vous pouvez essayer aussi sur une adresse gmail par exemple.
+
+## Mise à jour du fichier /etc/aliases
+
+Ce fichier sert à rediriger toutes les adresses émail comme **abuse**, **webmaster**, **root** vers un utilisateur **administrateur** de la machine, root puis vers moi **ericadmin**
+
+```
+# /etc/aliases
+mailer-daemon: postmaster
+postmaster: root
+nobody: root
+hostmaster: root
+usenet: root
+news: root
+webmaster: root
+www: root
+ftp: root
+abuse: root
+noc: root
+security: root
+root: ericadmin
+```
+
+Il faut lancer la commande **newaliases** pour générer le fichier.db utile à Postfix et on demande à Postfix de recharger ses fichiers.
+
+
+```
+root@adara:~# newaliases
+oot@adara:~# service postfix reload
+root@adara:~# 
+```
+### Test de l'envoi à root pour vérifier la redirection
+
+```
+ericadmin@atom:~/bin$ mail root
+Cc: 
+Subject: Essai 5
+Essai 5
+.
+ericadmin@atom:~/bin$ mailx
+"/var/mail/ericadmin": 4 messages 1 nouveau 3 non lus
+ U   1 Eric Streit        lun. nov. 26 09:  19/768   test du courrier 1
+ U   2 Eric Streit        lun. nov. 26 09:  18/743   test du courrier 4
+ U   3 Eric Streit        lun. nov. 26 09:  18/743   test du courrier 4
+>N   4 Eric Streit        lun. nov. 26 09:  14/456   Essai 5
+? 
+```
+Tout fonctionne: le message a bien été redirigé vers ericadmin comme spécifié dans /etc/aliases.
+
+## Le fichier /etc/mailname
+
+Il contient le nom du serveur de courrier pour la machine, ici, c'est elle-même:
+
+
+```
+root@aijan:/home/ericadmin# cat /etc/mailname
+aijan.yojik.net
+```
+
+
+Le serveur de courrier n'autorise que les utilisateurs (users) de la machine, ici, ericadmin et root (ainsi que les alias enregistrés précédemment).
+
+
+```
+ericadmin@aijan:~$ mailx
+"/var/mail/ericadmin": 2 messages 2 nouveaux
+>N   1 Eric Streit        dim. mai 20 08:4  17/698   essai d'envoi à root
+ N   2 Eric Streit        dim. mai 20 08:5  17/717   un autre essai
+? 
+```
+
+Pour l'envoi à partir d'un poste extérieur, pensez à utiliser l'adresse mail qui contient le nom complet de votre machine:
+
+> toto@atom.yojik.net
+
+et non
+
+> toto.yojik.net
+
+Les domaines ne sont pas encore configurés dans postfix.
+
+L'envoi à **root** et à **ericadmin** à partir d'un autre poste du réseau fonctionne parfaitement: le mail à destination de **root** est redirigé vers ericadmin comme stipulé dans **/etc/aliases**.
+
+Les messages sortants sont parfaitement gérés et reçus par les serveurs de courrier extérieurs.

+ 272 - 0
docs/8-huit.md

@@ -0,0 +1,272 @@
+
+
+# Installation du serveur DNS
+
+Nous allons installer **bind**. 
+
+
+---
+
+```
+root@aijan:/home/ericadmin# apt install bind9
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  bind9utils libirs141
+...
+
+
+root@aijan:/home/ericadmin# service bind9 start
+root@aijan:/home/ericadmin# netstat -tlpn
+Connexions Internet actives (seulement serveurs)
+Proto Recv-Q Send-Q Adresse locale          Adresse distante        Etat        PID/Program name    
+tcp        0      0 192.168.111.240:53      0.0.0.0:*               LISTEN      13815/named         
+tcp        0      0 127.0.0.1:53            0.0.0.0:*               LISTEN      13815/named         
+tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      594/sshd            
+tcp        0      0 127.0.0.1:953           0.0.0.0:*               LISTEN      13815/named         
+tcp        0      0 0.0.0.0:25              0.0.0.0:*               LISTEN      803/master          
+tcp6       0      0 :::53                   :::*                    LISTEN      13815/named         
+tcp6       0      0 :::22                   :::*                    LISTEN      594/sshd            
+tcp6       0      0 ::1:953                 :::*                    LISTEN      13815/named         
+tcp6       0      0 :::25                   :::*                    LISTEN      803/master          
+root@aijan:/home/ericadmin# 
+
+
+```
+
+---
+
+Bien, bind a démarré et écoute sur les ports 53 et 953, en IPV4 et IPV6. Il nous reste à configurer les zones et à ouvrir les ports (firewall). Je vais utiliser comme serveur **dns** secondaire pour la zone **yojik.net** le serveur que j'utilise déjà pour la zone **yojik.eu**.
+
+Nous configurerons le serveur dns local pour qu'il transfère les zones automatiquement vers notre serveur dns secondaire.
+
+Voilà la structure générale de mes serveurs DNS:
+
+
+adara.yojik.eu: serveur DNS primaire pour le domaine yojik.eu
+
+polis.yojik.eu: serveur DNS secondaire pour le domaine yojik.eu
+                serveur DNS secondaire pour le domaine yojik.net
+
+aijan.yojik.net: serveur DNS primaire pour le site yojik.net
+
+Ce dernier serveur déclarera l'ensemble des machines et serveurs du domaine yojik.net. (ce sont les machines de bureau/portables ainsi que le serveurs hébergés à la maison.)
+
+Les enregistrements **glue** seront renseignés chez mon registrar (OVH dans mon cas). Les serveurs DNS seront également déclarés chez ce registrar.
+
+Notre zone yojik.net est déclarée dans le fichier **/etc/bind/named.conf.local**. (en faire une copie de sauvegarde!)
+
+Voici son contenu avant modification:
+
+---
+
+```
+//
+// Do any local configuration here
+//
+
+// Consider adding the 1918 zones here, if they are not used in your
+// organization
+//include "/etc/bind/zones.rfc1918";
+
+```
+
+---
+
+Contenu après ajout de la zone yojik.net:
+
+
+---
+
+```
+zone "yojik.net" {
+    type master;
+    file "/etc/bind/db.yojik.net";
+};
+
+```
+
+---
+
+Dans tous les tutorials, vous verrez la déclaration des zones inverses: après de nombreux échanges avec des spécialistes, il s'avère que ce n'est pas nécessaire, car mes serveurs DNS ne seront jamais interrogés pour la résolution inverse: pour cela, il faudrait que mon registrar me délègue la gestion de la zone. Je n'ai qu'une adresse IPV4 associée à ce domaine et pas de délégation.
+
+Création du fichier de zone **db.yojik.net** dans le répertoire **/etc/bind**.
+
+---
+
+```
+root@aijan:/etc/bind# vim db.yojik.net
+
+root@aijan:/etc/bind# cat db.yojik.net
+$TTL 86400
+$ORIGIN yojik.net.
+
+@    IN    SOA  aijan.yojik.net. hostmaster.yojik.net. (
+                2018052001  ; serial à changer à chaque modification
+                7200        ; refresh, 12h
+                3600        ; retry, 1h
+                1209600     ; expire
+                86400 )     ; negative cache, 24h
+
+
+; nameservers
+        IN      NS      aijan.yojik.net.
+        IN      NS      polis.yojik.eu.
+
+
+
+;mail server
+        IN      MX      10      aijan.yojik.net.
+
+; domain hosts
+yojik.net.      IN	    A	    82.64.48.5
+yojik.net.      IN	    AAAA	2a01:e0a:54:c220:3aea:a7ff:fea6:cf93
+aijan           IN	    A	    82.64.48.5
+aijan           IN	    AAAA	2a01:e0a:54:c220:3aea:a7ff:fea6:cf93
+```
+
+---
+
+
+On relance bind et on teste en local:
+
+---
+
+```
+root@aijan:/home/ericadmin# service bind9 restart
+root@aijan:/home/ericadmin# nslookup aijan.yojik.net localhost
+Server:		localhost
+Address:	::1#53
+
+Name:	aijan.yojik.net
+Address: 82.64.48.5
+
+root@aijan:/home/ericadmin# 
+
+```
+
+---
+
+Ça marche!
+Test de notre enregistrement MX (mail) avec **dig**:
+
+---
+
+```
+oot@aijan:/etc/bind# dig @localhost aijan.yojik.net MX
+
+; <<>> DiG 9.10.3-P4-Debian <<>> @localhost aijan.yojik.net MX
+; (2 servers found)
+;; global options: +cmd
+;; Got answer:
+;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21275
+;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
+
+;; OPT PSEUDOSECTION:
+; EDNS: version: 0, flags:; udp: 4096
+;; QUESTION SECTION:
+;aijan.yojik.net.		IN	MX
+
+;; AUTHORITY SECTION:
+yojik.net.		86400	IN	SOA	aijan.yojik.net. hostmaster.yojik.net. 2018052003 7200 3600 1209600 86400
+
+;; Query time: 0 msec
+;; SERVER: ::1#53(::1)
+;; WHEN: Sun May 20 10:27:17 CEST 2018
+;; MSG SIZE  rcvd: 91
+
+```
+
+---
+
+Il nous reste plusieurs éléments à configurer pour que notre serveur dns soit pris en compte.
+
+1. Configurer notre box pour rediriger les requêtes extérieures DNS sur notre serveur DNS personnel.
+2. Mettre à jour la configuration de nos enregistrements chez notre registrar.
+3. Ajouter notre zone à notre serveur DNS secondaire (polis.yojik.eu) et mise à jour de la clef de connexion.
+
+Fichier /etc/bind/conf.named.local
+
+---
+
+```
+zone    "yojik.eu" {
+        type slave;
+        file    "db.yojik.eu.local";
+        masters  { 91.121.72.10; };
+};
+
+zone    "yojik.net" {
+        type slave;
+        file    "db.yojik.net.local";
+        masters  { 82.64.48.5; };
+};
+
+```
+
+---
+
+
+### Configuration des options: fichier /etc/bind/named.conf.options
+
+---
+
+```
+options {
+        directory "/var/cache/bind";
+
+        // If there is a firewall between you and nameservers you want
+        // to talk to, you may need to fix the firewall to allow multiple
+        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
+
+        // If your ISP provided one or more IP addresses for stable
+        // nameservers, you probably want to use them as forwarders.
+        // Uncomment the following block, and insert the addresses replacing
+        // the all-0's placeholder.
+
+        // forwarders {
+        //      0.0.0.0;
+        // };
+
+        //========================================================================
+        // If BIND logs error messages about the root key being expired,
+        // you will need to update your keys.  See https://www.isc.org/bind-keys
+        //========================================================================
+        dnssec-validation auto;
+
+        auth-nxdomain no;    # conform to RFC1035
+        listen-on-v6 { any; };
+        listen-on { any; };
+        allow-update { none; };
+        allow-recursion { 127.0.0.1; ::1; 91.121.72.10;2001:41d0:1:7d0a::1; 37.187.3.182; 2001:41d0:a:3b6::1; };
+        allow-transfer { 37.187.3.182; 2001:41d0:a:3b6::1; };
+        version "BIND";
+
+
+
+};
+
+```
+
+---
+
+Pensez à vérifier que la clef située dans le fichier: /etc/bind/rndc.key est identique sur votre serveur primaire et secondaire.
+
+### Configuration de votre **box** et des enregistrements de votre registrar
+
+Cela étant très dépendant de chaque registrar et de chaque **box**, je vous laisse chercher sur le net les informations utiles. Sachez tout de même que peu de fournisseurs d'internet autorisent l'installation d'un serveur émail personnel. I8l vous faudra souvent attendre un peu avant que la configuration ne soit prise en compte chez votre registrar. 
+
+
+Vérification de la config DNS:
+
+Allez sur le site **https://toolbox.googleapps.com/apps/dig/** pour tester votre configuration.
+
+### Configuration du reverse DNS
+
+Si vous hébergez votre serveur "chez vous", vous devrez configurer le reverse DNS dans la page d'administration de votre ligne Internet.
+
+Pour le FAI Free, allez sur la page: "Personnalisez mon reverse DNS", et mettez votre nom de doamine dans le champ adéquoit.
+
+Il faut quelques heures pour que la propagation se fasse.
+

+ 228 - 0
docs/9-neuf.md

@@ -0,0 +1,228 @@
+## Installation d'un serveur web
+
+Nous allons installer un serveur Web: **Apache**. C'est juste celui que je connais le mieux. **Nginx** est une possible alternative très prisée et guère plus compliquée à mettre en oeuvre.
+
+
+
+```
+root@aijan:/etc/bind# apt install apache2
+Lecture des listes de paquets... Fait
+Construction de l'arbre des dépendances       
+Lecture des informations d'état... Fait
+The following additional packages will be installed:
+  apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0
+...
+```
+
+
+
+Test de notre serveur:
+
+C'est bon, voilà une image de la page d'acceuil :
+
+![Le serveur apache](Images/apache.png)
+
+Ne pas oublier d'ouvrir les ports du firewall: port 80 et 443 en TCP et UDP.
+
+Lignes à rajouter à firewall.sh:
+
+
+
+```
+    # HTTP + HTTPS Out
+    $IPT -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
+    $IPT -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
+
+    $IP6T -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT
+    $IP6T -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT
+    
+    # HTTP + HTTPS In
+    $IPT -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
+    $IPT -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
+
+    $IP6T -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
+    $IP6T -t filter -A INPUT -p tcp --dport 443 -j ACCEPT
+
+```
+
+
+
+### Sauvegarde de notre nouvelle configuration
+
+
+
+```
+root@aijan:#cd /home/ericadmin/bin/
+root@aijan:/home/ericadmin/bin#./firewall.sh  restart
+root@aijan:/home/ericadmin/bin#service netfilter-persistent save
+```
+
+
+
+
+### Création des hôtes virtuels (virtual hosts)
+
+3 hôtes virtuels à créer:
+
+> yojik.net
+> www.yojik.net
+> yazik.yojik.net
+
+
+
+Créez  2 fichiers d'hôtes virtuels. Exemple de fichier:
+
+**Virtualhost:  www.yojik.net**
+
+
+
+```
+<VirtualHost *:80>
+
+ServerAdmin webmaster@yojik.net
+ServerName www.yojik.net
+
+DocumentRoot /var/www/html/yojiknet/
+
+<Directory "/var/www/html/yojiknet/index.html">
+        Options Indexes MultiViews
+        AllowOverride FileInfo AuthConfig Indexes
+        Order allow,deny
+        allow from all
+        Require all granted
+</Directory>
+
+	ErrorLog ${APACHE_LOG_DIR}/error.log
+	CustomLog ${APACHE_LOG_DIR}/access.log combined
+
+LogLevel warn
+
+</VirtualHost>
+```
+
+
+
+**Virtualhost: yazik.yojik.net**
+
+
+
+```
+<VirtualHost *:80>
+
+ServerAdmin webmaster@yojik.net
+ServerName yazik.yojik.net
+
+DocumentRoot /var/www/html/yaziknet/
+
+<Directory "/var/www/html/yaziknet/index.html">
+        Options Indexes MultiViews
+        AllowOverride FileInfo AuthConfig Indexes
+        Order allow,deny
+        allow from all
+        Require all granted
+</Directory>
+
+	ErrorLog ${APACHE_LOG_DIR}/error.log
+	CustomLog ${APACHE_LOG_DIR}/access.log combined
+
+LogLevel warn
+
+</VirtualHost>
+```
+
+
+
+
+Validez-les avec:
+
+> a2ensite le_nom_du_fichier (a2ensite site1 site2 (pour moi))
+
+On recharge apache2 pour la prise en compte de nos 2 sites.
+
+> service apache2 reload
+
+
+### Création des fichiers html
+
+Créez 2 répertoires sous /var/www/html:
+
+> mkdir /var/www/html/yojiknet /var/www/html/yaziknet
+
+> cd /var/www/html
+
+
+On crée 2 fichiers **index.html** sous chaque répertoire créé:
+
+Exemple de fichier de base:
+
+**/var/www/html/yojiknet/index.html**
+
+
+
+```
+<!DOCTYPE html>
+
+<html>
+    <head>
+        <title>The Yojik.net home page</title>
+        <meta charset="UTF-8">
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    </head>
+    <body>
+        <h1>The Yojik Net home page</h1>
+        <p>Nothing interesting at the moment .. comming soon!</p>
+    </body>
+</html>
+
+```
+
+
+
+**/var/www/html/yaziknet/index.html**
+
+
+
+```
+<!DOCTYPE html>
+
+<html>
+    <head>
+        <title>The Yazik.net home page</title>
+        <meta charset="UTF-8">
+        <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    </head>
+    <body>
+        <h1>The Yazik Net home page</h1>
+        <p>Nothing interesting at the moment .. comming soon!</p>
+    </body>
+</html>
+
+```
+
+
+
+Dans le répertoire **/var/www/html/** on lance la commande suivante pour ajuster les droits et propriétaires des fichiers (pour apache et Debian, c'est **www-data**.)
+
+> chown -Rv www-data.www-data *
+
+On relance apache
+
+> service apache2 restart
+
+On crée un 
+
+
+On teste avec un navigateur.
+
+adresse 1: www.yojik.net
+
+adresse 2: yazik.yojik.net
+
+Vous vous apercevrez que la deuxième ne fonctionne pas: il vous faut ajouter le domaine yazik.yojik.net à votre fichier de zone de bind et relancer bind ensuite:
+
+> yazik		IN	CNAME	atom.yojik.net.
+
+
+Re-testez: tout marche :)
+
+

BIN
docs/Images/Debian-Stretch-01.png


BIN
docs/Images/Debian-Stretch-02.png


BIN
docs/Images/Debian-Stretch-03.png


BIN
docs/Images/Debian-Stretch-04.png


BIN
docs/Images/Debian-Stretch-05.png


BIN
docs/Images/Debian-Stretch-06.png


BIN
docs/Images/Debian-Stretch-07.png


BIN
docs/Images/Debian-Stretch-08.png


BIN
docs/Images/Debian-Stretch-09.png


BIN
docs/Images/Debian-Stretch-10.png


BIN
docs/Images/Debian-Stretch-11.png


BIN
docs/Images/Debian-Stretch-12.png


BIN
docs/Images/Debian-Stretch-13.png


BIN
docs/Images/Debian-Stretch-14.png


BIN
docs/Images/Debian-Stretch-15.png


BIN
docs/Images/Debian-Stretch-16.png


BIN
docs/Images/Debian-Stretch-17.png


BIN
docs/Images/Debian-Stretch-18.png


BIN
docs/Images/Debian-Stretch-19.png


BIN
docs/Images/Debian-Stretch-20.png


BIN
docs/Images/Debian-Stretch-21.png


BIN
docs/Images/Debian-Stretch-22.png


BIN
docs/Images/Debian-Stretch-23.png


BIN
docs/Images/Debian-Stretch-24.png


BIN
docs/Images/Debian-Stretch-25.png


BIN
docs/Images/Debian-Stretch-26.png


BIN
docs/Images/Debian-Stretch-27.png


BIN
docs/Images/Debian-Stretch-28.png


BIN
docs/Images/Debian-Stretch-29.png


BIN
docs/Images/Debian-Stretch-30.png


BIN
docs/Images/Debian-Stretch-31.png


BIN
docs/Images/Debian-Stretch-32.png


BIN
docs/Images/Debian-Stretch-33.png


BIN
docs/Images/Debian-Stretch-34.png


BIN
docs/Images/Debian-Stretch-crypted-12_28_37.png


BIN
docs/Images/Debian-Stretch-crypted-12_28_55.png


BIN
docs/Images/Debian-Stretch-crypted-12_29_00.png


BIN
docs/Images/Debian-Stretch-crypted-12_29_06.png


BIN
docs/Images/Debian-Stretch-crypted-12_29_12.png


BIN
docs/Images/Debian-Stretch-crypted-12_29_33.png


BIN
docs/Images/Debian-Stretch-crypted-12_29_39.png


BIN
docs/Images/Debian-Stretch-crypted-12_29_44.png


BIN
docs/Images/Debian-Stretch-crypted-12_29_57.png


BIN
docs/Images/Debian-Stretch-crypted-12_30_06.png


BIN
docs/Images/Debian-Stretch-crypted-12_30_13.png


BIN
docs/Images/Debian-Stretch-crypted-12_30_21.png


BIN
docs/Images/Debian-Stretch-crypted-12_30_29.png


BIN
docs/Images/Debian-Stretch-crypted-12_30_36.png


BIN
docs/Images/Debian-Stretch-crypted-12_30_40.png


BIN
docs/Images/Debian-Stretch-crypted-12_30_45.png


BIN
docs/Images/Debian-Stretch-crypted-12_30_52.png


BIN
docs/Images/Debian-Stretch-crypted-12_30_55.png


BIN
docs/Images/Debian-Stretch-crypted-12_31_07.png


BIN
docs/Images/Debian-Stretch-crypted-12_31_10.png


BIN
docs/Images/Debian-Stretch-crypted-12_31_14.png


BIN
docs/Images/Debian-Stretch-crypted-12_31_29.png


BIN
docs/Images/Debian-Stretch-crypted-12_31_33.png


BIN
docs/Images/Debian-Stretch-crypted-12_31_41.png


BIN
docs/Images/Debian-Stretch-crypted-12_31_50.png


BIN
docs/Images/Debian-Stretch-crypted-12_31_54.png


BIN
docs/Images/Debian-Stretch-crypted-12_31_59.png


BIN
docs/Images/Debian-Stretch-crypted-12_32_02.png


BIN
docs/Images/Debian-Stretch-crypted-12_32_06.png


BIN
docs/Images/Debian-Stretch-crypted-12_32_19.png


BIN
docs/Images/Debian-Stretch-crypted-12_33_20.png


BIN
docs/Images/Debian-Stretch-crypted-12_33_35.png


BIN
docs/Images/Debian-Stretch-crypted-12_33_41.png


BIN
docs/Images/Debian-Stretch-crypted-12_33_47.png


BIN
docs/Images/Debian-Stretch-crypted-12_33_53.png


BIN
docs/Images/Debian-Stretch-crypted-12_34_00.png


BIN
docs/Images/Debian-Stretch-crypted-12_34_20.png


BIN
docs/Images/Debian-Stretch-crypted-12_34_28.png


BIN
docs/Images/Debian-Stretch-crypted-12_34_33.png


BIN
docs/Images/Debian-Stretch-crypted-12_34_47.png


BIN
docs/Images/Debian-Stretch-crypted-12_34_54.png


BIN
docs/Images/Debian-Stretch-crypted-12_35_06.png


BIN
docs/Images/Debian-Stretch-crypted-12_35_13.png


BIN
docs/Images/Debian-Stretch-crypted-12_35_21.png


Некоторые файлы не были показаны из-за большого количества измененных файлов