search_index.json 492 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894
  1. {
  2. "docs": [
  3. {
  4. "location": "/",
  5. "text": "\ufeff\n\n\nInstallation d'un serveur Debian/Stretch s\u00e9curis\u00e9\n\n\nR\u00e9sum\u00e9\n\n\nNous allons proc\u00e9der \u00e0 l'installation d'un serveur \u201cmaison\u201d, s\u00e9curis\u00e9 dans la mesure du possible, avec explications et tests, afin de comprendre le pourquoi et le comment.\nNous utiliserons la distribution Debian dans sa derni\u00e8re mouture : Stretch.\n\n\nCe ne sera pas \u201cun tutoriel \u00e0 suivre pas \u00e0 pas\u201d, mais plut\u00f4t un ensemble d'\u00e9tapes qui permettront d'installer et configurer SON serveur. Chaque \u00e9tape sera accompagn\u00e9e de tests pour en v\u00e9rifier le fonctionnement.\n\n\nCertains services seront install\u00e9s, comme un serveur de courriers (Postfix), un serveur DNS bind9, un serveur Web (Apache), un bouncer IRC, un serveur Git.\nNous aurions pu faire d'autres choix, comme Unbound (DNS), Citadel (courrier), etc.\n\n\n\n\nInstallation du syst\u00e8me de base\n\n\nPremi\u00e8re \u00e9tapes de s\u00e9curisation du serveur\n\n\nConfiguration du r\u00e9seau\n\n\nInstallation d'un serveur de temps\n\n\nInstallation d'un pare-feu\n\n\nContrer les attaques de brute-force avec fail2ban\n\n\nInstallation d'un serveur de courrier basique\n\n\nInstallation du serveur DNS\n\n\nInstallation d'un serveur web\n\n\nInstallation de dovecot et de l'authentification\n\n\nInstallation des certificats letsencrypt\n\n\nAjout des enregistrements \nspf\n au fichier de zone DNS",
  6. "title": "Home"
  7. },
  8. {
  9. "location": "/#installation-dun-serveur-debianstretch-securise",
  10. "text": "",
  11. "title": "Installation d'un serveur Debian/Stretch s\u00e9curis\u00e9"
  12. },
  13. {
  14. "location": "/#resume",
  15. "text": "Nous allons proc\u00e9der \u00e0 l'installation d'un serveur \u201cmaison\u201d, s\u00e9curis\u00e9 dans la mesure du possible, avec explications et tests, afin de comprendre le pourquoi et le comment.\nNous utiliserons la distribution Debian dans sa derni\u00e8re mouture : Stretch. Ce ne sera pas \u201cun tutoriel \u00e0 suivre pas \u00e0 pas\u201d, mais plut\u00f4t un ensemble d'\u00e9tapes qui permettront d'installer et configurer SON serveur. Chaque \u00e9tape sera accompagn\u00e9e de tests pour en v\u00e9rifier le fonctionnement. Certains services seront install\u00e9s, comme un serveur de courriers (Postfix), un serveur DNS bind9, un serveur Web (Apache), un bouncer IRC, un serveur Git.\nNous aurions pu faire d'autres choix, comme Unbound (DNS), Citadel (courrier), etc. Installation du syst\u00e8me de base Premi\u00e8re \u00e9tapes de s\u00e9curisation du serveur Configuration du r\u00e9seau Installation d'un serveur de temps Installation d'un pare-feu Contrer les attaques de brute-force avec fail2ban Installation d'un serveur de courrier basique Installation du serveur DNS Installation d'un serveur web Installation de dovecot et de l'authentification Installation des certificats letsencrypt Ajout des enregistrements spf au fichier de zone DNS",
  16. "title": "R\u00e9sum\u00e9"
  17. },
  18. {
  19. "location": "/1-un/",
  20. "text": "\ufeff# Installation d'un serveur Debian/Stretch s\u00e9curis\u00e9\n\n\nSch\u00e9ma de notre installation \"at home\"\n\n\nNotre installation se compose donc d'une \nbox\n, 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.\n\n\nA compl\u00e9ter pour d'autres FAIs et boxes.\n\n\nJ'ai la chance de b\u00e9n\u00e9ficier d'une connexion \nfibre\n, adapt\u00e9e \u00e0 l'installation d'un serveur \u00e0 la maison. (D\u00e9bit d'upload suffisant).\n\n\nNotre serveur sera connect\u00e9 \u00e0 la box (au routeur) dans la zone \nDMZ\n. C'est une zone qui sera accessible de l'ext\u00e9rieur, de tout l'internet donc. C'est pourquoi nous aurons \u00e0 prendre des mesures de s\u00e9curit\u00e9 ad\u00e9quates.\n\n\nNotre r\u00e9seau local sera \u00e9galement connect\u00e9 \u00e0 la box, soit par c\u00e2ble (filaire) soit par wifi.\n\n\n\n\nPr\u00e9requis\n\n\n\n\nUn serveur\n\n\n\n\nIl vous faut un serveur, accessible chez vous (je d\u00e9cris ici l'installation d'un \"home\" serveur, m\u00eame si la plupart des explications seront \u00e9galement valables pour un serveur h\u00e9berg\u00e9 ou d\u00e9di\u00e9.\n\n\n\n\nMon serveur est motoris\u00e9 par un vieux microprocesseur Atom \u00e0 1,6Ghz, appuy\u00e9 par 2 Go de RAM et un disque SSD de 240 Go. Il sera reli\u00e9 \u00e0 un clavier et un \u00e9cran pendant la phase d'installation.\n\n\nCe serveur est assez ancien (2007) et l'amor\u00e7age n'est pas bas\u00e9 sur UEFI, mais un bios standard. Je rajouterai une partie d\u00e9di\u00e9e \u00e0 l'amor\u00e7age UEFI d\u00e8s que j'aurai un serveur/machine de bureau supportant ce m\u00e9canisme. (oui, mon mat\u00e9riel est ancien ....)\n\n\n\n\nUn nom de domaine\n\n\n\n\nUn nom de domaine est indispensable si vous voulez que votre serveur soit accessible de l'ext\u00e9rieur. Il vous faudra choisir un nom, enregistr\u00e9 chez un \u201cregistrar\u201d comme OVH, Gandi ou autre.\n Mon domaine r\u00e9serv\u00e9 est \nyojik.net\n.\n\n\n\n\nexample.com\n est un nom de domaine couramment utilis\u00e9 dans les tutoriels.\n\n\n\n\n\n\nUn nom de machine\n\n\n\n\nD\u00e9terminez le nom de votre machine: le mien sera \natom\n.\n\n\n\n\nLe nom complet de ma machine serait donc: \natom.yojik.net\n\n\n\n\n\n\nUne adresse IP fixe\n\n\n\n\nUne adresse IP fixe est n\u00e9cessaire m\u00eame 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\u00e8s proposent ces adresses fixes / IPV6 avec un suppl\u00e9ment d'abonnement.\n\n\n\n\nUn compte utilisateur\n\n\n\n\nL'installateur Debian vous demandera un mot de passe pour le compte root (super-utilisteur): notez le bien. Nous le changerons ensuite, apr\u00e8s l'installation de base. Nous utiliserons un g\u00e9n\u00e9rateur de mots de passe; il y en a pl\u00e9thore.\n\n\nEnsuite, il vous demandera de d\u00e9finir un compte utilisateur, ici, un compte d'administration. Nous ne nous connecterons qu'avec ce compte (SSH) et interdirons l'acc\u00e8s au compte super-utilisateur (root) par SSH.\n\n\nD\u00e9finissez votre nom d'administrateur ainsi que son mot de passe. Il ne sera utile que dans les premi\u00e8res \u00e9tapes. Nous s\u00e9curiserons l'acc\u00e8s SSH en n'utilisant que des connexions par clef, et uniquement pour le compte administrateur. L'acc\u00e8s SSH pour le compte super-utilisateur sera bloqu\u00e9.\n\n\nNous modifierons \u00e9galement les mots de passe administrateur et super-utilisateur par la suite.\n\n\nR\u00e9capitulatif\n\n\n\n\n\n\n\n\nNom de la machine\n\n\nDomaine\n\n\nAdresse IPV4\n\n\nComptes\n\n\nMot de passe\n\n\n\n\n\n\n\n\n\n\natom\n\n\nyojik.net\n\n\n192.168.111.160\n\n\nericadmin\n\n\n***\n\n\n\n\n\n\n\n\n\n\n\n\nroot\n\n\n***\n\n\n\n\n\n\n\n\nPr\u00e9paration de l'installation\n\n\nT\u00e9l\u00e9chargement de l'image ISO netinstall\n\n\n(ISO de taille minimale, r\u00e9cup\u00e9ration des \u00e9l\u00e9ments suivants sur Debian.org par le r\u00e9seau)\n\n\nRendez-vous \u00e0 l'adresse suivante \nDebian.org\n et choisissez l'image amd64 ou I386 ou autre suivant l'architecture de votre serveur. Mon serveur utilisera l'image i386.\nIl existe des images \u201cnon-officielles\u201d comprenant les firmwares de p\u00e9riph\u00e9riques. (partie software des p\u00e9riph\u00e9riques).\nL'adresse est la suivante: \nDebian.org + firmwares\n\n\nCopie de l'image sur une clef USB\n\n\nIl vous faut d\u00e9terminer le p\u00e9riph\u00e9rique utilis\u00e9 par votre clef. Ins\u00e9rez la dans votre ordinateur Linux et dans un terminal root, lancez la commande : \ndmesg\n. Cherchez les lignes qui correspondent \u00e0 votre clef USB.\nVoici un extrait sur ma machine:\n\n\nusb 4-7: new high-speed USB device number 2 using ehci-pci\n[ 9381.149286] usb 4-7: New USB device found, idVendor=1b1c, idProduct=1ab1\n[ 9381.149291] usb 4-7: New USB device strings: Mfr=1, Product=2, SerialNumber=3\n[ 9381.149293] usb 4-7: Product: Voyager\n[ 9381.149295] usb 4-7: Manufacturer: Corsair\n[ 9381.149298] usb 4-7: SerialNumber: AA00000000000108\n[ 9381.198595] usb-storage 4-7:1.0: USB Mass Storage device detected\n[ 9381.198931] scsi host8: usb-storage 4-7:1.0\n[ 9381.199458] usbcore: registered new interface driver usb-storage\n[ 9381.200839] usbcore: registered new interface driver uas\n[ 9382.519813] scsi 8:0:0:0: Direct-Access Corsair Voyager 1100 PQ: 0 ANSI: 0 CCS\n[ 9382.520679] sd 8:0:0:0: Attached scsi generic sg4 type 0\n[ 9383.462615] sd 8:0:0:0: [sdd] 31326208 512-byte logical blocks: (16.0 GB/14.9 GiB)\n[ 9383.463760] sd 8:0:0:0: [sdd] Write Protect is off\n[ 9383.463762] sd 8:0:0:0: [sdd] Mode Sense: 43 00 00 00\n[ 9383.464786] sd 8:0:0:0: [sdd] No Caching mode page found\n[ 9383.464792] sd 8:0:0:0: [sdd] Assuming drive cache: write through\n[ 9383.470824] sdd: sdd1 sdd2\n[ 9383.474661] sd 8:0:0:0: [sdd] Attached SCSI removable disk\n[ 9384.564005] ISO 9660 Extensions: Microsoft Joliet Level 3\n[ 9384.566879] ISO 9660 Extensions: Microsoft Joliet Level 3\n[ 9384.571964] ISO 9660 Extensions: RRIP_1991A\n\n\n\n\nLe p\u00e9riph\u00e9rique utilis\u00e9 sera donc (dans mon cas): \n/dev/sdd\n.\nProc\u00e9dons maintenant \u00e0 la copie de notre fichier ISO sur la clef. Il y a plusieurs possibilit\u00e9s, suivant votre OS (Linux, Mac, Windows) ou votre distribution (Fedora, Debian, etc.)\n\n\n\n\nCopie avec un logiciel \u201csp\u00e9cialis\u00e9\u201d comme unetbootin\n\n\nCopie avec la commande \ndd\n\n\n\n\nC'est la derni\u00e8re solution que j'utiliserai.\nL'image ISO est dans mon r\u00e9pertoire \nT\u00e9l\u00e9chargements\n.\n\n\n\n\ndd if=./T\u00e9l\u00e9chargements/debian-9.2.1-i386-netinst.iso of=/dev/sdd bs=4096\n\n\n\n\nLe param\u00e8tre \u201cbs=4096\u201d est n\u00e9cessaire pour certaines clef USB.\n\n\nModification du BIOS\n\n\nIl vous faudra certainement aller dans le BIOS de votre serveur, touche DEL, F12, ESC, F10 ou autre (voyez l'\u00e9cran d'accueil au d\u00e9marrage qui indique habituellement la touche \u00e0 utiliser) pour entrer dans le param\u00e9trage du BIOS et indiquer sur quel p\u00e9riph\u00e9rique le serveur va d\u00e9marrer.\n\n\nIns\u00e9rez votre clef et modifiez l'ordre de Boot (quel p\u00e9riph\u00e9rique sera utilis\u00e9 pour amorcer la machine). L'op\u00e9ration inverse sera souvent n\u00e9cessaire pour r\u00e9tablir l'ordre initial de d\u00e9marrage. (d\u00e9marrage sur le disque dur)\n\n\nLancement de l'installation\n\n\n\u00c9teignez votre serveur, ins\u00e9rez la clef USB si elle n'y est pas d\u00e9j\u00e0 et rallumez votre serveur. Il faudra taper sur une touche \"DEL\" ou \"F12\" ou autre pour acc\u00e9der au menu de d\u00e9marrage de votre serveur et choisir de d\u00e9marrer (amor\u00e7age, booter) sur votre clef.\n\n\nInstallation du serveur sans chiffrage des partitions\n\n\nNous utiliserons le mode texte, mais vous pouvez utiliser le mode graphique si vous voulez. Les \u00e9crans sont identiques.\n\n\n\n\n\n\nD\u00e9marrage\n\n\n\n\n\n\n\n\nChoix du mode d'installation\n\n\nTexte\n pour moi.\n\n\n\n\n\n\nChoix de la langue (clavier, interface)\n\n\nLangue d'installation: \nFran\u00e7ais\n\n\n\n\nSituation g\u00e9ographique: \nFrance\n\n\n\n\nConfiguration du clavier: \nfran\u00e7ais\n\n\n\n\n\n\n\n\nChoix du nom de la machine\n\n\nSans le nom de domaine: ici, \natom\n\n\nLe nom complet de la machine Debian est d\u00e9fini dans 2 fichiers:\n\n\n\n\n/etc/hostname: ce fichier contient le nom du serveur, \nSANS\n le nom de domaine. Ce fichier ne contient qu'une seule ligne (un mot): le nom de votre machine.\n\n\n/etc/hosts: ce fichier contient le nom complet de la machine. Il se pr\u00e9sente ainsi:\n\n\n\n\n\n\n\n\n127.0.0.1 localhost\n\n# serveurs\n\n192.168.111.160 atom.yojik.net atom\n\n# The following lines are desirable for IPv6 capable hosts\n::1 localhost ip6-localhost ip6-loopback\nff02::1 ip6-allnodes\nff02::2 ip6-allrouters\n\n\n\n\nVous voyez ici la correspondance entre le nom complet du serveur, son nom comme il est \u00e9crit dans /etc/hostname ainsi que son adresse IP (ici, IPV4). Nous rajouterons l'adresse IPV6 ensuite, apr\u00e8s l'installation.\n\n\n\n\n\n\nChoix du nom de domaine\n\n\n\n\nyojik.net\n (mettez le votre!)\n\n\n\n\n\n\nSaisie du mot de passe root (super-utilisateur)\n\n\n\n\n\n\nConfirmation du mot de passe super-utilisateur.\n\n\n\n\n\n\nSaisie du compte utilisateur\n\n\n\n\nIci, notre compte d'administrateur (admin ou celui de votre choix); en effet, nous ne nous connecterons jamais avec le compte \nroot\n, uniquement avec le compte d'administration. L'acc\u00e8s \nroot\n sera bloqu\u00e9 dans le fichier de configuration de \nssh\n.\n\n\n\n\n\n\n\n\nSaisie du mot de passe utilisateur.\n\n\n\n\n\n\nMot de passe\n\n\n\n\n\n\n\n\nConfirmation de ce mot de passe.\n\n\n\n\n\n\n\n\n\n\n\n\nPartitionnement du disque\n\n\n\n\n\n\nIci, nous avons 2 solutions principalement:\n\n\n\n\n1 partitionnement avec chiffrage du disque (manuel ou automatique)\n\n\n2 partitionnement sans chiffrage\n\n\n\n\nNous verrons ici un partitionnement sans chiffrage. Le chiffrage sera vu dans une partie s\u00e9par\u00e9e car elle pose le probl\u00e8me de la saisie de la phrase de passe pour un serveur \u201cdistant\u201d.\n\n\nIci, nous utiliserons un disque entier, avec tout dans une seule partition. Il est parfaitement possible de choisir un autre sch\u00e9ma de partitionnement, avec /home, /var, /tmp dans des partitions s\u00e9par\u00e9es.\n\n\n\n\nChoix d'une installation simplifi\u00e9e:\n\n\n\n\nChoix du disque \u00e0 partitionner:\n\n\n\n\nSch\u00e9ma de partitionnement: (simplifi\u00e9 \u00e9galement ...)\n\n\n![D\u00e9marrage](Images/Debian-Stretch-18.png)\n\nConfirmation du partitionnement choisi:\n\n![D\u00e9marrage](Images/Debian-Stretch-19.png)\n\n![D\u00e9marrage](Images/Debian-Stretch-20.png)\n\n\n\n\n\n\n\nProgression de l'installation\n\n\n\n\n\n\n\n\nConfiguration de l'outil de gestion des paquets\n\n\nNous n'avons pas d'autres sources de paquets pour l'instant:\n\n\n\n\n\n\n\n\nChoix du miroir\n\n\nFrance\n mais choisissez celui qui est le plus proche de votre localisation g\u00e9ographique.\n\n\n\n\nChoix du miroir de l'archive Debian: j'ai choisi \ndeb.debian.org\n. Ce miroir renvoie vers le miroir le plus appropri\u00e9 et le plus rapide.\n\n\n\n\n\n\n\n\nChoix du proxy\n\n\nChoix du proxy: pas de proxy pour moi. Le proxy permet de passer par un serveur interm\u00e9diaire, par exemple, situ\u00e9 dans un autre pays.\n\n\n\n\nProgression de l'installation ...\n\n\n\n\n\n\n\n\nConfiguration de \u201cpopularity contest\u201d\n\n\nJ'ai r\u00e9pondu: \noui\n. Choisissez si vous voulez participer aux statistiques des paquets les plus employ\u00e9s.\n\n\n\n\n\n\n\n\nS\u00e9lection des logiciels\n\n\nD\u00e9s\u00e9lectionnez \u201cenvironnement de bureau\u201d et s\u00e9lectionnez: \n\u201cserveur ssh\u201d\n et \n\u201cutilitaires usuels du syst\u00e8me\u201d\n. Validez.\n\n\n\n\n\n\n\n\nInstallation de \ngrub\n (gestionnaire d'amor\u00e7age) sur le disque.\n\n\n\n\n\n\n\n\nS\u00e9lection du disque sur lequel installer le programme de d\u00e9marrage \ngrub\n.\n\n\nJ'ai choisi le disque install\u00e9 dans mon serveur. On aurait aussi pu choisir un m\u00e9dia amovible comme une clef USB.\n\n\n\n\n\n\n\n\nRed\u00e9marrage\n\n\nEnlevez la clef USB qui a permis de lancer l'installation et tapez \nENTER\n.\n\n\n\n\n\n\n\n\nS'identifier (se loguer).\n\n\n\n\nIci, utilisateur \nroot\n, puis saisie du mot de passe super-utilisateur.\n\n\nNous ferons notre premi\u00e8re configuration \u00e0 partir du clavier et de l'\u00e9cran connect\u00e9s \u00e0 notre serveur. Cela n'est valable \u00e9videmment que si nous avons un acc\u00e8s physique \u00e0 notre machine.\n\n\nPour une machine distante, la proc\u00e9dure est diff\u00e9rente et nous nous connecterons avec \nssh\n.\n\n\n\n\n\n\n\n\nEt voil\u00e0, l'installation premi\u00e8re est termin\u00e9e.\n\n\nIl reste \u201cquelques\u201d \u00e9tapes comme la configuration du r\u00e9seau (nous avons utilis\u00e9 la configuration automatique pendant l'installation), la s\u00e9curisation du serveur \nssh\n, ainsi que l'installation de programmes de surveillance (monitoring), le pare-feu.\n\n\nInstallation de serveur avec chiffrage des partitions (m\u00e9thode manuelle)\n\n\nPour cela, il faut que le serveur soit accessible ... au d\u00e9marrage, il vous sera demand\u00e9 la clef de chiffrage. Nous verrons ensuite une m\u00e9thode avec clef de chiffrage install\u00e9e sur une clef USB ou carte m\u00e9moire, ce qui permettra un red\u00e9marrage automatique du serveur sans avoir \u00e0 saisir la clef. (mais m\u00eame avec ce syst\u00e8me, il faut un acc\u00e8s physique au serveur.)\n\n\nLes premi\u00e8re \u00e9tapes sont identiques \u00e0 la version non-chiffr\u00e9e. Le chiffrement sera configur\u00e9 lors du partitionnement du disque.\n\n\n\n\n\n\nChoix du mode d'Installation\n\n\n\n\n\n\n\n\nChoix de la Langue\n\n\n\n\n\n\n\n\nChoix de la situation g\u00e9ographique\n\n\n\n\n\n\n\n\nConfiguration du clavier\n\n\n\n\n\n\n\n\nInstallation: d\u00e9but\n\n\n\n\n\n\n\n\nInstallation: Suite\n\n\n\n\n\n\n\n\nConfiguration du r\u00e9seau: nom de machine\n\n\n\n\n\n\n\n\nConfiguration du r\u00e9seau: nom de Domaine\n\n\n\n\n\n\n\n\nConfiguration du r\u00e9seau: nom de Domaine (suite)\n\n\n\n\n\n\n\n\nConfiguration du mot de passe super-utilisateur\n\n\n\n\n\n\n\n\nConfirmation du mot de passe\n\n\n\n\n\n\n\n\nConfiguration d'un premier utilisateur (Nom/pr\u00e9nom)\n\n\n\n\n\n\n\n\nConfiguration d'un premier utilisateur (suite)\n\n\n\n\n\n\n\n\nIdentifiant (login) de cet utilisateur\n\n\n\n\n\n\n\n\nMot de passe de cet utilisateur\n\n\n\n\n\n\n\n\nConfirmation\n\n\n\n\n\n\n\n\nC'est ici que commencent les changements de configuration. Nous allons partitionner la disque en 3:\n\n\n\n\nla premi\u00e8re partition est la partition /boot, non chiffr\u00e9e\n\n\nla partition suivante est la partition swap, chiffr\u00e9e\n\n\nla derni\u00e8re est la partition root \"/\" chiffr\u00e9e.\n\n\n\n\n\n\n\n\n\n\nNous allons utiliser la m\u00e9thode manuelle pour pouvoir fixer nous-m\u00eames la taille de nos partitions:\n\n\n\n\n\n\n\n\nChoix du disque \u00e0 partitionner\n\n\n\n\n\n\n\n\nCr\u00e9ation de la table de partition\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nChoix du syst\u00e8me de fichiers et du point de montage de la premi\u00e8re partition (/boot).\n\n\n\n\n\n\n\n\n\n\n\n\nCr\u00e9ation des partitions suivantes (swap et \"/\")\n\n\n\n\n\n\n\n\nPartition swap\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nCr\u00e9ation de la partition root \"/\"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nConfiguration des volumes chiffr\u00e9s\n\n\n\n\n\n\n\n\n\n\n\n\nChoix des partitions \u00e0 chiffrer (swap et root)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nVous noterez que j'ai choisi de ne PAS effacer les donn\u00e9es du disque. En production, il faudra choisir OUI. Cette proc\u00e9dure permet de remplir les partitions avec des donn\u00e9es al\u00e9atoires et donne une meilleure s\u00e9curit\u00e9. Cette proc\u00e9dure est longue ...\n\n\n\n\n\n\n\n\n\n\nChoix de la clef de chiffrage\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nFin du partitionnement\n\n\n\n\n\n\n\n\nOups! oubli ... il nous faut configurer le point de montage \"/\"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nAffichage de notre table de partitions\n\n\n\n\n\n\n\n\nFin du partitionnement\n\n\n\n\n\n\nLa fin de l'installation est identique \u00e0 la version non-chiffr\u00e9e.\n\n\n\n\n\n\nInstallation de serveur avec chiffrage des partitions (mode assist\u00e9 LVM)\n\n\nLe d\u00e9but de l'installation est identique. Nous allons passer directement \u00e0 la partie partitionnement. (section 12)\n\n\n\n\n\n\n\u00c9tape 1\n\n\n\n\n\n\n\n\n\u00c9tape 2\n\n\n\n\n\n\n\n\n\u00c9tape 3\n\n\n\n\n\n\n\n\n\u00c9tape 4\n\n\n\n\n\n\n\n\n\u00c9tape 5\n\n\n\n\n\n\n\n\n\u00c9tape 6\n\n\n\n\n\n\n\n\n\u00c9tape 7\n\n\n\n\n\n\n\n\n\u00c9tape 8\n\n\n\n\n\n\n\n\n\u00c9tape 9\n\n\n\n\n\n\n\n\n\u00c9tape 10\n\n\n\n\n\n\n\n\n\u00c9tape 11\n\n\n\n\n\n\n\n\nPartitionnement en mode lvm chiffr\u00e9\n\n\nOn suit ce qui est indiqu\u00e9 sur les captures d'\u00e9cran.\n\n\n\n\n\n\n\n\nChoix du disque \u00e0 partitionner\n\n\n\n\n\n\n\n\nChoisissez le mode que vous voulez: tout dans une partition ou des partitions s\u00e9par\u00e9es.\n\n\n\n\n\n\n\n\nOn modifie les partitions\n\n\n\n\n\n\n\n\nPartitionnement en cours\n\n\n\n\n\n\n\n\nEffacement des donn\u00e9es (\u00e9criture de donn\u00e9es al\u00e9atoires sur le disque)\n\n\n\n\n\n\n\n\nSaisie de la phrase de passe\n\n\n\n\n\n\n\n\nSuite\n\n\n\n\n\n\n\n\nAffichage de vos choix\n\n\n\n\n\n\n\n\nConfirmation de vos choix\n\n\n\n\n\n\n\n\nInstallation du syst\u00e8me (comme pr\u00e9c\u00e9demment)\n\n\n\n\n\n\n\n\n\u00c9tape 23\n\n\n\n\n\n\n\n\n\u00c9tape 24\n\n\n\n\n\n\n\n\n\u00c9tape 25\n\n\n\n\n\n\n\n\n\u00c9tape 26\n\n\n\n\n\n\n\n\n\u00c9tape 27\n\n\n\n\n\n\n\n\n\u00c9tape 28\n\n\n\n\n\n\n\n\n\u00c9tape 29\n\n\n\n\n\n\n\n\n\u00c9tape 30\n\n\n\n\n\n\n\n\n\u00c9tape 31\n\n\n\n\n\n\n\n\n\u00c9tape 32\n\n\n\n\n\n\n\n\n\u00c9tape 33\n\n\n\n\n\n\n\n\nRe-d\u00e9marrage\n\n\n\n\n\n\n\n\nSaisie de la phrase de passe pour d\u00e9bloquer l'acc\u00e8s au disque\n\n\n\n\n\n\n\n\nEt voil\u00e0 :)\n\n\n\n\n\n\n\n\nInstallation de serveur avec chiffrage des partitions et clef de chiffrage sur support amovible\n\n\nWORK IN PROGRESS !!!\n\n\nNous allons voir ici une m\u00e9thode pour \u00e9viter d'avoir \u00e0 saisir la phrase de passe \u00e0 chaque red\u00e9marrage. Nous allons ajouter une clef (en plus de celle que vous avez d\u00e9j\u00e0). Cette clef sera compos\u00e9e par des donn\u00e9es al\u00e9atoires d'un support amovible (clef usb, carte sdx, etc ... )\n\n\nNous allons remplir le contenu de ce support avec des donn\u00e9es al\u00e9atoires, et d\u00e9finir une portion de celle-ci comme clef. Il reste \u00e9vident qu'il faut avoir un acc\u00e8s physique \u00e0a la machine ...\n\n\n\u00c9criture de donn\u00e9es al\u00e9atoires sur le support amovible.\n\n\nV\u00e9rifiez avec la commande \ndmesg\n quel est le p\u00e9riph\u00e9rique amovible utilis\u00e9. Pour moi, c'est \nsdb\n.\n\n\n\n\ndd if=/dev/urandom of=/dev/sdb bs=4096\n\n\n\n\nNous avons utilis\u00e9 la totalit\u00e9 de la clef. Il est possible aussi de formater la clef d'une fa\u00e7on habituelle en r\u00e9servant un espace \nnon-format\u00e9\n et \nnon allou\u00e9\n pour installer notre clef secr\u00e8te. Pour cela, vous pouvez utiliser \ngparted\n par exemple.\n\n\nExtraction de la clef \u00e0 partir d'un secteur donn\u00e9 de la clef\n\n\n\n\ndd if=/dev/sdb of=/root/secret.key bs=512 skip=8 count=16\n\n\n\n\nAjout de cette clef \u00e0 cryptsetup\n\n\nOn liste les partitions:\n\n\n\n\nblkid\n\n\n\n\nOn ajoute la clef dans le slot 1 (le slot 0 contient la phrase de passe entr\u00e9e lors de l'installation.)\n\n\n\n\ncryptsetup luksAddKey /dev/sda3 /root/secret.key --key-slot 1\n\n\n\n\nAjout d'une r\u00e8gle udev\n\n\nOn cr\u00e9e le fichier: /etc/udev/rules.d/99-custom-usb.rules avec le contenu suivant:\n\n\n\n\nSUBSYSTEMS==\"usb\", DRIVERS==\"usb\",SYMLINK+=\"usbdevice%n\"\n\n\n\n\nOnb relance le serveur et on v\u00e9rifie que la r\u00e8gle a bien \u00e9t\u00e9 prise en compte:\n\n\n\n\nls -l /dev/usbdevices\n\n\n\n\nC'est bon.\n\n\nTest\n\n\npas fini :( ou mieux, \"work in progress\" !",
  21. "title": "Installation d'un serveur Debian/Stretch s\u00e9curis\u00e9"
  22. },
  23. {
  24. "location": "/1-un/#schema-de-notre-installation-at-home",
  25. "text": "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\u00e9ter pour d'autres FAIs et boxes. J'ai la chance de b\u00e9n\u00e9ficier d'une connexion fibre , adapt\u00e9e \u00e0 l'installation d'un serveur \u00e0 la maison. (D\u00e9bit d'upload suffisant). Notre serveur sera connect\u00e9 \u00e0 la box (au routeur) dans la zone DMZ . C'est une zone qui sera accessible de l'ext\u00e9rieur, de tout l'internet donc. C'est pourquoi nous aurons \u00e0 prendre des mesures de s\u00e9curit\u00e9 ad\u00e9quates. Notre r\u00e9seau local sera \u00e9galement connect\u00e9 \u00e0 la box, soit par c\u00e2ble (filaire) soit par wifi.",
  26. "title": "Sch\u00e9ma de notre installation \"at home\""
  27. },
  28. {
  29. "location": "/1-un/#prerequis",
  30. "text": "Un serveur Il vous faut un serveur, accessible chez vous (je d\u00e9cris ici l'installation d'un \"home\" serveur, m\u00eame si la plupart des explications seront \u00e9galement valables pour un serveur h\u00e9berg\u00e9 ou d\u00e9di\u00e9. Mon serveur est motoris\u00e9 par un vieux microprocesseur Atom \u00e0 1,6Ghz, appuy\u00e9 par 2 Go de RAM et un disque SSD de 240 Go. Il sera reli\u00e9 \u00e0 un clavier et un \u00e9cran pendant la phase d'installation. Ce serveur est assez ancien (2007) et l'amor\u00e7age n'est pas bas\u00e9 sur UEFI, mais un bios standard. Je rajouterai une partie d\u00e9di\u00e9e \u00e0 l'amor\u00e7age UEFI d\u00e8s que j'aurai un serveur/machine de bureau supportant ce m\u00e9canisme. (oui, mon mat\u00e9riel est ancien ....) Un nom de domaine Un nom de domaine est indispensable si vous voulez que votre serveur soit accessible de l'ext\u00e9rieur. Il vous faudra choisir un nom, enregistr\u00e9 chez un \u201cregistrar\u201d comme OVH, Gandi ou autre.\n Mon domaine r\u00e9serv\u00e9 est yojik.net . example.com est un nom de domaine couramment utilis\u00e9 dans les tutoriels. Un nom de machine D\u00e9terminez le nom de votre machine: le mien sera atom . Le nom complet de ma machine serait donc: atom.yojik.net Une adresse IP fixe Une adresse IP fixe est n\u00e9cessaire m\u00eame 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\u00e8s proposent ces adresses fixes / IPV6 avec un suppl\u00e9ment d'abonnement. 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\u00e8s l'installation de base. Nous utiliserons un g\u00e9n\u00e9rateur de mots de passe; il y en a pl\u00e9thore. Ensuite, il vous demandera de d\u00e9finir un compte utilisateur, ici, un compte d'administration. Nous ne nous connecterons qu'avec ce compte (SSH) et interdirons l'acc\u00e8s au compte super-utilisateur (root) par SSH. D\u00e9finissez votre nom d'administrateur ainsi que son mot de passe. Il ne sera utile que dans les premi\u00e8res \u00e9tapes. Nous s\u00e9curiserons l'acc\u00e8s SSH en n'utilisant que des connexions par clef, et uniquement pour le compte administrateur. L'acc\u00e8s SSH pour le compte super-utilisateur sera bloqu\u00e9. Nous modifierons \u00e9galement les mots de passe administrateur et super-utilisateur par la suite.",
  31. "title": "Pr\u00e9requis"
  32. },
  33. {
  34. "location": "/1-un/#recapitulatif",
  35. "text": "Nom de la machine Domaine Adresse IPV4 Comptes Mot de passe atom yojik.net 192.168.111.160 ericadmin *** root ***",
  36. "title": "R\u00e9capitulatif"
  37. },
  38. {
  39. "location": "/1-un/#preparation-de-linstallation",
  40. "text": "",
  41. "title": "Pr\u00e9paration de l'installation"
  42. },
  43. {
  44. "location": "/1-un/#telechargement-de-limage-iso-netinstall",
  45. "text": "(ISO de taille minimale, r\u00e9cup\u00e9ration des \u00e9l\u00e9ments suivants sur Debian.org par le r\u00e9seau) Rendez-vous \u00e0 l'adresse suivante Debian.org et choisissez l'image amd64 ou I386 ou autre suivant l'architecture de votre serveur. Mon serveur utilisera l'image i386.\nIl existe des images \u201cnon-officielles\u201d comprenant les firmwares de p\u00e9riph\u00e9riques. (partie software des p\u00e9riph\u00e9riques).\nL'adresse est la suivante: Debian.org + firmwares",
  46. "title": "T\u00e9l\u00e9chargement de l'image ISO netinstall"
  47. },
  48. {
  49. "location": "/1-un/#copie-de-limage-sur-une-clef-usb",
  50. "text": "Il vous faut d\u00e9terminer le p\u00e9riph\u00e9rique utilis\u00e9 par votre clef. Ins\u00e9rez la dans votre ordinateur Linux et dans un terminal root, lancez la commande : dmesg . Cherchez les lignes qui correspondent \u00e0 votre clef USB.\nVoici un extrait sur ma machine: usb 4-7: new high-speed USB device number 2 using ehci-pci\n[ 9381.149286] usb 4-7: New USB device found, idVendor=1b1c, idProduct=1ab1\n[ 9381.149291] usb 4-7: New USB device strings: Mfr=1, Product=2, SerialNumber=3\n[ 9381.149293] usb 4-7: Product: Voyager\n[ 9381.149295] usb 4-7: Manufacturer: Corsair\n[ 9381.149298] usb 4-7: SerialNumber: AA00000000000108\n[ 9381.198595] usb-storage 4-7:1.0: USB Mass Storage device detected\n[ 9381.198931] scsi host8: usb-storage 4-7:1.0\n[ 9381.199458] usbcore: registered new interface driver usb-storage\n[ 9381.200839] usbcore: registered new interface driver uas\n[ 9382.519813] scsi 8:0:0:0: Direct-Access Corsair Voyager 1100 PQ: 0 ANSI: 0 CCS\n[ 9382.520679] sd 8:0:0:0: Attached scsi generic sg4 type 0\n[ 9383.462615] sd 8:0:0:0: [sdd] 31326208 512-byte logical blocks: (16.0 GB/14.9 GiB)\n[ 9383.463760] sd 8:0:0:0: [sdd] Write Protect is off\n[ 9383.463762] sd 8:0:0:0: [sdd] Mode Sense: 43 00 00 00\n[ 9383.464786] sd 8:0:0:0: [sdd] No Caching mode page found\n[ 9383.464792] sd 8:0:0:0: [sdd] Assuming drive cache: write through\n[ 9383.470824] sdd: sdd1 sdd2\n[ 9383.474661] sd 8:0:0:0: [sdd] Attached SCSI removable disk\n[ 9384.564005] ISO 9660 Extensions: Microsoft Joliet Level 3\n[ 9384.566879] ISO 9660 Extensions: Microsoft Joliet Level 3\n[ 9384.571964] ISO 9660 Extensions: RRIP_1991A Le p\u00e9riph\u00e9rique utilis\u00e9 sera donc (dans mon cas): /dev/sdd .\nProc\u00e9dons maintenant \u00e0 la copie de notre fichier ISO sur la clef. Il y a plusieurs possibilit\u00e9s, suivant votre OS (Linux, Mac, Windows) ou votre distribution (Fedora, Debian, etc.) Copie avec un logiciel \u201csp\u00e9cialis\u00e9\u201d comme unetbootin Copie avec la commande dd C'est la derni\u00e8re solution que j'utiliserai.\nL'image ISO est dans mon r\u00e9pertoire T\u00e9l\u00e9chargements . dd if=./T\u00e9l\u00e9chargements/debian-9.2.1-i386-netinst.iso of=/dev/sdd bs=4096 Le param\u00e8tre \u201cbs=4096\u201d est n\u00e9cessaire pour certaines clef USB.",
  51. "title": "Copie de l'image sur une clef USB"
  52. },
  53. {
  54. "location": "/1-un/#modification-du-bios",
  55. "text": "Il vous faudra certainement aller dans le BIOS de votre serveur, touche DEL, F12, ESC, F10 ou autre (voyez l'\u00e9cran d'accueil au d\u00e9marrage qui indique habituellement la touche \u00e0 utiliser) pour entrer dans le param\u00e9trage du BIOS et indiquer sur quel p\u00e9riph\u00e9rique le serveur va d\u00e9marrer. Ins\u00e9rez votre clef et modifiez l'ordre de Boot (quel p\u00e9riph\u00e9rique sera utilis\u00e9 pour amorcer la machine). L'op\u00e9ration inverse sera souvent n\u00e9cessaire pour r\u00e9tablir l'ordre initial de d\u00e9marrage. (d\u00e9marrage sur le disque dur)",
  56. "title": "Modification du BIOS"
  57. },
  58. {
  59. "location": "/1-un/#lancement-de-linstallation",
  60. "text": "\u00c9teignez votre serveur, ins\u00e9rez la clef USB si elle n'y est pas d\u00e9j\u00e0 et rallumez votre serveur. Il faudra taper sur une touche \"DEL\" ou \"F12\" ou autre pour acc\u00e9der au menu de d\u00e9marrage de votre serveur et choisir de d\u00e9marrer (amor\u00e7age, booter) sur votre clef.",
  61. "title": "Lancement de l'installation"
  62. },
  63. {
  64. "location": "/1-un/#installation-du-serveur-sans-chiffrage-des-partitions",
  65. "text": "Nous utiliserons le mode texte, mais vous pouvez utiliser le mode graphique si vous voulez. Les \u00e9crans sont identiques. D\u00e9marrage Choix du mode d'installation Texte pour moi. Choix de la langue (clavier, interface) Langue d'installation: Fran\u00e7ais Situation g\u00e9ographique: France Configuration du clavier: fran\u00e7ais Choix du nom de la machine Sans le nom de domaine: ici, atom Le nom complet de la machine Debian est d\u00e9fini 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\u00e9sente ainsi: 127.0.0.1 localhost\n\n# serveurs\n\n192.168.111.160 atom.yojik.net atom\n\n# The following lines are desirable for IPv6 capable hosts\n::1 localhost ip6-localhost ip6-loopback\nff02::1 ip6-allnodes\nff02::2 ip6-allrouters Vous voyez ici la correspondance entre le nom complet du serveur, son nom comme il est \u00e9crit dans /etc/hostname ainsi que son adresse IP (ici, IPV4). Nous rajouterons l'adresse IPV6 ensuite, apr\u00e8s l'installation. Choix du nom de domaine yojik.net (mettez le votre!) Saisie du mot de passe root (super-utilisateur) Confirmation du mot de passe super-utilisateur. 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\u00e8s root sera bloqu\u00e9 dans le fichier de configuration de ssh . Saisie du mot de passe utilisateur. Mot de passe Confirmation de ce mot de passe. 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\u00e9par\u00e9e car elle pose le probl\u00e8me de la saisie de la phrase de passe pour un serveur \u201cdistant\u201d. Ici, nous utiliserons un disque entier, avec tout dans une seule partition. Il est parfaitement possible de choisir un autre sch\u00e9ma de partitionnement, avec /home, /var, /tmp dans des partitions s\u00e9par\u00e9es. Choix d'une installation simplifi\u00e9e: Choix du disque \u00e0 partitionner: Sch\u00e9ma de partitionnement: (simplifi\u00e9 \u00e9galement ...) ![D\u00e9marrage](Images/Debian-Stretch-18.png)\n\nConfirmation du partitionnement choisi:\n\n![D\u00e9marrage](Images/Debian-Stretch-19.png)\n\n![D\u00e9marrage](Images/Debian-Stretch-20.png) Progression de l'installation Configuration de l'outil de gestion des paquets Nous n'avons pas d'autres sources de paquets pour l'instant: Choix du miroir France mais choisissez celui qui est le plus proche de votre localisation g\u00e9ographique. Choix du miroir de l'archive Debian: j'ai choisi deb.debian.org . Ce miroir renvoie vers le miroir le plus appropri\u00e9 et le plus rapide. Choix du proxy Choix du proxy: pas de proxy pour moi. Le proxy permet de passer par un serveur interm\u00e9diaire, par exemple, situ\u00e9 dans un autre pays. Progression de l'installation ... Configuration de \u201cpopularity contest\u201d J'ai r\u00e9pondu: oui . Choisissez si vous voulez participer aux statistiques des paquets les plus employ\u00e9s. S\u00e9lection des logiciels D\u00e9s\u00e9lectionnez \u201cenvironnement de bureau\u201d et s\u00e9lectionnez: \u201cserveur ssh\u201d et \u201cutilitaires usuels du syst\u00e8me\u201d . Validez. Installation de grub (gestionnaire d'amor\u00e7age) sur le disque. S\u00e9lection du disque sur lequel installer le programme de d\u00e9marrage grub . J'ai choisi le disque install\u00e9 dans mon serveur. On aurait aussi pu choisir un m\u00e9dia amovible comme une clef USB. Red\u00e9marrage Enlevez la clef USB qui a permis de lancer l'installation et tapez ENTER . S'identifier (se loguer). Ici, utilisateur root , puis saisie du mot de passe super-utilisateur. Nous ferons notre premi\u00e8re configuration \u00e0 partir du clavier et de l'\u00e9cran connect\u00e9s \u00e0 notre serveur. Cela n'est valable \u00e9videmment que si nous avons un acc\u00e8s physique \u00e0 notre machine. Pour une machine distante, la proc\u00e9dure est diff\u00e9rente et nous nous connecterons avec ssh . Et voil\u00e0, l'installation premi\u00e8re est termin\u00e9e. Il reste \u201cquelques\u201d \u00e9tapes comme la configuration du r\u00e9seau (nous avons utilis\u00e9 la configuration automatique pendant l'installation), la s\u00e9curisation du serveur ssh , ainsi que l'installation de programmes de surveillance (monitoring), le pare-feu.",
  66. "title": "Installation du serveur sans chiffrage des partitions"
  67. },
  68. {
  69. "location": "/1-un/#installation-de-serveur-avec-chiffrage-des-partitions-methode-manuelle",
  70. "text": "Pour cela, il faut que le serveur soit accessible ... au d\u00e9marrage, il vous sera demand\u00e9 la clef de chiffrage. Nous verrons ensuite une m\u00e9thode avec clef de chiffrage install\u00e9e sur une clef USB ou carte m\u00e9moire, ce qui permettra un red\u00e9marrage automatique du serveur sans avoir \u00e0 saisir la clef. (mais m\u00eame avec ce syst\u00e8me, il faut un acc\u00e8s physique au serveur.) Les premi\u00e8re \u00e9tapes sont identiques \u00e0 la version non-chiffr\u00e9e. Le chiffrement sera configur\u00e9 lors du partitionnement du disque. Choix du mode d'Installation Choix de la Langue Choix de la situation g\u00e9ographique Configuration du clavier Installation: d\u00e9but Installation: Suite Configuration du r\u00e9seau: nom de machine Configuration du r\u00e9seau: nom de Domaine Configuration du r\u00e9seau: nom de Domaine (suite) Configuration du mot de passe super-utilisateur Confirmation du mot de passe Configuration d'un premier utilisateur (Nom/pr\u00e9nom) Configuration d'un premier utilisateur (suite) Identifiant (login) de cet utilisateur Mot de passe de cet utilisateur Confirmation C'est ici que commencent les changements de configuration. Nous allons partitionner la disque en 3: la premi\u00e8re partition est la partition /boot, non chiffr\u00e9e la partition suivante est la partition swap, chiffr\u00e9e la derni\u00e8re est la partition root \"/\" chiffr\u00e9e. Nous allons utiliser la m\u00e9thode manuelle pour pouvoir fixer nous-m\u00eames la taille de nos partitions: Choix du disque \u00e0 partitionner Cr\u00e9ation de la table de partition Choix du syst\u00e8me de fichiers et du point de montage de la premi\u00e8re partition (/boot). Cr\u00e9ation des partitions suivantes (swap et \"/\") Partition swap Cr\u00e9ation de la partition root \"/\" Configuration des volumes chiffr\u00e9s Choix des partitions \u00e0 chiffrer (swap et root) Vous noterez que j'ai choisi de ne PAS effacer les donn\u00e9es du disque. En production, il faudra choisir OUI. Cette proc\u00e9dure permet de remplir les partitions avec des donn\u00e9es al\u00e9atoires et donne une meilleure s\u00e9curit\u00e9. Cette proc\u00e9dure est longue ... Choix de la clef de chiffrage Fin du partitionnement Oups! oubli ... il nous faut configurer le point de montage \"/\" Affichage de notre table de partitions Fin du partitionnement La fin de l'installation est identique \u00e0 la version non-chiffr\u00e9e.",
  71. "title": "Installation de serveur avec chiffrage des partitions (m\u00e9thode manuelle)"
  72. },
  73. {
  74. "location": "/1-un/#installation-de-serveur-avec-chiffrage-des-partitions-mode-assiste-lvm",
  75. "text": "Le d\u00e9but de l'installation est identique. Nous allons passer directement \u00e0 la partie partitionnement. (section 12) \u00c9tape 1 \u00c9tape 2 \u00c9tape 3 \u00c9tape 4 \u00c9tape 5 \u00c9tape 6 \u00c9tape 7 \u00c9tape 8 \u00c9tape 9 \u00c9tape 10 \u00c9tape 11 Partitionnement en mode lvm chiffr\u00e9 On suit ce qui est indiqu\u00e9 sur les captures d'\u00e9cran. Choix du disque \u00e0 partitionner Choisissez le mode que vous voulez: tout dans une partition ou des partitions s\u00e9par\u00e9es. On modifie les partitions Partitionnement en cours Effacement des donn\u00e9es (\u00e9criture de donn\u00e9es al\u00e9atoires sur le disque) Saisie de la phrase de passe Suite Affichage de vos choix Confirmation de vos choix Installation du syst\u00e8me (comme pr\u00e9c\u00e9demment) \u00c9tape 23 \u00c9tape 24 \u00c9tape 25 \u00c9tape 26 \u00c9tape 27 \u00c9tape 28 \u00c9tape 29 \u00c9tape 30 \u00c9tape 31 \u00c9tape 32 \u00c9tape 33 Re-d\u00e9marrage Saisie de la phrase de passe pour d\u00e9bloquer l'acc\u00e8s au disque Et voil\u00e0 :)",
  76. "title": "Installation de serveur avec chiffrage des partitions (mode assist\u00e9 LVM)"
  77. },
  78. {
  79. "location": "/1-un/#installation-de-serveur-avec-chiffrage-des-partitions-et-clef-de-chiffrage-sur-support-amovible",
  80. "text": "WORK IN PROGRESS !!! Nous allons voir ici une m\u00e9thode pour \u00e9viter d'avoir \u00e0 saisir la phrase de passe \u00e0 chaque red\u00e9marrage. Nous allons ajouter une clef (en plus de celle que vous avez d\u00e9j\u00e0). Cette clef sera compos\u00e9e par des donn\u00e9es al\u00e9atoires d'un support amovible (clef usb, carte sdx, etc ... ) Nous allons remplir le contenu de ce support avec des donn\u00e9es al\u00e9atoires, et d\u00e9finir une portion de celle-ci comme clef. Il reste \u00e9vident qu'il faut avoir un acc\u00e8s physique \u00e0a la machine ...",
  81. "title": "Installation de serveur avec chiffrage des partitions et clef de chiffrage sur support amovible"
  82. },
  83. {
  84. "location": "/1-un/#ecriture-de-donnees-aleatoires-sur-le-support-amovible",
  85. "text": "V\u00e9rifiez avec la commande dmesg quel est le p\u00e9riph\u00e9rique amovible utilis\u00e9. Pour moi, c'est sdb . dd if=/dev/urandom of=/dev/sdb bs=4096 Nous avons utilis\u00e9 la totalit\u00e9 de la clef. Il est possible aussi de formater la clef d'une fa\u00e7on habituelle en r\u00e9servant un espace non-format\u00e9 et non allou\u00e9 pour installer notre clef secr\u00e8te. Pour cela, vous pouvez utiliser gparted par exemple.",
  86. "title": "\u00c9criture de donn\u00e9es al\u00e9atoires sur le support amovible."
  87. },
  88. {
  89. "location": "/1-un/#extraction-de-la-clef-a-partir-dun-secteur-donne-de-la-clef",
  90. "text": "dd if=/dev/sdb of=/root/secret.key bs=512 skip=8 count=16",
  91. "title": "Extraction de la clef \u00e0 partir d'un secteur donn\u00e9 de la clef"
  92. },
  93. {
  94. "location": "/1-un/#ajout-de-cette-clef-a-cryptsetup",
  95. "text": "On liste les partitions: blkid On ajoute la clef dans le slot 1 (le slot 0 contient la phrase de passe entr\u00e9e lors de l'installation.) cryptsetup luksAddKey /dev/sda3 /root/secret.key --key-slot 1",
  96. "title": "Ajout de cette clef \u00e0 cryptsetup"
  97. },
  98. {
  99. "location": "/1-un/#ajout-dune-regle-udev",
  100. "text": "On cr\u00e9e 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\u00e9rifie que la r\u00e8gle a bien \u00e9t\u00e9 prise en compte: ls -l /dev/usbdevices C'est bon.",
  101. "title": "Ajout d'une r\u00e8gle udev"
  102. },
  103. {
  104. "location": "/1-un/#test",
  105. "text": "pas fini :( ou mieux, \"work in progress\" !",
  106. "title": "Test"
  107. },
  108. {
  109. "location": "/2-deux/",
  110. "text": "\ufeff\n\n\nPremi\u00e8res \u00e9tapes de s\u00e9curisation du serveur\n\n\nPr\u00e9ambule\n\n\n(\u00e0 r\u00e9aliser sur le serveur en mode super-utilisateur)\n\n\nPour mon usage personnel, j'installe syst\u00e9matiquement \nmc\n, petit programme de gestion de fichiers en mode texte qui permet de se d\u00e9placer facilement dans les r\u00e9pertoires, d'\u00e9diter, de d\u00e9placer les fichiers etc.\n\n\napt install mc\n\n\n\n\nJ'installe aussi \nvim\n, pour remplacer l'\u00e9diteur \nvi\n ou \nnano\n install\u00e9 par d\u00e9faut par Debian.\n\n\napt install vim\n\n\n\n\nInstallation des utilitaires syst\u00e8me comme \nnetstat\n \nifconfig\n etc.\n\n\napt install net-tools\n\n\n\n\nOn ajoute les d\u00e9pots non-free et contrib:\n\n\nvim /etc/apt/sources.list\n\n\ndeb http://debian.mirrors.ovh.net/debian stretch main contrib non-free\ndeb-src http://debian.mirrors.ovh.net/debian stretch main main contrib non-free\n\ndeb http://security.debian.org/debian-security stretch/updates main main contrib non-free\ndeb-src http://security.debian.org/debian-security stretch/updates main main contrib non-free\n\n# stretch-updates, previously known as 'volatile'\ndeb http://debian.mirrors.ovh.net/debian stretch-updates main main contrib non-free\ndeb-src http://debian.mirrors.ovh.net/debian stretch-updates main main contrib non-free\n\n\n\n\nEt on update et upgrade:\n\n\napt update && apt upgrade\n\n\n\n\nR\u00e9cup\u00e9ration de l'IP du serveur:\n\n\nIl nous faut conna\u00eetre l'adresse IP de notre serveur qui est allou\u00e9e dynamiquement par \ndhcp\n.\n\n\nNous utiliserons la commande \nifconfig\n:\n\n\nroot@atom:/home/ericadmin# ifconfig\nenp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500\n inet 192.168.111.23 netmask 255.255.255.0 broadcast 192.168.111.255\n inet6 2a01:e0a:54:c220:223:54ff:fec6:a07 prefixlen 64 scopeid 0x0<global>\n inet6 fe80::223:54ff:fec6:a07 prefixlen 64 scopeid 0x20<link>\n ether 00:23:54:c6:0a:07 txqueuelen 1000 (Ethernet)\n RX packets 9220 bytes 7825813 (7.4 MiB)\n RX errors 0 dropped 0 overruns 0 frame 0\n TX packets 2534 bytes 282820 (276.1 KiB)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0\n\nlo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536\n inet 127.0.0.1 netmask 255.0.0.0\n inet6 ::1 prefixlen 128 scopeid 0x10<host>\n loop txqueuelen 1 (Boucle locale)\n RX packets 0 bytes 0 (0.0 B)\n RX errors 0 dropped 0 overruns 0 frame 0\n TX packets 0 bytes 0 (0.0 B)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0\n\n\n\n\nNotre adresse IPV4 est: \n192.168.111.23\n\nLink Mauve et sebseb01 (Linuxfr) viennent de m'indiquer d'utiliser les iptools:\n\n\nroot@atom:~# ip a\n1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1\n link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n inet 127.0.0.1/8 scope host lo\n valid_lft forever preferred_lft forever\n inet6 ::1/128 scope host\n valid_lft forever preferred_lft forever\n2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n link/ether 00:23:54:c6:0a:07 brd ff:ff:ff:ff:ff:ff\n inet 192.168.111.160/24 brd 192.168.111.255 scope global enp4s0\n valid_lft forever preferred_lft forever\n inet6 2a01:e0a:54:c220:223:54ff:fec6:a07/64 scope global mngtmpaddr dynamic\n valid_lft 86201sec preferred_lft 86201sec\n inet6 fe80::223:54ff:fec6:a07/64 scope link\n valid_lft forever preferred_lft forever\n3: wlp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000\n link/ether 00:15:af:db:b7:37 brd ff:ff:ff:ff:ff:ff\nroot@atom:~#\n\n\n\n\nLes adresses IPV6 commen\u00e7ant par \nfe80\n sont des adresses limit\u00e9es au r\u00e9seau local.\n\n\nS\u00e9curisation de ssh\n\n\nVoir le lien suivant: \nLe blog de Guillaume\n\n\nOp\u00e9rations \u00e0 effectuer sur le poste principal\n\n\nNous g\u00e9n\u00e9rons notre paire de clefs pour l'authentification par clefs sur votre poste principal (si vous n'avez pas encore de jeu de clefs). Op\u00e9ration \u00e0 effectuer sur votre poste principal.\n\n\nssh-keygen\n\n\n\n\nIl vous faut copier maintenant la clef sur le serveur:\n\n\nssh-copy-id -i ~/.ssh/id_rsa.pub ericadmin@192.168.111.23\n\n\n\n\nou\n\n\nssh-copy-id ericadmin@192.168.111.23\n\n\n\n\nN'oubliez pas de mettre vos identifiants propres, bien s\u00fbr.\n\n\nOn teste comme le recommande ssh:\n\n\neric@aldebaran:~$ ssh 'ericadmin@91.121.72.10'\nLinux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64\n\n Debian GNU/Linux 9 (stretch)\n 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\n\n Server : 141519\n IPv4 : 91.121.72.10\n IPv6 : 2001:41d0:1:7d0a::1\n Hostname : adara.yojik.eu\n\nLast login: Sun Jun 24 15:08:32 2018 from 82.64.48.5\n\n\n\n\nEt on teste qu'on peut passer super-utilisateur \u00e0 partir de ce compte.\n\n\n\nericadmin@adara:~$ su\nMot de passe :\nroot@adara:/home/ericadmin#\n\n\n\n\nOp\u00e9rations \u00e0 effectuer sur le \nserveur\n en mode super-utilisateur.\n\n\nLa configuration se fait dans le fichier \n/etc/ssh/sshd_config\n, fichier qu'il va falloir \u00e9diter avec \nvim\n pas exemple.\n\n\nNous allons d'abord en faire une copie de sauvegarde:\n\n\ncp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig\n\n\n\n\nvim /etc/ssh/sshd_config\n\n\n\n\nNous n'allons autoriser que la connexion d'un \nuser\n d'administration (pas de connexion de \nroot\n par exemple), activer l'\nauthentification par clefs\n, et supprimer l'authentification par \nlogin/mot de passe\n (en mode ssh). Vous pourrez toujours vous connecter avec le couple login/mot de passe si vous avez un acc\u00e8s physique \u00e0 votre serveur.\n\n\nNous garderons le port standard d'\u00e9coute (rien \u00e0 changer dans le fichier), mais j'ai ajout\u00e9 une note sur le changement de port (sugg\u00e9r\u00e9 par Laurent). Je ne suis pas convaincu que le changement de port puisse diminuer la surface d'attaque du serveur, mais pourquoi pas, c'est un changement mineur:\n\n\nPort 22\n\n\n\n\nNous interdisons la connexion par \nroot\n:\n\n\nPermitRootLogin no\n\n\n\n\nActivation de l'authentification par clef (rien \u00e0 changer dans le fichier):\n\n\nPubkeyAuthentication yes\n\n\n\n\nNous ajoutons une liste d'utilisateurs autoris\u00e9s \u00e0 se connecter.\n\n\nAllowUsers ericadmin\n\n\n\n\nA la place de \nericadmin\n mettez bien s\u00fbr le nom de l'utilisateur que vous avez entr\u00e9 pendant la phase d'installation.\n\n\nNous pouvons limiter le nombre de tentatives de connexion:\n\n\nMaxAuthTries 1\n\n\n\n\nInterdiction de la connexion par couple login/mot de passe:\n\n\nPasswordAuthentication no\n\n\n\n\nD\u00e9sactivation de PAM\n\n\nUsePAM no\n\n\n\n\nSauvegarde du fichier de configuration. (commande escape, suivie de ZZ pour vim)\n\n\nRed\u00e9marrage du service \nssh\n\n\nsystemctl restart sshd\n\n\n\n\nTest de connexion:\n\n\nSur votre ordinateur principal, dans un terminal, tapez:\n\n\nssh ericadmin@192.168.111.23\n\n\n\n\nVous devez \u00eatre connect\u00e9s (logu\u00e9s) sur le serveur.\n\n\nEssayez avec l'utilisateur root:\n\n\nssh root@192.168.111.23\n\n\n\n\nCela doit \u00e9chouer.\n\n\neric@aldebaran:~$ ssh 'ericadmin@192.168.111.23'\nLast login: Sun Dec 17 16:37:40 2017 from 192.168.111.150\nericadmin@atom:~$\n\n\n\n\nVoil\u00e0 pour la premi\u00e8re phase.\n\n\nNote\n:\n\n\nIl est possible de changer le port d'\u00e9coute de \nSSH\n en changeant celui-ci dans le fichier de configuration **/etc/ssh/sshd_config:\n\n\nFaites la modification suivante:\n\n\nvim /etc/ssh/sshd_config\n\nPort 2222\n\n\n\n\nEt relancez sshd:\n\n\n``shell\nservice sshd restart\n\n\n\nPour se connecter, utilsez la commande suivante:\n\n```shell\nssh -p 2222 ericadmin@192.168.111.23\n\n\n\n\nDeuxi\u00e8me phase\n\n\nS\u00e9curisation des mots de passe\n\n\nJ'utilise un g\u00e9n\u00e9rateur de mots de passe pour le compte \nroot\n et le compte \nericadmin\n.\nIl y a pl\u00e9thore de g\u00e9n\u00e9rateurs de mots de passe, certains \u00e0 base d'utilitaires tout pr\u00eats, d'autres cr\u00e9\u00e9s \u00e0 l'aide commande unix standards.\n\n\nLes 3 g\u00e9n\u00e9rateurs \ntout pr\u00eats\n les plus cit\u00e9s dans la documentation sont:\n\n\n\n\nPWGEN\n\n\nMAKPASSWD\n\n\nPASSWORDMAKER\n\n\n\n\nPour l'installation, utilisez les commandes suivantes:\n\n\n\n\napt install pwgen\n\n\napt install makepasswd\n\n\napt install passwordmaker-cli\n\n\n\n\nExemples d'utilisation de ces programmes:\n\n\nUtilisation de \npwgen\n:\n\n\nPour obtenir de l'aide \u00e0 l'utilisation de cet utilitaire, tapez: \npwgen --help\n. Vous pouvez faire varier le niveau de s\u00e9curit\u00e9 ainsi que le nombre de mots de passe g\u00e9n\u00e9r\u00e9s et la longueur des mots de passe.\n\n\neric@aldebaran:~$ pwgen\noow1Osho teM3chai Aim5shee Sheme1yo aiR6aem1 Vooxeiv0 Iabeenu1 kae7Xie5\noacei4aV Ohb8ceib zo0shu6F Dob2chie Roo5eeLa fee5Nooh Phi0suim OMeigh2w\nnah2Ool5 Saix6lie EeNaem5u ooVoh3ki IN5aeF9p CuHu8Aib vaim2Jia chah0Ier\nShieC6ze Teex4tie mei6ou7I Ath6aiFe uw4quoHa lad8Quee ohQuai9Y Sho5Eem6\naoCaol3W ooGah9th bix6Aic9 thee1Coo lie0ahTe eiz0iiSh cieYu8Ie Ealu3chi\nvaeYee6c ahje9aeJ Sheenee7 eesh1Iez Odaa6kah aico6Jah aphahP4U aYePh1ev\nphohNie8 Chuut3ie eeb9ieDa ohp9AhGi efae5ooV Shiere5c ahV8riek Seegohv1\nEetohy1a Lievoh0k jox3uf6K chai3Woo iecoh0Iu ieGh9tuz UMeex2ah Eathaur8\nOod2oeho paeSah0p jaihoo1U eemoi9Ee ile1So4z OongeiN6 aaY9iuch ew3Iemoo\nIech0Eey OoMie0ah OhBei1ae Ohsh4aik jah0faiT ioW7oz6t yee1Uphu ies4eeNa\npooP8eeg iePoh4ya fooL3uqu ieGiej1X Ein7eifu ool7Olae eub5ooSe eyo8EiNu\nach9ohWo Foog9Oev aej9geiH Thahg6Di eegei4Ai eN7quu3b waiK2ieg foThe7zi\nfu2Phoug iYaeg4if iLu6eeFi Aeshoo0i uxoGh6no id1TeRei diob7Pha vokuuN7h\nChokei8J Iemee8ah eingei0E ubieh2Ch daiyu3EB QueiQu6H Jib0uwee wi9Xoodu\neeL3osh2 Eo3Ae1ch bieWui2a ro6chiCo engu0ooF Eebeu2jo ee7Eey8t EiSeen5i\nohNgai6i Iutaez4a xah1yeeG eGhi5Ouz vaiYu6ee fae0AeP5 jee0Ib2I OS3xuwae\nEefohp1u eegiK6ae ohyuom7V Eij8eeNi Ou0ec7ye Eethoh4e eeHi2ugh ichoLae3\nUT8oopoo oox6Ohx9 ohbaL2hu oht9kaiR Ieho8Ou1 Ten6saet cae7Iexi daDuas9e\nShiexaT7 Lei6etii ea4aoH8y ja8Zai8g phaeG6Hi sheNg8ee Oow5phae aa7gohPi\nnahS8Eeg ba6Roh9j ooRo6epo pheNoam1 johF7ii9 vuZ4Latu xai5og6H aeS8hu2I\neric@aldebaran:~$\n\n\n\n\nVous pouvez prendre le mot de passe que vous voulez dans le tableau g\u00e9n\u00e9r\u00e9.\nPour un seul mot de passe:\n\n\neric@aldebaran:~$ pwgen -1\nEerai4Sh\n\n\n\n\nPour un mot de passe mieux s\u00e9curis\u00e9:\n\n\neric@aldebaran:~$ pwgen -1 -s\ntx2CqGyf\n\n\n\n\nEncore plus s\u00e9curis\u00e9 avec l'option -y:\n\n\neric@aldebaran:~$ pwgen -1 -s -y\na+01K!U~\n\n\n\n\nUtilisation de \nmakepasswd\n:\n\n\nTapez: \nmakepasswd --help\n pour de l'aide \u00e0 l'utilisation des param\u00e8tres.\n\n\nmakepasswd --count 5 --minchars 10\n\n\n\n\nS\u00e9curisation du mot de passe super-utilisateur (root)\n\n\nUtilisez un des utilitaires ci-dessus. Attention \u00e0 la longueur minimale!\n\n\nSous le user \u201cadmin\u201d, tapez: \npasswd\n pour changer le mot de passe admin.\n\n\nS\u00e9curisation du mot de passe administrateur\n\n\nUtilisez un des utilitaires ci-dessus. Attention \u00e0 la longueur minimale!\nSous le user \u201croot\u201d, tapez: \npasswd\n pour changer le mot de passe root.\n\n\nTest du hostname\n\n\nLa commande \nhostname\n nous indiquera le nom \u201ccourt\u201d de notre machine, et la commande \nhostname -f\n sa version longue avec le nom de domaine.\n\n\nroot@atom:/home/ericadmin# hostname\natom\nroot@atom:/home/ericadmin#\n\n\n\n\nroot@atom:/home/ericadmin# hostname -f\natom.yojik.net\nroot@atom:/home/ericadmin#\n\n\n\n\nLe r\u00e9sultat est bon.",
  111. "title": "Premi\u00e8res \u00e9tapes de s\u00e9curisation du serveur"
  112. },
  113. {
  114. "location": "/2-deux/#premieres-etapes-de-securisation-du-serveur",
  115. "text": "",
  116. "title": "Premi\u00e8res \u00e9tapes de s\u00e9curisation du serveur"
  117. },
  118. {
  119. "location": "/2-deux/#preambule",
  120. "text": "(\u00e0 r\u00e9aliser sur le serveur en mode super-utilisateur) Pour mon usage personnel, j'installe syst\u00e9matiquement mc , petit programme de gestion de fichiers en mode texte qui permet de se d\u00e9placer facilement dans les r\u00e9pertoires, d'\u00e9diter, de d\u00e9placer les fichiers etc. apt install mc J'installe aussi vim , pour remplacer l'\u00e9diteur vi ou nano install\u00e9 par d\u00e9faut par Debian. apt install vim Installation des utilitaires syst\u00e8me comme netstat ifconfig etc. apt install net-tools On ajoute les d\u00e9pots non-free et contrib: vim /etc/apt/sources.list deb http://debian.mirrors.ovh.net/debian stretch main contrib non-free\ndeb-src http://debian.mirrors.ovh.net/debian stretch main main contrib non-free\n\ndeb http://security.debian.org/debian-security stretch/updates main main contrib non-free\ndeb-src http://security.debian.org/debian-security stretch/updates main main contrib non-free\n\n# stretch-updates, previously known as 'volatile'\ndeb http://debian.mirrors.ovh.net/debian stretch-updates main main contrib non-free\ndeb-src http://debian.mirrors.ovh.net/debian stretch-updates main main contrib non-free Et on update et upgrade: apt update && apt upgrade",
  121. "title": "Pr\u00e9ambule"
  122. },
  123. {
  124. "location": "/2-deux/#recuperation-de-lip-du-serveur",
  125. "text": "Il nous faut conna\u00eetre l'adresse IP de notre serveur qui est allou\u00e9e dynamiquement par dhcp . Nous utiliserons la commande ifconfig : root@atom:/home/ericadmin# ifconfig\nenp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500\n inet 192.168.111.23 netmask 255.255.255.0 broadcast 192.168.111.255\n inet6 2a01:e0a:54:c220:223:54ff:fec6:a07 prefixlen 64 scopeid 0x0<global>\n inet6 fe80::223:54ff:fec6:a07 prefixlen 64 scopeid 0x20<link>\n ether 00:23:54:c6:0a:07 txqueuelen 1000 (Ethernet)\n RX packets 9220 bytes 7825813 (7.4 MiB)\n RX errors 0 dropped 0 overruns 0 frame 0\n TX packets 2534 bytes 282820 (276.1 KiB)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0\n\nlo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536\n inet 127.0.0.1 netmask 255.0.0.0\n inet6 ::1 prefixlen 128 scopeid 0x10<host>\n loop txqueuelen 1 (Boucle locale)\n RX packets 0 bytes 0 (0.0 B)\n RX errors 0 dropped 0 overruns 0 frame 0\n TX packets 0 bytes 0 (0.0 B)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 Notre adresse IPV4 est: 192.168.111.23 \nLink Mauve et sebseb01 (Linuxfr) viennent de m'indiquer d'utiliser les iptools: root@atom:~# ip a\n1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1\n link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00\n inet 127.0.0.1/8 scope host lo\n valid_lft forever preferred_lft forever\n inet6 ::1/128 scope host\n valid_lft forever preferred_lft forever\n2: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000\n link/ether 00:23:54:c6:0a:07 brd ff:ff:ff:ff:ff:ff\n inet 192.168.111.160/24 brd 192.168.111.255 scope global enp4s0\n valid_lft forever preferred_lft forever\n inet6 2a01:e0a:54:c220:223:54ff:fec6:a07/64 scope global mngtmpaddr dynamic\n valid_lft 86201sec preferred_lft 86201sec\n inet6 fe80::223:54ff:fec6:a07/64 scope link\n valid_lft forever preferred_lft forever\n3: wlp3s0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000\n link/ether 00:15:af:db:b7:37 brd ff:ff:ff:ff:ff:ff\nroot@atom:~# Les adresses IPV6 commen\u00e7ant par fe80 sont des adresses limit\u00e9es au r\u00e9seau local.",
  126. "title": "R\u00e9cup\u00e9ration de l'IP du serveur:"
  127. },
  128. {
  129. "location": "/2-deux/#securisation-de-ssh",
  130. "text": "Voir le lien suivant: Le blog de Guillaume",
  131. "title": "S\u00e9curisation de ssh"
  132. },
  133. {
  134. "location": "/2-deux/#operations-a-effectuer-sur-le-poste-principal",
  135. "text": "Nous g\u00e9n\u00e9rons notre paire de clefs pour l'authentification par clefs sur votre poste principal (si vous n'avez pas encore de jeu de clefs). Op\u00e9ration \u00e0 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\u00fbr. On teste comme le recommande ssh: eric@aldebaran:~$ ssh 'ericadmin@91.121.72.10'\nLinux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64\n\n Debian GNU/Linux 9 (stretch)\n 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\n\n Server : 141519\n IPv4 : 91.121.72.10\n IPv6 : 2001:41d0:1:7d0a::1\n Hostname : adara.yojik.eu\n\nLast login: Sun Jun 24 15:08:32 2018 from 82.64.48.5 Et on teste qu'on peut passer super-utilisateur \u00e0 partir de ce compte. \nericadmin@adara:~$ su\nMot de passe :\nroot@adara:/home/ericadmin#",
  136. "title": "Op\u00e9rations \u00e0 effectuer sur le poste principal"
  137. },
  138. {
  139. "location": "/2-deux/#operations-a-effectuer-sur-le-serveur-en-mode-super-utilisateur",
  140. "text": "La configuration se fait dans le fichier /etc/ssh/sshd_config , fichier qu'il va falloir \u00e9diter 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\u00e8s physique \u00e0 votre serveur. Nous garderons le port standard d'\u00e9coute (rien \u00e0 changer dans le fichier), mais j'ai ajout\u00e9 une note sur le changement de port (sugg\u00e9r\u00e9 par Laurent). Je ne suis pas convaincu que le changement de port puisse diminuer la surface d'attaque du serveur, mais pourquoi pas, c'est un changement mineur: Port 22 Nous interdisons la connexion par root : PermitRootLogin no Activation de l'authentification par clef (rien \u00e0 changer dans le fichier): PubkeyAuthentication yes Nous ajoutons une liste d'utilisateurs autoris\u00e9s \u00e0 se connecter. AllowUsers ericadmin A la place de ericadmin mettez bien s\u00fbr le nom de l'utilisateur que vous avez entr\u00e9 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\u00e9sactivation de PAM UsePAM no Sauvegarde du fichier de configuration. (commande escape, suivie de ZZ pour vim) Red\u00e9marrage du service ssh systemctl restart sshd",
  141. "title": "Op\u00e9rations \u00e0 effectuer sur le serveur en mode super-utilisateur."
  142. },
  143. {
  144. "location": "/2-deux/#test-de-connexion",
  145. "text": "Sur votre ordinateur principal, dans un terminal, tapez: ssh ericadmin@192.168.111.23 Vous devez \u00eatre connect\u00e9s (logu\u00e9s) sur le serveur. Essayez avec l'utilisateur root: ssh root@192.168.111.23 Cela doit \u00e9chouer. eric@aldebaran:~$ ssh 'ericadmin@192.168.111.23'\nLast login: Sun Dec 17 16:37:40 2017 from 192.168.111.150\nericadmin@atom:~$ Voil\u00e0 pour la premi\u00e8re phase. Note : Il est possible de changer le port d'\u00e9coute de SSH en changeant celui-ci dans le fichier de configuration **/etc/ssh/sshd_config: Faites la modification suivante: vim /etc/ssh/sshd_config\n\nPort 2222 Et relancez sshd: ``shell\nservice sshd restart \nPour se connecter, utilsez la commande suivante:\n\n```shell\nssh -p 2222 ericadmin@192.168.111.23",
  146. "title": "Test de connexion:"
  147. },
  148. {
  149. "location": "/2-deux/#deuxieme-phase",
  150. "text": "",
  151. "title": "Deuxi\u00e8me phase"
  152. },
  153. {
  154. "location": "/2-deux/#securisation-des-mots-de-passe",
  155. "text": "J'utilise un g\u00e9n\u00e9rateur de mots de passe pour le compte root et le compte ericadmin .\nIl y a pl\u00e9thore de g\u00e9n\u00e9rateurs de mots de passe, certains \u00e0 base d'utilitaires tout pr\u00eats, d'autres cr\u00e9\u00e9s \u00e0 l'aide commande unix standards. Les 3 g\u00e9n\u00e9rateurs tout pr\u00eats les plus cit\u00e9s dans la documentation sont: PWGEN MAKPASSWD PASSWORDMAKER Pour l'installation, utilisez les commandes suivantes: apt install pwgen apt install makepasswd apt install passwordmaker-cli",
  156. "title": "S\u00e9curisation des mots de passe"
  157. },
  158. {
  159. "location": "/2-deux/#exemples-dutilisation-de-ces-programmes",
  160. "text": "Utilisation de pwgen : Pour obtenir de l'aide \u00e0 l'utilisation de cet utilitaire, tapez: pwgen --help . Vous pouvez faire varier le niveau de s\u00e9curit\u00e9 ainsi que le nombre de mots de passe g\u00e9n\u00e9r\u00e9s et la longueur des mots de passe. eric@aldebaran:~$ pwgen\noow1Osho teM3chai Aim5shee Sheme1yo aiR6aem1 Vooxeiv0 Iabeenu1 kae7Xie5\noacei4aV Ohb8ceib zo0shu6F Dob2chie Roo5eeLa fee5Nooh Phi0suim OMeigh2w\nnah2Ool5 Saix6lie EeNaem5u ooVoh3ki IN5aeF9p CuHu8Aib vaim2Jia chah0Ier\nShieC6ze Teex4tie mei6ou7I Ath6aiFe uw4quoHa lad8Quee ohQuai9Y Sho5Eem6\naoCaol3W ooGah9th bix6Aic9 thee1Coo lie0ahTe eiz0iiSh cieYu8Ie Ealu3chi\nvaeYee6c ahje9aeJ Sheenee7 eesh1Iez Odaa6kah aico6Jah aphahP4U aYePh1ev\nphohNie8 Chuut3ie eeb9ieDa ohp9AhGi efae5ooV Shiere5c ahV8riek Seegohv1\nEetohy1a Lievoh0k jox3uf6K chai3Woo iecoh0Iu ieGh9tuz UMeex2ah Eathaur8\nOod2oeho paeSah0p jaihoo1U eemoi9Ee ile1So4z OongeiN6 aaY9iuch ew3Iemoo\nIech0Eey OoMie0ah OhBei1ae Ohsh4aik jah0faiT ioW7oz6t yee1Uphu ies4eeNa\npooP8eeg iePoh4ya fooL3uqu ieGiej1X Ein7eifu ool7Olae eub5ooSe eyo8EiNu\nach9ohWo Foog9Oev aej9geiH Thahg6Di eegei4Ai eN7quu3b waiK2ieg foThe7zi\nfu2Phoug iYaeg4if iLu6eeFi Aeshoo0i uxoGh6no id1TeRei diob7Pha vokuuN7h\nChokei8J Iemee8ah eingei0E ubieh2Ch daiyu3EB QueiQu6H Jib0uwee wi9Xoodu\neeL3osh2 Eo3Ae1ch bieWui2a ro6chiCo engu0ooF Eebeu2jo ee7Eey8t EiSeen5i\nohNgai6i Iutaez4a xah1yeeG eGhi5Ouz vaiYu6ee fae0AeP5 jee0Ib2I OS3xuwae\nEefohp1u eegiK6ae ohyuom7V Eij8eeNi Ou0ec7ye Eethoh4e eeHi2ugh ichoLae3\nUT8oopoo oox6Ohx9 ohbaL2hu oht9kaiR Ieho8Ou1 Ten6saet cae7Iexi daDuas9e\nShiexaT7 Lei6etii ea4aoH8y ja8Zai8g phaeG6Hi sheNg8ee Oow5phae aa7gohPi\nnahS8Eeg ba6Roh9j ooRo6epo pheNoam1 johF7ii9 vuZ4Latu xai5og6H aeS8hu2I\neric@aldebaran:~$ Vous pouvez prendre le mot de passe que vous voulez dans le tableau g\u00e9n\u00e9r\u00e9.\nPour un seul mot de passe: eric@aldebaran:~$ pwgen -1\nEerai4Sh Pour un mot de passe mieux s\u00e9curis\u00e9: eric@aldebaran:~$ pwgen -1 -s\ntx2CqGyf Encore plus s\u00e9curis\u00e9 avec l'option -y: eric@aldebaran:~$ pwgen -1 -s -y\na+01K!U~ Utilisation de makepasswd : Tapez: makepasswd --help pour de l'aide \u00e0 l'utilisation des param\u00e8tres. makepasswd --count 5 --minchars 10",
  161. "title": "Exemples d'utilisation de ces programmes:"
  162. },
  163. {
  164. "location": "/2-deux/#securisation-du-mot-de-passe-super-utilisateur-root",
  165. "text": "Utilisez un des utilitaires ci-dessus. Attention \u00e0 la longueur minimale! Sous le user \u201cadmin\u201d, tapez: passwd pour changer le mot de passe admin.",
  166. "title": "S\u00e9curisation du mot de passe super-utilisateur (root)"
  167. },
  168. {
  169. "location": "/2-deux/#securisation-du-mot-de-passe-administrateur",
  170. "text": "Utilisez un des utilitaires ci-dessus. Attention \u00e0 la longueur minimale!\nSous le user \u201croot\u201d, tapez: passwd pour changer le mot de passe root.",
  171. "title": "S\u00e9curisation du mot de passe administrateur"
  172. },
  173. {
  174. "location": "/2-deux/#test-du-hostname",
  175. "text": "La commande hostname nous indiquera le nom \u201ccourt\u201d de notre machine, et la commande hostname -f sa version longue avec le nom de domaine. root@atom:/home/ericadmin# hostname\natom\nroot@atom:/home/ericadmin# root@atom:/home/ericadmin# hostname -f\natom.yojik.net\nroot@atom:/home/ericadmin# Le r\u00e9sultat est bon.",
  176. "title": "Test du hostname"
  177. },
  178. {
  179. "location": "/3-trois/",
  180. "text": "Configuration du r\u00e9seau\n\n\nNous avons utilis\u00e9 la configuration automatique du r\u00e9seau (DHCP).\n\n\nIl 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)\n\n\nConfiguration de l'IPV4\n\n\nLes \u00e9l\u00e9ments suivants ont \u00e9t\u00e9 configur\u00e9s dans l'interface de configuration de ma box (Freebox dans mon cas)\n\n\nMon r\u00e9seau domestique est: \n192.168.111.0\n\nMa passerelle est: \n192.168.111.254\n\n\nJ'ai choisi l'adresse suivante pour mon serveur: \n192.168.111.160\n et j'ai configur\u00e9 cette adresse comme zone \u201cDMZ\u201d sur ma Freebox (zone d\u00e9militaris\u00e9e, accessible de l'ext\u00e9rieur)\n\n\nLa configuration se fait dans le fichier: \n/etc/network/interfaces\n\n\nNous avons ceci:\n\n\nsource /etc/network/interfaces.d/*\n\n# The loopback network interface\nauto lo\niface lo inet loopback\n\n# The primary network interface\nallow-hotplug enp4s0\niface enp4s0 inet dhcp\n# This is an autoconfigured IPv6 interface\niface enp4s0 inet6 auto\n\n\n\n\nVous noterez que le nom des interfaces a chang\u00e9 ...\n\n\nModification de l'interface r\u00e9seau IPV4:\n\n\nLes lignes concern\u00e9es sont:\n\n\n# The primary network interface\nallow-hotplug enp4s0\niface enp4s0 inet dhcp\n\n\n\n\nModifiez ces lignes pour obtenir:\n\n\n# The primary network interface\nallow-hotplug enp4s0\n# iface enp4s0 inet dhcp (ligne \u00e0 commenter)\n# lignes \u00e0 ajouter\niface enp4s0 inet static\n# IP address\n address 192.168.111.160\n# network address\n network 192.168.111.0\n# subnet mask\n netmask 255.255.255.0\n# broadcast address\n broadcast 192.168.111.255\n# default gateway\n gateway 192.168.111.254\n# name server\n dns-nameservers 8.8.8.8 8.8.4.4\n\n\n\n\nExplications:\n\n\n\n\nenp4s0: c'est le nom donn\u00e9 par Debian \u00e0 mon interface r\u00e9seau\n\n\nl'adresse IP est l'adresse que j'ai choisie dans mon r\u00e9seau local pour mon serveur\n\n\nnous avons ensuite l'adresse r\u00e9seau\n\n\npuis le masque\n\n\nl'adresse de broadcast\n\n\net l'adresse de sortie de notre r\u00e9seau (en fait l'adresse est fix\u00e9e par notre routeur: la mienne est: 254)\n\n\nles serveurs de nom: nous allons mettre un serveur de nom \nprovisoire\n avant d'installer notre propre serveur de noms. J'ai pris ici les serveurs de Google.\n\n\n\n\nSauvegarde du fichier et red\u00e9marrage du serveur.\n\n\nVous noterez que la connexion par \nssh\n \u00e9choue, car l'empreinte du serveur a chang\u00e9.\n\n\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\nIT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!\nSomeone could be eavesdropping on you right now (man-in-the-middle attack)!\nIt is also possible that a host key has just been changed.\nThe fingerprint for the ECDSA key sent by the remote host is\nSHA256:w0HKVAyxVFC2t50O6hte6PioCIAjcwxus7Mm8/Q+NBo.\nPlease contact your system administrator.\nAdd correct host key in /home/eric/.ssh/known_hosts to get rid of this message.\nOffending ECDSA key in /home/eric/.ssh/known_hosts:14\n remove with:\n ssh-keygen -f \"/home/eric/.ssh/known_hosts\" -R atom\nECDSA host key for atom has changed and you have requested strict checking.\nHost key verification failed.\n\n\n\n\nSuivez les instructions donn\u00e9es par le message de \nssh\n et reconnectez-vous.\n\n\neric@aldebaran:~$ ssh ericadmin@atom\nThe authenticity of host 'atom (192.168.111.160)' can't be established.\nECDSA key fingerprint is SHA256:w0HKVAyxVFC2t50O6hte6PioCIAjcwxus7Mm8/Q+NBo.\nAre you sure you want to continue connecting (yes/no)? yes\nWarning: Permanently added 'atom,192.168.111.160' (ECDSA) to the list of known hosts.\nLast login: Mon Dec 25 10:57:50 2017 from 192.168.111.150\nericadmin@atom:~$\n\n\n\n\nTest de l'adresse IPV4 (mode super-utilisateur)\n\n\nroot@atom:/home/ericadmin# ifconfig\nenp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500\n inet 192.168.111.160 netmask 255.255.255.0 broadcast 192.168.111.255\n inet6 2a01:e0a:54:c220:223:54ff:fec6:a07 prefixlen 64 scopeid 0x0<global>\n inet6 fe80::223:54ff:fec6:a07 prefixlen 64 scopeid 0x20<link>\n ether 00:23:54:c6:0a:07 txqueuelen 1000 (Ethernet)\n RX packets 1666 bytes 134780 (131.6 KiB)\n RX errors 0 dropped 2 overruns 0 frame 0\n TX packets 432 bytes 39182 (38.2 KiB)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0\n\nlo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536\n inet 127.0.0.1 netmask 255.0.0.0\n inet6 ::1 prefixlen 128 scopeid 0x10<host>\n loop txqueuelen 1 (Boucle locale)\n RX packets 0 bytes 0 (0.0 B)\n RX errors 0 dropped 0 overruns 0 frame 0\n TX packets 0 bytes 0 (0.0 B)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0\n\nroot@atom:/home/ericadmin#\n\n\n\n\nMon adresse IPV4 est la bonne: \n192.168.111.160\n\n\nConfiguration de l'IPV6\n\n\nNous allons utiliser la configuration automatique. Un pr\u00e9fixe IPV6 nous est attribu\u00e9 par notre fournisseur d'acc\u00e8s. Nous disposons d'un pool gigantesque d'adresses IPV6 utilisables comme bon nous semble.\n\n\nAvec la configuration automatique, une adresse ipv6 est fabriqu\u00e9e \u00e0 partir de l'adresse mac de notre interface r\u00e9seau. C'est une adresse fixe qui ne changera pas tant que nous ne changerons pas le mat\u00e9riel r\u00e9seau du serveur.\n\n\nEn configuration manuelle, nous pouvons attribuer l'adresse de notre choix, comprise bien s\u00fbr dans le pool d'adresses.\n\n\nNous allons ajouter une option qui permet d'augmenter la protection de la vie priv\u00e9e. Du fait du pool d'adresses disponibles, il est possible de demander au syst\u00e8me de changer r\u00e9guli\u00e8rement d'adresses pour les requ\u00eates ext\u00e9rieures. L'interface r\u00e9seau de notre serveur peut \u00eatre dot\u00e9e de plusieurs adresses IPV6 simultan\u00e9ment. L'option \u00e0 rajouter est: \nprivext 2\n.\n\n\n\n\nNote: nous devrons changer cette configuration ensuite car il faut que l'adresse unique renvoy\u00e9e par le serveur DNS soit la m\u00eame que l'adresse d'\u00e9mission ...\nL'adresse d'\u00e9mission change avec le param\u00e8tre \nprivext 2\n et cette adresse ne correspond pas avec celle renvoy\u00e9e par le serveur DNS. Il nous faudra employer une adresse statique, et unique pour notre serveur (en IPV4 et IPV6.)\n\n\n\n\n#This is an autoconfigured IPv6 interface\niface enp2s0 inet6 auto\n privext 2\n\n\n\n\nLe r\u00e9sultat est le suivant:\n\n\nenp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500\n inet 192.168.111.240 netmask 255.255.255.0 broadcast 192.168.111.255\n inet6 2a01:e0a:54:c220:e128:ec57:4b1a:b078 prefixlen 64 scopeid 0x0<global>\n inet6 fe80::3aea:a7ff:fea6:cf93 prefixlen 64 scopeid 0x20<link>\n inet6 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 prefixlen 64 scopeid 0x0<global>\n ether 38:ea:a7:a6:cf:93 txqueuelen 1000 (Ethernet)\n RX packets 7753 bytes 551016 (538.1 KiB)\n RX errors 0 dropped 0 overruns 0 frame 0\n TX packets 1579 bytes 152907 (149.3 KiB)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0\n device interrupt 18\n\n\n\n\nVous noterez la pr\u00e9sence de 3 adresses ipv6.\n\n\n\n\n\n\nUne adresse commen\u00e7ant par inet6 fe80:\n Cette adresse n'est pas rout\u00e9e sur le r\u00e9seau internet. Elle ne sert que pour le r\u00e9seau local. Elle est marqu\u00e9e: \u00ablink\u00bb.\n\n\n\n\n\n\n2 autres adresses ipv6 marqu\u00e9es \u00abglobal\u00bb: l'une d'elle est l'adresse bas\u00e9e sur l'adresse mac de la carte r\u00e9seau, l'autre a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9e par le syst\u00e8me.\n\n\n\n\n\n\nCes 3 adresses sont dans le pool d'adresses attribu\u00e9 par le FAI, et donc, les 64 premiers bits de l'adresse constituent le pr\u00e9fixe ipv6. Le pool d'adresses peu \u00eatre de 64 bits ou 56 suivant les fournisseurs, ou moins encore.\n\n\nTester la configuration r\u00e9seau\n\n\nJe teste la connexion IPV6 \u00e0 partir de ma machine de bureau.\n\n\nPremi\u00e8re adresse ipv6:\n\n\neric@aldebaran:~$ ping6 2a01:e0a:54:c220:e128:ec57:4b1a:b078\nPING 2a01:e0a:54:c220:e128:ec57:4b1a:b078(2a01:e0a:54:c220:e128:ec57:4b1a:b078) 56 data bytes\n64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=1 ttl=64 time=0.487 ms\n64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=2 ttl=64 time=0.339 ms\n64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=3 ttl=64 time=0.322 ms\n^C\n 2a01:e0a:54:c220:e128:ec57:4b1a:b078 ping statistics\n3 packets transmitted, 3 received, 0% packet loss, time 2046ms\nrtt min/avg/max/mdev = 0.322/0.382/0.487/0.077 ms\neric@aldebaran:~$\n\n\n\n\n2\u00e8me adresse ipv6:\n\n\neric@aldebaran:~$ ping6 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93\nPING 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93(2a01:e0a:54:c220:3aea:a7ff:fea6:cf93) 56 data bytes\n64 bytes from 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93: icmp_seq=1 ttl=64 time=0.571 ms\n64 bytes from 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93: icmp_seq=2 ttl=64 time=0.424 ms\n^C\n 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 ping statistics\n2 packets transmitted, 2 received, 0% packet loss, time 1020ms\nrtt min/avg/max/mdev = 0.424/0.497/0.571/0.076 ms\n\n\n\n\n3\u00e8me adresse ipv6:\n\n\nroot@aldebaran:/home/eric# ping6 -I enp4s0 fe80:0:0:0:3aea:a7ff:fea6:cf93\nPING fe80:0:0:0:3aea:a7ff:fea6:cf93(fe80::3aea:a7ff:fea6:cf93) from fe80::1e6f:65ff:fe92:dd1f%enp4s0 enp4s0: 56 data bytes\n64 bytes from fe80::3aea:a7ff:fea6:cf93%enp4s0: icmp_seq=1 ttl=64 time=0.336 ms\n64 bytes from fe80::3aea:a7ff:fea6:cf93%enp4s0: icmp_seq=2 ttl=64 time=0.357 ms\n^C\n fe80:0:0:0:3aea:a7ff:fea6:cf93 ping statistics\n2 packets transmitted, 2 received, 0% packet loss, time 1026ms\nrtt min/avg/max/mdev = 0.336/0.346/0.357/0.021 ms\n\n\n\n\nVous noterez que pour l'adresse \u00ablink\u00bb commen\u00e7ant par Fe80::, il faut sp\u00e9cifier l'interface r\u00e9seau. (-i enp4s0 )\n\n\nVous pouvez constater que tout marche comme il se doit.\n\n\nIl faut bien s\u00fbr tester la connectivit\u00e9 dans les 2 sens: serveur -> autre machine \nET\n\n autre machine -> serveur.\n\n\nQuelques liens:\n\n\n\n\nLinux France en fran\u00e7ais\n\n\nCyberciti IPV6 Howto en anglais",
  181. "title": "Configuration du r\u00e9seau"
  182. },
  183. {
  184. "location": "/3-trois/#configuration-du-reseau",
  185. "text": "Nous avons utilis\u00e9 la configuration automatique du r\u00e9seau (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)",
  186. "title": "Configuration du r\u00e9seau"
  187. },
  188. {
  189. "location": "/3-trois/#configuration-de-lipv4",
  190. "text": "Les \u00e9l\u00e9ments suivants ont \u00e9t\u00e9 configur\u00e9s dans l'interface de configuration de ma box (Freebox dans mon cas) Mon r\u00e9seau domestique est: 192.168.111.0 \nMa passerelle est: 192.168.111.254 J'ai choisi l'adresse suivante pour mon serveur: 192.168.111.160 et j'ai configur\u00e9 cette adresse comme zone \u201cDMZ\u201d sur ma Freebox (zone d\u00e9militaris\u00e9e, accessible de l'ext\u00e9rieur) La configuration se fait dans le fichier: /etc/network/interfaces Nous avons ceci: source /etc/network/interfaces.d/*\n\n# The loopback network interface\nauto lo\niface lo inet loopback\n\n# The primary network interface\nallow-hotplug enp4s0\niface enp4s0 inet dhcp\n# This is an autoconfigured IPv6 interface\niface enp4s0 inet6 auto Vous noterez que le nom des interfaces a chang\u00e9 ... Modification de l'interface r\u00e9seau IPV4: Les lignes concern\u00e9es sont: # The primary network interface\nallow-hotplug enp4s0\niface enp4s0 inet dhcp Modifiez ces lignes pour obtenir: # The primary network interface\nallow-hotplug enp4s0\n# iface enp4s0 inet dhcp (ligne \u00e0 commenter)\n# lignes \u00e0 ajouter\niface enp4s0 inet static\n# IP address\n address 192.168.111.160\n# network address\n network 192.168.111.0\n# subnet mask\n netmask 255.255.255.0\n# broadcast address\n broadcast 192.168.111.255\n# default gateway\n gateway 192.168.111.254\n# name server\n dns-nameservers 8.8.8.8 8.8.4.4 Explications: enp4s0: c'est le nom donn\u00e9 par Debian \u00e0 mon interface r\u00e9seau l'adresse IP est l'adresse que j'ai choisie dans mon r\u00e9seau local pour mon serveur nous avons ensuite l'adresse r\u00e9seau puis le masque l'adresse de broadcast et l'adresse de sortie de notre r\u00e9seau (en fait l'adresse est fix\u00e9e 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\u00e9marrage du serveur. Vous noterez que la connexion par ssh \u00e9choue, car l'empreinte du serveur a chang\u00e9. @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\n@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @\n@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\nIT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!\nSomeone could be eavesdropping on you right now (man-in-the-middle attack)!\nIt is also possible that a host key has just been changed.\nThe fingerprint for the ECDSA key sent by the remote host is\nSHA256:w0HKVAyxVFC2t50O6hte6PioCIAjcwxus7Mm8/Q+NBo.\nPlease contact your system administrator.\nAdd correct host key in /home/eric/.ssh/known_hosts to get rid of this message.\nOffending ECDSA key in /home/eric/.ssh/known_hosts:14\n remove with:\n ssh-keygen -f \"/home/eric/.ssh/known_hosts\" -R atom\nECDSA host key for atom has changed and you have requested strict checking.\nHost key verification failed. Suivez les instructions donn\u00e9es par le message de ssh et reconnectez-vous. eric@aldebaran:~$ ssh ericadmin@atom\nThe authenticity of host 'atom (192.168.111.160)' can't be established.\nECDSA key fingerprint is SHA256:w0HKVAyxVFC2t50O6hte6PioCIAjcwxus7Mm8/Q+NBo.\nAre you sure you want to continue connecting (yes/no)? yes\nWarning: Permanently added 'atom,192.168.111.160' (ECDSA) to the list of known hosts.\nLast login: Mon Dec 25 10:57:50 2017 from 192.168.111.150\nericadmin@atom:~$ Test de l'adresse IPV4 (mode super-utilisateur) root@atom:/home/ericadmin# ifconfig\nenp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500\n inet 192.168.111.160 netmask 255.255.255.0 broadcast 192.168.111.255\n inet6 2a01:e0a:54:c220:223:54ff:fec6:a07 prefixlen 64 scopeid 0x0<global>\n inet6 fe80::223:54ff:fec6:a07 prefixlen 64 scopeid 0x20<link>\n ether 00:23:54:c6:0a:07 txqueuelen 1000 (Ethernet)\n RX packets 1666 bytes 134780 (131.6 KiB)\n RX errors 0 dropped 2 overruns 0 frame 0\n TX packets 432 bytes 39182 (38.2 KiB)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0\n\nlo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536\n inet 127.0.0.1 netmask 255.0.0.0\n inet6 ::1 prefixlen 128 scopeid 0x10<host>\n loop txqueuelen 1 (Boucle locale)\n RX packets 0 bytes 0 (0.0 B)\n RX errors 0 dropped 0 overruns 0 frame 0\n TX packets 0 bytes 0 (0.0 B)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0\n\nroot@atom:/home/ericadmin# Mon adresse IPV4 est la bonne: 192.168.111.160",
  191. "title": "Configuration de l'IPV4"
  192. },
  193. {
  194. "location": "/3-trois/#configuration-de-lipv6",
  195. "text": "Nous allons utiliser la configuration automatique. Un pr\u00e9fixe IPV6 nous est attribu\u00e9 par notre fournisseur d'acc\u00e8s. Nous disposons d'un pool gigantesque d'adresses IPV6 utilisables comme bon nous semble. Avec la configuration automatique, une adresse ipv6 est fabriqu\u00e9e \u00e0 partir de l'adresse mac de notre interface r\u00e9seau. C'est une adresse fixe qui ne changera pas tant que nous ne changerons pas le mat\u00e9riel r\u00e9seau du serveur. En configuration manuelle, nous pouvons attribuer l'adresse de notre choix, comprise bien s\u00fbr dans le pool d'adresses. Nous allons ajouter une option qui permet d'augmenter la protection de la vie priv\u00e9e. Du fait du pool d'adresses disponibles, il est possible de demander au syst\u00e8me de changer r\u00e9guli\u00e8rement d'adresses pour les requ\u00eates ext\u00e9rieures. L'interface r\u00e9seau de notre serveur peut \u00eatre dot\u00e9e de plusieurs adresses IPV6 simultan\u00e9ment. L'option \u00e0 rajouter est: privext 2 . Note: nous devrons changer cette configuration ensuite car il faut que l'adresse unique renvoy\u00e9e par le serveur DNS soit la m\u00eame que l'adresse d'\u00e9mission ...\nL'adresse d'\u00e9mission change avec le param\u00e8tre privext 2 et cette adresse ne correspond pas avec celle renvoy\u00e9e 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\niface enp2s0 inet6 auto\n privext 2 Le r\u00e9sultat est le suivant: enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500\n inet 192.168.111.240 netmask 255.255.255.0 broadcast 192.168.111.255\n inet6 2a01:e0a:54:c220:e128:ec57:4b1a:b078 prefixlen 64 scopeid 0x0<global>\n inet6 fe80::3aea:a7ff:fea6:cf93 prefixlen 64 scopeid 0x20<link>\n inet6 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 prefixlen 64 scopeid 0x0<global>\n ether 38:ea:a7:a6:cf:93 txqueuelen 1000 (Ethernet)\n RX packets 7753 bytes 551016 (538.1 KiB)\n RX errors 0 dropped 0 overruns 0 frame 0\n TX packets 1579 bytes 152907 (149.3 KiB)\n TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0\n device interrupt 18 Vous noterez la pr\u00e9sence de 3 adresses ipv6. Une adresse commen\u00e7ant par inet6 fe80:\n Cette adresse n'est pas rout\u00e9e sur le r\u00e9seau internet. Elle ne sert que pour le r\u00e9seau local. Elle est marqu\u00e9e: \u00ablink\u00bb. 2 autres adresses ipv6 marqu\u00e9es \u00abglobal\u00bb: l'une d'elle est l'adresse bas\u00e9e sur l'adresse mac de la carte r\u00e9seau, l'autre a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9e par le syst\u00e8me. Ces 3 adresses sont dans le pool d'adresses attribu\u00e9 par le FAI, et donc, les 64 premiers bits de l'adresse constituent le pr\u00e9fixe ipv6. Le pool d'adresses peu \u00eatre de 64 bits ou 56 suivant les fournisseurs, ou moins encore.",
  196. "title": "Configuration de l'IPV6"
  197. },
  198. {
  199. "location": "/3-trois/#tester-la-configuration-reseau",
  200. "text": "Je teste la connexion IPV6 \u00e0 partir de ma machine de bureau. Premi\u00e8re adresse ipv6: eric@aldebaran:~$ ping6 2a01:e0a:54:c220:e128:ec57:4b1a:b078\nPING 2a01:e0a:54:c220:e128:ec57:4b1a:b078(2a01:e0a:54:c220:e128:ec57:4b1a:b078) 56 data bytes\n64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=1 ttl=64 time=0.487 ms\n64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=2 ttl=64 time=0.339 ms\n64 bytes from 2a01:e0a:54:c220:e128:ec57:4b1a:b078: icmp_seq=3 ttl=64 time=0.322 ms\n^C\n 2a01:e0a:54:c220:e128:ec57:4b1a:b078 ping statistics\n3 packets transmitted, 3 received, 0% packet loss, time 2046ms\nrtt min/avg/max/mdev = 0.322/0.382/0.487/0.077 ms\neric@aldebaran:~$ 2\u00e8me adresse ipv6: eric@aldebaran:~$ ping6 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93\nPING 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93(2a01:e0a:54:c220:3aea:a7ff:fea6:cf93) 56 data bytes\n64 bytes from 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93: icmp_seq=1 ttl=64 time=0.571 ms\n64 bytes from 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93: icmp_seq=2 ttl=64 time=0.424 ms\n^C\n 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 ping statistics\n2 packets transmitted, 2 received, 0% packet loss, time 1020ms\nrtt min/avg/max/mdev = 0.424/0.497/0.571/0.076 ms 3\u00e8me adresse ipv6: root@aldebaran:/home/eric# ping6 -I enp4s0 fe80:0:0:0:3aea:a7ff:fea6:cf93\nPING fe80:0:0:0:3aea:a7ff:fea6:cf93(fe80::3aea:a7ff:fea6:cf93) from fe80::1e6f:65ff:fe92:dd1f%enp4s0 enp4s0: 56 data bytes\n64 bytes from fe80::3aea:a7ff:fea6:cf93%enp4s0: icmp_seq=1 ttl=64 time=0.336 ms\n64 bytes from fe80::3aea:a7ff:fea6:cf93%enp4s0: icmp_seq=2 ttl=64 time=0.357 ms\n^C\n fe80:0:0:0:3aea:a7ff:fea6:cf93 ping statistics\n2 packets transmitted, 2 received, 0% packet loss, time 1026ms\nrtt min/avg/max/mdev = 0.336/0.346/0.357/0.021 ms Vous noterez que pour l'adresse \u00ablink\u00bb commen\u00e7ant par Fe80::, il faut sp\u00e9cifier l'interface r\u00e9seau. (-i enp4s0 ) Vous pouvez constater que tout marche comme il se doit. Il faut bien s\u00fbr tester la connectivit\u00e9 dans les 2 sens: serveur -> autre machine ET \n autre machine -> serveur. Quelques liens: Linux France en fran\u00e7ais Cyberciti IPV6 Howto en anglais",
  201. "title": "Tester la configuration r\u00e9seau"
  202. },
  203. {
  204. "location": "/4-quatre/",
  205. "text": "\ufeff\n\n\nInstallation d'un serveur de temps\n\n\nL'horloge du serveur doit \u00eatre exacte, et pour cela, nous nous r\u00e9f\u00e9rons \u00e0 un serveur de temps. Le programme qui se connecte et met \u00e0 jour l'horloge de notre serveur sera \nntp\n.\n\n\nroot@atom:/home/ericadmin# apt install ntp\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n libopts25\nPaquets sugg\u00e9r\u00e9s :\n ntp-doc\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n libopts25 ntp\n0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 689 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 2 035 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 libopts25 i386 1:5.18.12-3 [71,6 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 ntp i386 1:4.2.8p10+dfsg-3+deb9u1 [617 kB]\n689 ko r\u00e9ceptionn\u00e9s en 0s (3 368 ko/s)\nS\u00e9lection du paquet libopts25:i386 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 31885 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../libopts25_1%3a5.18.12-3_i386.deb ...\nD\u00e9paquetage de libopts25:i386 (1:5.18.12-3) ...\nS\u00e9lection du paquet ntp pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../ntp_1%3a4.2.8p10+dfsg-3+deb9u1_i386.deb ...\nD\u00e9paquetage de ntp (1:4.2.8p10+dfsg-3+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ...\nParam\u00e9trage de libopts25:i386 (1:5.18.12-3) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de ntp (1:4.2.8p10+dfsg-3+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ...\n\n\n\n\nTest du serveur de temps\n\n\n2 commandes permettent de v\u00e9rifier l'\u00e9tat de \nntp\n:\n\n\n\n\nntpq -p\ntimedatectl\n\n\n\n\nVoil\u00e0 le r\u00e9sultat de ces commandes sur mon serveur:\n\n\nroot@atom:/home/ericadmin# ntpq -p\n remote refid st t when poll reach delay offset jitter\n==============================================================================\n 0.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004\n 1.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004\n 2.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004\n 3.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004\n-dev2.pik.ba 213.251.128.249 2 u 93 128 377 13.413 0.144 0.177\n-ks3352891.kimsu 138.96.64.10 2 u 174 256 377 14.022 2.951 0.157\n+www.mindstudios 193.79.237.14 2 u 108 128 377 11.008 0.594 0.134\n-gofish.zenvps.c 193.52.184.106 2 u 180 256 377 13.865 0.770 0.094\n*ip139.ip-5-196- 145.238.203.14 2 u 4 128 377 13.264 0.636 0.218\n+leeto.nicolbola 145.238.203.14 2 u 97 128 377 10.257 -0.871 0.312\n\n\nroot@atom:/home/ericadmin# timedatectl\n Local time: lun. 2017-12-25 12:17:33 CET\n Universal time: lun. 2017-12-25 11:17:33 UTC\n RTC time: lun. 2017-12-25 11:17:33\n Time zone: Europe/Paris (CET, +0100)\n Network time on: yes\nNTP synchronized: yes\n RTC in local TZ: no\nroot@atom:/home/ericadmin#\n\n\n\n\nNous pouvons voir les serveurs connect\u00e9s et l'\u00e9tat de la synchronisation.\n\n\nSi la derni\u00e8re commande renvoie: \nNetwork time on: No\n, vous pouvez essayer de configurer le service \nsystemd\n de la fa\u00e7on suivante:\n\n\n# vim /etc/systemd/timesyncd.conf\n\n\n\n\nEt ajoutez la ligne suivante:\n\n\n[Time]\nServers=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org\n\n\n\n\nSauvez le fichier et testez la configuration de la fa\u00e7on suivante:\n\n\n# timedatectl set-ntp true\n# timedatectl status\n\n\n\n\nVous devez retrouver: \nNetwork time on: Yes",
  206. "title": "Installation d'un serveur de temps"
  207. },
  208. {
  209. "location": "/4-quatre/#installation-dun-serveur-de-temps",
  210. "text": "L'horloge du serveur doit \u00eatre exacte, et pour cela, nous nous r\u00e9f\u00e9rons \u00e0 un serveur de temps. Le programme qui se connecte et met \u00e0 jour l'horloge de notre serveur sera ntp . root@atom:/home/ericadmin# apt install ntp\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n libopts25\nPaquets sugg\u00e9r\u00e9s :\n ntp-doc\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n libopts25 ntp\n0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 689 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 2 035 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 libopts25 i386 1:5.18.12-3 [71,6 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 ntp i386 1:4.2.8p10+dfsg-3+deb9u1 [617 kB]\n689 ko r\u00e9ceptionn\u00e9s en 0s (3 368 ko/s)\nS\u00e9lection du paquet libopts25:i386 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 31885 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../libopts25_1%3a5.18.12-3_i386.deb ...\nD\u00e9paquetage de libopts25:i386 (1:5.18.12-3) ...\nS\u00e9lection du paquet ntp pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../ntp_1%3a4.2.8p10+dfsg-3+deb9u1_i386.deb ...\nD\u00e9paquetage de ntp (1:4.2.8p10+dfsg-3+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ...\nParam\u00e9trage de libopts25:i386 (1:5.18.12-3) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de ntp (1:4.2.8p10+dfsg-3+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ...",
  211. "title": "Installation d'un serveur de temps"
  212. },
  213. {
  214. "location": "/4-quatre/#test-du-serveur-de-temps",
  215. "text": "2 commandes permettent de v\u00e9rifier l'\u00e9tat de ntp : ntpq -p\ntimedatectl Voil\u00e0 le r\u00e9sultat de ces commandes sur mon serveur: root@atom:/home/ericadmin# ntpq -p\n remote refid st t when poll reach delay offset jitter\n==============================================================================\n 0.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004\n 1.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004\n 2.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004\n 3.debian.pool.n .POOL. 16 p - 64 0 0.000 0.000 0.004\n-dev2.pik.ba 213.251.128.249 2 u 93 128 377 13.413 0.144 0.177\n-ks3352891.kimsu 138.96.64.10 2 u 174 256 377 14.022 2.951 0.157\n+www.mindstudios 193.79.237.14 2 u 108 128 377 11.008 0.594 0.134\n-gofish.zenvps.c 193.52.184.106 2 u 180 256 377 13.865 0.770 0.094\n*ip139.ip-5-196- 145.238.203.14 2 u 4 128 377 13.264 0.636 0.218\n+leeto.nicolbola 145.238.203.14 2 u 97 128 377 10.257 -0.871 0.312\n\n\nroot@atom:/home/ericadmin# timedatectl\n Local time: lun. 2017-12-25 12:17:33 CET\n Universal time: lun. 2017-12-25 11:17:33 UTC\n RTC time: lun. 2017-12-25 11:17:33\n Time zone: Europe/Paris (CET, +0100)\n Network time on: yes\nNTP synchronized: yes\n RTC in local TZ: no\nroot@atom:/home/ericadmin# Nous pouvons voir les serveurs connect\u00e9s et l'\u00e9tat de la synchronisation. Si la derni\u00e8re commande renvoie: Network time on: No , vous pouvez essayer de configurer le service systemd de la fa\u00e7on suivante: # vim /etc/systemd/timesyncd.conf Et ajoutez la ligne suivante: [Time]\nServers=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\u00e7on suivante: # timedatectl set-ntp true\n# timedatectl status Vous devez retrouver: Network time on: Yes",
  216. "title": "Test du serveur de temps"
  217. },
  218. {
  219. "location": "/5-cinq/",
  220. "text": "\ufeff\n\n\nInstallation d'un pare-feu\n\n\nJ'ai utilis\u00e9 depuis toujours \niptables\n \"brut\". Ayant lu beaucoup de bien de \nufw\n, je vais tenter une installation de ce dernier.\n\n\nApr\u00e8s usage, il s'av\u00e8re difficile de configurer \nfail2ban\n avec \nufw\n.\n\n\nJe vais quand m\u00eame laisser la doc de configuration de \nufw\n, tout en pr\u00e9f\u00e9rant utiliser \niptables\n.\n\n\nInstallation de iptables\n\n\nIptables\n est install\u00e9 automatiquement. Nous allons rajouter le paquet \niptables-persistent\n pour assurer le lancement automatique de nos r\u00e8gles \u00e0 l'allumage de la machine.\n\n\nroot@atom:/home/ericadmin# apt install iptables-persistent\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n netfilter-persistent\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n iptables-persistent netfilter-persistent\n0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 19,5 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 79,9 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main amd64 netfilter-persistent all 1.0.4+nmu2 [8 792 B]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main amd64 iptables-persistent all 1.0.4+nmu2 [10,7 kB]\n19,5 ko r\u00e9ceptionn\u00e9s en 0s (198 ko/s)\nPr\u00e9configuration des paquets...\nS\u00e9lection du paquet netfilter-persistent pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 36713 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../netfilter-persistent_1.0.4+nmu2_all.deb ...\nD\u00e9paquetage de netfilter-persistent (1.0.4+nmu2) ...\nS\u00e9lection du paquet iptables-persistent pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../iptables-persistent_1.0.4+nmu2_all.deb ...\nD\u00e9paquetage de iptables-persistent (1.0.4+nmu2) ...\nParam\u00e9trage de netfilter-persistent (1.0.4+nmu2) ...\nCreated symlink /etc/systemd/system/multi-user.target.wants/netfilter-persistent.service \u2192 /lib/systemd/system/netfilter-persistent.service.\nupdate-rc.d: warning: start and stop actions are no longer supported; falling back to defaults\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de iptables-persistent (1.0.4+nmu2) ...\nroot@atom:/home/ericadmin#\n\n\n\n\nNous obtenons donc 2 fichiers de configuration, /etc/iptables/rules.v4 et /etc/iptables/rules.v6.\n\n\nEn listant ces fichiers, aucune r\u00e8gle n'est encore enregistr\u00e9e: tout passe, en entr\u00e9e et en sortie.\n\n\nCes fichiers sont mis \u00e0 jour gr\u00e2ce aux commandes suivantes.\n\n\niptables-save > /etc/iptables/rules.v4\nip6tables-save > /etc/iptables/rules.v6\n\n\n\n\nLes commandes disponibles pour \nnetfilter-persistent\n sont les suivantes:\n\n\n\n\nsystemctl start netfilter-persistent\n\n\nsystemctl stop netfilter-persistent\n\n\nsystemctl restart netfilter-persistent\n\n\nsystemctl stop netfilter-persistent\n\n\nsystemctl status netfilter-persistent\n\n\n\n\nExemples d'utilisation suivant l'\u00e9tat de \nnetfilter-persistent\n:\n\n\nroot@atom:/home/ericadmin# systemctl stop netfilter-persistent\nroot@atom:/home/ericadmin# systemctl status netfilter-persistent\n\u25cf (**point en rouge**) netfilter-persistent.service - netfilter persistent configuration\n Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)\n Active: failed (Result: exit-code) since Sun 2018-02-11 13:50:22 CET; 13s ago\n Process: 1629 ExecStop=/usr/sbin/netfilter-persistent stop (code=exited, status=1/FAILURE)\n Process: 1525 ExecStart=/usr/sbin/netfilter-persistent start (code=exited, status=0/SUCCESS)\n Main PID: 1525 (code=exited, status=0/SUCCESS)\n\nf\u00e9vr. 11 13:42:02 atom systemd[1]: Starting netfilter persistent configuration...\nf\u00e9vr. 11 13:42:02 atom netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start\nf\u00e9vr. 11 13:42:02 atom netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start\nf\u00e9vr. 11 13:42:02 atom systemd[1]: Started netfilter persistent configuration.\nf\u00e9vr. 11 13:50:22 atom systemd[1]: Stopping netfilter persistent configuration...\nf\u00e9vr. 11 13:50:22 atom netfilter-persistent[1629]: Automatic flush disabled; use '/usr/sbin/netfilter-persistent flush'\nf\u00e9vr. 11 13:50:22 atom systemd[1]: netfilter-persistent.service: Control process exited, code=exited status=1\nf\u00e9vr. 11 13:50:22 atom systemd[1]: Stopped netfilter persistent configuration.\nf\u00e9vr. 11 13:50:22 atom systemd[1]: netfilter-persistent.service: Unit entered failed state.\nf\u00e9vr. 11 13:50:22 atom systemd[1]: netfilter-persistent.service: Failed with result 'exit-code'.\nroot@atom:/home/ericadmin#\n\nroot@atom:/home/ericadmin# systemctl start netfilter-persistent\nroot@atom:/home/ericadmin# systemctl status netfilter-persistent\n\u25cf (**point en vert**) netfilter-persistent.service - netfilter persistent configuration\n Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)\n Active: active (exited) since Sun 2018-02-11 13:51:09 CET; 2s ago\n Process: 1629 ExecStop=/usr/sbin/netfilter-persistent stop (code=exited, status=1/FAILURE)\n Process: 1641 ExecStart=/usr/sbin/netfilter-persistent start (code=exited, status=0/SUCCESS)\n Main PID: 1641 (code=exited, status=0/SUCCESS)\n\nf\u00e9vr. 11 13:51:09 atom systemd[1]: Starting netfilter persistent configuration...\nf\u00e9vr. 11 13:51:09 atom netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start\nf\u00e9vr. 11 13:51:09 atom netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start\nf\u00e9vr. 11 13:51:09 atom systemd[1]: Started netfilter persistent configuration.\nroot@atom:/home/ericadmin#\n\n\n\n\nPour sauver des r\u00e8gles \u201centr\u00e9es \u00e0 la main\u201d, tapez:\n\n\nroot@atom:/home/ericadmin# service netfilter-persistent save\n[....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save\nrun-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save\ndone.\nroot@atom:/home/ericadmin#\n\n\n\n\nou\n\n\nroot@atom:/home/ericadmin# iptables-save > /etc/iptables/rules.v4\nroot@atom:/home/ericadmin# ip6tables-save > /etc/iptables/rules.v6\n\n\n\n\nConfiguration des r\u00e8gles iptables\n\n\nNous allons les configurer avec un script donn\u00e9 par Nicolargo: \nSite de NicoLargo\n\n\n#! /bin/sh\n### BEGIN INIT INFO\n# Provides: PersonalFirewall\n# Required-Start: $remote_fs $syslog\n# Required-Stop: $remote_fs $syslog\n# Default-Start: 2 3 4 5\n# Default-Stop: 0 1 6\n# Short-Description: Personal Firewall\n# Description:\n### END INIT INFO\n\n# programme iptables IPV4 et IPV6\nIPT=/sbin/iptables\nIP6T=/sbin/ip6tables\n\n# Les IPs\nIPMAISON=192.168.111.150\nIP6MAISON=fe80::1e6f:65ff:fe92:dd1f\n\n# fonction qui d\u00e9marre le firewall\ndo_start() {\n\n # Efface toutes les r\u00e8gles en cours. -F toutes. -X utilisateurs\n $IPT -t filter -F\n $IPT -t filter -X\n $IPT -t nat -F\n $IPT -t nat -X\n $IPT -t mangle -F\n $IPT -t mangle -X\n #\n $IP6T -t filter -F\n $IP6T -t filter -X\n # Il n'y a pas de NAT en IPV6\n #$IP6T -t nat -F\n #$IP6T -t nat -X\n $IP6T -t mangle -F\n $IP6T -t mangle -X\n\n # strat\u00e9gie (-P) par d\u00e9faut : bloc tout l'entrant le forward et autorise le sortant\n $IPT -t filter -P INPUT DROP\n $IPT -t filter -P FORWARD DROP\n $IPT -t filter -P OUTPUT ACCEPT\n #\n $IP6T -F INPUT\n $IP6T -F FORWARD\n $IP6T -X\n\n # Loopback\n $IPT -t filter -A INPUT -i lo -j ACCEPT\n $IPT -t filter -A OUTPUT -o lo -j ACCEPT\n #\n $IP6T -t filter -A INPUT -i lo -j ACCEPT\n $IP6T -t filter -A OUTPUT -o lo -j ACCEPT\n\n # ICMP\n $IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT\n $IPT -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT\n\n # Permettre \u00e0 une connexion ouverte de recevoir du trafic en entr\u00e9e\n $IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT\n #\n $IP6T -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT\n $IP6T -A INPUT -p icmpv6 --icmpv6-type neighbor-solicitation -j ACCEPT\n $IP6T -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -j ACCEPT\n $IP6T -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT\n $IP6T -A INPUT -j ACCEPT\n $IP6T -A INPUT -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT\n $IP6T -P INPUT DROP\n $IP6T -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT\n $IP6T -A FORWARD -p icmpv6 --icmpv6-type echo-request -j ACCEPT\n $IP6T -A FORWARD -i br0 -j ACCEPT\n $IP6T -A FORWARD -i br1 -o sit_sixxs -j ACCEPT\n $IP6T -P FORWARD DROP\n\n # DNS:53\n # /!\\ Il faut autoriser le DNS AVANT de d\u00e9clarer des hosts sinon pas de r\u00e9solution de nom possible\n $IPT -t filter -A INPUT -p tcp --dport 53 -j ACCEPT\n $IPT -t filter -A INPUT -p udp --dport 53 -j ACCEPT\n\n # DNS:53\n $IP6T -t filter -A INPUT -p tcp --dport 53 -j ACCEPT\n $IP6T -t filter -A INPUT -p udp --dport 53 -j ACCEPT\n\n # DNS:953\n # /!\\ Il faut autoriser le DNS AVANT de d\u00e9clarer des hosts sinon pas de r\u00e9solution de nom possible\n $IPT -t filter -A INPUT -p tcp --dport 953 -j ACCEPT\n $IPT -t filter -A INPUT -p udp --dport 953 -j ACCEPT\n #\n $IP6T -t filter -A INPUT -p tcp --dport 953 -j ACCEPT\n $IP6T -t filter -A INPUT -p udp --dport 953 -j ACCEPT\n\n\n # accepte tout d'une ip en TCP (de la maison)\n $IPT -t filter -A INPUT -p tcp -s $IPMAISON -j ACCEPT\n $IP6T -t filter -A INPUT -p tcp -s $IP6MAISON -j ACCEPT\n\n # ssh\n $IPT -t filter -A INPUT -p tcp --dport 22 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT\n #\n $IP6T -t filter -A INPUT -p tcp --dport 22 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT\n\n\n #NTP out\n $IPT -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT\n\n\n# # HTTP + HTTPS Out\n# $IPT -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT\n# $IPT -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT\n\n# $IP6T -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT\n# $IP6T -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT\n\n# # HTTP + HTTPS In\n# $IPT -t filter -A INPUT -p tcp --dport 80 -j ACCEPT\n# $IPT -t filter -A INPUT -p tcp --dport 443 -j ACCEPT\n\n# $IP6T -t filter -A INPUT -p tcp --dport 80 -j ACCEPT\n# $IP6T -t filter -A INPUT -p tcp --dport 443 -j ACCEPT\n\n\n# # Mail SMTP:25\n# $IPT -t filter -A INPUT -p tcp --dport 25 -j ACCEPT\n# $IPT -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT\n\n# $IP6T -t filter -A INPUT -p tcp --dport 25 -j ACCEPT\n# $IP6T -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT\n\n\n# # Mail SMTP:587\n# $IPT -t filter -A INPUT -p tcp --dport 587 -j ACCEPT\n# $IPT -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT\n\n# $IP6T -t filter -A INPUT -p tcp --dport 597 -j ACCEPT\n# $IP6T -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT\n\n# # Mail IMAP:143\n# $IPT -t filter -A INPUT -p tcp --dport 143 -j ACCEPT\n# $IPT -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT\n\n# $IP6T -t filter -A INPUT -p tcp --dport 143 -j ACCEPT\n# $IP6T -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT\n\n# # Mail IMAPS:993\n# $IPT -t filter -A INPUT -p tcp --dport 993 -j ACCEPT\n# $IPT -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT\n# $IP6T -t filter -A INPUT -p tcp --dport 993 -j ACCEPT\n# $IP6T -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT\n\n# # Mail 465\n# $IPT -t filter -A INPUT -p tcp --dport 465 -j ACCEPT\n# $IPT -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT\n\n# $IP6T -t filter -A INPUT -p tcp --dport 465 -j ACCEPT\n# $IP6T -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT\n\n\n #\n echo \"firewall started [OK]\"\n}\n\n# fonction qui arr\u00eate le firewall\ndo_stop() {\n\n # Efface toutes les r\u00e8gles\n $IPT -t filter -F\n $IPT -t filter -X\n $IPT -t nat -F\n $IPT -t nat -X\n $IPT -t mangle -F\n $IPT -t mangle -X\n #\n $IP6T -t filter -F\n $IP6T -t filter -X\n #$IP6T -t nat -F\n #$IP6T -t nat -X\n $IP6T -t mangle -F\n $IP6T -t mangle -X\n\n # remet la strat\u00e9gie\n $IPT -t filter -P INPUT ACCEPT\n $IPT -t filter -P OUTPUT ACCEPT\n $IPT -t filter -P FORWARD ACCEPT\n #\n $IP6T -t filter -P INPUT ACCEPT\n $IP6T -t filter -P OUTPUT ACCEPT\n $IP6T -t filter -P FORWARD ACCEPT\n\n #\n echo \"firewall stopped [OK]\"\n}\n\n# fonction status firewall\ndo_status() {\n\n # affiche les r\u00e8gles en cours\n clear\n echo Status IPV4\n echo --\n $IPT -L -n -v\n echo\n echo --\n echo\n echo status IPV6\n echo --\n $IP6T -L -n -v\n echo\n}\n\ncase \"$1\" in\n start)\n do_start\n # quitte sans erreur\n exit 0\n ;;\n\n stop)\n do_stop\n # quitte sans erreur\n exit 0\n ;;\n\n restart)\n do_stop\n do_start\n # quitte sans erreur\n exit 0\n ;;\n\n status)\n do_status\n # quitte sans erreurs\n exit 0\n ;;\n\n *)\n # Si on ne tape ni \"start\" ni \"stop\"... on affiche une erreur\n echo \"Usage: /etc/init.d/firewall {start|stop|restart|status}\"\n # quitte le script avec un etat \"en erreur\"\n exit 1\n ;;\n\nesac\n\n\n\n\nExplications:\n\n\nCr\u00e9ation de 4 cha\u00eenes pour faciliter les op\u00e9rations:\n\n# iptables -N TCP\n# iptables -N UDP\n\n# ip6tables -N TCP\n# ip6tables -N UDP\n\nOn est sur un serveur, pas un routeur, donc, on interdit la r\u00e8gle FORWARD:\n\n# iptables -P FORWARD DROP\n\n# ip6tables -P FORWARD DROP\n\nOn autorise tout en sortie:\n\n# iptables -P OUTPUT ACCEPT\n\n# ip6tables -P OUTPUT ACCEPT\n\n\nNous allons accepter les connexions d\u00e9j\u00e0 \u00e9tablies:\n\n# iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT\n\n# ip6tables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT\n\n\nEn entr\u00e9e, on commence par interdire tout; on ouvrira les ports suivantles besoins:\n\n# iptables -P INPUT DROP\n\n# ip6tables -P INPUT DROP\n\n\nAoristaion des connexions **loopback** (internes):\n\n# iptables -A INPUT -i lo -j ACCEPT\n\n# ip6tables -A INPUT -i lo -j ACCEPT\n\nNous allons interdire les paquets marqu\u00e9s **INVALID**; il faudra auparavant accepter les paquets **ICMPv6 Neighbor Discovery** qui apparaissent invalides:\n\n#iptables -A INPUT -p 41 -j ACCEPT\n\n#ip6tables -A INPUT -p 41 -j ACCEPT\n\n# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP\n\n# ip6tables -A INPUT -m conntrack --ctstate INVALID -j DROP\n\nPour IPV6, il faut rajouter la r\u00e8gle suivante qui permet de faire passer le protocol de d\u00e9couverte des ordinateurs sur le m\u00eame r\u00e9seau:\n\n# ip6tables -A INPUT -s fe80::/10 -p ipv6-icmp -j ACCEPT\n\nL'adresse fe80:: est l'adresse ipv6 valable uniquement sur le r\u00e9seau local.\n\nOn accepte les paquets **ping**:\n\n# iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT\n\n# ip6tables -A INPUT -p icmpv6 -m conntrack --ctstate NEW -j ACCEPT\n\nOn peut maintenant accepter les nouveaux paquets entrants. Les connexions entrantes doivent commencer avec un paquet **SYNC**. Elles seront rejet\u00e9es si ce n'est pas le cas:\n\n# iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP\n# iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP\n\n# ip6tables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP\n# ip6tables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP\n\nOn rejette les paquets du protocole **icmp unreachable**\n\n# iptables -A INPUT -j REJECT --reject-with icmp-proto-unreachable\n\n# iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset\n\n# ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 128 -m conntrack --ctstate NEW -j ACCEPT\n\n# ip6tables -A INPUT -p tcp -j REJECT --reject-with tcp-reset\n\n\nPour IPV6, nous pouvons rajouter un filtrage pour le \"kernel reverse path filter\":\n\n# ip6tables -t raw -A PREROUTING -m rpfilter -j ACCEPT\n# ip6tables -t raw -A PREROUTING -j DROP\n\nOn accepte les paquets **ssh** sur le port 22 (changez ce port si vous avez configur\u00e9 vos ports diff\u00e9remment)\n\n# iptables -A TCP -p tcp --dport 22 -j ACCEPT\n\n# ip6tables -A TCP -p tcp --dport 22 -j ACCEPT\n\n\nR\u00e8gles pour le DNS et NTP (ports 53 et 41)\n\n# iptables -A INPUT -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT\n# iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT\n# iptables -A INPUT -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT\n# iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT\n\n\n# iptables -A INPUT -p udp -m state --state ESTABLISHED --sport 123 -j ACCEPT\n# iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 123 -j ACCEPT\n\nLa m\u00eame chose pour IPV6:\n\n# ip6tables -A INPUT -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT\n# ip6tables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT\n# ip6tables -A INPUT -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT\n# ip6tables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT\n\n\n# ip6tables -A INPUT -p udp -m state --state ESTABLISHED --sport 123 -j ACCEPT\n# ip6tables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 123 -j ACCEPT\n\nNous pouvons maintenant lister nos r\u00e8gles. Nous allons commencer par IPV4:\n\nListons les r\u00e8gles actuelles, ensuite ajoutons 2 r\u00e8gles et sauvons celles-ci, puis listons le r\u00e9sultat. Vous pouvez faire de m\u00eame pour toutes les r\u00e8gles.\n\n```shell\nroot@atom:/etc/iptables# cat rules.v4\n# Generated by iptables-save v1.6.0 on Sun Feb 11 14:27:32 2018\n*filter\n:INPUT ACCEPT [491:50774]\n:FORWARD ACCEPT [0:0]\n:OUTPUT ACCEPT [267:23983]\nCOMMIT\n# Completed on Sun Feb 11 14:27:32 2018\n\nroot@atom:/etc/iptables# iptables -N TCP\nroot@atom:/etc/iptables# iptables -N UDP\n\nroot@atom:/etc/iptables# service netfilter-persistent save\n[....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save\nrun-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save\ndone.\n\nroot@atom:/etc/iptables# cat rules.v4\n# Generated by iptables-save v1.6.0 on Sun Feb 11 14:28:24 2018\n*filter\n:INPUT ACCEPT [13:888]\n:FORWARD ACCEPT [0:0]\n:OUTPUT ACCEPT [8:944]\n:TCP - [0:0]\n:UDP - [0:0]\nCOMMIT\n# Completed on Sun Feb 11 14:28:24 2018\n\n\n\n\nNe pas oublier de valider la r\u00e8gle d'acceptation des connexions existantes AVANT d'entrer la r\u00e8gle INPUT DROP sinon, vous perdez toute connexion avec votre serveur :)\n\n\nIl suffit de r\u00e9p\u00e9ter pour les autres r\u00e8gles puis pour IPV6.\n\n\nNous obtenons donc les r\u00e8gles suivantes:\n\n\nPour IPV4:\n\n\nroot@atom:/etc/iptables# cat rules.v4\n# Generated by iptables-save v1.6.0 on Sun Feb 11 15:33:41 2018\n*filter\n:INPUT DROP [0:0]\n:FORWARD DROP [0:0]\n:OUTPUT ACCEPT [105:27592]\n:TCP - [0:0]\n:UDP - [0:0]\n-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT\n-A INPUT -i lo -j ACCEPT\n-A INPUT -m conntrack --ctstate INVALID -j DROP\n-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT\n-A INPUT -p udp -m conntrack --ctstate NEW -j UDP\n-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP\n-A INPUT -j REJECT --reject-with icmp-proto-unreachable\n-A INPUT -p tcp -j REJECT --reject-with tcp-reset\n-A TCP -p tcp -m tcp --dport 22 -j ACCEPT\nCOMMIT\n# Completed on Sun Feb 11 15:33:41 2018\nroot@atom:/etc/iptables#\n\n\n\n\nPour IPV6:\n\n\nroot@atom:/etc/iptables# cat rules.v6\n# Generated by ip6tables-save v1.6.0 on Sun Feb 11 15:33:41 2018\n*raw\n:PREROUTING ACCEPT [0:0]\n:OUTPUT ACCEPT [0:0]\n-A PREROUTING -m rpfilter -j ACCEPT\n-A PREROUTING -j DROP\nCOMMIT\n# Completed on Sun Feb 11 15:33:41 2018\n# Generated by ip6tables-save v1.6.0 on Sun Feb 11 15:33:41 2018\n*filter\n:INPUT DROP [1:144]\n:FORWARD DROP [0:0]\n:OUTPUT ACCEPT [0:0]\n:TCP - [0:0]\n:UDP - [0:0]\n-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT\n-A INPUT -i lo -j ACCEPT\n-A INPUT -p ipv6 -j ACCEPT\n-A INPUT -m conntrack --ctstate INVALID -j DROP\n-A INPUT -p udp -m conntrack --ctstate NEW -j UDP\n-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP\n-A INPUT -p tcp -j REJECT --reject-with tcp-reset\n-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 128 -m conntrack --ctstate NEW -j ACCEPT\n-A OUTPUT -p ipv6-icmp -j ACCEPT\n-A TCP -p tcp -m tcp --dport 22 -j ACCEPT\nCOMMIT\n# Completed on Sun Feb 11 15:33:41 2018\nroot@atom:/etc/iptables#\n\n\n\n\nTest DNS et du serveur de temps (avec iptables actif)\n\n\nroot@atom:/home/ericadmin# nslookup www.gnome.org\nServer: 192.168.111.254\nAddress: 192.168.111.254#53\n\nNon-authoritative answer:\nwww.gnome.org canonical name = proxy.gnome.org.\nName: proxy.gnome.org\nAddress: 209.132.180.168\nName: proxy.gnome.org\nAddress: 209.132.180.180\n\nroot@atom:/home/ericadmin# timedatectl status\n Local time: dim. 2018-04-01 12:26:57 CEST\n Universal time: dim. 2018-04-01 10:26:57 UTC\n RTC time: dim. 2018-04-01 10:26:58\n Time zone: Europe/Paris (CEST, +0200)\n Network time on: yes\nNTP synchronized: yes\n RTC in local TZ: no\n\n\n\n\n\u00c7a fonctionne.\n\n\nInstallation de \nufw\n\n\nJ'avais (ai) choisi \nufw\n; je ne l'ai encore jamais utilis\u00e9, donc, c'est l'occasion! Finalement, pas un tr\u00e8s bon plan, m\u00eame si cela a l'air tr\u00e8s facile en premier lieu ... je vais rester sur du \niptables\n brut avec \niptables-persistent\n.\n\n\nSon installation est d\u00e9taill\u00e9e dans le paragraphe ci-dessus.\n\n\nroot@atom:/home/ericadmin# apt install ufw\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n ufw\n0 mis \u00e0 jour, 1 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 164 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 848 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 ufw all 0.35-4 [164 kB]\n164 ko r\u00e9ceptionn\u00e9s en 0s (1 239 ko/s)\nPr\u00e9configuration des paquets...\nS\u00e9lection du paquet ufw pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 31776 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../archives/ufw_0.35-4_all.deb ...\nD\u00e9paquetage de ufw (0.35-4) ...\nParam\u00e9trage de ufw (0.35-4) ...\n\nCreating config file /etc/ufw/before.rules with new version\n\nCreating config file /etc/ufw/before6.rules with new version\n\nCreating config file /etc/ufw/after.rules with new version\n\nCreating config file /etc/ufw/after6.rules with new version\nCreated symlink /etc/systemd/system/multi-user.target.wants/ufw.service \u2192 /lib/systemd/system/ufw.service.\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour rsyslog (8.24.0-1) ...\n\n\n\n\nConfiguration de \nufw\n\n\nApr\u00e8s installation, le pare-feu est inactif.\n\n\nroot@atom:/home/ericadmin# ufw status\nStatus: inactive\nroot@atom:/home/ericadmin#\n\n\n\n\nNous allons autoriser les connexions \nssh\n et \nntp\n, seuls services en place pour l'instant.\n\n\nroot@atom:/home/ericadmin# ufw allow 22\nRules updated\nRules updated (v6)\nroot@atom:/home/ericadmin#\n\nroot@atom:/etc/fail2ban# ufw allow ntp\nRule added\nRule added (v6)\n\n\n\n\nActivation du pare-feu:\n\n\nroot@atom:/home/ericadmin# ufw enable\nCommand may disrupt existing ssh connections. Proceed with operation (y|n)? y\nFirewall is active and enabled on system startup\nroot@atom:/home/ericadmin#\n\n\n\n\nV\u00e9rification:\n\n\nroot@atom:/home/ericadmin# ufw status\nStatus: active\n\nTo Action From\n-- -\n22 ALLOW Anywhere\n123 ALLOW Anywhere\n22 (v6) ALLOW Anywhere (v6)\n123 (v6) ALLOW Anywhere (v6)\n\nroot@atom:/home/ericadmin#\n\n\n\n\nLes connexions \nssh\n et \nntp\n sont autoris\u00e9es, en \nIPV4\n et \nIPV6\n.\n\n\nNous ajouterons des r\u00e8gles en fonction des services utilis\u00e9s.\n\n\nPour d\u00e9sactiver le pare-feu:\n\n\nufw disable\n\n\n\n\nActivation du logging des actions de \nufw\n\n\nroot@atom:/home/ericadmin# ufw logging on\nLogging enabled\nroot@atom:/home/ericadmin#\n\n\n\n\nVous pouvez voir l'ensemble des commandes de \nufw\n en tapant:\n\n\nroot@atom:/home/ericadmin# ufw --help\n\nUsage: ufw COMMAND\n\nCommands:\n enable enables the firewall\n disable disables the firewall\n default ARG set default policy\n logging LEVEL set logging to LEVEL\n allow ARGS add allow rule\n deny ARGS add deny rule\n reject ARGS add reject rule\n limit ARGS add limit rule\n delete RULE|NUM delete RULE\n insert NUM RULE insert RULE at NUM\n route RULE add route RULE\n route delete RULE|NUM delete route RULE\n route insert NUM RULE insert route RULE at NUM\n reload reload firewall\n reset reset firewall\n status show firewall status\n status numbered show firewall status as numbered list of RULES\n status verbose show verbose firewall status\n show ARG show firewall report\n version display version information\n\nApplication profile commands:\n app list list application profiles\n app info PROFILE show information on PROFILE\n app update PROFILE update PROFILE\n app default ARG set default application policy\n\nroot@atom:/home/ericadmin#\n\n\n\n\nIl faut re-tester la connectivit\u00e9 en IPV4 et IPV6\n\n\n\n\nServeur -> ext\u00e9rieur\n\n\nExt\u00e9rieur -> serveur\n\n\n\n\nOn peut utiliser l'adresse \nipv6.google.com\n pour v\u00e9rifier la connexion IPV6 en dehors du r\u00e9seau local.",
  221. "title": "Installation d'un pare-feu"
  222. },
  223. {
  224. "location": "/5-cinq/#installation-dun-pare-feu",
  225. "text": "J'ai utilis\u00e9 depuis toujours iptables \"brut\". Ayant lu beaucoup de bien de ufw , je vais tenter une installation de ce dernier. Apr\u00e8s usage, il s'av\u00e8re difficile de configurer fail2ban avec ufw . Je vais quand m\u00eame laisser la doc de configuration de ufw , tout en pr\u00e9f\u00e9rant utiliser iptables .",
  226. "title": "Installation d'un pare-feu"
  227. },
  228. {
  229. "location": "/5-cinq/#installation-de-iptables",
  230. "text": "Iptables est install\u00e9 automatiquement. Nous allons rajouter le paquet iptables-persistent pour assurer le lancement automatique de nos r\u00e8gles \u00e0 l'allumage de la machine. root@atom:/home/ericadmin# apt install iptables-persistent\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n netfilter-persistent\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n iptables-persistent netfilter-persistent\n0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 19,5 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 79,9 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main amd64 netfilter-persistent all 1.0.4+nmu2 [8 792 B]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main amd64 iptables-persistent all 1.0.4+nmu2 [10,7 kB]\n19,5 ko r\u00e9ceptionn\u00e9s en 0s (198 ko/s)\nPr\u00e9configuration des paquets...\nS\u00e9lection du paquet netfilter-persistent pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 36713 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../netfilter-persistent_1.0.4+nmu2_all.deb ...\nD\u00e9paquetage de netfilter-persistent (1.0.4+nmu2) ...\nS\u00e9lection du paquet iptables-persistent pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../iptables-persistent_1.0.4+nmu2_all.deb ...\nD\u00e9paquetage de iptables-persistent (1.0.4+nmu2) ...\nParam\u00e9trage de netfilter-persistent (1.0.4+nmu2) ...\nCreated symlink /etc/systemd/system/multi-user.target.wants/netfilter-persistent.service \u2192 /lib/systemd/system/netfilter-persistent.service.\nupdate-rc.d: warning: start and stop actions are no longer supported; falling back to defaults\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de iptables-persistent (1.0.4+nmu2) ...\nroot@atom:/home/ericadmin# Nous obtenons donc 2 fichiers de configuration, /etc/iptables/rules.v4 et /etc/iptables/rules.v6. En listant ces fichiers, aucune r\u00e8gle n'est encore enregistr\u00e9e: tout passe, en entr\u00e9e et en sortie. Ces fichiers sont mis \u00e0 jour gr\u00e2ce aux commandes suivantes. iptables-save > /etc/iptables/rules.v4\nip6tables-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'\u00e9tat de netfilter-persistent : root@atom:/home/ericadmin# systemctl stop netfilter-persistent\nroot@atom:/home/ericadmin# systemctl status netfilter-persistent\n\u25cf (**point en rouge**) netfilter-persistent.service - netfilter persistent configuration\n Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)\n Active: failed (Result: exit-code) since Sun 2018-02-11 13:50:22 CET; 13s ago\n Process: 1629 ExecStop=/usr/sbin/netfilter-persistent stop (code=exited, status=1/FAILURE)\n Process: 1525 ExecStart=/usr/sbin/netfilter-persistent start (code=exited, status=0/SUCCESS)\n Main PID: 1525 (code=exited, status=0/SUCCESS)\n\nf\u00e9vr. 11 13:42:02 atom systemd[1]: Starting netfilter persistent configuration...\nf\u00e9vr. 11 13:42:02 atom netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start\nf\u00e9vr. 11 13:42:02 atom netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start\nf\u00e9vr. 11 13:42:02 atom systemd[1]: Started netfilter persistent configuration.\nf\u00e9vr. 11 13:50:22 atom systemd[1]: Stopping netfilter persistent configuration...\nf\u00e9vr. 11 13:50:22 atom netfilter-persistent[1629]: Automatic flush disabled; use '/usr/sbin/netfilter-persistent flush'\nf\u00e9vr. 11 13:50:22 atom systemd[1]: netfilter-persistent.service: Control process exited, code=exited status=1\nf\u00e9vr. 11 13:50:22 atom systemd[1]: Stopped netfilter persistent configuration.\nf\u00e9vr. 11 13:50:22 atom systemd[1]: netfilter-persistent.service: Unit entered failed state.\nf\u00e9vr. 11 13:50:22 atom systemd[1]: netfilter-persistent.service: Failed with result 'exit-code'.\nroot@atom:/home/ericadmin#\n\nroot@atom:/home/ericadmin# systemctl start netfilter-persistent\nroot@atom:/home/ericadmin# systemctl status netfilter-persistent\n\u25cf (**point en vert**) netfilter-persistent.service - netfilter persistent configuration\n Loaded: loaded (/lib/systemd/system/netfilter-persistent.service; enabled; vendor preset: enabled)\n Active: active (exited) since Sun 2018-02-11 13:51:09 CET; 2s ago\n Process: 1629 ExecStop=/usr/sbin/netfilter-persistent stop (code=exited, status=1/FAILURE)\n Process: 1641 ExecStart=/usr/sbin/netfilter-persistent start (code=exited, status=0/SUCCESS)\n Main PID: 1641 (code=exited, status=0/SUCCESS)\n\nf\u00e9vr. 11 13:51:09 atom systemd[1]: Starting netfilter persistent configuration...\nf\u00e9vr. 11 13:51:09 atom netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start\nf\u00e9vr. 11 13:51:09 atom netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start\nf\u00e9vr. 11 13:51:09 atom systemd[1]: Started netfilter persistent configuration.\nroot@atom:/home/ericadmin# Pour sauver des r\u00e8gles \u201centr\u00e9es \u00e0 la main\u201d, tapez: root@atom:/home/ericadmin# service netfilter-persistent save\n[....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save\nrun-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save\ndone.\nroot@atom:/home/ericadmin# ou root@atom:/home/ericadmin# iptables-save > /etc/iptables/rules.v4\nroot@atom:/home/ericadmin# ip6tables-save > /etc/iptables/rules.v6",
  231. "title": "Installation de iptables"
  232. },
  233. {
  234. "location": "/5-cinq/#configuration-des-regles-iptables",
  235. "text": "Nous allons les configurer avec un script donn\u00e9 par Nicolargo: Site de NicoLargo #! /bin/sh\n### BEGIN INIT INFO\n# Provides: PersonalFirewall\n# Required-Start: $remote_fs $syslog\n# Required-Stop: $remote_fs $syslog\n# Default-Start: 2 3 4 5\n# Default-Stop: 0 1 6\n# Short-Description: Personal Firewall\n# Description:\n### END INIT INFO\n\n# programme iptables IPV4 et IPV6\nIPT=/sbin/iptables\nIP6T=/sbin/ip6tables\n\n# Les IPs\nIPMAISON=192.168.111.150\nIP6MAISON=fe80::1e6f:65ff:fe92:dd1f\n\n# fonction qui d\u00e9marre le firewall\ndo_start() {\n\n # Efface toutes les r\u00e8gles en cours. -F toutes. -X utilisateurs\n $IPT -t filter -F\n $IPT -t filter -X\n $IPT -t nat -F\n $IPT -t nat -X\n $IPT -t mangle -F\n $IPT -t mangle -X\n #\n $IP6T -t filter -F\n $IP6T -t filter -X\n # Il n'y a pas de NAT en IPV6\n #$IP6T -t nat -F\n #$IP6T -t nat -X\n $IP6T -t mangle -F\n $IP6T -t mangle -X\n\n # strat\u00e9gie (-P) par d\u00e9faut : bloc tout l'entrant le forward et autorise le sortant\n $IPT -t filter -P INPUT DROP\n $IPT -t filter -P FORWARD DROP\n $IPT -t filter -P OUTPUT ACCEPT\n #\n $IP6T -F INPUT\n $IP6T -F FORWARD\n $IP6T -X\n\n # Loopback\n $IPT -t filter -A INPUT -i lo -j ACCEPT\n $IPT -t filter -A OUTPUT -o lo -j ACCEPT\n #\n $IP6T -t filter -A INPUT -i lo -j ACCEPT\n $IP6T -t filter -A OUTPUT -o lo -j ACCEPT\n\n # ICMP\n $IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT\n $IPT -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT\n\n # Permettre \u00e0 une connexion ouverte de recevoir du trafic en entr\u00e9e\n $IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT\n #\n $IP6T -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT\n $IP6T -A INPUT -p icmpv6 --icmpv6-type neighbor-solicitation -j ACCEPT\n $IP6T -A INPUT -p icmpv6 --icmpv6-type neighbor-advertisement -j ACCEPT\n $IP6T -A INPUT -p icmpv6 --icmpv6-type echo-request -j ACCEPT\n $IP6T -A INPUT -j ACCEPT\n $IP6T -A INPUT -p icmpv6 --icmpv6-type router-solicitation -j ACCEPT\n $IP6T -P INPUT DROP\n $IP6T -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT\n $IP6T -A FORWARD -p icmpv6 --icmpv6-type echo-request -j ACCEPT\n $IP6T -A FORWARD -i br0 -j ACCEPT\n $IP6T -A FORWARD -i br1 -o sit_sixxs -j ACCEPT\n $IP6T -P FORWARD DROP\n\n # DNS:53\n # /!\\ Il faut autoriser le DNS AVANT de d\u00e9clarer des hosts sinon pas de r\u00e9solution de nom possible\n $IPT -t filter -A INPUT -p tcp --dport 53 -j ACCEPT\n $IPT -t filter -A INPUT -p udp --dport 53 -j ACCEPT\n\n # DNS:53\n $IP6T -t filter -A INPUT -p tcp --dport 53 -j ACCEPT\n $IP6T -t filter -A INPUT -p udp --dport 53 -j ACCEPT\n\n # DNS:953\n # /!\\ Il faut autoriser le DNS AVANT de d\u00e9clarer des hosts sinon pas de r\u00e9solution de nom possible\n $IPT -t filter -A INPUT -p tcp --dport 953 -j ACCEPT\n $IPT -t filter -A INPUT -p udp --dport 953 -j ACCEPT\n #\n $IP6T -t filter -A INPUT -p tcp --dport 953 -j ACCEPT\n $IP6T -t filter -A INPUT -p udp --dport 953 -j ACCEPT\n\n\n # accepte tout d'une ip en TCP (de la maison)\n $IPT -t filter -A INPUT -p tcp -s $IPMAISON -j ACCEPT\n $IP6T -t filter -A INPUT -p tcp -s $IP6MAISON -j ACCEPT\n\n # ssh\n $IPT -t filter -A INPUT -p tcp --dport 22 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT\n #\n $IP6T -t filter -A INPUT -p tcp --dport 22 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 22 -j ACCEPT\n\n\n #NTP out\n $IPT -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p udp --dport 123 -j ACCEPT\n\n\n# # HTTP + HTTPS Out\n# $IPT -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT\n# $IPT -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT\n\n# $IP6T -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT\n# $IP6T -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT\n\n# # HTTP + HTTPS In\n# $IPT -t filter -A INPUT -p tcp --dport 80 -j ACCEPT\n# $IPT -t filter -A INPUT -p tcp --dport 443 -j ACCEPT\n\n# $IP6T -t filter -A INPUT -p tcp --dport 80 -j ACCEPT\n# $IP6T -t filter -A INPUT -p tcp --dport 443 -j ACCEPT\n\n\n# # Mail SMTP:25\n# $IPT -t filter -A INPUT -p tcp --dport 25 -j ACCEPT\n# $IPT -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT\n\n# $IP6T -t filter -A INPUT -p tcp --dport 25 -j ACCEPT\n# $IP6T -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT\n\n\n# # Mail SMTP:587\n# $IPT -t filter -A INPUT -p tcp --dport 587 -j ACCEPT\n# $IPT -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT\n\n# $IP6T -t filter -A INPUT -p tcp --dport 597 -j ACCEPT\n# $IP6T -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT\n\n# # Mail IMAP:143\n# $IPT -t filter -A INPUT -p tcp --dport 143 -j ACCEPT\n# $IPT -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT\n\n# $IP6T -t filter -A INPUT -p tcp --dport 143 -j ACCEPT\n# $IP6T -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT\n\n# # Mail IMAPS:993\n# $IPT -t filter -A INPUT -p tcp --dport 993 -j ACCEPT\n# $IPT -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT\n# $IP6T -t filter -A INPUT -p tcp --dport 993 -j ACCEPT\n# $IP6T -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT\n\n# # Mail 465\n# $IPT -t filter -A INPUT -p tcp --dport 465 -j ACCEPT\n# $IPT -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT\n\n# $IP6T -t filter -A INPUT -p tcp --dport 465 -j ACCEPT\n# $IP6T -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT\n\n\n #\n echo \"firewall started [OK]\"\n}\n\n# fonction qui arr\u00eate le firewall\ndo_stop() {\n\n # Efface toutes les r\u00e8gles\n $IPT -t filter -F\n $IPT -t filter -X\n $IPT -t nat -F\n $IPT -t nat -X\n $IPT -t mangle -F\n $IPT -t mangle -X\n #\n $IP6T -t filter -F\n $IP6T -t filter -X\n #$IP6T -t nat -F\n #$IP6T -t nat -X\n $IP6T -t mangle -F\n $IP6T -t mangle -X\n\n # remet la strat\u00e9gie\n $IPT -t filter -P INPUT ACCEPT\n $IPT -t filter -P OUTPUT ACCEPT\n $IPT -t filter -P FORWARD ACCEPT\n #\n $IP6T -t filter -P INPUT ACCEPT\n $IP6T -t filter -P OUTPUT ACCEPT\n $IP6T -t filter -P FORWARD ACCEPT\n\n #\n echo \"firewall stopped [OK]\"\n}\n\n# fonction status firewall\ndo_status() {\n\n # affiche les r\u00e8gles en cours\n clear\n echo Status IPV4\n echo --\n $IPT -L -n -v\n echo\n echo --\n echo\n echo status IPV6\n echo --\n $IP6T -L -n -v\n echo\n}\n\ncase \"$1\" in\n start)\n do_start\n # quitte sans erreur\n exit 0\n ;;\n\n stop)\n do_stop\n # quitte sans erreur\n exit 0\n ;;\n\n restart)\n do_stop\n do_start\n # quitte sans erreur\n exit 0\n ;;\n\n status)\n do_status\n # quitte sans erreurs\n exit 0\n ;;\n\n *)\n # Si on ne tape ni \"start\" ni \"stop\"... on affiche une erreur\n echo \"Usage: /etc/init.d/firewall {start|stop|restart|status}\"\n # quitte le script avec un etat \"en erreur\"\n exit 1\n ;;\n\nesac Explications: Cr\u00e9ation de 4 cha\u00eenes pour faciliter les op\u00e9rations:\n\n# iptables -N TCP\n# iptables -N UDP\n\n# ip6tables -N TCP\n# ip6tables -N UDP\n\nOn est sur un serveur, pas un routeur, donc, on interdit la r\u00e8gle FORWARD:\n\n# iptables -P FORWARD DROP\n\n# ip6tables -P FORWARD DROP\n\nOn autorise tout en sortie:\n\n# iptables -P OUTPUT ACCEPT\n\n# ip6tables -P OUTPUT ACCEPT\n\n\nNous allons accepter les connexions d\u00e9j\u00e0 \u00e9tablies:\n\n# iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT\n\n# ip6tables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT\n\n\nEn entr\u00e9e, on commence par interdire tout; on ouvrira les ports suivantles besoins:\n\n# iptables -P INPUT DROP\n\n# ip6tables -P INPUT DROP\n\n\nAoristaion des connexions **loopback** (internes):\n\n# iptables -A INPUT -i lo -j ACCEPT\n\n# ip6tables -A INPUT -i lo -j ACCEPT\n\nNous allons interdire les paquets marqu\u00e9s **INVALID**; il faudra auparavant accepter les paquets **ICMPv6 Neighbor Discovery** qui apparaissent invalides:\n\n#iptables -A INPUT -p 41 -j ACCEPT\n\n#ip6tables -A INPUT -p 41 -j ACCEPT\n\n# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP\n\n# ip6tables -A INPUT -m conntrack --ctstate INVALID -j DROP\n\nPour IPV6, il faut rajouter la r\u00e8gle suivante qui permet de faire passer le protocol de d\u00e9couverte des ordinateurs sur le m\u00eame r\u00e9seau:\n\n# ip6tables -A INPUT -s fe80::/10 -p ipv6-icmp -j ACCEPT\n\nL'adresse fe80:: est l'adresse ipv6 valable uniquement sur le r\u00e9seau local.\n\nOn accepte les paquets **ping**:\n\n# iptables -A INPUT -p icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT\n\n# ip6tables -A INPUT -p icmpv6 -m conntrack --ctstate NEW -j ACCEPT\n\nOn peut maintenant accepter les nouveaux paquets entrants. Les connexions entrantes doivent commencer avec un paquet **SYNC**. Elles seront rejet\u00e9es si ce n'est pas le cas:\n\n# iptables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP\n# iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP\n\n# ip6tables -A INPUT -p udp -m conntrack --ctstate NEW -j UDP\n# ip6tables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j TCP\n\nOn rejette les paquets du protocole **icmp unreachable**\n\n# iptables -A INPUT -j REJECT --reject-with icmp-proto-unreachable\n\n# iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset\n\n# ip6tables -A INPUT -p ipv6-icmp --icmpv6-type 128 -m conntrack --ctstate NEW -j ACCEPT\n\n# ip6tables -A INPUT -p tcp -j REJECT --reject-with tcp-reset\n\n\nPour IPV6, nous pouvons rajouter un filtrage pour le \"kernel reverse path filter\":\n\n# ip6tables -t raw -A PREROUTING -m rpfilter -j ACCEPT\n# ip6tables -t raw -A PREROUTING -j DROP\n\nOn accepte les paquets **ssh** sur le port 22 (changez ce port si vous avez configur\u00e9 vos ports diff\u00e9remment)\n\n# iptables -A TCP -p tcp --dport 22 -j ACCEPT\n\n# ip6tables -A TCP -p tcp --dport 22 -j ACCEPT\n\n\nR\u00e8gles pour le DNS et NTP (ports 53 et 41)\n\n# iptables -A INPUT -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT\n# iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT\n# iptables -A INPUT -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT\n# iptables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT\n\n\n# iptables -A INPUT -p udp -m state --state ESTABLISHED --sport 123 -j ACCEPT\n# iptables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 123 -j ACCEPT\n\nLa m\u00eame chose pour IPV6:\n\n# ip6tables -A INPUT -p udp -m state --state ESTABLISHED --sport 53 -j ACCEPT\n# ip6tables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT\n# ip6tables -A INPUT -p tcp -m state --state ESTABLISHED --sport 53 -j ACCEPT\n# ip6tables -A OUTPUT -p tcp -m state --state NEW,ESTABLISHED --dport 53 -j ACCEPT\n\n\n# ip6tables -A INPUT -p udp -m state --state ESTABLISHED --sport 123 -j ACCEPT\n# ip6tables -A OUTPUT -p udp -m state --state NEW,ESTABLISHED --dport 123 -j ACCEPT\n\nNous pouvons maintenant lister nos r\u00e8gles. Nous allons commencer par IPV4:\n\nListons les r\u00e8gles actuelles, ensuite ajoutons 2 r\u00e8gles et sauvons celles-ci, puis listons le r\u00e9sultat. Vous pouvez faire de m\u00eame pour toutes les r\u00e8gles.\n\n```shell\nroot@atom:/etc/iptables# cat rules.v4\n# Generated by iptables-save v1.6.0 on Sun Feb 11 14:27:32 2018\n*filter\n:INPUT ACCEPT [491:50774]\n:FORWARD ACCEPT [0:0]\n:OUTPUT ACCEPT [267:23983]\nCOMMIT\n# Completed on Sun Feb 11 14:27:32 2018\n\nroot@atom:/etc/iptables# iptables -N TCP\nroot@atom:/etc/iptables# iptables -N UDP\n\nroot@atom:/etc/iptables# service netfilter-persistent save\n[....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save\nrun-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save\ndone.\n\nroot@atom:/etc/iptables# cat rules.v4\n# Generated by iptables-save v1.6.0 on Sun Feb 11 14:28:24 2018\n*filter\n:INPUT ACCEPT [13:888]\n:FORWARD ACCEPT [0:0]\n:OUTPUT ACCEPT [8:944]\n:TCP - [0:0]\n:UDP - [0:0]\nCOMMIT\n# Completed on Sun Feb 11 14:28:24 2018 Ne pas oublier de valider la r\u00e8gle d'acceptation des connexions existantes AVANT d'entrer la r\u00e8gle INPUT DROP sinon, vous perdez toute connexion avec votre serveur :) Il suffit de r\u00e9p\u00e9ter pour les autres r\u00e8gles puis pour IPV6. Nous obtenons donc les r\u00e8gles suivantes: Pour IPV4: root@atom:/etc/iptables# cat rules.v4\n# Generated by iptables-save v1.6.0 on Sun Feb 11 15:33:41 2018\n*filter\n:INPUT DROP [0:0]\n:FORWARD DROP [0:0]\n:OUTPUT ACCEPT [105:27592]\n:TCP - [0:0]\n:UDP - [0:0]\n-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT\n-A INPUT -i lo -j ACCEPT\n-A INPUT -m conntrack --ctstate INVALID -j DROP\n-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT\n-A INPUT -p udp -m conntrack --ctstate NEW -j UDP\n-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP\n-A INPUT -j REJECT --reject-with icmp-proto-unreachable\n-A INPUT -p tcp -j REJECT --reject-with tcp-reset\n-A TCP -p tcp -m tcp --dport 22 -j ACCEPT\nCOMMIT\n# Completed on Sun Feb 11 15:33:41 2018\nroot@atom:/etc/iptables# Pour IPV6: root@atom:/etc/iptables# cat rules.v6\n# Generated by ip6tables-save v1.6.0 on Sun Feb 11 15:33:41 2018\n*raw\n:PREROUTING ACCEPT [0:0]\n:OUTPUT ACCEPT [0:0]\n-A PREROUTING -m rpfilter -j ACCEPT\n-A PREROUTING -j DROP\nCOMMIT\n# Completed on Sun Feb 11 15:33:41 2018\n# Generated by ip6tables-save v1.6.0 on Sun Feb 11 15:33:41 2018\n*filter\n:INPUT DROP [1:144]\n:FORWARD DROP [0:0]\n:OUTPUT ACCEPT [0:0]\n:TCP - [0:0]\n:UDP - [0:0]\n-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT\n-A INPUT -i lo -j ACCEPT\n-A INPUT -p ipv6 -j ACCEPT\n-A INPUT -m conntrack --ctstate INVALID -j DROP\n-A INPUT -p udp -m conntrack --ctstate NEW -j UDP\n-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP\n-A INPUT -p tcp -j REJECT --reject-with tcp-reset\n-A INPUT -p ipv6-icmp -m icmp6 --icmpv6-type 128 -m conntrack --ctstate NEW -j ACCEPT\n-A OUTPUT -p ipv6-icmp -j ACCEPT\n-A TCP -p tcp -m tcp --dport 22 -j ACCEPT\nCOMMIT\n# Completed on Sun Feb 11 15:33:41 2018\nroot@atom:/etc/iptables#",
  236. "title": "Configuration des r\u00e8gles iptables"
  237. },
  238. {
  239. "location": "/5-cinq/#test-dns-et-du-serveur-de-temps-avec-iptables-actif",
  240. "text": "root@atom:/home/ericadmin# nslookup www.gnome.org\nServer: 192.168.111.254\nAddress: 192.168.111.254#53\n\nNon-authoritative answer:\nwww.gnome.org canonical name = proxy.gnome.org.\nName: proxy.gnome.org\nAddress: 209.132.180.168\nName: proxy.gnome.org\nAddress: 209.132.180.180\n\nroot@atom:/home/ericadmin# timedatectl status\n Local time: dim. 2018-04-01 12:26:57 CEST\n Universal time: dim. 2018-04-01 10:26:57 UTC\n RTC time: dim. 2018-04-01 10:26:58\n Time zone: Europe/Paris (CEST, +0200)\n Network time on: yes\nNTP synchronized: yes\n RTC in local TZ: no \u00c7a fonctionne.",
  241. "title": "Test DNS et du serveur de temps (avec iptables actif)"
  242. },
  243. {
  244. "location": "/5-cinq/#installation-de-ufw",
  245. "text": "J'avais (ai) choisi ufw ; je ne l'ai encore jamais utilis\u00e9, donc, c'est l'occasion! Finalement, pas un tr\u00e8s bon plan, m\u00eame si cela a l'air tr\u00e8s facile en premier lieu ... je vais rester sur du iptables brut avec iptables-persistent . Son installation est d\u00e9taill\u00e9e dans le paragraphe ci-dessus. root@atom:/home/ericadmin# apt install ufw\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n ufw\n0 mis \u00e0 jour, 1 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 164 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 848 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 ufw all 0.35-4 [164 kB]\n164 ko r\u00e9ceptionn\u00e9s en 0s (1 239 ko/s)\nPr\u00e9configuration des paquets...\nS\u00e9lection du paquet ufw pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 31776 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../archives/ufw_0.35-4_all.deb ...\nD\u00e9paquetage de ufw (0.35-4) ...\nParam\u00e9trage de ufw (0.35-4) ...\n\nCreating config file /etc/ufw/before.rules with new version\n\nCreating config file /etc/ufw/before6.rules with new version\n\nCreating config file /etc/ufw/after.rules with new version\n\nCreating config file /etc/ufw/after6.rules with new version\nCreated symlink /etc/systemd/system/multi-user.target.wants/ufw.service \u2192 /lib/systemd/system/ufw.service.\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour rsyslog (8.24.0-1) ...",
  246. "title": "Installation de ufw"
  247. },
  248. {
  249. "location": "/5-cinq/#configuration-de-ufw",
  250. "text": "Apr\u00e8s installation, le pare-feu est inactif. root@atom:/home/ericadmin# ufw status\nStatus: inactive\nroot@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\nRules updated\nRules updated (v6)\nroot@atom:/home/ericadmin#\n\nroot@atom:/etc/fail2ban# ufw allow ntp\nRule added\nRule added (v6)",
  251. "title": "Configuration de ufw"
  252. },
  253. {
  254. "location": "/5-cinq/#activation-du-pare-feu",
  255. "text": "root@atom:/home/ericadmin# ufw enable\nCommand may disrupt existing ssh connections. Proceed with operation (y|n)? y\nFirewall is active and enabled on system startup\nroot@atom:/home/ericadmin#",
  256. "title": "Activation du pare-feu:"
  257. },
  258. {
  259. "location": "/5-cinq/#verification",
  260. "text": "root@atom:/home/ericadmin# ufw status\nStatus: active\n\nTo Action From\n-- -\n22 ALLOW Anywhere\n123 ALLOW Anywhere\n22 (v6) ALLOW Anywhere (v6)\n123 (v6) ALLOW Anywhere (v6)\n\nroot@atom:/home/ericadmin# Les connexions ssh et ntp sont autoris\u00e9es, en IPV4 et IPV6 . Nous ajouterons des r\u00e8gles en fonction des services utilis\u00e9s.",
  261. "title": "V\u00e9rification:"
  262. },
  263. {
  264. "location": "/5-cinq/#pour-desactiver-le-pare-feu",
  265. "text": "ufw disable",
  266. "title": "Pour d\u00e9sactiver le pare-feu:"
  267. },
  268. {
  269. "location": "/5-cinq/#activation-du-logging-des-actions-de-ufw",
  270. "text": "root@atom:/home/ericadmin# ufw logging on\nLogging enabled\nroot@atom:/home/ericadmin# Vous pouvez voir l'ensemble des commandes de ufw en tapant: root@atom:/home/ericadmin# ufw --help\n\nUsage: ufw COMMAND\n\nCommands:\n enable enables the firewall\n disable disables the firewall\n default ARG set default policy\n logging LEVEL set logging to LEVEL\n allow ARGS add allow rule\n deny ARGS add deny rule\n reject ARGS add reject rule\n limit ARGS add limit rule\n delete RULE|NUM delete RULE\n insert NUM RULE insert RULE at NUM\n route RULE add route RULE\n route delete RULE|NUM delete route RULE\n route insert NUM RULE insert route RULE at NUM\n reload reload firewall\n reset reset firewall\n status show firewall status\n status numbered show firewall status as numbered list of RULES\n status verbose show verbose firewall status\n show ARG show firewall report\n version display version information\n\nApplication profile commands:\n app list list application profiles\n app info PROFILE show information on PROFILE\n app update PROFILE update PROFILE\n app default ARG set default application policy\n\nroot@atom:/home/ericadmin# Il faut re-tester la connectivit\u00e9 en IPV4 et IPV6 Serveur -> ext\u00e9rieur Ext\u00e9rieur -> serveur On peut utiliser l'adresse ipv6.google.com pour v\u00e9rifier la connexion IPV6 en dehors du r\u00e9seau local.",
  271. "title": "Activation du logging des actions de ufw"
  272. },
  273. {
  274. "location": "/6-six/",
  275. "text": "\ufeff\n\n\nContrer les attaques de \nbrute-force\n avec \nfail2ban\n\n\nFail2ban est un programme qui surveille les logs des services en place et d\u00e9tecte les tentatives d'attaques \nbrute-force\n. Il mets automatiquement en quarantaine les IP attaquantes.\n\n\nInstallation\n\n\nroot@atom:/home/ericadmin# apt install fail2ban\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n python3-pyinotify python3-systemd whois\nPaquets sugg\u00e9r\u00e9s :\n monit python-pyinotify-doc\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n fail2ban python3-pyinotify python3-systemd whois\n0 mis \u00e0 jour, 4 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 423 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 1 897 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 fail2ban all 0.9.6-2 [288 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 python3-pyinotify all 0.9.6-1 [26,9 kB]\nR\u00e9ception de:3 http://deb.debian.org/debian stretch/main i386 python3-systemd i386 233-1 [34,4 kB]\nR\u00e9ception de:4 http://deb.debian.org/debian stretch/main i386 whois i386 5.2.17~deb9u1 [73,8 kB]\n423 ko r\u00e9ceptionn\u00e9s en 0s (1 996 ko/s)\nS\u00e9lection du paquet fail2ban pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 31956 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../fail2ban_0.9.6-2_all.deb ...\nD\u00e9paquetage de fail2ban (0.9.6-2) ...\nS\u00e9lection du paquet python3-pyinotify pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../python3-pyinotify_0.9.6-1_all.deb ...\nD\u00e9paquetage de python3-pyinotify (0.9.6-1) ...\nS\u00e9lection du paquet python3-systemd pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../python3-systemd_233-1_i386.deb ...\nD\u00e9paquetage de python3-systemd (233-1) ...\nS\u00e9lection du paquet whois pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../whois_5.2.17~deb9u1_i386.deb ...\nD\u00e9paquetage de whois (5.2.17~deb9u1) ...\nParam\u00e9trage de fail2ban (0.9.6-2) ...\nCreated symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service \u2192 /lib/systemd/system/fail2ban.service.\nParam\u00e9trage de whois (5.2.17~deb9u1) ...\nParam\u00e9trage de python3-systemd (233-1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de python3-pyinotify (0.9.6-1) ...\nroot@atom:/home/ericadmin#\n\n\n\n\nParam\u00e9trage de \nfail2ban\n\n\nPour fail2ban, il n'a rien \u00e0 configurer pour l'instant. Seul ssh est surveill\u00e9.\n\n\nIci, pour l'utilisation avec ufw.\n\n\nAvec Debian, le fichier \u00e0 configurer est: /etc/fail2ban/jail.d/defaults-debian.conf\n\n\nPar d\u00e9faut, il contient\n\n\n[sshd]\nenabled = true\n\n\n\n\nJe laisse la configuration de ufw en suspend ...",
  276. "title": "Contrer les attaques de brute-force avec fail2ban"
  277. },
  278. {
  279. "location": "/6-six/#contrer-les-attaques-de-brute-force-avec-fail2ban",
  280. "text": "Fail2ban est un programme qui surveille les logs des services en place et d\u00e9tecte les tentatives d'attaques brute-force . Il mets automatiquement en quarantaine les IP attaquantes.",
  281. "title": "Contrer les attaques de brute-force avec fail2ban"
  282. },
  283. {
  284. "location": "/6-six/#installation",
  285. "text": "root@atom:/home/ericadmin# apt install fail2ban\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n python3-pyinotify python3-systemd whois\nPaquets sugg\u00e9r\u00e9s :\n monit python-pyinotify-doc\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n fail2ban python3-pyinotify python3-systemd whois\n0 mis \u00e0 jour, 4 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 423 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 1 897 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 fail2ban all 0.9.6-2 [288 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 python3-pyinotify all 0.9.6-1 [26,9 kB]\nR\u00e9ception de:3 http://deb.debian.org/debian stretch/main i386 python3-systemd i386 233-1 [34,4 kB]\nR\u00e9ception de:4 http://deb.debian.org/debian stretch/main i386 whois i386 5.2.17~deb9u1 [73,8 kB]\n423 ko r\u00e9ceptionn\u00e9s en 0s (1 996 ko/s)\nS\u00e9lection du paquet fail2ban pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 31956 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../fail2ban_0.9.6-2_all.deb ...\nD\u00e9paquetage de fail2ban (0.9.6-2) ...\nS\u00e9lection du paquet python3-pyinotify pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../python3-pyinotify_0.9.6-1_all.deb ...\nD\u00e9paquetage de python3-pyinotify (0.9.6-1) ...\nS\u00e9lection du paquet python3-systemd pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../python3-systemd_233-1_i386.deb ...\nD\u00e9paquetage de python3-systemd (233-1) ...\nS\u00e9lection du paquet whois pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../whois_5.2.17~deb9u1_i386.deb ...\nD\u00e9paquetage de whois (5.2.17~deb9u1) ...\nParam\u00e9trage de fail2ban (0.9.6-2) ...\nCreated symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service \u2192 /lib/systemd/system/fail2ban.service.\nParam\u00e9trage de whois (5.2.17~deb9u1) ...\nParam\u00e9trage de python3-systemd (233-1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de python3-pyinotify (0.9.6-1) ...\nroot@atom:/home/ericadmin#",
  286. "title": "Installation"
  287. },
  288. {
  289. "location": "/6-six/#parametrage-de-fail2ban",
  290. "text": "Pour fail2ban, il n'a rien \u00e0 configurer pour l'instant. Seul ssh est surveill\u00e9. Ici, pour l'utilisation avec ufw. Avec Debian, le fichier \u00e0 configurer est: /etc/fail2ban/jail.d/defaults-debian.conf Par d\u00e9faut, il contient [sshd]\nenabled = true Je laisse la configuration de ufw en suspend ...",
  291. "title": "Param\u00e9trage de fail2ban"
  292. },
  293. {
  294. "location": "/7-sept/",
  295. "text": "\ufeff\n\n\nInstallation d'un serveur de courrier basique\n\n\nDebian installe par d\u00e9faut \nexim4\n. Nous allons le remplacer par postix (que nous \u00e9tendrons ensuite pour avoir un serveur de courrier complet.\n\n\nPensez \u00e0 ouvrir les ports \n25\n (IPV4 et IPV6) du firewall.\n\n\napt install postfix\n\n\n\n\nOn supprime compl\u00e8tement \nexim4\n (fichiers de configuration):\n\n\napt remove --purge exim4*\n\n\n\n\nOn teste l'envoi de messages \nentrants et sortants\n apr\u00e8s avoir charg\u00e9 les programmes de mail utilitaires (sur le serveur et sur un autre poste):\n\n\nChargement des utilitaires sur un poste ext\u00e9rieur.\nEx\u00e9cutez la m\u00eame commande sur le poste serveur en cours de configuration.\n\n\nroot@adara:~# apt install mailutils\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libmariadbclient18 libntlm0 libpython2.7 libpython2.7-minimal\n libpython2.7-stdlib mailutils-common mysql-common\nPaquets sugg\u00e9r\u00e9s :\n mailutils-mh mailutils-doc\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libmariadbclient18 libntlm0 libpython2.7 libpython2.7-minimal\n libpython2.7-stdlib mailutils mailutils-common mysql-common\n0 mis \u00e0 jour, 15 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 9 575 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 39,0 Mo d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 libgc1c2 amd64 1:7.4.2-8 [208 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libltdl7 amd64 2.4.6-2 [389 kB]\nR\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 guile-2.0-libs amd64 2.0.13+1-4 [2 232 kB]\nR\u00e9ception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 libfribidi0 amd64 0.19.7-1+b1 [45,7 kB]\nR\u00e9ception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 libntlm0 amd64 1.4-8 [20,9 kB]\nR\u00e9ception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 libgsasl7 amd64 1.8.0-8+b2 [207 kB]\nR\u00e9ception de:7 http://debian.mirrors.ovh.net/debian stretch/main amd64 libkyotocabinet16v5 amd64 1.2.76-4.2+b1 [298 kB]\nR\u00e9ception de:8 http://debian.mirrors.ovh.net/debian stretch/main amd64 mailutils-common all 1:3.1.1-1 [642 kB]\nR\u00e9ception de:9 http://debian.mirrors.ovh.net/debian stretch/main amd64 mysql-common all 5.8+1.0.2 [5 608 B]\nR\u00e9ception de:10 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmariadbclient18 amd64 10.1.26-0+deb9u1 [779 kB]\nR\u00e9ception de:11 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7-minimal amd64 2.7.13-2+deb9u2 [389 kB]\nR\u00e9ception de:12 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7-stdlib amd64 2.7.13-2+deb9u2 [1 896 kB]\nR\u00e9ception de:13 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7 amd64 2.7.13-2+deb9u2 [1 072 kB]\nR\u00e9ception de:14 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmailutils5 amd64 1:3.1.1-1 [817 kB]\nR\u00e9ception de:15 http://debian.mirrors.ovh.net/debian stretch/main amd64 mailutils amd64 1:3.1.1-1 [573 kB]\n9 575 ko r\u00e9ceptionn\u00e9s en 0s (11,2 Mo/s)\nS\u00e9lection du paquet libgc1c2:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 22737 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../00-libgc1c2_1%3a7.4.2-8_amd64.deb ...\nD\u00e9paquetage de libgc1c2:amd64 (1:7.4.2-8) ...\nS\u00e9lection du paquet libltdl7:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../01-libltdl7_2.4.6-2_amd64.deb ...\nD\u00e9paquetage de libltdl7:amd64 (2.4.6-2) ...\nS\u00e9lection du paquet guile-2.0-libs:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../02-guile-2.0-libs_2.0.13+1-4_amd64.deb ...\nD\u00e9paquetage de guile-2.0-libs:amd64 (2.0.13+1-4) ...\nS\u00e9lection du paquet libfribidi0:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../03-libfribidi0_0.19.7-1+b1_amd64.deb ...\nD\u00e9paquetage de libfribidi0:amd64 (0.19.7-1+b1) ...\nS\u00e9lection du paquet libntlm0:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../04-libntlm0_1.4-8_amd64.deb ...\nD\u00e9paquetage de libntlm0:amd64 (1.4-8) ...\nS\u00e9lection du paquet libgsasl7 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../05-libgsasl7_1.8.0-8+b2_amd64.deb ...\nD\u00e9paquetage de libgsasl7 (1.8.0-8+b2) ...\nS\u00e9lection du paquet libkyotocabinet16v5:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../06-libkyotocabinet16v5_1.2.76-4.2+b1_amd64.deb ...\nD\u00e9paquetage de libkyotocabinet16v5:amd64 (1.2.76-4.2+b1) ...\nS\u00e9lection du paquet mailutils-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../07-mailutils-common_1%3a3.1.1-1_all.deb ...\nD\u00e9paquetage de mailutils-common (1:3.1.1-1) ...\nS\u00e9lection du paquet mysql-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../08-mysql-common_5.8+1.0.2_all.deb ...\nD\u00e9paquetage de mysql-common (5.8+1.0.2) ...\nS\u00e9lection du paquet libmariadbclient18:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../09-libmariadbclient18_10.1.26-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de libmariadbclient18:amd64 (10.1.26-0+deb9u1) ...\nS\u00e9lection du paquet libpython2.7-minimal:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../10-libpython2.7-minimal_2.7.13-2+deb9u2_amd64.deb ...\nD\u00e9paquetage de libpython2.7-minimal:amd64 (2.7.13-2+deb9u2) ...\nS\u00e9lection du paquet libpython2.7-stdlib:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../11-libpython2.7-stdlib_2.7.13-2+deb9u2_amd64.deb ...\nD\u00e9paquetage de libpython2.7-stdlib:amd64 (2.7.13-2+deb9u2) ...\nS\u00e9lection du paquet libpython2.7:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../12-libpython2.7_2.7.13-2+deb9u2_amd64.deb ...\nD\u00e9paquetage de libpython2.7:amd64 (2.7.13-2+deb9u2) ...\nS\u00e9lection du paquet libmailutils5:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../13-libmailutils5_1%3a3.1.1-1_amd64.deb ...\nD\u00e9paquetage de libmailutils5:amd64 (1:3.1.1-1) ...\nS\u00e9lection du paquet mailutils pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../14-mailutils_1%3a3.1.1-1_amd64.deb ...\nD\u00e9paquetage de mailutils (1:3.1.1-1) ...\nParam\u00e9trage de mysql-common (5.8+1.0.2) ...\nupdate-alternatives: utilisation de \u00ab /etc/mysql/my.cnf.fallback \u00bb pour fournir \u00ab /etc/mysql/my.cnf \u00bb (my.cnf) en mode automatique\nParam\u00e9trage de libgc1c2:amd64 (1:7.4.2-8) ...\nParam\u00e9trage de libmariadbclient18:amd64 (10.1.26-0+deb9u1) ...\nParam\u00e9trage de libntlm0:amd64 (1.4-8) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nParam\u00e9trage de libltdl7:amd64 (2.4.6-2) ...\nParam\u00e9trage de libfribidi0:amd64 (0.19.7-1+b1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de libpython2.7-minimal:amd64 (2.7.13-2+deb9u2) ...\nParam\u00e9trage de libkyotocabinet16v5:amd64 (1.2.76-4.2+b1) ...\nParam\u00e9trage de libpython2.7-stdlib:amd64 (2.7.13-2+deb9u2) ...\nParam\u00e9trage de mailutils-common (1:3.1.1-1) ...\nParam\u00e9trage de libgsasl7 (1.8.0-8+b2) ...\nParam\u00e9trage de guile-2.0-libs:amd64 (2.0.13+1-4) ...\nParam\u00e9trage de libpython2.7:amd64 (2.7.13-2+deb9u2) ...\nParam\u00e9trage de libmailutils5:amd64 (1:3.1.1-1) ...\nParam\u00e9trage de mailutils (1:3.1.1-1) ...\nupdate-alternatives: utilisation de \u00ab /usr/bin/frm.mailutils \u00bb pour fournir \u00ab /usr/bin/frm \u00bb (frm) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/from.mailutils \u00bb pour fournir \u00ab /usr/bin/from \u00bb (from) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/messages.mailutils \u00bb pour fournir \u00ab /usr/bin/messages \u00bb (messages) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/movemail.mailutils \u00bb pour fournir \u00ab /usr/bin/movemail \u00bb (movemail) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/readmsg.mailutils \u00bb pour fournir \u00ab /usr/bin/readmsg \u00bb (readmsg) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/dotlock.mailutils \u00bb pour fournir \u00ab /usr/bin/dotlock \u00bb (dotlock) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/mail.mailutils \u00bb pour fournir \u00ab /usr/bin/mailx \u00bb (mailx) en mode automatique\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nroot@adara:~#\n\n\n\n\nTest d'envoi d'un utilisateur du serveur \u00e0 l'autre\n\n\n\n\nroot -> ericadmin\n\n\n\n\n root@atom:/etc/fail2ban# mail ericadmin\n Cc:\n Subject: Essai 1\n Essai 1\n .\n\n ericadmin@atom:~/bin$ mailx\n \"/var/mail/ericadmin\": 1 message 1 nouveau\n >N 1 root lun. nov. 26 09: 14/451 Essai 1\n ? 1\n Return-Path: <root@atom.yojik.net>\n X-Original-To: ericadmin@atom.yojik.net\n Delivered-To: ericadmin@atom.yojik.net\n Received: by atom.yojik.net (Postfix, from userid 0)\n id 3AE0F460033; Mon, 26 Nov 2018 09:26:26 +0100 (CET)\n To: <ericadmin@atom.yojik.net>\n Subject: Essai 1\n X-Mailer: mail (GNU Mailutils 3.1.1)\n Message-Id: <20181126082626.3AE0F460033@atom.yojik.net>\n Date: Mon, 26 Nov 2018 09:26:26 +0100 (CET)\n From: root@atom.yojik.net (root)\n\n Essai 1\n .\n ? q\n 1 message sauvegard\u00e9 dans /home/ericadmin/mbox\n 0 message conserv\u00e9 dans /var/mail/ericadmin\n\n\n\n\n\n\nericadmin -> root\n\n\n\n\n ericadmin@atom:~/bin$ mail root\n Cc:\n Subject: Essai 2\n Essai 2\n .\n\n\n root@atom:/etc/fail2ban# mailx\n \"/var/mail/root\": 1 message 1 nouveau\n >N 1 Eric Streit lun. nov. 26 09: 14/456 Essai 2\n ? 1\n Return-Path: <ericadmin@atom.yojik.net>\n X-Original-To: root@atom.yojik.net\n Delivered-To: root@atom.yojik.net\n Received: by atom.yojik.net (Postfix, from userid 1000)\n id 46220460036; Mon, 26 Nov 2018 09:27:04 +0100 (CET)\n To: <root@atom.yojik.net>\n Subject: Essai 2\n X-Mailer: mail (GNU Mailutils 3.1.1)\n Message-Id: <20181126082704.46220460036@atom.yojik.net>\n Date: Mon, 26 Nov 2018 09:27:04 +0100 (CET)\n From: ericadmin@atom.yojik.net (Eric Streit)\n\n Essai 2\n .\n\n\n\n\nL'envoi des messages entre utilisateurs du serveur serveur marche comme il faut.\n\n\nPremi\u00e8re \u00e9tape de configuration de postfix\n\n\nModifiez la ligne suivante dans /etc/postfix/main.cf:\n\n\n\n\nmydestination = $myhostname, yojik.net, atom.yojik.net, localhost.yojik.net, localhost\n\n\n\n\net relancez postfix avec:\n\n\n\n\nservice postfix restart\n\n\n\n\nTest d'envoi de messages \u00e0 partir de ce serveur sur mon serveur principal\n\n\nEnvoi d'un message sur mon compte de messagerie en .eu:\n\n\nericadmin@atom:~$ echo \"Et voil\u00e0 un petit message\" | mail -s \"test du courrier sortant\" ericadmin@yojik.eu\n\n\n\n\nLe message est bien re\u00e7u.\n\n\nV\u00e9rifiez dans le dossier \nspam\n: comme il n'y a aucune s\u00e9curisation du serveur de courrier (pour l'instant), gmail ou autre, soit refuse de courrier, soit le met dans les spams.\n\n\nTest d'envoi de messages \u00e0 partir d'un poste ext\u00e9rieur\n\n\nEnvoi d'un message \u00e0 partir du poste ext\u00e9rieur \naldebaran\n (n'oubliez pas d'ouvrir le port 25 dans les r\u00e8gles iptables ...):\n\n\neric@aldebaran:~$ echo \"Et voil\u00e0 un petit message\" | mail -s \"test du courrier 1\" ericadmin@atom.yojik.net\n\n\n\n\nTest de r\u00e9ception sur le serveur:\n\n\nericadmin@atom:~$ mailx\n\"/var/mail/ericadmin\": 1 message 1 nouveau\n>N 1 Eric Streit dim. nov. 11 13: 16/724 test du courrier 1\n? 1\nReturn-Path: <eric@aldebaran.yojik.net>\nX-Original-To: ericadmin@atom.yojik.net\nDelivered-To: ericadmin@atom.yojik.net\nReceived: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:e5c4:aee0:d068:64f6])\n by atom.yojik.net (Postfix) with ESMTP id 0B3CF12085A\n for <ericadmin@atom.yojik.net>; Sun, 11 Nov 2018 13:09:08 +0100 (CET)\nReceived: by aldebaran.yojik.net (Postfix, from userid 1000)\n id 40DF310CAC3; Sun, 11 Nov 2018 13:09:07 +0100 (CET)\nSubject: test du courrier 1\nTo: <ericadmin@atom.yojik.net>\nX-Mailer: mail (GNU Mailutils 3.1.1)\nMessage-Id: <20181111120907.40DF310CAC3@aldebaran.yojik.net>\nDate: Sun, 11 Nov 2018 13:09:07 +0100 (CET)\nFrom: eric@aldebaran.yojik.net (Eric Streit)\n\nEt voil\u00e0 un petit message\n? q\n1 message sauvegard\u00e9 dans /home/ericadmin/mbox\n0 message conserv\u00e9 dans /var/mail/ericadmin\n\n\n\n\nLe message est bien re\u00e7u par le serveur de mail de yojik.net. Vous pouvez essayer aussi sur une adresse gmail par exemple.\n\n\nMise \u00e0 jour du fichier /etc/aliases\n\n\nCe fichier sert \u00e0 rediriger toutes les adresses \u00e9mail comme \nabuse\n, \nwebmaster\n, \nroot\n vers un utilisateur \nadministrateur\n de la machine, root puis vers moi \nericadmin\n\n\n# /etc/aliases\nmailer-daemon: postmaster\npostmaster: root\nnobody: root\nhostmaster: root\nusenet: root\nnews: root\nwebmaster: root\nwww: root\nftp: root\nabuse: root\nnoc: root\nsecurity: root\nroot: ericadmin\n\n\n\n\nIl faut lancer la commande \nnewaliases\n pour g\u00e9n\u00e9rer le fichier.db utile \u00e0 Postfix et on demande \u00e0 Postfix de recharger ses fichiers.\n\n\nroot@adara:~# newaliases\noot@adara:~# service postfix reload\nroot@adara:~#\n\n\n\n\nTest de l'envoi \u00e0 root pour v\u00e9rifier la redirection\n\n\nericadmin@atom:~/bin$ mail root\nCc:\nSubject: Essai 5\nEssai 5\n.\nericadmin@atom:~/bin$ mailx\n\"/var/mail/ericadmin\": 4 messages 1 nouveau 3 non lus\n U 1 Eric Streit lun. nov. 26 09: 19/768 test du courrier 1\n U 2 Eric Streit lun. nov. 26 09: 18/743 test du courrier 4\n U 3 Eric Streit lun. nov. 26 09: 18/743 test du courrier 4\n>N 4 Eric Streit lun. nov. 26 09: 14/456 Essai 5\n?\n\n\n\n\nTout fonctionne: le message a bien \u00e9t\u00e9 redirig\u00e9 vers ericadmin comme sp\u00e9cifi\u00e9 dans /etc/aliases.\n\n\nLe fichier /etc/mailname\n\n\nIl contient le nom du serveur de courrier pour la machine, ici, c'est elle-m\u00eame:\n\n\nroot@aijan:/home/ericadmin# cat /etc/mailname\naijan.yojik.net\n\n\n\n\nLe serveur de courrier n'autorise que les utilisateurs (users) de la machine, ici, ericadmin et root (ainsi que les alias enregistr\u00e9s pr\u00e9c\u00e9demment).\n\n\nericadmin@aijan:~$ mailx\n\"/var/mail/ericadmin\": 2 messages 2 nouveaux\n>N 1 Eric Streit dim. mai 20 08:4 17/698 essai d'envoi \u00e0 root\n N 2 Eric Streit dim. mai 20 08:5 17/717 un autre essai\n?\n\n\n\n\nPour l'envoi \u00e0 partir d'un poste ext\u00e9rieur, pensez \u00e0 utiliser l'adresse mail qui contient le nom complet de votre machine:\n\n\n\n\ntoto@atom.yojik.net\n\n\n\n\net non\n\n\n\n\ntoto.yojik.net\n\n\n\n\nLes domaines ne sont pas encore configur\u00e9s dans postfix.\n\n\nL'envoi \u00e0 \nroot\n et \u00e0 \nericadmin\n \u00e0 partir d'un autre poste du r\u00e9seau fonctionne parfaitement: le mail \u00e0 destination de \nroot\n est redirig\u00e9 vers ericadmin comme stipul\u00e9 dans \n/etc/aliases\n.\n\n\nLes messages sortants sont parfaitement g\u00e9r\u00e9s et re\u00e7us par les serveurs de courrier ext\u00e9rieurs.",
  296. "title": "Installation d'un serveur de courrier basique"
  297. },
  298. {
  299. "location": "/7-sept/#installation-dun-serveur-de-courrier-basique",
  300. "text": "Debian installe par d\u00e9faut exim4 . Nous allons le remplacer par postix (que nous \u00e9tendrons ensuite pour avoir un serveur de courrier complet. Pensez \u00e0 ouvrir les ports 25 (IPV4 et IPV6) du firewall. apt install postfix On supprime compl\u00e8tement exim4 (fichiers de configuration): apt remove --purge exim4* On teste l'envoi de messages entrants et sortants apr\u00e8s avoir charg\u00e9 les programmes de mail utilitaires (sur le serveur et sur un autre poste): Chargement des utilitaires sur un poste ext\u00e9rieur.\nEx\u00e9cutez la m\u00eame commande sur le poste serveur en cours de configuration. root@adara:~# apt install mailutils\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libmariadbclient18 libntlm0 libpython2.7 libpython2.7-minimal\n libpython2.7-stdlib mailutils-common mysql-common\nPaquets sugg\u00e9r\u00e9s :\n mailutils-mh mailutils-doc\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n guile-2.0-libs libfribidi0 libgc1c2 libgsasl7 libkyotocabinet16v5 libltdl7 libmailutils5 libmariadbclient18 libntlm0 libpython2.7 libpython2.7-minimal\n libpython2.7-stdlib mailutils mailutils-common mysql-common\n0 mis \u00e0 jour, 15 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 9 575 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 39,0 Mo d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 libgc1c2 amd64 1:7.4.2-8 [208 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libltdl7 amd64 2.4.6-2 [389 kB]\nR\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 guile-2.0-libs amd64 2.0.13+1-4 [2 232 kB]\nR\u00e9ception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 libfribidi0 amd64 0.19.7-1+b1 [45,7 kB]\nR\u00e9ception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 libntlm0 amd64 1.4-8 [20,9 kB]\nR\u00e9ception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 libgsasl7 amd64 1.8.0-8+b2 [207 kB]\nR\u00e9ception de:7 http://debian.mirrors.ovh.net/debian stretch/main amd64 libkyotocabinet16v5 amd64 1.2.76-4.2+b1 [298 kB]\nR\u00e9ception de:8 http://debian.mirrors.ovh.net/debian stretch/main amd64 mailutils-common all 1:3.1.1-1 [642 kB]\nR\u00e9ception de:9 http://debian.mirrors.ovh.net/debian stretch/main amd64 mysql-common all 5.8+1.0.2 [5 608 B]\nR\u00e9ception de:10 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmariadbclient18 amd64 10.1.26-0+deb9u1 [779 kB]\nR\u00e9ception de:11 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7-minimal amd64 2.7.13-2+deb9u2 [389 kB]\nR\u00e9ception de:12 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7-stdlib amd64 2.7.13-2+deb9u2 [1 896 kB]\nR\u00e9ception de:13 http://debian.mirrors.ovh.net/debian stretch/main amd64 libpython2.7 amd64 2.7.13-2+deb9u2 [1 072 kB]\nR\u00e9ception de:14 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmailutils5 amd64 1:3.1.1-1 [817 kB]\nR\u00e9ception de:15 http://debian.mirrors.ovh.net/debian stretch/main amd64 mailutils amd64 1:3.1.1-1 [573 kB]\n9 575 ko r\u00e9ceptionn\u00e9s en 0s (11,2 Mo/s)\nS\u00e9lection du paquet libgc1c2:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 22737 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../00-libgc1c2_1%3a7.4.2-8_amd64.deb ...\nD\u00e9paquetage de libgc1c2:amd64 (1:7.4.2-8) ...\nS\u00e9lection du paquet libltdl7:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../01-libltdl7_2.4.6-2_amd64.deb ...\nD\u00e9paquetage de libltdl7:amd64 (2.4.6-2) ...\nS\u00e9lection du paquet guile-2.0-libs:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../02-guile-2.0-libs_2.0.13+1-4_amd64.deb ...\nD\u00e9paquetage de guile-2.0-libs:amd64 (2.0.13+1-4) ...\nS\u00e9lection du paquet libfribidi0:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../03-libfribidi0_0.19.7-1+b1_amd64.deb ...\nD\u00e9paquetage de libfribidi0:amd64 (0.19.7-1+b1) ...\nS\u00e9lection du paquet libntlm0:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../04-libntlm0_1.4-8_amd64.deb ...\nD\u00e9paquetage de libntlm0:amd64 (1.4-8) ...\nS\u00e9lection du paquet libgsasl7 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../05-libgsasl7_1.8.0-8+b2_amd64.deb ...\nD\u00e9paquetage de libgsasl7 (1.8.0-8+b2) ...\nS\u00e9lection du paquet libkyotocabinet16v5:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../06-libkyotocabinet16v5_1.2.76-4.2+b1_amd64.deb ...\nD\u00e9paquetage de libkyotocabinet16v5:amd64 (1.2.76-4.2+b1) ...\nS\u00e9lection du paquet mailutils-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../07-mailutils-common_1%3a3.1.1-1_all.deb ...\nD\u00e9paquetage de mailutils-common (1:3.1.1-1) ...\nS\u00e9lection du paquet mysql-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../08-mysql-common_5.8+1.0.2_all.deb ...\nD\u00e9paquetage de mysql-common (5.8+1.0.2) ...\nS\u00e9lection du paquet libmariadbclient18:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../09-libmariadbclient18_10.1.26-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de libmariadbclient18:amd64 (10.1.26-0+deb9u1) ...\nS\u00e9lection du paquet libpython2.7-minimal:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../10-libpython2.7-minimal_2.7.13-2+deb9u2_amd64.deb ...\nD\u00e9paquetage de libpython2.7-minimal:amd64 (2.7.13-2+deb9u2) ...\nS\u00e9lection du paquet libpython2.7-stdlib:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../11-libpython2.7-stdlib_2.7.13-2+deb9u2_amd64.deb ...\nD\u00e9paquetage de libpython2.7-stdlib:amd64 (2.7.13-2+deb9u2) ...\nS\u00e9lection du paquet libpython2.7:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../12-libpython2.7_2.7.13-2+deb9u2_amd64.deb ...\nD\u00e9paquetage de libpython2.7:amd64 (2.7.13-2+deb9u2) ...\nS\u00e9lection du paquet libmailutils5:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../13-libmailutils5_1%3a3.1.1-1_amd64.deb ...\nD\u00e9paquetage de libmailutils5:amd64 (1:3.1.1-1) ...\nS\u00e9lection du paquet mailutils pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../14-mailutils_1%3a3.1.1-1_amd64.deb ...\nD\u00e9paquetage de mailutils (1:3.1.1-1) ...\nParam\u00e9trage de mysql-common (5.8+1.0.2) ...\nupdate-alternatives: utilisation de \u00ab /etc/mysql/my.cnf.fallback \u00bb pour fournir \u00ab /etc/mysql/my.cnf \u00bb (my.cnf) en mode automatique\nParam\u00e9trage de libgc1c2:amd64 (1:7.4.2-8) ...\nParam\u00e9trage de libmariadbclient18:amd64 (10.1.26-0+deb9u1) ...\nParam\u00e9trage de libntlm0:amd64 (1.4-8) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nParam\u00e9trage de libltdl7:amd64 (2.4.6-2) ...\nParam\u00e9trage de libfribidi0:amd64 (0.19.7-1+b1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de libpython2.7-minimal:amd64 (2.7.13-2+deb9u2) ...\nParam\u00e9trage de libkyotocabinet16v5:amd64 (1.2.76-4.2+b1) ...\nParam\u00e9trage de libpython2.7-stdlib:amd64 (2.7.13-2+deb9u2) ...\nParam\u00e9trage de mailutils-common (1:3.1.1-1) ...\nParam\u00e9trage de libgsasl7 (1.8.0-8+b2) ...\nParam\u00e9trage de guile-2.0-libs:amd64 (2.0.13+1-4) ...\nParam\u00e9trage de libpython2.7:amd64 (2.7.13-2+deb9u2) ...\nParam\u00e9trage de libmailutils5:amd64 (1:3.1.1-1) ...\nParam\u00e9trage de mailutils (1:3.1.1-1) ...\nupdate-alternatives: utilisation de \u00ab /usr/bin/frm.mailutils \u00bb pour fournir \u00ab /usr/bin/frm \u00bb (frm) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/from.mailutils \u00bb pour fournir \u00ab /usr/bin/from \u00bb (from) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/messages.mailutils \u00bb pour fournir \u00ab /usr/bin/messages \u00bb (messages) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/movemail.mailutils \u00bb pour fournir \u00ab /usr/bin/movemail \u00bb (movemail) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/readmsg.mailutils \u00bb pour fournir \u00ab /usr/bin/readmsg \u00bb (readmsg) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/dotlock.mailutils \u00bb pour fournir \u00ab /usr/bin/dotlock \u00bb (dotlock) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/mail.mailutils \u00bb pour fournir \u00ab /usr/bin/mailx \u00bb (mailx) en mode automatique\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nroot@adara:~#",
  301. "title": "Installation d'un serveur de courrier basique"
  302. },
  303. {
  304. "location": "/7-sept/#test-denvoi-dun-utilisateur-du-serveur-a-lautre",
  305. "text": "root -> ericadmin root@atom:/etc/fail2ban# mail ericadmin\n Cc:\n Subject: Essai 1\n Essai 1\n .\n\n ericadmin@atom:~/bin$ mailx\n \"/var/mail/ericadmin\": 1 message 1 nouveau\n >N 1 root lun. nov. 26 09: 14/451 Essai 1\n ? 1\n Return-Path: <root@atom.yojik.net>\n X-Original-To: ericadmin@atom.yojik.net\n Delivered-To: ericadmin@atom.yojik.net\n Received: by atom.yojik.net (Postfix, from userid 0)\n id 3AE0F460033; Mon, 26 Nov 2018 09:26:26 +0100 (CET)\n To: <ericadmin@atom.yojik.net>\n Subject: Essai 1\n X-Mailer: mail (GNU Mailutils 3.1.1)\n Message-Id: <20181126082626.3AE0F460033@atom.yojik.net>\n Date: Mon, 26 Nov 2018 09:26:26 +0100 (CET)\n From: root@atom.yojik.net (root)\n\n Essai 1\n .\n ? q\n 1 message sauvegard\u00e9 dans /home/ericadmin/mbox\n 0 message conserv\u00e9 dans /var/mail/ericadmin ericadmin -> root ericadmin@atom:~/bin$ mail root\n Cc:\n Subject: Essai 2\n Essai 2\n .\n\n\n root@atom:/etc/fail2ban# mailx\n \"/var/mail/root\": 1 message 1 nouveau\n >N 1 Eric Streit lun. nov. 26 09: 14/456 Essai 2\n ? 1\n Return-Path: <ericadmin@atom.yojik.net>\n X-Original-To: root@atom.yojik.net\n Delivered-To: root@atom.yojik.net\n Received: by atom.yojik.net (Postfix, from userid 1000)\n id 46220460036; Mon, 26 Nov 2018 09:27:04 +0100 (CET)\n To: <root@atom.yojik.net>\n Subject: Essai 2\n X-Mailer: mail (GNU Mailutils 3.1.1)\n Message-Id: <20181126082704.46220460036@atom.yojik.net>\n Date: Mon, 26 Nov 2018 09:27:04 +0100 (CET)\n From: ericadmin@atom.yojik.net (Eric Streit)\n\n Essai 2\n . L'envoi des messages entre utilisateurs du serveur serveur marche comme il faut.",
  306. "title": "Test d'envoi d'un utilisateur du serveur \u00e0 l'autre"
  307. },
  308. {
  309. "location": "/7-sept/#premiere-etape-de-configuration-de-postfix",
  310. "text": "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",
  311. "title": "Premi\u00e8re \u00e9tape de configuration de postfix"
  312. },
  313. {
  314. "location": "/7-sept/#test-denvoi-de-messages-a-partir-de-ce-serveur-sur-mon-serveur-principal",
  315. "text": "Envoi d'un message sur mon compte de messagerie en .eu: ericadmin@atom:~$ echo \"Et voil\u00e0 un petit message\" | mail -s \"test du courrier sortant\" ericadmin@yojik.eu Le message est bien re\u00e7u. V\u00e9rifiez dans le dossier spam : comme il n'y a aucune s\u00e9curisation du serveur de courrier (pour l'instant), gmail ou autre, soit refuse de courrier, soit le met dans les spams.",
  316. "title": "Test d'envoi de messages \u00e0 partir de ce serveur sur mon serveur principal"
  317. },
  318. {
  319. "location": "/7-sept/#test-denvoi-de-messages-a-partir-dun-poste-exterieur",
  320. "text": "Envoi d'un message \u00e0 partir du poste ext\u00e9rieur aldebaran (n'oubliez pas d'ouvrir le port 25 dans les r\u00e8gles iptables ...): eric@aldebaran:~$ echo \"Et voil\u00e0 un petit message\" | mail -s \"test du courrier 1\" ericadmin@atom.yojik.net Test de r\u00e9ception sur le serveur: ericadmin@atom:~$ mailx\n\"/var/mail/ericadmin\": 1 message 1 nouveau\n>N 1 Eric Streit dim. nov. 11 13: 16/724 test du courrier 1\n? 1\nReturn-Path: <eric@aldebaran.yojik.net>\nX-Original-To: ericadmin@atom.yojik.net\nDelivered-To: ericadmin@atom.yojik.net\nReceived: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:e5c4:aee0:d068:64f6])\n by atom.yojik.net (Postfix) with ESMTP id 0B3CF12085A\n for <ericadmin@atom.yojik.net>; Sun, 11 Nov 2018 13:09:08 +0100 (CET)\nReceived: by aldebaran.yojik.net (Postfix, from userid 1000)\n id 40DF310CAC3; Sun, 11 Nov 2018 13:09:07 +0100 (CET)\nSubject: test du courrier 1\nTo: <ericadmin@atom.yojik.net>\nX-Mailer: mail (GNU Mailutils 3.1.1)\nMessage-Id: <20181111120907.40DF310CAC3@aldebaran.yojik.net>\nDate: Sun, 11 Nov 2018 13:09:07 +0100 (CET)\nFrom: eric@aldebaran.yojik.net (Eric Streit)\n\nEt voil\u00e0 un petit message\n? q\n1 message sauvegard\u00e9 dans /home/ericadmin/mbox\n0 message conserv\u00e9 dans /var/mail/ericadmin Le message est bien re\u00e7u par le serveur de mail de yojik.net. Vous pouvez essayer aussi sur une adresse gmail par exemple.",
  321. "title": "Test d'envoi de messages \u00e0 partir d'un poste ext\u00e9rieur"
  322. },
  323. {
  324. "location": "/7-sept/#mise-a-jour-du-fichier-etcaliases",
  325. "text": "Ce fichier sert \u00e0 rediriger toutes les adresses \u00e9mail comme abuse , webmaster , root vers un utilisateur administrateur de la machine, root puis vers moi ericadmin # /etc/aliases\nmailer-daemon: postmaster\npostmaster: root\nnobody: root\nhostmaster: root\nusenet: root\nnews: root\nwebmaster: root\nwww: root\nftp: root\nabuse: root\nnoc: root\nsecurity: root\nroot: ericadmin Il faut lancer la commande newaliases pour g\u00e9n\u00e9rer le fichier.db utile \u00e0 Postfix et on demande \u00e0 Postfix de recharger ses fichiers. root@adara:~# newaliases\noot@adara:~# service postfix reload\nroot@adara:~#",
  326. "title": "Mise \u00e0 jour du fichier /etc/aliases"
  327. },
  328. {
  329. "location": "/7-sept/#test-de-lenvoi-a-root-pour-verifier-la-redirection",
  330. "text": "ericadmin@atom:~/bin$ mail root\nCc:\nSubject: Essai 5\nEssai 5\n.\nericadmin@atom:~/bin$ mailx\n\"/var/mail/ericadmin\": 4 messages 1 nouveau 3 non lus\n U 1 Eric Streit lun. nov. 26 09: 19/768 test du courrier 1\n U 2 Eric Streit lun. nov. 26 09: 18/743 test du courrier 4\n U 3 Eric Streit lun. nov. 26 09: 18/743 test du courrier 4\n>N 4 Eric Streit lun. nov. 26 09: 14/456 Essai 5\n? Tout fonctionne: le message a bien \u00e9t\u00e9 redirig\u00e9 vers ericadmin comme sp\u00e9cifi\u00e9 dans /etc/aliases.",
  331. "title": "Test de l'envoi \u00e0 root pour v\u00e9rifier la redirection"
  332. },
  333. {
  334. "location": "/7-sept/#le-fichier-etcmailname",
  335. "text": "Il contient le nom du serveur de courrier pour la machine, ici, c'est elle-m\u00eame: root@aijan:/home/ericadmin# cat /etc/mailname\naijan.yojik.net Le serveur de courrier n'autorise que les utilisateurs (users) de la machine, ici, ericadmin et root (ainsi que les alias enregistr\u00e9s pr\u00e9c\u00e9demment). ericadmin@aijan:~$ mailx\n\"/var/mail/ericadmin\": 2 messages 2 nouveaux\n>N 1 Eric Streit dim. mai 20 08:4 17/698 essai d'envoi \u00e0 root\n N 2 Eric Streit dim. mai 20 08:5 17/717 un autre essai\n? Pour l'envoi \u00e0 partir d'un poste ext\u00e9rieur, pensez \u00e0 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\u00e9s dans postfix. L'envoi \u00e0 root et \u00e0 ericadmin \u00e0 partir d'un autre poste du r\u00e9seau fonctionne parfaitement: le mail \u00e0 destination de root est redirig\u00e9 vers ericadmin comme stipul\u00e9 dans /etc/aliases . Les messages sortants sont parfaitement g\u00e9r\u00e9s et re\u00e7us par les serveurs de courrier ext\u00e9rieurs.",
  336. "title": "Le fichier /etc/mailname"
  337. },
  338. {
  339. "location": "/8-huit/",
  340. "text": "\ufeff\n\n\nInstallation du serveur DNS\n\n\nNous allons installer \nbind\n.\n\n\nroot@aijan:/home/ericadmin# apt install bind9\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n bind9utils libirs141\netc ...\n\nroot@aijan:/home/ericadmin# service bind9 start\nroot@aijan:/home/ericadmin# netstat -tlpn\nConnexions Internet actives (seulement serveurs)\nProto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name\ntcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 13815/named\ntcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 13815/named\ntcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 594/sshd\ntcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 13815/named\ntcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 803/master\ntcp6 0 0 :::53 :::* LISTEN 13815/named\ntcp6 0 0 :::22 :::* LISTEN 594/sshd\ntcp6 0 0 ::1:953 :::* LISTEN 13815/named\ntcp6 0 0 :::25 :::* LISTEN 803/master\nroot@aijan:/home/ericadmin#\n\n\n\n\nBien, bind a d\u00e9marr\u00e9 et \u00e9coute sur les ports 53 et 953, en IPV4 et IPV6. Il nous reste \u00e0 configurer les zones et \u00e0 ouvrir les ports (firewall). Je vais utiliser comme serveur \ndns\n secondaire pour la zone \nyojik.net\n le serveur que j'utilise d\u00e9j\u00e0 pour la zone \nyojik.eu\n.\n\n\nNous configurerons le serveur dns local pour qu'il transf\u00e8re les zones automatiquement vers notre serveur dns secondaire.\n\n\nVoil\u00e0 la structure g\u00e9n\u00e9rale de mes serveurs DNS:\n\n\n\n\n\n\nadara.yojik.eu: serveur DNS primaire pour le domaine yojik.eu\n\n\n\n\n\n\npolis.yojik.eu:\n\n\n\n\nserveur DNS secondaire pour le domaine yojik.eu\n\n\nserveur DNS secondaire pour le domaine yojik.net\n\n\n\n\n\n\n\n\naijan.yojik.net: serveur DNS primaire pour le site yojik.net\n\n\nCe dernier serveur d\u00e9clarera l'ensemble des machines et serveurs du domaine yojik.net. (ce sont les machines de bureau/portables ainsi que le serveurs h\u00e9berg\u00e9s \u00e0 la maison.)\n\n\nLes enregistrements \nglue\n seront renseign\u00e9s chez mon registrar (OVH dans mon cas). Les serveurs DNS seront \u00e9galement d\u00e9clar\u00e9s chez ce registrar.\n\n\nNotre zone yojik.net est d\u00e9clar\u00e9e dans le fichier \n/etc/bind/named.conf.local\n. (en faire une copie de sauvegarde!)\n\n\nVoici son contenu avant modification:\n\n\n//\n// Do any local configuration here\n//\n\n// Consider adding the 1918 zones here, if they are not used in your\n// organization\n//include \"/etc/bind/zones.rfc1918\";\n\n\n\n\n\nContenu apr\u00e8s ajout de la zone yojik.net:\n\n\nzone \"yojik.net\" {\n type master;\n file \"/etc/bind/db.yojik.net\";\n};\n\n\n\n\n\nDans tous les tutorials, vous verrez la d\u00e9claration des zones inverses: apr\u00e8s de nombreux \u00e9changes avec des sp\u00e9cialistes, il s'av\u00e8re que ce n'est pas n\u00e9cessaire, car mes serveurs DNS ne seront jamais interrog\u00e9s pour la r\u00e9solution inverse: pour cela, il faudrait que mon registrar me d\u00e9l\u00e8gue la gestion de la zone. Je n'ai qu'une adresse IPV4 associ\u00e9e \u00e0 ce domaine et pas de d\u00e9l\u00e9gation.\n\n\nCr\u00e9ation du fichier de zone \ndb.yojik.net\n dans le r\u00e9pertoire \n/etc/bind\n.\n\n\nroot@aijan:/etc/bind# vim db.yojik.net\n\nroot@aijan:/etc/bind# cat db.yojik.net\n$TTL 86400\n$ORIGIN yojik.net.\n\n@ IN SOA aijan.yojik.net. hostmaster.yojik.net. (\n 2018052001 ; serial \u00e0 changer \u00e0 chaque modification\n 7200 ; refresh, 12h\n 3600 ; retry, 1h\n 1209600 ; expire\n 86400 ) ; negative cache, 24h\n\n\n; nameservers\n IN NS aijan.yojik.net.\n IN NS polis.yojik.eu.\n\n\n\n;mail server\n IN MX 10 aijan.yojik.net.\n\n; domain hosts\nyojik.net. IN A 82.64.48.5\nyojik.net. IN AAAA 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93\naijan IN A 82.64.48.5\naijan IN AAAA 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93\n\n\n\n\nOn relance bind et on teste en local:\n\n\nroot@aijan:/home/ericadmin# service bind9 restart\nroot@aijan:/home/ericadmin# nslookup aijan.yojik.net localhost\nServer: localhost\nAddress: ::1#53\n\nName: aijan.yojik.net\nAddress: 82.64.48.5\n\nroot@aijan:/home/ericadmin#\n\n\n\n\n\u00c7a marche!\nTest de notre enregistrement MX (mail) avec \ndig\n:\n\n\noot@aijan:/etc/bind# dig @localhost aijan.yojik.net MX\n\n; <<>> DiG 9.10.3-P4-Debian <<>> @localhost aijan.yojik.net MX\n; (2 servers found)\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21275\n;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1\n\n;; OPT PSEUDOSECTION:\n; EDNS: version: 0, flags:; udp: 4096\n;; QUESTION SECTION:\n;aijan.yojik.net. IN MX\n\n;; AUTHORITY SECTION:\nyojik.net. 86400 IN SOA aijan.yojik.net. hostmaster.yojik.net. 2018052003 7200 3600 1209600 86400\n\n;; Query time: 0 msec\n;; SERVER: ::1#53(::1)\n;; WHEN: Sun May 20 10:27:17 CEST 2018\n;; MSG SIZE rcvd: 91\n\n\n\n\n\nIl nous reste plusieurs \u00e9l\u00e9ments \u00e0 configurer pour que notre serveur dns soit pris en compte.\n\n\n\n\nConfigurer notre box pour rediriger les requ\u00eates ext\u00e9rieures DNS sur notre serveur DNS personnel.\n\n\nMettre \u00e0 jour la configuration de nos enregistrements chez notre registrar.\n\n\nAjouter notre zone \u00e0 notre serveur DNS secondaire (polis.yojik.eu) et mise \u00e0 jour de la clef de connexion.\n\n\n\n\nFichier /etc/bind/conf.named.local\n\n\nzone \"yojik.eu\" {\n type slave;\n file \"db.yojik.eu.local\";\n masters { 91.121.72.10; };\n};\n\nzone \"yojik.net\" {\n type slave;\n file \"db.yojik.net.local\";\n masters { 82.64.48.5; };\n};\n\n\n\n\nConfiguration des options: fichier /etc/bind/named.conf.options\n\n\noptions {\n directory \"/var/cache/bind\";\n\n // If there is a firewall between you and nameservers you want\n // to talk to, you may need to fix the firewall to allow multiple\n // ports to talk. See http://www.kb.cert.org/vuls/id/800113\n\n // If your ISP provided one or more IP addresses for stable\n // nameservers, you probably want to use them as forwarders.\n // Uncomment the following block, and insert the addresses replacing\n // the all-0's placeholder.\n\n // forwarders {\n // 0.0.0.0;\n // };\n\n //========================================================================\n // If BIND logs error messages about the root key being expired,\n // you will need to update your keys. See https://www.isc.org/bind-keys\n //========================================================================\n dnssec-validation auto;\n\n auth-nxdomain no; # conform to RFC1035\n listen-on-v6 { any; };\n listen-on { any; };\n allow-update { none; };\n 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; };\n allow-transfer { 37.187.3.182; 2001:41d0:a:3b6::1; };\n version \"BIND\";\n\n\n\n};\n\n\n\n\nPensez \u00e0 v\u00e9rifier que la clef situ\u00e9e dans le fichier: /etc/bind/rndc.key est identique sur votre serveur primaire et secondaire.\n\n\nConfiguration de votre \nbox\n et des enregistrements de votre registrar\n\n\nCela \u00e9tant tr\u00e8s d\u00e9pendant de chaque registrar et de chaque \nbox\n, je vous laisse chercher sur le net les informations utiles. Sachez tout de m\u00eame que peu de fournisseurs d'internet autorisent l'installation d'un serveur \u00e9mail personnel. I8l vous faudra souvent attendre un peu avant que la configuration ne soit prise en compte chez votre registrar.\n\n\nV\u00e9rification de la config DNS:\n\n\nAllez sur le site \nhttps://toolbox.googleapps.com/apps/dig/\n pour tester votre configuration.\n\n\nConfiguration du reverse DNS\n\n\nSi vous h\u00e9bergez votre serveur \"chez vous\", vous devrez configurer le reverse DNS dans la page d'administration de votre ligne Internet.\n\n\nPour le FAI Free, allez sur la page: \"Personnalisez mon reverse DNS\", et mettez votre nom de doamine dans le champ ad\u00e9quat.\n\n\nIl faut quelques heures pour que la propagation se fasse.",
  341. "title": "Installation du serveur DNS"
  342. },
  343. {
  344. "location": "/8-huit/#installation-du-serveur-dns",
  345. "text": "Nous allons installer bind . root@aijan:/home/ericadmin# apt install bind9\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n bind9utils libirs141\netc ...\n\nroot@aijan:/home/ericadmin# service bind9 start\nroot@aijan:/home/ericadmin# netstat -tlpn\nConnexions Internet actives (seulement serveurs)\nProto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name\ntcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 13815/named\ntcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 13815/named\ntcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 594/sshd\ntcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 13815/named\ntcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 803/master\ntcp6 0 0 :::53 :::* LISTEN 13815/named\ntcp6 0 0 :::22 :::* LISTEN 594/sshd\ntcp6 0 0 ::1:953 :::* LISTEN 13815/named\ntcp6 0 0 :::25 :::* LISTEN 803/master\nroot@aijan:/home/ericadmin# Bien, bind a d\u00e9marr\u00e9 et \u00e9coute sur les ports 53 et 953, en IPV4 et IPV6. Il nous reste \u00e0 configurer les zones et \u00e0 ouvrir les ports (firewall). Je vais utiliser comme serveur dns secondaire pour la zone yojik.net le serveur que j'utilise d\u00e9j\u00e0 pour la zone yojik.eu . Nous configurerons le serveur dns local pour qu'il transf\u00e8re les zones automatiquement vers notre serveur dns secondaire. Voil\u00e0 la structure g\u00e9n\u00e9rale 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\u00e9clarera l'ensemble des machines et serveurs du domaine yojik.net. (ce sont les machines de bureau/portables ainsi que le serveurs h\u00e9berg\u00e9s \u00e0 la maison.) Les enregistrements glue seront renseign\u00e9s chez mon registrar (OVH dans mon cas). Les serveurs DNS seront \u00e9galement d\u00e9clar\u00e9s chez ce registrar. Notre zone yojik.net est d\u00e9clar\u00e9e dans le fichier /etc/bind/named.conf.local . (en faire une copie de sauvegarde!) Voici son contenu avant modification: //\n// Do any local configuration here\n//\n\n// Consider adding the 1918 zones here, if they are not used in your\n// organization\n//include \"/etc/bind/zones.rfc1918\"; Contenu apr\u00e8s ajout de la zone yojik.net: zone \"yojik.net\" {\n type master;\n file \"/etc/bind/db.yojik.net\";\n}; Dans tous les tutorials, vous verrez la d\u00e9claration des zones inverses: apr\u00e8s de nombreux \u00e9changes avec des sp\u00e9cialistes, il s'av\u00e8re que ce n'est pas n\u00e9cessaire, car mes serveurs DNS ne seront jamais interrog\u00e9s pour la r\u00e9solution inverse: pour cela, il faudrait que mon registrar me d\u00e9l\u00e8gue la gestion de la zone. Je n'ai qu'une adresse IPV4 associ\u00e9e \u00e0 ce domaine et pas de d\u00e9l\u00e9gation. Cr\u00e9ation du fichier de zone db.yojik.net dans le r\u00e9pertoire /etc/bind . root@aijan:/etc/bind# vim db.yojik.net\n\nroot@aijan:/etc/bind# cat db.yojik.net\n$TTL 86400\n$ORIGIN yojik.net.\n\n@ IN SOA aijan.yojik.net. hostmaster.yojik.net. (\n 2018052001 ; serial \u00e0 changer \u00e0 chaque modification\n 7200 ; refresh, 12h\n 3600 ; retry, 1h\n 1209600 ; expire\n 86400 ) ; negative cache, 24h\n\n\n; nameservers\n IN NS aijan.yojik.net.\n IN NS polis.yojik.eu.\n\n\n\n;mail server\n IN MX 10 aijan.yojik.net.\n\n; domain hosts\nyojik.net. IN A 82.64.48.5\nyojik.net. IN AAAA 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93\naijan IN A 82.64.48.5\naijan 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\nroot@aijan:/home/ericadmin# nslookup aijan.yojik.net localhost\nServer: localhost\nAddress: ::1#53\n\nName: aijan.yojik.net\nAddress: 82.64.48.5\n\nroot@aijan:/home/ericadmin# \u00c7a marche!\nTest de notre enregistrement MX (mail) avec dig : oot@aijan:/etc/bind# dig @localhost aijan.yojik.net MX\n\n; <<>> DiG 9.10.3-P4-Debian <<>> @localhost aijan.yojik.net MX\n; (2 servers found)\n;; global options: +cmd\n;; Got answer:\n;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21275\n;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1\n\n;; OPT PSEUDOSECTION:\n; EDNS: version: 0, flags:; udp: 4096\n;; QUESTION SECTION:\n;aijan.yojik.net. IN MX\n\n;; AUTHORITY SECTION:\nyojik.net. 86400 IN SOA aijan.yojik.net. hostmaster.yojik.net. 2018052003 7200 3600 1209600 86400\n\n;; Query time: 0 msec\n;; SERVER: ::1#53(::1)\n;; WHEN: Sun May 20 10:27:17 CEST 2018\n;; MSG SIZE rcvd: 91 Il nous reste plusieurs \u00e9l\u00e9ments \u00e0 configurer pour que notre serveur dns soit pris en compte. Configurer notre box pour rediriger les requ\u00eates ext\u00e9rieures DNS sur notre serveur DNS personnel. Mettre \u00e0 jour la configuration de nos enregistrements chez notre registrar. Ajouter notre zone \u00e0 notre serveur DNS secondaire (polis.yojik.eu) et mise \u00e0 jour de la clef de connexion. Fichier /etc/bind/conf.named.local zone \"yojik.eu\" {\n type slave;\n file \"db.yojik.eu.local\";\n masters { 91.121.72.10; };\n};\n\nzone \"yojik.net\" {\n type slave;\n file \"db.yojik.net.local\";\n masters { 82.64.48.5; };\n};",
  346. "title": "Installation du serveur DNS"
  347. },
  348. {
  349. "location": "/8-huit/#configuration-des-options-fichier-etcbindnamedconfoptions",
  350. "text": "options {\n directory \"/var/cache/bind\";\n\n // If there is a firewall between you and nameservers you want\n // to talk to, you may need to fix the firewall to allow multiple\n // ports to talk. See http://www.kb.cert.org/vuls/id/800113\n\n // If your ISP provided one or more IP addresses for stable\n // nameservers, you probably want to use them as forwarders.\n // Uncomment the following block, and insert the addresses replacing\n // the all-0's placeholder.\n\n // forwarders {\n // 0.0.0.0;\n // };\n\n //========================================================================\n // If BIND logs error messages about the root key being expired,\n // you will need to update your keys. See https://www.isc.org/bind-keys\n //========================================================================\n dnssec-validation auto;\n\n auth-nxdomain no; # conform to RFC1035\n listen-on-v6 { any; };\n listen-on { any; };\n allow-update { none; };\n 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; };\n allow-transfer { 37.187.3.182; 2001:41d0:a:3b6::1; };\n version \"BIND\";\n\n\n\n}; Pensez \u00e0 v\u00e9rifier que la clef situ\u00e9e dans le fichier: /etc/bind/rndc.key est identique sur votre serveur primaire et secondaire.",
  351. "title": "Configuration des options: fichier /etc/bind/named.conf.options"
  352. },
  353. {
  354. "location": "/8-huit/#configuration-de-votre-box-et-des-enregistrements-de-votre-registrar",
  355. "text": "Cela \u00e9tant tr\u00e8s d\u00e9pendant de chaque registrar et de chaque box , je vous laisse chercher sur le net les informations utiles. Sachez tout de m\u00eame que peu de fournisseurs d'internet autorisent l'installation d'un serveur \u00e9mail personnel. I8l vous faudra souvent attendre un peu avant que la configuration ne soit prise en compte chez votre registrar.",
  356. "title": "Configuration de votre box et des enregistrements de votre registrar"
  357. },
  358. {
  359. "location": "/8-huit/#verification-de-la-config-dns",
  360. "text": "Allez sur le site https://toolbox.googleapps.com/apps/dig/ pour tester votre configuration.",
  361. "title": "V\u00e9rification de la config DNS:"
  362. },
  363. {
  364. "location": "/8-huit/#configuration-du-reverse-dns",
  365. "text": "Si vous h\u00e9bergez 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\u00e9quat. Il faut quelques heures pour que la propagation se fasse.",
  366. "title": "Configuration du reverse DNS"
  367. },
  368. {
  369. "location": "/9-neuf/",
  370. "text": "Installation d'un serveur web\n\n\nNous allons installer un serveur Web: \nApache\n. C'est juste celui que je connais le mieux. \nNginx\n est une possible alternative tr\u00e8s pris\u00e9e et gu\u00e8re plus compliqu\u00e9e \u00e0 mettre en oeuvre.\n\n\nroot@aijan:/etc/bind# apt install apache2\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0\netc ...\n\n\n\n\nTest de notre serveur:\n\n\nC'est bon, voil\u00e0 une image de la page d'acceuil :\n\n\n\n\nNe pas oublier d'ouvrir les ports du firewall: port 80 et 443 en TCP et UDP.\n\n\nLignes \u00e0 rajouter \u00e0 firewall.sh:\n\n\n # HTTP + HTTPS Out\n $IPT -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT\n\n $IP6T -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT\n\n # HTTP + HTTPS In\n $IPT -t filter -A INPUT -p tcp --dport 80 -j ACCEPT\n $IPT -t filter -A INPUT -p tcp --dport 443 -j ACCEPT\n\n $IP6T -t filter -A INPUT -p tcp --dport 80 -j ACCEPT\n $IP6T -t filter -A INPUT -p tcp --dport 443 -j ACCEPT\n\n\n\n\nSauvegarde de notre nouvelle configuration\n\n\nroot@aijan:#cd /home/ericadmin/bin/\nroot@aijan:/home/ericadmin/bin#./firewall.sh restart\nroot@aijan:/home/ericadmin/bin#service netfilter-persistent save\n\n\n\n\nCr\u00e9ation des h\u00f4tes virtuels (virtual hosts)\n\n\n3 h\u00f4tes virtuels \u00e0 cr\u00e9er:\n\n\n\n\nyojik.net\n\n\nwww.yojik.net\n\n\nyazik.yojik.net\n\n\n\n\nCr\u00e9ez 2 fichiers d'h\u00f4tes virtuels. Exemple de fichier:\n\n\nVirtualhost: www.yojik.net\n\n\n<VirtualHost *:80>\n\nServerAdmin webmaster@yojik.net\nServerName www.yojik.net\n\nDocumentRoot /var/www/html/yojiknet/\n\n<Directory \"/var/www/html/yojiknet/index.html\">\n Options Indexes MultiViews\n AllowOverride FileInfo AuthConfig Indexes\n Order allow,deny\n allow from all\n Require all granted\n</Directory>\n\n ErrorLog ${APACHE_LOG_DIR}/error.log\n CustomLog ${APACHE_LOG_DIR}/access.log combined\n\nLogLevel warn\n\n</VirtualHost>\n\n\n\n\nVirtualhost: yazik.yojik.net\n\n\n<VirtualHost *:80>\n\nServerAdmin webmaster@yojik.net\nServerName yazik.yojik.net\n\nDocumentRoot /var/www/html/yaziknet/\n\n<Directory \"/var/www/html/yaziknet/index.html\">\n Options Indexes MultiViews\n AllowOverride FileInfo AuthConfig Indexes\n Order allow,deny\n allow from all\n Require all granted\n</Directory>\n\n ErrorLog ${APACHE_LOG_DIR}/error.log\n CustomLog ${APACHE_LOG_DIR}/access.log combined\n\nLogLevel warn\n\n</VirtualHost>\n\n\n\n\nValidez-les avec:\n\n\n\n\na2ensite le_nom_du_fichier (a2ensite site1 site2 (pour moi))\n\n\n\n\nOn recharge apache2 pour la prise en compte de nos 2 sites.\n\n\n\n\nservice apache2 reload\n\n\n\n\nCr\u00e9ation des fichiers html\n\n\nCr\u00e9ez 2 r\u00e9pertoires sous /var/www/html:\n\n\n\n\n\n\nmkdir /var/www/html/yojiknet /var/www/html/yaziknet\n\n\n\n\n\n\ncd /var/www/html\n\n\n\n\n\n\nOn cr\u00e9e un fichier \nindex.html\n sous chaque r\u00e9pertoire cr\u00e9\u00e9:\n\n\nExemple de fichier de base:\n\n\n/var/www/html/yojiknet/index.html\n\n\n<!DOCTYPE html>\n\n<html>\n <head>\n <title>The Yojik.net home page</title>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n </head>\n <body>\n <h1>The Yojik Net home page</h1>\n <p>Nothing interesting at the moment .. comming soon!</p>\n </body>\n</html>\n\n\n\n\n/var/www/html/yaziknet/index.html\n\n\n<!DOCTYPE html>\n\n<html>\n <head>\n <title>The Yazik.net home page</title>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n </head>\n <body>\n <h1>The Yazik Net home page</h1>\n <p>Nothing interesting at the moment .. comming soon!</p>\n </body>\n</html>\n\n\n\n\nDans le r\u00e9pertoire \n/var/www/html/\n on lance la commande suivante pour ajuster les droits et propri\u00e9taires des fichiers (pour apache et Debian, c'est \nwww-data\n.)\n\n\n\n\nchown -Rv www-data.www-data *\n\n\n\n\nOn relance apache\n\n\n\n\nservice apache2 restart\n\n\n\n\nOn teste avec un navigateur.\n\n\n\n\n\n\nadresse 1: www.yojik.net\n\n\n\n\n\n\nadresse 2: yazik.yojik.net\n\n\n\n\n\n\nVous vous apercevrez que la deuxi\u00e8me ne fonctionne pas: il vous faut ajouter le domaine yazik.yojik.net \u00e0 votre fichier de zone de bind et relancer bind ensuite:\n\n\n\n\nyazik IN CNAME atom.yojik.net.\n\n\n\n\nRe-testez: tout marche :)",
  371. "title": "Installation d'un serveur web"
  372. },
  373. {
  374. "location": "/9-neuf/#installation-dun-serveur-web",
  375. "text": "Nous allons installer un serveur Web: Apache . C'est juste celui que je connais le mieux. Nginx est une possible alternative tr\u00e8s pris\u00e9e et gu\u00e8re plus compliqu\u00e9e \u00e0 mettre en oeuvre. root@aijan:/etc/bind# apt install apache2\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n apache2-bin apache2-data apache2-utils libapr1 libaprutil1 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.2-0\netc ... Test de notre serveur: C'est bon, voil\u00e0 une image de la page d'acceuil : Ne pas oublier d'ouvrir les ports du firewall: port 80 et 443 en TCP et UDP. Lignes \u00e0 rajouter \u00e0 firewall.sh: # HTTP + HTTPS Out\n $IPT -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT\n\n $IP6T -t filter -A OUTPUT -p tcp --dport 80 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 443 -j ACCEPT\n\n # HTTP + HTTPS In\n $IPT -t filter -A INPUT -p tcp --dport 80 -j ACCEPT\n $IPT -t filter -A INPUT -p tcp --dport 443 -j ACCEPT\n\n $IP6T -t filter -A INPUT -p tcp --dport 80 -j ACCEPT\n $IP6T -t filter -A INPUT -p tcp --dport 443 -j ACCEPT",
  376. "title": "Installation d'un serveur web"
  377. },
  378. {
  379. "location": "/9-neuf/#sauvegarde-de-notre-nouvelle-configuration",
  380. "text": "root@aijan:#cd /home/ericadmin/bin/\nroot@aijan:/home/ericadmin/bin#./firewall.sh restart\nroot@aijan:/home/ericadmin/bin#service netfilter-persistent save",
  381. "title": "Sauvegarde de notre nouvelle configuration"
  382. },
  383. {
  384. "location": "/9-neuf/#creation-des-hotes-virtuels-virtual-hosts",
  385. "text": "3 h\u00f4tes virtuels \u00e0 cr\u00e9er: yojik.net www.yojik.net yazik.yojik.net Cr\u00e9ez 2 fichiers d'h\u00f4tes virtuels. Exemple de fichier: Virtualhost: www.yojik.net <VirtualHost *:80>\n\nServerAdmin webmaster@yojik.net\nServerName www.yojik.net\n\nDocumentRoot /var/www/html/yojiknet/\n\n<Directory \"/var/www/html/yojiknet/index.html\">\n Options Indexes MultiViews\n AllowOverride FileInfo AuthConfig Indexes\n Order allow,deny\n allow from all\n Require all granted\n</Directory>\n\n ErrorLog ${APACHE_LOG_DIR}/error.log\n CustomLog ${APACHE_LOG_DIR}/access.log combined\n\nLogLevel warn\n\n</VirtualHost> Virtualhost: yazik.yojik.net <VirtualHost *:80>\n\nServerAdmin webmaster@yojik.net\nServerName yazik.yojik.net\n\nDocumentRoot /var/www/html/yaziknet/\n\n<Directory \"/var/www/html/yaziknet/index.html\">\n Options Indexes MultiViews\n AllowOverride FileInfo AuthConfig Indexes\n Order allow,deny\n allow from all\n Require all granted\n</Directory>\n\n ErrorLog ${APACHE_LOG_DIR}/error.log\n CustomLog ${APACHE_LOG_DIR}/access.log combined\n\nLogLevel warn\n\n</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",
  386. "title": "Cr\u00e9ation des h\u00f4tes virtuels (virtual hosts)"
  387. },
  388. {
  389. "location": "/9-neuf/#creation-des-fichiers-html",
  390. "text": "Cr\u00e9ez 2 r\u00e9pertoires sous /var/www/html: mkdir /var/www/html/yojiknet /var/www/html/yaziknet cd /var/www/html On cr\u00e9e un fichier index.html sous chaque r\u00e9pertoire cr\u00e9\u00e9: Exemple de fichier de base: /var/www/html/yojiknet/index.html <!DOCTYPE html>\n\n<html>\n <head>\n <title>The Yojik.net home page</title>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n </head>\n <body>\n <h1>The Yojik Net home page</h1>\n <p>Nothing interesting at the moment .. comming soon!</p>\n </body>\n</html> /var/www/html/yaziknet/index.html <!DOCTYPE html>\n\n<html>\n <head>\n <title>The Yazik.net home page</title>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n </head>\n <body>\n <h1>The Yazik Net home page</h1>\n <p>Nothing interesting at the moment .. comming soon!</p>\n </body>\n</html> Dans le r\u00e9pertoire /var/www/html/ on lance la commande suivante pour ajuster les droits et propri\u00e9taires des fichiers (pour apache et Debian, c'est www-data .) chown -Rv www-data.www-data * On relance apache service apache2 restart On teste avec un navigateur. adresse 1: www.yojik.net adresse 2: yazik.yojik.net Vous vous apercevrez que la deuxi\u00e8me ne fonctionne pas: il vous faut ajouter le domaine yazik.yojik.net \u00e0 votre fichier de zone de bind et relancer bind ensuite: yazik IN CNAME atom.yojik.net. Re-testez: tout marche :)",
  391. "title": "Cr\u00e9ation des fichiers html"
  392. },
  393. {
  394. "location": "/10-dix/",
  395. "text": "Installation de \ndovecot\n et de l'authentification\n\n\nPour l'instant, pour r\u00e9cup\u00e9rer ses \u00e9mails, il faut d'abord avoir un compte sur le serveur et se loguer. Ensuite, avec la commande mailx, on peut voir ses messages.\n\n\nExemple:\n\n\nericadmin@aijan:~$ mailx\n\"/var/mail/ericadmin\": 2 messages 2 non lus\n>U 1 Eric Streit dim. mai 20 08:4 20/742 essai d envoi \u00e0 root\n U 2 Eric Streit dim. mai 20 08:5 19/736 un autre essai\n?\n\n\n\n\nNous allons installer dovecot qui est un serveur \npop/imap\n et d'authentification \nSASL\n. Nous pourrons ensuite nous connecter sur le serveur avec un client mail comme \nthunderbird\n, et r\u00e9cup\u00e9rer et envoyer nos messages avec celui-ci.\n\n\nInstallation des programmes\n\n\nNous n'installerons que les programmes n\u00e9cessaires \u00e0 la gestion du protocole \nimap\n des courriers. Nous n'utilisons pas le protocole \npop3\n.\n\n\nTout d'abord, faites une copie de /etc/postfix/main.conf et /etc/postfix/master.conf:\n\n\n# cp master.cf master.cf.orig\n# cp main.cf main.cf.orig\n\n\n\n\nNous allons maintenant configurer nos boites \u00e9mail; 2 syst\u00e8mes sont courants: fichier unique qui contient tous vos messages (type mbox) ou r\u00e9pertoire avec un fichier par \u00e9mail (type maildir). Par d\u00e9faut, le type est mbox.\nNous allons changer cela (question de go\u00fbt ...) Pour cela, nous aurons besoins des programmes utilitaires install\u00e9s avec dovecot.\n\n\nChoix de la base de donn\u00e9es\n\n\nNous utiliserons la base de donn\u00e9es \nsqlite\n. Il est bien s\u00fbr pr\u00e9f\u00e9rable d'utiliser une base de donn\u00e9es plus traditionnelle comme \nmysql\n ou \npostgresql\n si le nombre d'utilisateurs est important. Mon serveur de mails n'aura que moins de 10 adresses \u00e9mail, donc, \nsqlite\n suffira.\n\n\nroot@adara:/home/www# apt install dovecot-common dovecot-imapd dovecot-sqlite\nLecture des listes de paquets... Fait\nConstruction de l arbre des d\u00e9pendances\nLecture des informations d \u00e9tat... Fait\nNote : s\u00e9lection de \u00ab dovecot-core \u00bb au lieu de \u00ab dovecot-common \u00bb\nThe following additional packages will be installed:\n libexttextcat-2.0-0 libexttextcat-data libstemmer0d\nPaquets sugg\u00e9r\u00e9s :\n dovecot-gssapi dovecot-sieve dovecot-pgsql dovecot-mysql dovecot-ldap dovecot-pop3d dovecot-lmtpd dovecot-managesieved dovecot-solr dovecot-lucene ufw\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n dovecot-core dovecot-imapd dovecot-sqlite libexttextcat-2.0-0 libexttextcat-data libstemmer0d\n0 mis \u00e0 jour, 6 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 5 062 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 12,2 Mo d espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 libexttextcat-data all 3.4.4-2 [167 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libexttextcat-2.0-0 amd64 3.4.4-2+b1 [16,2 kB]\nR\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 libstemmer0d amd64 0+svn585-1+b2 [63,3 kB]\nR\u00e9ception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-core amd64 1:2.2.27-3+deb9u2 [3 324 kB]\nR\u00e9ception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-imapd amd64 1:2.2.27-3+deb9u2 [814 kB]\nR\u00e9ception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-sqlite amd64 1:2.2.27-3+deb9u2 [677 kB]\n5 062 ko r\u00e9ceptionn\u00e9s en 0s (6 873 ko/s)\nS\u00e9lection du paquet libexttextcat-data pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 26792 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../0-libexttextcat-data_3.4.4-2_all.deb ...\nD\u00e9paquetage de libexttextcat-data (3.4.4-2) ...\nS\u00e9lection du paquet libexttextcat-2.0-0:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../1-libexttextcat-2.0-0_3.4.4-2+b1_amd64.deb ...\nD\u00e9paquetage de libexttextcat-2.0-0:amd64 (3.4.4-2+b1) ...\nS\u00e9lection du paquet libstemmer0d:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../2-libstemmer0d_0+svn585-1+b2_amd64.deb ...\nD\u00e9paquetage de libstemmer0d:amd64 (0+svn585-1+b2) ...\nS\u00e9lection du paquet dovecot-core pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../3-dovecot-core_1%3a2.2.27-3+deb9u2_amd64.deb ...\nD\u00e9paquetage de dovecot-core (1:2.2.27-3+deb9u2) ...\nS\u00e9lection du paquet dovecot-imapd pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../4-dovecot-imapd_1%3a2.2.27-3+deb9u2_amd64.deb ...\nD\u00e9paquetage de dovecot-imapd (1:2.2.27-3+deb9u2) ...\nS\u00e9lection du paquet dovecot-sqlite pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../5-dovecot-sqlite_1%3a2.2.27-3+deb9u2_amd64.deb ...\nD\u00e9paquetage de dovecot-sqlite (1:2.2.27-3+deb9u2) ...\nParam\u00e9trage de libstemmer0d:amd64 (0+svn585-1+b2) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nParam\u00e9trage de libexttextcat-data (3.4.4-2) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u3) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de libexttextcat-2.0-0:amd64 (3.4.4-2+b1) ...\nParam\u00e9trage de dovecot-core (1:2.2.27-3+deb9u2) ...\n\nCreating config file /etc/dovecot/dovecot.conf with new version\n\nCreating config file /etc/dovecot/dovecot-dict-auth.conf.ext with new version\n\nCreating config file /etc/dovecot/dovecot-dict-sql.conf.ext with new version\n\nCreating config file /etc/dovecot/dovecot-sql.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/10-auth.conf with new version\n\nCreating config file /etc/dovecot/conf.d/10-director.conf with new version\n\nCreating config file /etc/dovecot/conf.d/10-logging.conf with new version\n\nCreating config file /etc/dovecot/conf.d/10-mail.conf with new version\n\nCreating config file /etc/dovecot/conf.d/10-master.conf with new version\n\nCreating config file /etc/dovecot/conf.d/10-tcpwrapper.conf with new version\n\nCreating config file /etc/dovecot/conf.d/15-lda.conf with new version\n\nCreating config file /etc/dovecot/conf.d/15-mailboxes.conf with new version\n\nCreating config file /etc/dovecot/conf.d/90-acl.conf with new version\n\nCreating config file /etc/dovecot/conf.d/90-plugin.conf with new version\n\nCreating config file /etc/dovecot/conf.d/90-quota.conf with new version\n\nCreating config file /etc/dovecot/conf.d/auth-checkpassword.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-deny.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-dict.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-master.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-passwdfile.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-sql.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-static.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-system.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-vpopmail.conf.ext with new version\nCreated symlink /etc/systemd/system/multi-user.target.wants/dovecot.service \u2192 /lib/systemd/system/dovecot.service.\nParam\u00e9trage de dovecot-imapd (1:2.2.27-3+deb9u2) ...\n\nCreating config file /etc/dovecot/conf.d/20-imap.conf with new version\nParam\u00e9trage de dovecot-sqlite (1:2.2.27-3+deb9u2) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u3) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour dovecot-core (1:2.2.27-3+deb9u2) ...\nroot@adara:/home/www#\n\n\n\n\nConfiguration du type de bo\u00eete aux lettres\n\n\nC'est ici que l'on configure si on veut un fichier unique qui contient tous les messages (type inbox) ou un fichier par \u00e9mail (type Maildir).\n\n\nCela se passe dans le fichier /etc/postfix/main.cf\n\n\nOn rajoute les lignes suivantes:\n\n\nhome_mailbox = Maildir/\nmailbox_command =\n\n\n\nSi ces lignes existaient avant, il faut les commenter (ajout d'un # en d\u00e9but de ligne.)\nOn recharge le fichier de conf\n\n\nservice postfix reload\n\n\n\nEt on teste:\n\n\neric@aldebaran:~/Devs/Travail/Installation serveur/Tutorial$ mail ericadmin@aijan.yojik.net\nCc:\nSubject: Re-essai\nre-essai de aldebaran\n.\neric@aldebaran:~/Devs/Travail/Installation serveur/Tutorial$\n\n\n\n\nJ'envoie un courrier \u00e0 partir de mon desktop.\nV\u00e9rification sur le serveur:\n\n\nericadmin@aijan:~$ ls\nbin index.html Maildir mbox\nericadmin@aijan:~$\n\n\n\n\nLe r\u00e9pertoire Maildir a bien \u00e9t\u00e9 cr\u00e9\u00e9.\nV\u00e9rification de la r\u00e9ception des messages:\n\n\nricadmin@aijan:~$ cd Maildir/\nericadmin@aijan:~/Maildir$ ls\ncur new tmp\nericadmin@aijan:~/Maildir$ cd new/\nericadmin@aijan:~/Maildir/new$ ls\n1526897441.V801Icc005dM227044.aijan 1526897501.V801Icc0060M464181.aijan 1526897576.V801Icc0061M979030.aijan\nericadmin@aijan:~/Maildir/new$\n\nericadmin@aijan:~/Maildir/new$ cat 1526897576.V801Icc0061M979030.aijan\nReturn-Path: <eric@aldebaran.yojik.net>\nX-Original-To: ericadmin@aijan.yojik.net\nDelivered-To: ericadmin@aijan.yojik.net\nReceived: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:6423:417b:6ef:ee21])\n by aijan.yojik.net (Postfix) with ESMTP id EC11BD00903\n for <ericadmin@aijan.yojik.net>; Mon, 21 May 2018 12:12:56 +0200 (CEST)\nReceived: by aldebaran.yojik.net (Postfix, from userid 1000)\n id 8B42920620A; Mon, 21 May 2018 12:12:56 +0200 (CEST)\nTo: <ericadmin@aijan.yojik.net>\nSubject: Re-essai\nX-Mailer: mail (GNU Mailutils 3.1.1)\nMessage-Id: <20180521101256.8B42920620A@aldebaran.yojik.net>\nDate: Mon, 21 May 2018 12:12:56 +0200 (CEST)\nFrom: eric@aldebaran.yojik.net (Eric Streit)\n\nre-essai de aldebaran\n.\nericadmin@aijan:~/Maildir/new$\n\n\n\n\nLes messages sont bien re\u00e7us. Par contre, mailx ne fonctionne plus (uniquement avec des fichiers mbox.)\nPour lire nos messages, il nous faut installer le lecteur de courriers \nmutt\n.\n\n\nroot@aijan:/etc/postfix# apt install mutt\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n libgmime-2.6-0 libgpgme11 libnotmuch4 libtalloc2 libtokyocabinet9\nPaquets sugg\u00e9r\u00e9s :\n gpgsm urlview mixmaster\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n libgmime-2.6-0 libgpgme11 libnotmuch4 libtalloc2 libtokyocabinet9 mutt\n0 mis \u00e0 jour, 6 nouvellement install\u00e9s, 0 \u00e0 enlever et 12 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 2 433 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 8 665 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main amd64 libtokyocabinet9 amd64 1.4.48-11+b1 [367 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main amd64 libgpgme11 amd64 1.8.0-3+b2 [160 kB]\nR\u00e9ception de:3 http://deb.debian.org/debian stretch/main amd64 libgmime-2.6-0 amd64 2.6.22+dfsg2-1 [232 kB]\nR\u00e9ception de:4 http://deb.debian.org/debian stretch/main amd64 libtalloc2 amd64 2.1.8-1 [36,3 kB]\n....\n\n\n\n\nOn teste; on le lance avec la commande suivante:\n\n\nericadmin@aijan:~$ mutt -f ./Maildir/\nGPGME : protocole CMS non disponible\n3 gard\u00e9(s), 0 effac\u00e9(s).\nericadmin@aijan:~$\n\n\n\n\nR\u00e9sultat: (extrait de l'\u00e9cran)\n\n\nq:Quitter d:Effacer u:R\u00e9cup s:Sauver m:Message r:R\u00e9pondre g:Groupe ?:Aide\n 1 O + mai 21 root (0,1K) Essai\n 2 O F mai 21 To root@localho (0,1K) essai d'envoi \u00e0 root\n 3 O + mai 21 Eric Streit (0,1K) Re-essai\n\nNeoMutt: ./Maildir/ [Msgs:3 Old:3 1,6K](threads/date)-\n\n\n\n\nNos \u00e9mails sont bien l\u00e0 :) Nous pourrons supprimer mutt plus tard si nous voulons gagner un peu de place.\n\n\nArchitecture\n\n\nAvant de continuer \u00e0 configurer notre serveur mail, il serait utile d'avoir une vue d'ensemble du syst\u00e8me que nous allons configurer. Pour l'instant, nous n'avons apport\u00e9 que peu de modifications aux fichiers de configuration (nous avons seulement chang\u00e9 le type de format de nos bo\u00eetes aux lettres :\n\n\nmbox -> Maildir\n\n\n\nSi nous regardons quels ports sont \u00e9cout\u00e9s; nous voyons que nous avons pour l'instant:\n\n\nle port 22 (SSH)\nle port 25 (Postfix)\nle port 80 (Apache)\nle port 443 (Apache)\nle port 53 et 953 (Bind)\n\n\n\net le port 143 (imap) de dovecot, mais dovecot n'est pas encore int\u00e9gr\u00e9 \u00e0 notre serveur mail et est \nnon-configur\u00e9\n.\n\n\nroot@aijan:/home/ericadmin# netstat -tlnp\nConnexions Internet actives (seulement serveurs)\nProto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name\ntcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 536/named\ntcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 536/named\ntcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 603/sshd\ntcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 850/master\ntcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 536/named\ntcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 676/apache2\ntcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 607/dovecot\ntcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 676/apache2\ntcp6 0 0 :::53 :::* LISTEN 536/named\ntcp6 0 0 :::22 :::* LISTEN 603/sshd\ntcp6 0 0 :::25 :::* LISTEN 850/master\ntcp6 0 0 ::1:953 :::* LISTEN 536/named\ntcp6 0 0 :::143 :::* LISTEN 607/dovecot\nroot@aijan:/home/ericadmin#\n\n\n\n\nNotez la commande \nnetstat -tlnp\n pour voir les ports ouverts ainsi que les programmes qui les g\u00e8rent.\n\n\n\n\nNous n'utiliserons pas le protocole Pop3 (ni sa variante pop3s). Le protocole Imap offre bien plus de possibilit\u00e9s. (parties rouges entour\u00e9es de noir)\n\n\nSch\u00e9ma d'ensemble\n\n\nLes parties impl\u00e9ment\u00e9es sont en rouge sur le dessin suivant:\n\n\n\n\nExplication:\n\n\nLes ports servis par Postfix\n\n\n\n\nLe port 25 est utilis\u00e9 pour la communication entre serveurs smtp; il permet une connexion \"en clair\" ou chiffr\u00e9e. Il peut \u00eatre aussi utilis\u00e9 pour l'envoi des mails \u00e0 partir d'un client. Nous l'avons d'ailleurs fait avec la commande \nmail\n et \ntelnet\n.\n\n\nLe port 587 est le port \"submission\", port utilis\u00e9 par d\u00e9faut par les \nclients mail\n pour \nenvoyer\n du courrier sur le serveur (thunderbird, etc ...) qui le dispatche ensuite, soit dans les bo\u00eetes de courrier locales, soit \u00e0 un destinataire ext\u00e9rieur.\n\n\nLe port 465 est un port qui a \u00e9t\u00e9 r\u00e9serv\u00e9 pour les communications chiffr\u00e9es (SMTP over SSL): il \u00e9tait utilis\u00e9 avant que STARTTLS ne soit utilis\u00e9; il a \u00e9t\u00e9 enlev\u00e9 des ports standards de mail.\n\n\n\n\nLe premier port (25) est un port d'entr\u00e9e-sortie r\u00e9serv\u00e9 \u00e0 la communication entre serveurs (\"mais permet aussi la submission de messages avec authentification\".) Souvenez-vous que le port 25 est bloqu\u00e9 par de nombreux FAI. La communication peut \u00eatre chiffr\u00e9e ou non, suivant les possibilit\u00e9s du serveur et du client, et donc, les mots de passe peuvent passer en clair. La communication commence en mode \"clair\" et apr\u00e8s n\u00e9gociation, passe en mode \"chiffr\u00e9e\" si celle-ci est disponible: (STARTTLS)\n\n\nLes 2 derniers ports (465 et 587) sont des ports d'entr\u00e9e de vos messages envoy\u00e9s par des clients, apr\u00e8s authentification, en mode chiffr\u00e9 ou non.\n\n\nLes ports servis par Dovecot\n\n\n\n\nLes ports 143 et 993 sont des ports r\u00e9serv\u00e9s au protocole IMAP(s).\n\n\nLes port 110 et 995 sont des ports r\u00e9serv\u00e9s au protocole POP3(s), mais nous ne l'utiliserons pas.\n\n\n\n\nCes ports sont servis par Dovecot. Il permettent de g\u00e9rer notre bo\u00eete mail, r\u00e9cup\u00e9rer, effacer nos messages, cr\u00e9er des dossiers dans lesquels nous pouvons trier nos messages.\n\n\nCe que nous allons impl\u00e9menter\n\n\nNous impl\u00e9menterons une politique particuli\u00e8re, comme celle d\u00e9crite ici:\n\nRasperryPi Email server Part 2\n\nCet auteur s\u00e9pare les communications entre serveurs (port 25) et client-serveur (ports 587 et 465). Il emp\u00eache les communications non-chifr\u00e9es entre client et serveur, et utilise le port 465 pour les communications chiffr\u00e9es (d\u00e9pr\u00e9ci\u00e9 par le standard.)\nJusqu'\u00e0 maintenant, nous n'avons utilis\u00e9 ni dovecot, ni base de donn\u00e9es; l'authentification se faisant directement sur le serveur en acc\u00e9dant \u00e0 notre compte sur le serveur (login par identifiant/mot de passe ou clef SSH).\nNous allons impl\u00e9menter l'acc\u00e8s par \nImap\n et \nImaps\n de nos courriers \u00e0 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 \nSSH\n. Nous avons d\u00e9j\u00e0 g\u00e9n\u00e9r\u00e9 auparavant nos clefs de chiffrage avec \ncertbot\n. (voir le chapitre suivant ...)\nElles sont situ\u00e9es dans \n/etc/letsencrypt/live/atom.yojik.net\n.\nDovecot est un serveur Imap et pop3. Il assure en plus l'authentification.\n\n\nConfiguration de Dovecot\n\n\n\n\n\n\nIndiquer \u00e0 Dovecot d'\u00e9couter sur toutes les interfaces, en IPV4 et IPV6. Le fichier \u00e0 configurer (apr\u00e8s copie) est \n/etc/dovecot/dovecot.conf\n; changer la ligne qui contient:\n\n\n\n\nlisten =\nen\nlisten = *, ::\n\n\n\n\n\n\n\n\nIl faut lui indiquer \no\u00f9\n sont stock\u00e9s nos mails et sous quel \nformat\n. Cela se configure dans le fichier:\n\n\n/etc/dovecot/conf.d/10-mail.conf\nVoici un extrait du contenu original:\n\n\n## Mailbox locations and namespaces\n##\nmail_location = mbox:~/mail:INBOX=/var/mail/%u\n\n\n\nLe format par d\u00e9faut est \nmbox\n situ\u00e9 dans \n/var/mail/user\n\nNous allons changer cela en:\n\n\nmail_location = maildir:~/Maildir\n\n\n\nDovecot utilisera notre bo\u00eete aux lettres situ\u00e9e dans le home de chaque user, et dans le r\u00e9pertoire Maildir.\n\n\nSouvenez-vous que nous avions configur\u00e9 Postfix afin qu'il utilise le format Maidir.\n\n\n\n\n\n\nIndiquer \u00e0 Postfix d'utiliser dovecot pour l'acc\u00e8s aux mails ainsi que pour l'authentification.\n\n\nNous allons modifier le fichier \n/etc/postfix/main.cf\n et ajouter les lignes suivantes:\n\n\nsmtpd_sasl_type = dovecot\nsmtpd_sasl_path = private/auth\nsmtpd_sasl_auth_enable = yes\n\n\n\nNous allons indiquer \u00e0 Dovecot de r\u00e9pondre aux demandes d'authentification de postfix:\nApr\u00e8s 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\u00e9canisme d'authentification de docvecot. Pour cela nous allons remplacer la partie intitul\u00e9e \nservice auth\n par ce qui suit:\n\n\nservice auth {\n unix_listener /var/spool/postfix/private/auth {\n mode = 0660\n user = postfix\n group = postfix\n }\n\n\n\n\n\n\n\nAutorisons maintenant le \nplain login\n; nous allons modifier le fichier \n/etc/dovecot/conf.d/10-auth.conf\n en ajoutant ou modifiant les lignes suivantes:\n\n\ndisable_plaintext_auth = no\nauth_mechanisms = plain login\n\n\n\nOn relance postfix et dovecot pour prendre en compte les modifications.\n\n\nroot@atom:/etc/postfix# systemctl restart postfix\nroot@atom:/etc/postfix# systemctl restart dovecot\n\n\n\nOn v\u00e9rifie que tout s'est bien pass\u00e9 avec la commande:\n\n\nroot@atom:/etc/postfix# tail -f /var/log/daemon.log\nNov 26 12:47:22 atom systemd[1]: Stopped Postfix Mail Transport Agent (instance -).\nNov 26 12:47:22 atom systemd[1]: Starting Postfix Mail Transport Agent (instance -)...\nNov 26 12:47:23 atom systemd[1]: Started Postfix Mail Transport Agent (instance -).\nNov 26 12:47:23 atom systemd[1]: Starting Postfix Mail Transport Agent...\nNov 26 12:47:23 atom systemd[1]: Started Postfix Mail Transport Agent.\nNov 26 12:47:28 atom systemd[1]: Stopping Dovecot IMAP/POP3 email server...\nNov 26 12:47:29 atom systemd[1]: Stopped Dovecot IMAP/POP3 email server.\nNov 26 12:47:29 atom systemd[1]: Starting Dovecot IMAP/POP3 email server...\nNov 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\nNov 26 12:47:29 atom systemd[1]: Started Dovecot IMAP/POP3 email server.\n\n\n\nOn quitte avec Ctrl C.\n\n\nC'est bon.\n\n\n\n\n\n\nTest 1\n\n\nNous allons nous connecter avec telnet; voici la capture de la session:\n\n\nTout d'abord, cr\u00e9ation 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 \u00e0 cet utilisateur (voir au-dessus pour comment faire avec la commande mail.)\n\n\nTestons si le message est bien arriv\u00e9:\n\n\n\n\n\n\nroot@atom:/etc/postfix# adduser testmail\nAjout de l'utilisateur \u00ab testmail25 \u00bb ...\nAjout du nouveau groupe \u00ab testmail25 \u00bb (1001) ...\nAjout du nouvel utilisateur \u00ab testmail25 \u00bb (1001) avec le groupe \u00ab testmail25 \u00bb ...\nCr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/testmail25 \u00bb...\nCopie des fichiers depuis \u00ab /etc/skel \u00bb...\n Entrez le nouveau mot de passe UNIX :\n Retapez le nouveau mot de passe UNIX :\n passwd: password updated successfully\n Changing the user information for testmail\n Enter the new value, or press ENTER for the default\n Full Name []:\n Room Number []:\n Work Phone []:\n Home Phone []:\n Other []:\nCette information est-elle correcte ? [O/n]o\nroot@atom:/etc/postfix# mail testmail\nCc:\nSubject: Essai 7\nEssai 7\n.\nroot@atom:/etc/postfix# su - testmail\ntestmail25@atom:~$ mutt -f ./Maildir/\nGPGME : protocole CMS non disponible\n1 gard\u00e9(s), 0 effac\u00e9(s).\n\n\n\n\nLe message est bien arriv\u00e9. Essayons avec les commandes Imap; il nous faut installer telnet avant:\n\n\n apt install telnet\n\n\n\nNous pouvons donc nous connecter aux ports suivants: 143 et 993.\n\n\nroot@aijan:/home/ericadmin# telnet localhost 143\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\n* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.\nx1 LOGIN testmail testmail\nx1 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\nx2 SELECT Inbox\n* FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft)\n* OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft \\*)] Flags permitted.\n* 1 EXISTS\n* 1 RECENT\n* OK [UNSEEN 1] First unseen.\n* OK [UIDVALIDITY 1527165527] UIDs valid\n* OK [UIDNEXT 2] Predicted next UID\nx2 OK [READ-WRITE] Select completed (0.000 + 0.000 secs).\nx4 LOGOUT\n* BYE Logging out\nx4 OK Logout completed (0.000 + 0.000 secs).\nConnection closed by foreign host.\nroot@aijan:/home/ericadmin#\n\n\n\n\n\u00c7a marche: \nOK [UNSEEN 1] First unseen.\n\n\nNous nous sommes connect\u00e9s avec le mot de passe en clait (testmail pour l'utilisateur testmail.)\n\n\n\n\n\n\nTest 2: envoi de mail\n\n\nConnexion sur le port 25 (postfix) en utilisant l'authentification g\u00e9r\u00e9e par dovecot.\n Nous avons chiffr\u00e9 le mot de passe avec la commande suivante:\n\n\n printf '\\0%s\\0%s' 'testmail' 'testmail' | openssl base64\n AHRlc3RtYWlsAHRlc3RtYWls\n\n\n\n\n\n\n\nroot@aijan:/home/ericadmin# telnet localhost 25\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\n220 aijan.yojik.net ESMTP Postfix (Debian/GNU)\nehlo localhost\n250-aijan.yojik.net\n250-PIPELINING\n250-SIZE 10240000\n250-VRFY\n250-ETRN\n250-STARTTLS\n250-AUTH PLAIN LOGIN\n250-ENHANCEDSTATUSCODES\n250-8BITMIME\n250-DSN\n250 SMTPUTF8\nAUTH PLAIN AHRlc3RtYWlsAHRlc3RtYWls\n235 2.7.0 Authentication successful\nmail from: testmail\n250 2.1.0 Ok\ndata\n554 5.5.1 Error: no valid recipients\nrcpt to: ericounet26200@gmail.com\n250 2.1.5 Ok\ndata\n354 End data with <CR><LF>.<CR><LF>\nSubject: mon, premier mail avec sasl\nmon premier mail avec sasl\n.\n250 2.0.0 Ok: queued as A664BD004A1\nquit\n221 2.0.0 Bye\nConnection closed by foreign host.\nroot@aijan:/home/ericadmin#\n\n\n\n\nV\u00e9rification de la bonne r\u00e9ception du message: le message est bien re\u00e7u.\n\n\nConfiguration des certificats\n\n\nJusqu'\u00e0 pr\u00e9sent, nous avons utilis\u00e9 les certificats fournis par Debian \u00e0 l'installation.\nNous allons utiliser les certificats que nous avons cr\u00e9\u00e9s auparavant avec letsencrypt.\nIl y a 2 lignes \u00e0 modifier dans /etc/postfix/main.cf:\n\n\n\n\nsmtpd_tls_cert_file = /etc/letsencrypt/live/toto.yojik.net/fullchain.pem\nsmtpd_tls_key_file = /etc/letsencrypt/live/toto.yojik.net/privkey.pem\n\n\n\n\nBien entendu, modifiez la partie \ntoto.yojik.net\n par le nom de votre serveur mail et pour lequel vous avez g\u00e9n\u00e9r\u00e9 les certificats.\nIl y a 3 lignes \u00e0 ajouter/modifier dans /etc/dovecot/conf.d/10-ssl.conf\n\n\n\n\nssl = required\nssl_cert = </etc/letsencrypt/live/toto.yojik.net/fullchain.pem\nssl_key = </etc/letsencrypt/live/toto.yojik.net/privkey.pem\n\n\n\n\nComme avant, personnalisez avec votre nom de serveur mail.\nRelancez vos serveurs avec les commandes suivantes:\n\n\nroot@aijan:/home/ericadmin# systemctl restart postfix\nroot@aijan:/home/ericadmin# systemctl restart dovecot\n\n\n\n\nBien v\u00e9rifier dans les logs (/var/log/daemon.log) que tout s'est bien pass\u00e9 (pas d'erreur de frappe par exemple ...)\n\n\nTest\n\n\nNous allons refaire les tests d\u00e9j\u00e0 r\u00e9alis\u00e9s pr\u00e9c\u00e9demment pour v\u00e9rifier que \"rien n'est cass\u00e9\" suite \u00e0 la modification de nos certificats.\n\n\nroot@aijan:/home/ericadmin# telnet localhost 25\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\n220 aijan.yojik.net ESMTP Postfix (Debian/GNU)\nehlo aijan.yojik.net\n250-aijan.yojik.net\n250-PIPELINING\n250-SIZE 10240000\n250-VRFY\n250-ETRN\n250-STARTTLS\n250-AUTH PLAIN LOGIN\n250-ENHANCEDSTATUSCODES\n250-8BITMIME\n250-DSN\n250 SMTPUTF8\nAUTH PLAIN AHRlc3RtYWlsAHRlc3RtYWls\n235 2.7.0 Authentication successful\nmail from: testmail\n250 2.1.0 Ok\nrcpt to: ericounet26200@gmail.com\n250 2.1.5 Ok\ndata\n354 End data with <CR><LF>.<CR><LF>\nsubject: essai\nun essai\n.\n250 2.0.0 Ok: queued as 9EEF6D0002E\nquit\n502 5.5.2 Error: command not recognized\nquit\n221 2.0.0 Bye\nConnection closed by foreign host.\nroot@aijan:/home/ericadmin#\n\n\n\n\n\n\u00c7a fonctionne. L'authentification avec les nouveaux certificats est assur\u00e9e.\n\n\nTest de la connexion sur le port 993 \u00e0 partir d'un ordinateur ext\u00e9rieur\n\n\neric@aldebaran:~$ openssl s_client -connect yojik.net:993\nCONNECTED(00000003)\ndepth=2 O = Digital Signature Trust Co., CN = DST Root CA X3\nverify return:1\ndepth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3\nverify return:1\ndepth=0 CN = atom.yojik.net\nverify return:1\n---\nCertificate chain\n 0 s:/CN=atom.yojik.net\n i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3\n 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3\n i:/O=Digital Signature Trust Co./CN=DST Root CA X3\n---\nServer certificate\n-----BEGIN CERTIFICATE-----\nMIIFVTCCBD2gAwIBAgISA2ymxMSWOd9z4d5MhK1RarzkMA0GCSqGSIb3DQEBCwUA\nMEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD\nExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODExMTExNTI2NDhaFw0x\nOTAyMDkxNTI2NDhaMBkxFzAVBgNVBAMTDmF0b20ueW9qaWsubmV0MIIBIjANBgkq\nhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr+SwsS/VwilSnazx4Y9Xj9OIzYPx2s5W\nkxocZT7BMdO0oKNKolbe6AJMGrNKf5TjQu9EN+yal6rNZUOrrR7dS2gKvRjyH2mW\n5JniCW/osYVkHglgjvNbihQP4IBY9brvvtIW9reKyA9adq5zHHRW2RNaBG18oXFa\nmQb+uFGiCkpyjGK7XYmPkVA7DM6TtciFBGeTmY15vF4aniPQtu1TuksEc+WDvWfR\nK9ebYXghqBJd1OigtgVhOpDiSAnxjtx9wcjHuic/9wU8iI2VdkOB0xoMxlRNjQSZ\nDWgRCiZr/LwtoX6bSWzJex1kW7Q/zQnvA1eaKqD6mCIp5uO7KiK5AQIDAQABo4IC\nZDCCAmAwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF\nBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQyxrlKdL9RV+v8Y7YwH4mV0iq4\nEDAfBgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBvBggrBgEFBQcBAQRj\nMGEwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwLmludC14My5sZXRzZW5jcnlwdC5v\ncmcwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5v\ncmcvMBkGA1UdEQQSMBCCDmF0b20ueW9qaWsubmV0MEwGA1UdIARFMEMwCAYGZ4EM\nAQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0\nc2VuY3J5cHQub3JnMIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcA4mlLribo6UAJ\n6IYbtjuD1D7n/nSI+6SPKJMBnd3x2/4AAAFnA5jZtQAABAMASDBGAiEAshqJHr2M\nl6n+9Dd31jkskn3lxh5iC7FTfPZoKxZGT6ECIQDDby9vNMmzh8eYysYr5UuTE4R9\nVOko3rzQZgj51O/nEQB2AGPy283oO8wszwtyhCdXazOkjWF3j711pjixx2hUS9iN\nAAABZwOY2bgAAAQDAEcwRQIhAPTO+Wry4Fl2+HddFMsWpfYJQ7dkXtW93N1+z77y\nofgMAiB76ad1N7+AVOh4YvrRboK31F5cs3YJnKmKxINWkrI70TANBgkqhkiG9w0B\nAQsFAAOCAQEAJ1BYUTWpCIIYD0FKB9vuCEfYrg1NNHhYYr0jUKR49EPLO8DS1aRp\nKK1tr9EZti2lOYaEOKNo4dQkLLKgsF1kovHreosvXPF2oXRbN6UdVu+67fhIokD5\nFIS9pphaxIHEC4A9h7JK0LHJHMG9ySRDBbtz9Y0b7z5jGIxX0yzaqBcPJVG26SJm\nuyiys2bklC+N3mYAVYb/c3VWdCWzusHks+HCTx2y+YkqVkvCepdQYFoUKpk6ScSc\nFz6r0DWBXGmhJLg0K+KxfXGUtTtwDjnBZCocX3FrQsQNrbYtvLyK2QhDv1Mr6V96\nP11a4LV3qq2eTfoIiNd9m2iqCJ7/pSWIjw==\n-----END CERTIFICATE-----\nsubject=/CN=atom.yojik.net\nissuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3\n---\nNo client certificate CA names sent\nPeer signing digest: SHA512\nServer Temp Key: ECDH, P-384, 384 bits\n---\nSSL handshake has read 3236 bytes and written 334 bytes\nVerification: OK\n---\nNew, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384\nServer public key is 2048 bit\nSecure Renegotiation IS supported\nCompression: NONE\nExpansion: NONE\nNo ALPN negotiated\nSSL-Session:\n Protocol : TLSv1.2\n Cipher : ECDHE-RSA-AES256-GCM-SHA384\n Session-ID: D488F9943CD771D5DF400C676729BDF315F5CBD01128E922D7DBCC0D80B467F3\n Session-ID-ctx:\n Master-Key: 45BF00E99AA29FB83E1395741E3A506800473105882554C46B50639665B600000E1F3048F051EF5E12D6C0804A0698D8\n PSK identity: None\n PSK identity hint: None\n SRP username: None\n TLS session ticket lifetime hint: 7200 (seconds)\n TLS session ticket:\n 0000 - 59 1e 77 bc e8 c1 0e f8-c9 f2 38 f8 f9 f0 e9 4f Y.w.......8....O\n 0010 - 4b 91 2a 39 73 cc a6 85-f2 22 96 ae 4a a3 84 b8 K.*9s....\"..J...\n 0020 - e8 de 9b 34 74 1a d9 e7-88 f5 d1 bb 4c 2d 59 f2 ...4t.......L-Y.\n 0030 - 0e 99 1e bd b7 82 ef 32-ab 0c 1a 33 c0 dd 31 6a .......2...3..1j\n 0040 - 5b 38 fc c5 27 29 d7 a3-ae f0 a5 bb 66 a0 b4 eb [8..')......f...\n 0050 - 7c 95 f2 16 cb 92 5c f3-7f c0 30 33 ec 77 f0 a8 |.....\\...03.w..\n 0060 - 8f 5e 9c f7 de c9 4f 95-1a 0e 09 27 7a 45 b0 db .^....O....'zE..\n 0070 - 84 ba 72 37 f1 a2 f5 95-43 0c e2 eb a3 18 94 a8 ..r7....C.......\n 0080 - b3 d4 d7 15 4c 81 08 a2-17 3f 7b 15 fe 81 d8 5c ....L....?{....\\\n 0090 - 74 60 ac 5e 2a 5a 22 07-6f ba 03 4f d5 46 5a 04 t`.^*Z\".o..O.FZ.\n\n Start Time: 1543235404\n Timeout : 7200 (sec)\n Verify return code: 0 (ok)\n Extended master secret: yes\n---\n* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.\n1 Login testmail testmail\n1 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\nQUIT\nDONE\neric@aldebaran:~$\n\n\n\n\nLe \nOK [CAPABILITY ...\n indique que la connexion s'est faite normalement; les caract\u00e9ristiques du certificat sont affich\u00e9es au-dessus. Le \nLogged: in\n indique que l'authentification a march\u00e9.\n\n\nNous avons donc test\u00e9 les ports 25, 143 et 993 avec succ\u00e8s.\n\n\nConfiguration d'un port qui n'accepte que les communications chiffr\u00e9es.\n\n\nPour l'instant, postfix n'\u00e9coute que le port 25 (vous pouvez le v\u00e9rifier avec la commande \nnetstat -tlpn\n.\nDans le fichier /etc/postfix/master.cf, seul la ligne suivante est active (d\u00e9comment\u00e9e):\n\n\nsmtp inet n - y - - smtpd\n\n\n\nNous allons mettre postfix en \u00e9coute du port 465:\nDans le fichier /etc/postfix/master.cf, la ligne \u00e0 d\u00e9commenter est la suivante:\n\n\n# smtps inet n - - - - smtpd\n\n\n\n\npour obtenir:\n\n\nsmtps inet n - - - - smtpd\n\n\n\n\nTest\n\n\nOn relance postfix et on regarde les ports servis:\n\n\nroot@aijan:/home/ericadmin# service postfix restart\nroot@aijan:/home/ericadmin# netstat -tlpn\nConnexions Internet actives (seulement serveurs)\nProto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name\ntcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 552/named\ntcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 552/named\ntcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 580/sshd\ntcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2159/master\ntcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 552/named\ntcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 649/apache2\ntcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 1792/dovecot\ntcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 649/apache2\ntcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 2159/master\ntcp6 0 0 :::53 :::* LISTEN 552/named\ntcp6 0 0 :::22 :::* LISTEN 580/sshd\ntcp6 0 0 :::25 :::* LISTEN 2159/master\ntcp6 0 0 ::1:953 :::* LISTEN 552/named\ntcp6 0 0 :::143 :::* LISTEN 1792/dovecot\ntcp6 0 0 :::465 :::* LISTEN 2159/master\nroot@aijan:/home/ericadmin#\n\n\n\n\n\nLe port 465 est ouvert et servi par postfix.\n\n\ntest de connexion sur le port 465\n\n\nroot@aijan:/home/ericadmin# telnet localhost 465\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\n220 aijan.yojik.net ESMTP Postfix (Debian/GNU)\nehlo aijan.yojik.net\n250-aijan.yojik.net\n250-PIPELINING\n250-SIZE 10240000\n250-VRFY\n250-ETRN\n250-STARTTLS\n250-AUTH PLAIN LOGIN\n250-ENHANCEDSTATUSCODES\n250-8BITMIME\n250-DSN\n250 SMTPUTF8\nquit\n221 2.0.0 Bye\nConnection closed by foreign host.\nroot@aijan:/home/ericadmin#\n\n\n\n\nLa connexion se fait normalement.\nNous allons maintenant bloquer les communications non-chiffr\u00e9es; les param\u00e8tres \u00e0 modifier sont dans /etc/postfix/master.conf (2 premiers param\u00e8tres de la ligne smtps \u00e0 d\u00e9commenter.)\n\n\nsmtps inet n - - - - smtpd\n -o syslog_name=postfix/smtps\n -o smtpd_tls_wrappermode=yes\n\n\n\n\nTest\n\n\n\n\nEssai avec communication non-chifr\u00e9e:\n\n\n\n\nroot@aijan:/home/ericadmin# telnet localhost 465\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\nConnection closed by foreign host.\nroot@aijan:/home/ericadmin#\n\n\n\n\nLa communication est \nrefus\u00e9e\n.\n\n\n\n\nEssai avec communication chiffr\u00e9e (nous utilisons \nopenssl\n pour cela):\n\n\n\n\nroot@adara:/etc# openssl s_client -connect localhost:465 -quiet\ndepth=2 O = Digital Signature Trust Co., CN = DST Root CA X3\nverify return:1\ndepth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3\nverify return:1\ndepth=0 CN = adara.yojik.eu\nverify return:1\n220 adara.yojik.eu ESMTP Postfix (Debian/GNU)\nehlo me\n250-adara.yojik.eu\n250-PIPELINING\n250-SIZE 10240000\n250-VRFY\n250-ETRN\n250-AUTH PLAIN LOGIN\n250-ENHANCEDSTATUSCODES\n250-8BITMIME\n250-DSN\n250 SMTPUTF8\nquit\n221 2.0.0 Bye\nroot@adara:/etc#\n\n\n\n\nLa communication est \naccept\u00e9e\n et fonctionne. Nous voyons aussi que notre certificat Letsencrypt a \u00e9t\u00e9 v\u00e9rifi\u00e9.\n\n\nIl reste une modification \u00e0 faire pour n'autoriser que les communications chiffr\u00e9es:\nDans /etc/postfix/main.cf ajouter ou modifier la ligne suivante:\n\n\nsmtpd_tls_auth_only = yes\n\n\n\nEt rechargez Postfix.\n\n\nTest\n\n\nroot@aijan:/home/ericadmin# telnet localhost 25\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\n220 aijan.yojik.net ESMTP Postfix (Debian/GNU)\nehlo aijan.yojik.net\n250-aijan.yojik.net\n250-PIPELINING\n250-SIZE 10240000\n250-VRFY\n250-ETRN\n250-STARTTLS\n250-ENHANCEDSTATUSCODES\n250-8BITMIME\n250-DSN\n250 SMTPUTF8\nquit\n221 2.0.0 Bye\nConnection closed by foreign host.\nroot@aijan:/home/ericadmin#\n\n\n\n\nOn voit que la ligne \"250-AUTH PLAIN LOGIN\" est absente, ce qui confirme que Postfix a bien pris en compte notre derni\u00e8re modification.\n\n\nInterdiction de communications non-chiffr\u00e9es sur le port 465\n\n\nNous allons rajouter/modifier une \"restriction\" \u00e0 la ligne g\u00e9rant le port 465 dans /etc/postfix/master.cf\n\n\nsmtps inet n - - - - smtpd\n -o syslog_name=postfix/smtps\n -o smtpd_tls_wrappermode=yes\n -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject\n\n\n\n\nLa derni\u00e8re ligne est rajout\u00e9e, d\u00e9-comment\u00e9e, modifi\u00e9e (suivant le cas). On recharge postfix et on teste.\n\n\nTest\n\n\nroot@aijan:/etc/postfix# telnet localhost 465\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\nquit\nConnection closed by foreign host.\nroot@aijan:/etc/postfix#\n\n\n\n\n\u00c7a fonctionne.\n\n\nAjout de la gestion du port 587\n\n\nDans le fichier /etc/postfix/master.cf, d\u00e9-commentez les lignes suivantes et modifiez les comme indiqu\u00e9. Ce sont les m\u00eames modifications que celles effectu\u00e9es pour le port 465.\n\n\nsubmission inet n - y - - smtpd\n -o syslog_name=postfix/submission\n -o smtpd_tls_security_level=encrypt\n -o smtpd_sasl_auth_enable=yes\n\nAinsi que\n\n -o smtpd_recipient_restrictions=\n\n\n\n\nTest\n\n\nroot@aijan:/etc/bind# netstat -tlnp\nConnexions Internet actives (seulement serveurs)\nProto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name\ntcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 3410/named\ntcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3410/named\ntcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 580/sshd\ntcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 4080/master\ntcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 3410/named\ntcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 649/apache2\ntcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 2668/dovecot\ntcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 4080/master\ntcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 2668/dovecot\ntcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 649/apache2\ntcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 4080/master\ntcp6 0 0 :::53 :::* LISTEN 3410/named\ntcp6 0 0 :::22 :::* LISTEN 580/sshd\ntcp6 0 0 :::25 :::* LISTEN 4080/master\ntcp6 0 0 ::1:953 :::* LISTEN 3410/named\ntcp6 0 0 :::993 :::* LISTEN 2668/dovecot\ntcp6 0 0 :::587 :::* LISTEN 4080/master\ntcp6 0 0 :::143 :::* LISTEN 2668/dovecot\ntcp6 0 0 :::465 :::* LISTEN 4080/master\nroot@aijan:/etc/bind#\n\n\n\n\nLe port 587 est g\u00e9r\u00e9.\n\n\nAjout de la gesion du port 993 (imap avec SSL/TLS)\n\n\nNous allons modifier la configuration de dovecot pour la prise en charge de ce port.\n\n\nIl n'est pas encore \"servi\" comme nous l'avons vu avec la commande \nnetstat -tlpn\n (vu auparavant.)\n\n\nLe fichier \u00e0 modifier est: /etc/dovecot/conf.d/10-master.conf\nLa partie du fichier \u00e0 modifier est la suivante:\n\n\nservice imap-login {\n inet_listener imap {\n #port = 143\n }\n inet_listener imaps {\n #port = 993\n #ssl = yes\n }\n\n\n\n\npour donner ceci:\n\n\nservice imap-login {\n inet_listener imap {\n port = 143\n }\n inet_listener imaps {\n port = 993\n ssl = yes\n }\n\n\n\n\nDans le fichier /etc/dovecot/conf.d/10-ssl.conf:\n\n\n ssl = yes\n ssl_protocols = !SSLv3\n\n\n\n\nTest\n\n\nroot@aijan:/etc/dovecot# netstat -tlpn\nConnexions Internet actives (seulement serveurs)\nProto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name\ntcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 552/named\ntcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 552/named\ntcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 580/sshd\ntcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2376/master\ntcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 552/named\ntcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 649/apache2\ntcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 2668/dovecot\ntcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 2668/dovecot\ntcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 649/apache2\ntcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 2376/master\ntcp6 0 0 :::53 :::* LISTEN 552/named\ntcp6 0 0 :::22 :::* LISTEN 580/sshd\ntcp6 0 0 :::25 :::* LISTEN 2376/master\ntcp6 0 0 ::1:953 :::* LISTEN 552/named\ntcp6 0 0 :::993 :::* LISTEN 2668/dovecot\ntcp6 0 0 :::143 :::* LISTEN 2668/dovecot\ntcp6 0 0 :::465 :::* LISTEN 2376/master\nroot@aijan:/etc/dovecot#\n\n\n\n\nLe port 993 est actif.\n\n\nMise en route\n\n\nPour 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 \ntestmail\n ...\n\n\nuserdel testmail\n\n\n\nPensez \u00e0 supprimer le r\u00e9pertoire home de cet utlisateur:\n\n\nrm -Rf /home/testmail\n\n\n\nCeci fait, ouvrons nos ports. Voici les lignes \u00e0 ajouter \u00e0 notre programme firewall.sh. Il suffira de le lancer et de sauver la configuration (comme d\u00e9j\u00e0 vu pr\u00e9c\u00e9demment)\n\n\n #mail!!\n\n # Mail SMTP:25\n $IPT -t filter -A INPUT -p tcp --dport 25 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT\n\n $IP6T -t filter -A INPUT -p tcp --dport 25 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT\n\n # Mail SMTP:587\n $IPT -t filter -A INPUT -p tcp --dport 587 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT\n\n $IP6T -t filter -A INPUT -p tcp --dport 597 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT\n\n # Mail IMAP:143\n $IPT -t filter -A INPUT -p tcp --dport 143 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT\n\n $IP6T -t filter -A INPUT -p tcp --dport 143 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT\n\n # Mail IMAPS:993\n $IPT -t filter -A INPUT -p tcp --dport 993 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT\n\n $IP6T -t filter -A INPUT -p tcp --dport 993 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT\n\n # Mail 465\n $IPT -t filter -A INPUT -p tcp --dport 465 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT\n\n $IP6T -t filter -A INPUT -p tcp --dport 465 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT\n\n\n\n\nTest\n\n\nroot@aijan:/home/ericadmin/bin# ./firewall.sh restart\nfirewall stopped [OK]\nfirewall started [OK]\nroot@aijan:/home/ericadmin/bin# iptables -L\nChain INPUT (policy DROP)\ntarget prot opt source destination\nACCEPT all -- anywhere anywhere\nACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED\nACCEPT tcp -- anywhere anywhere tcp dpt:domain\nACCEPT udp -- anywhere anywhere udp dpt:domain\nACCEPT tcp -- 192.168.111.150 anywhere\nACCEPT tcp -- anywhere anywhere tcp dpt:ssh\nACCEPT tcp -- anywhere anywhere tcp dpt:http\nACCEPT tcp -- anywhere anywhere tcp dpt:https\nACCEPT tcp -- anywhere anywhere tcp dpt:smtp\nACCEPT tcp -- anywhere anywhere tcp dpt:submission\nACCEPT tcp -- anywhere anywhere tcp dpt:imap2\nACCEPT tcp -- anywhere anywhere tcp dpt:imaps\nACCEPT tcp -- anywhere anywhere tcp dpt:urd\n\nChain FORWARD (policy DROP)\ntarget prot opt source destination\n\nChain OUTPUT (policy ACCEPT)\ntarget prot opt source destination\nACCEPT all -- anywhere anywhere\nACCEPT tcp -- anywhere anywhere tcp dpt:ssh\nACCEPT udp -- anywhere anywhere udp dpt:ntp\nACCEPT tcp -- anywhere anywhere tcp dpt:http\nACCEPT tcp -- anywhere anywhere tcp dpt:https\nACCEPT tcp -- anywhere anywhere tcp dpt:smtp\nACCEPT tcp -- anywhere anywhere tcp dpt:submission\nACCEPT tcp -- anywhere anywhere tcp dpt:imap2\nACCEPT tcp -- anywhere anywhere tcp dpt:imaps\nACCEPT tcp -- anywhere anywhere tcp dpt:urd\nroot@aijan:/home/ericadmin/bin#\n\n\n\n\nLes ports sont bien ouverts.\nEt on sauvegarde:\n\n\nservice netfilter-persistent save\n\n\n\nroot@aijan:/home/ericadmin/bin# service netfilter-persistent save\n[....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save\nrun-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save\ndone.\nroot@aijan:/home/ericadmin/bin#\n\n\n\n\nLes r\u00e8gles IPV4 et IPV6 sont sauvegard\u00e9es.\n\n\nMise en place du fichier \"auto-configuration\" Mozilla\n\n\nA voir ....\n\n\nTest en situation ...\n\n\nLecture des messages\n\n\nA partir de ma machine de bureau, test de connexion en IMAP, liste des messages, et lecture du contenu (port 993):\n\n\neric@aldebaran:~$ openssl s_client -connect atom.yojik.net:993 -quiet\ndepth=2 O = Digital Signature Trust Co., CN = DST Root CA X3\nverify return:1\ndepth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3\nverify return:1\ndepth=0 CN = aijan.yojik.net\nverify return:1\n* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.\na login ericadmin eBnIDQ+FZZI=\na 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\nb select inbox\n* FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk)\n* OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk \\*)] Flags permitted.\n* 3 EXISTS\n* 0 RECENT\n* OK [UIDVALIDITY 1527410684] UIDs valid\n* OK [UIDNEXT 4] Predicted next UID\nb OK [READ-WRITE] Select completed (0.000 + 0.000 secs).\nc FETCH 1:* FLAGS\n* 1 FETCH (FLAGS (\\Seen NonJunk))\n* 2 FETCH (FLAGS (\\Seen NonJunk))\n* 3 FETCH (FLAGS (\\Seen))\nc OK Fetch completed (0.001 + 0.000 secs).\nd Fetch BODY[TEXT]\nd BAD Error in IMAP command FETCH: Invalid arguments (0.000 + 0.000 secs).\nd fetch body\nd BAD Error in IMAP command FETCH: Invalid arguments (0.000 + 0.000 secs).\nd FETCH 1 body\n* 1 FETCH (BODY (\"text\" \"plain\" (\"charset\" \"us-ascii\") NIL NIL \"7bit\" 10 2))\nd OK Fetch completed (0.002 + 0.000 + 0.001 secs).\ne fetch 2 body\n* 2 FETCH (BODY (\"text\" \"plain\" (\"charset\" \"us-ascii\") NIL NIL \"7bit\" 3 1))\ne OK Fetch completed (0.001 + 0.000 secs).\nf fetch 2 body[]\n* 2 FETCH (BODY[] {466}\nReturn-Path: <ericadmin@aijan.yojik.net>\nX-Original-To: root@localhost\nDelivered-To: root@localhost\nReceived: by aijan.yojik.net (Postfix, from userid 1000)\n id 6D42CD00904; Mon, 21 May 2018 12:11:41 +0200 (CEST)\nTo: <root@localhost>\nSubject: essai d'envoi \u00e0 root\nX-Mailer: mail (GNU Mailutils 3.1.1)\nMessage-Id: <20180521101141.6D42CD00904@aijan.yojik.net>\nDate: Mon, 21 May 2018 12:11:41 +0200 (CEST)\nFrom: ericadmin@aijan.yojik.net (Eric Streit)\n\n.\n)\nf OK Fetch completed (0.001 + 0.000 secs).\ng fetch 3 body[]\n* 3 FETCH (BODY[] {735}\nReturn-Path: <eric@aldebaran.yojik.net>\nX-Original-To: ericadmin@aijan.yojik.net\nDelivered-To: ericadmin@aijan.yojik.net\nReceived: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:6423:417b:6ef:ee21])\n by aijan.yojik.net (Postfix) with ESMTP id EC11BD00903\n for <ericadmin@aijan.yojik.net>; Mon, 21 May 2018 12:12:56 +0200 (CEST)\nReceived: by aldebaran.yojik.net (Postfix, from userid 1000)\n id 8B42920620A; Mon, 21 May 2018 12:12:56 +0200 (CEST)\nTo: <ericadmin@aijan.yojik.net>\nSubject: Re-essai\nX-Mailer: mail (GNU Mailutils 3.1.1)\nMessage-Id: <20180521101256.8B42920620A@aldebaran.yojik.net>\nDate: Mon, 21 May 2018 12:12:56 +0200 (CEST)\nFrom: eric@aldebaran.yojik.net (Eric Streit)\n\nre-essai de aldebaran\n.\n)\ng OK Fetch completed (0.001 + 0.000 secs).\nh logout\n* BYE Logging out\nh OK Logout completed (0.000 + 0.000 secs).\neric@aldebaran:~$\n\n\n\n\nA partir de ma machine de bureau, test de connexion en IMAP, liste des messages, et lecture du contenu (port 143):\n\n\neric@aldebaran:~$ telnet aijan.yojik.net 143\nTrying 192.168.111.240...\nConnected to aijan.yojik.net.\nEscape character is '^]'.\n* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready.\nehlo aldebaran.yojik.eu\nehlo BAD Error in IMAP command received by server.\na login ericadmin eBnIDQ+FZZI=\na 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\nb select inbox\n* FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk)\n* OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk \\*)] Flags permitted.\n* 3 EXISTS\n* 0 RECENT\n* OK [UIDVALIDITY 1527410684] UIDs valid\n* OK [UIDNEXT 4] Predicted next UID\nb OK [READ-WRITE] Select completed (0.000 + 0.000 secs).\nc logout\n* BYE Logging out\nc OK Logout completed (0.000 + 0.000 secs).\nConnection closed by foreign host.\neric@aldebaran:~$\n\n\n\n\nLa r\u00e9cup\u00e9ration des messages s'est bien pass\u00e9e.\n\n\nEnvoi de messages\n\n\nImage de la configuration \u00e0 faire sur \nthunderbird\n:\n\n\nL'envoi de messages \u00e0 partir de Thunderbird fonctionne. Il faut bien configurer le port smtp \u00e0 465 ...\n\n\nImage de la configuration \u00e0 faire.\n\n\nL'envoi sur mon serveur personnel a \u00e9chou\u00e9: l'adresse IPV4 fournie par FREE \u00e9tait sur une liste de blocage (anti-spams). J'ai demand\u00e9 \u00e0 \u00eatre enlev\u00e9 de cette liste, ce qui va prendre 48H environ.\n\n\nR\u00e9-essai ensuite ...\n\n\n\n\nEnvoi d'un message sur le compte du serveur \u00e0 partir de la machine de bureau (thunderbird): OK.\n\n\nR\u00e9ception des messages sur la machine de bureau (thunderbird): OK.\n\n\nEnvoi d'un message \u00e0 partir du compte du serveur (thunderbird): \u00e7a OK.\n\n\n\n\nInstallation d'un analyseur des logs mail\n\n\nInstallation\n\n\napt-get install pflogsumm\n\n\n\n\nUtilisation\n\n\npflogsumm -d today /var/log/mail.log\n\n\n\n\nVous obtiendrez une analyse approfondie des logs de la partie mail.\n\n\nroot@adara:/home/ericadmin# pflogsumm -d today /var/log/mail.log\nPostfix log summaries for Jul 1\n\nGrand Totals\n\nmessages\n\n 24 received\n 23 delivered\n 0 forwarded\n 0 deferred\n 0 bounced\n 29 rejected (55%)\n 0 reject warnings\n 0 held\n 0 discarded (0%)\n\n 2248k bytes received\n 2248k bytes delivered\n 17 senders\n 13 sending hosts/domains\n 3 recipients\n 2 recipient hosts/domains\n\n\nPer-Hour Traffic Summary\n\n time received delivered deferred bounced rejected\n --\n 0000-0100 0 0 0 0 0\n 0100-0200 0 0 0 0 0\n 0200-0300 0 0 0 0 0\n 0300-0400 0 0 0 0 3\n 0400-0500 0 0 0 0 7\n 0500-0600 0 0 0 0 1\n 0600-0700 1 1 0 0 1\n 0700-0800 2 2 0 0 1\n 0800-0900 4 4 0 0 7\n 0900-1000 4 4 0 0 2\n 1000-1100 10 9 0 0 2\n 1100-1200 2 2 0 0 1\n 1200-1300 0 0 0 0 2\n 1300-1400 0 0 0 0 0\n 1400-1500 0 0 0 0 0\n 1500-1600 1 1 0 0 2\n 1600-1700 0 0 0 0 0\n 1700-1800 0 0 0 0 0\n 1800-1900 0 0 0 0 0\n 1900-2000 0 0 0 0 0\n 2000-2100 0 0 0 0 0\n 2100-2200 0 0 0 0 0\n 2200-2300 0 0 0 0 0\n 2300-2400 0 0 0 0 0\n\nHost/Domain Summary: Message Delivery\n--\n sent cnt bytes defers avg dly max dly host/domain\n -- - - - - --\n 21 2241k 0 4,6 s 47,0 s yojik.eu\n 2 7008 0 0,8 s 1,0 s picapo.net\n\nHost/Domain Summary: Messages Received\n\n msg cnt bytes host/domain\n -- - --\n 7 1918k yojik.eu\n 4 12773 lists.oasis-open.org\n 2 29818 nongnu.org\n 1 61932 sg.booking.com\n 1 53567 bounces.amazon.fr\n 1 46492 bounce.newsletter.delamaison.fr\n 1 36499 mail.bitwarden.com\n 1 36232 infos.materiel.net\n 1 25976 newsdesmarq.ccemails.com\n 1 20320 tradepubs.nl00.net\n 1 6892 5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com\n 1 4987 hussein.org\n 1 2021 inhrr.gob.ve\n\nSenders by message count\n\n 6 goulya@yojik.eu\n 2 m17n-list-bounces+eric=yojik.eu@nongnu.org\n 1 bounces+3318447-412f-eric=yojik.eu@mail.bitwarden.com\n 1 bounces+4713178-1151-eric=yojik.eu@sg.booking.com\n 1 email@newsdesmarq.ccemails.com\n 1 do_not_reply=netgear.com__413ah3rz7vwihm9c.ly8u7ddmyngfvref@5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com\n 1 eric@yojik.eu\n 1 20180701072218f38c0af2e0e840cf938ae502e570p0eu@bounces.amazon.fr\n 1 bounce-419_HTML-28507929-182305-7304800-452@bounce.newsletter.delamaison.fr\n 1 p-m8bl38j2p7vg88u3n3hrzdpp4rcbq9n7x8cvc2fn23u5pwpnseghvzq-BHP30@infos.materiel.net\n 1 Offers@tradepubs.nl00.net\n 1 info@hussein.org\n 1 docbook-apps-return-14782-eric=yojik.eu@lists.oasis-open.org\n 1 docbook-apps-return-14783-eric=yojik.eu@lists.oasis-open.org\n 1 docbook-apps-return-14784-eric=yojik.eu@lists.oasis-open.org\n 1 docbook-return-3958-eric=yojik.eu@lists.oasis-open.org\n 1 maria.rueda@inhrr.gob.ve\n\nRecipients by message count\n\n 15 eric@yojik.eu\n 6 goulya@yojik.eu\n 2 nico@picapo.net\n\nSenders by message size\n--\n 1917k goulya@yojik.eu\n 61932 bounces+4713178-1151-eric=yojik.eu@sg.booking.com\n 53567 20180701072218f38c0af2e0e840cf938ae502e570p0eu@bounces.amazon.fr\n 46492 bounce-419_HTML-28507929-182305-7304800-452@bounce.newsletter.delamaison.fr\n 36499 bounces+3318447-412f-eric=yojik.eu@mail.bitwarden.com\n 36232 p-m8bl38j2p7vg88u3n3hrzdpp4rcbq9n7x8cvc2fn23u5pwpnseghvzq-BHP30@infos.materiel.net\n 29818 m17n-list-bounces+eric=yojik.eu@nongnu.org\n 25976 email@newsdesmarq.ccemails.com\n 20320 Offers@tradepubs.nl00.net\n 6892 do_not_reply=netgear.com__413ah3rz7vwihm9c.ly8u7ddmyngfvref@5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com\n 4987 info@hussein.org\n 4275 docbook-apps-return-14782-eric=yojik.eu@lists.oasis-open.org\n 3589 docbook-return-3958-eric=yojik.eu@lists.oasis-open.org\n 2564 docbook-apps-return-14784-eric=yojik.eu@lists.oasis-open.org\n 2345 docbook-apps-return-14783-eric=yojik.eu@lists.oasis-open.org\n 2021 maria.rueda@inhrr.gob.ve\n 1124 eric@yojik.eu\n\nRecipients by message size\n--\n 1916k goulya@yojik.eu\n 333462 eric@yojik.eu\n 7008 nico@picapo.net\n\nmessage deferral detail: none\n\nmessage bounce detail (by relay): none\n\nmessage reject detail\n\n RCPT\n blocked using zen.spamhaus.org (total: 2)\n 1 amazonaws.com\n 1 b941c024.business.dg-w.de\n cannot find your hostname (total: 25)\n 9 183.159.95.6\n 3 210.239.8.55\n 3 114.228.155.122\n 2 2406:fc00:1:7:214:22ff:fe08:eb34\n 2 117.63.127.41\n 2 159.89.236.50\n 1 140.127.1.29\n 1 37.49.227.169\n 1 80.211.61.89\n 1 222.95.187.160\n Client host rejected: Access denied (total: 2)\n 2 80.211.61.89\n\nmessage reject warning detail: none\n\nmessage hold detail: none\n\nmessage discard detail: none\n\nsmtp delivery failures: none\n\nWarnings\n--\n smtpd (total: 16)\n 6 hostname host89-61-211-80.serverdedicati.aruba.it does not reso...\n 3 hostname host-210.239.8.55.n-cube.ne.jp does not resolve to add...\n 2 mm-115-58-214-37.mogilev.dynamic.pppoe.byfly.by[37.214.58.115]:...\n 2 hostname 41.127.63.117.broad.cz.js.dynamic.163data.com.cn does ...\n 1 hostname hn.kd.ny.adsl does not resolve to address 115.57.125.2...\n 1 hostname mails.npust.edu.tw does not resolve to address 140.127...\n 1 hostname 82-64-48-5.subs.proxad.net does not resolve to address...\n\nFatal Errors: none\n\nPanics: none\n\nMaster daemon messages: none\nroot@adara:/home/ericadmin#\n\n\n\n\nBien: la configuration est quasi termin\u00e9e: il nous reste \u00e0 ajouter SPF, DKIM, Dane et DNSSEC. et les comptes virtuels ...",
  396. "title": "Installation de dovecot et de l'authentification"
  397. },
  398. {
  399. "location": "/10-dix/#installation-de-dovecot-et-de-lauthentification",
  400. "text": "Pour l'instant, pour r\u00e9cup\u00e9rer ses \u00e9mails, il faut d'abord avoir un compte sur le serveur et se loguer. Ensuite, avec la commande mailx, on peut voir ses messages. Exemple: ericadmin@aijan:~$ mailx\n\"/var/mail/ericadmin\": 2 messages 2 non lus\n>U 1 Eric Streit dim. mai 20 08:4 20/742 essai d envoi \u00e0 root\n U 2 Eric Streit dim. mai 20 08:5 19/736 un autre essai\n? 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\u00e9cup\u00e9rer et envoyer nos messages avec celui-ci.",
  401. "title": "Installation de dovecot et de l'authentification"
  402. },
  403. {
  404. "location": "/10-dix/#installation-des-programmes",
  405. "text": "Nous n'installerons que les programmes n\u00e9cessaires \u00e0 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: # cp master.cf master.cf.orig\n# cp main.cf main.cf.orig Nous allons maintenant configurer nos boites \u00e9mail; 2 syst\u00e8mes sont courants: fichier unique qui contient tous vos messages (type mbox) ou r\u00e9pertoire avec un fichier par \u00e9mail (type maildir). Par d\u00e9faut, le type est mbox.\nNous allons changer cela (question de go\u00fbt ...) Pour cela, nous aurons besoins des programmes utilitaires install\u00e9s avec dovecot.",
  406. "title": "Installation des programmes"
  407. },
  408. {
  409. "location": "/10-dix/#choix-de-la-base-de-donnees",
  410. "text": "Nous utiliserons la base de donn\u00e9es sqlite . Il est bien s\u00fbr pr\u00e9f\u00e9rable d'utiliser une base de donn\u00e9es plus traditionnelle comme mysql ou postgresql si le nombre d'utilisateurs est important. Mon serveur de mails n'aura que moins de 10 adresses \u00e9mail, donc, sqlite suffira. root@adara:/home/www# apt install dovecot-common dovecot-imapd dovecot-sqlite\nLecture des listes de paquets... Fait\nConstruction de l arbre des d\u00e9pendances\nLecture des informations d \u00e9tat... Fait\nNote : s\u00e9lection de \u00ab dovecot-core \u00bb au lieu de \u00ab dovecot-common \u00bb\nThe following additional packages will be installed:\n libexttextcat-2.0-0 libexttextcat-data libstemmer0d\nPaquets sugg\u00e9r\u00e9s :\n dovecot-gssapi dovecot-sieve dovecot-pgsql dovecot-mysql dovecot-ldap dovecot-pop3d dovecot-lmtpd dovecot-managesieved dovecot-solr dovecot-lucene ufw\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n dovecot-core dovecot-imapd dovecot-sqlite libexttextcat-2.0-0 libexttextcat-data libstemmer0d\n0 mis \u00e0 jour, 6 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 5 062 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 12,2 Mo d espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 libexttextcat-data all 3.4.4-2 [167 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libexttextcat-2.0-0 amd64 3.4.4-2+b1 [16,2 kB]\nR\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 libstemmer0d amd64 0+svn585-1+b2 [63,3 kB]\nR\u00e9ception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-core amd64 1:2.2.27-3+deb9u2 [3 324 kB]\nR\u00e9ception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-imapd amd64 1:2.2.27-3+deb9u2 [814 kB]\nR\u00e9ception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 dovecot-sqlite amd64 1:2.2.27-3+deb9u2 [677 kB]\n5 062 ko r\u00e9ceptionn\u00e9s en 0s (6 873 ko/s)\nS\u00e9lection du paquet libexttextcat-data pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 26792 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../0-libexttextcat-data_3.4.4-2_all.deb ...\nD\u00e9paquetage de libexttextcat-data (3.4.4-2) ...\nS\u00e9lection du paquet libexttextcat-2.0-0:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../1-libexttextcat-2.0-0_3.4.4-2+b1_amd64.deb ...\nD\u00e9paquetage de libexttextcat-2.0-0:amd64 (3.4.4-2+b1) ...\nS\u00e9lection du paquet libstemmer0d:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../2-libstemmer0d_0+svn585-1+b2_amd64.deb ...\nD\u00e9paquetage de libstemmer0d:amd64 (0+svn585-1+b2) ...\nS\u00e9lection du paquet dovecot-core pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../3-dovecot-core_1%3a2.2.27-3+deb9u2_amd64.deb ...\nD\u00e9paquetage de dovecot-core (1:2.2.27-3+deb9u2) ...\nS\u00e9lection du paquet dovecot-imapd pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../4-dovecot-imapd_1%3a2.2.27-3+deb9u2_amd64.deb ...\nD\u00e9paquetage de dovecot-imapd (1:2.2.27-3+deb9u2) ...\nS\u00e9lection du paquet dovecot-sqlite pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../5-dovecot-sqlite_1%3a2.2.27-3+deb9u2_amd64.deb ...\nD\u00e9paquetage de dovecot-sqlite (1:2.2.27-3+deb9u2) ...\nParam\u00e9trage de libstemmer0d:amd64 (0+svn585-1+b2) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nParam\u00e9trage de libexttextcat-data (3.4.4-2) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u3) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de libexttextcat-2.0-0:amd64 (3.4.4-2+b1) ...\nParam\u00e9trage de dovecot-core (1:2.2.27-3+deb9u2) ...\n\nCreating config file /etc/dovecot/dovecot.conf with new version\n\nCreating config file /etc/dovecot/dovecot-dict-auth.conf.ext with new version\n\nCreating config file /etc/dovecot/dovecot-dict-sql.conf.ext with new version\n\nCreating config file /etc/dovecot/dovecot-sql.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/10-auth.conf with new version\n\nCreating config file /etc/dovecot/conf.d/10-director.conf with new version\n\nCreating config file /etc/dovecot/conf.d/10-logging.conf with new version\n\nCreating config file /etc/dovecot/conf.d/10-mail.conf with new version\n\nCreating config file /etc/dovecot/conf.d/10-master.conf with new version\n\nCreating config file /etc/dovecot/conf.d/10-tcpwrapper.conf with new version\n\nCreating config file /etc/dovecot/conf.d/15-lda.conf with new version\n\nCreating config file /etc/dovecot/conf.d/15-mailboxes.conf with new version\n\nCreating config file /etc/dovecot/conf.d/90-acl.conf with new version\n\nCreating config file /etc/dovecot/conf.d/90-plugin.conf with new version\n\nCreating config file /etc/dovecot/conf.d/90-quota.conf with new version\n\nCreating config file /etc/dovecot/conf.d/auth-checkpassword.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-deny.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-dict.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-master.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-passwdfile.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-sql.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-static.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-system.conf.ext with new version\n\nCreating config file /etc/dovecot/conf.d/auth-vpopmail.conf.ext with new version\nCreated symlink /etc/systemd/system/multi-user.target.wants/dovecot.service \u2192 /lib/systemd/system/dovecot.service.\nParam\u00e9trage de dovecot-imapd (1:2.2.27-3+deb9u2) ...\n\nCreating config file /etc/dovecot/conf.d/20-imap.conf with new version\nParam\u00e9trage de dovecot-sqlite (1:2.2.27-3+deb9u2) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u3) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour dovecot-core (1:2.2.27-3+deb9u2) ...\nroot@adara:/home/www#",
  411. "title": "Choix de la base de donn\u00e9es"
  412. },
  413. {
  414. "location": "/10-dix/#configuration-du-type-de-boite-aux-lettres",
  415. "text": "C'est ici que l'on configure si on veut un fichier unique qui contient tous les messages (type inbox) ou un fichier par \u00e9mail (type Maildir). Cela se passe dans le fichier /etc/postfix/main.cf On rajoute les lignes suivantes: home_mailbox = Maildir/\nmailbox_command = Si ces lignes existaient avant, il faut les commenter (ajout d'un # en d\u00e9but de ligne.)\nOn recharge le fichier de conf service postfix reload Et on teste: eric@aldebaran:~/Devs/Travail/Installation serveur/Tutorial$ mail ericadmin@aijan.yojik.net\nCc:\nSubject: Re-essai\nre-essai de aldebaran\n.\neric@aldebaran:~/Devs/Travail/Installation serveur/Tutorial$ J'envoie un courrier \u00e0 partir de mon desktop.\nV\u00e9rification sur le serveur: ericadmin@aijan:~$ ls\nbin index.html Maildir mbox\nericadmin@aijan:~$ Le r\u00e9pertoire Maildir a bien \u00e9t\u00e9 cr\u00e9\u00e9.\nV\u00e9rification de la r\u00e9ception des messages: ricadmin@aijan:~$ cd Maildir/\nericadmin@aijan:~/Maildir$ ls\ncur new tmp\nericadmin@aijan:~/Maildir$ cd new/\nericadmin@aijan:~/Maildir/new$ ls\n1526897441.V801Icc005dM227044.aijan 1526897501.V801Icc0060M464181.aijan 1526897576.V801Icc0061M979030.aijan\nericadmin@aijan:~/Maildir/new$\n\nericadmin@aijan:~/Maildir/new$ cat 1526897576.V801Icc0061M979030.aijan\nReturn-Path: <eric@aldebaran.yojik.net>\nX-Original-To: ericadmin@aijan.yojik.net\nDelivered-To: ericadmin@aijan.yojik.net\nReceived: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:6423:417b:6ef:ee21])\n by aijan.yojik.net (Postfix) with ESMTP id EC11BD00903\n for <ericadmin@aijan.yojik.net>; Mon, 21 May 2018 12:12:56 +0200 (CEST)\nReceived: by aldebaran.yojik.net (Postfix, from userid 1000)\n id 8B42920620A; Mon, 21 May 2018 12:12:56 +0200 (CEST)\nTo: <ericadmin@aijan.yojik.net>\nSubject: Re-essai\nX-Mailer: mail (GNU Mailutils 3.1.1)\nMessage-Id: <20180521101256.8B42920620A@aldebaran.yojik.net>\nDate: Mon, 21 May 2018 12:12:56 +0200 (CEST)\nFrom: eric@aldebaran.yojik.net (Eric Streit)\n\nre-essai de aldebaran\n.\nericadmin@aijan:~/Maildir/new$ Les messages sont bien re\u00e7us. Par contre, mailx ne fonctionne plus (uniquement avec des fichiers mbox.)\nPour lire nos messages, il nous faut installer le lecteur de courriers mutt . root@aijan:/etc/postfix# apt install mutt\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n libgmime-2.6-0 libgpgme11 libnotmuch4 libtalloc2 libtokyocabinet9\nPaquets sugg\u00e9r\u00e9s :\n gpgsm urlview mixmaster\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n libgmime-2.6-0 libgpgme11 libnotmuch4 libtalloc2 libtokyocabinet9 mutt\n0 mis \u00e0 jour, 6 nouvellement install\u00e9s, 0 \u00e0 enlever et 12 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 2 433 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 8 665 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main amd64 libtokyocabinet9 amd64 1.4.48-11+b1 [367 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main amd64 libgpgme11 amd64 1.8.0-3+b2 [160 kB]\nR\u00e9ception de:3 http://deb.debian.org/debian stretch/main amd64 libgmime-2.6-0 amd64 2.6.22+dfsg2-1 [232 kB]\nR\u00e9ception de:4 http://deb.debian.org/debian stretch/main amd64 libtalloc2 amd64 2.1.8-1 [36,3 kB]\n.... On teste; on le lance avec la commande suivante: ericadmin@aijan:~$ mutt -f ./Maildir/\nGPGME : protocole CMS non disponible\n3 gard\u00e9(s), 0 effac\u00e9(s).\nericadmin@aijan:~$ R\u00e9sultat: (extrait de l'\u00e9cran) q:Quitter d:Effacer u:R\u00e9cup s:Sauver m:Message r:R\u00e9pondre g:Groupe ?:Aide\n 1 O + mai 21 root (0,1K) Essai\n 2 O F mai 21 To root@localho (0,1K) essai d'envoi \u00e0 root\n 3 O + mai 21 Eric Streit (0,1K) Re-essai\n\nNeoMutt: ./Maildir/ [Msgs:3 Old:3 1,6K](threads/date)- Nos \u00e9mails sont bien l\u00e0 :) Nous pourrons supprimer mutt plus tard si nous voulons gagner un peu de place.",
  416. "title": "Configuration du type de bo\u00eete aux lettres"
  417. },
  418. {
  419. "location": "/10-dix/#architecture",
  420. "text": "Avant de continuer \u00e0 configurer notre serveur mail, il serait utile d'avoir une vue d'ensemble du syst\u00e8me que nous allons configurer. Pour l'instant, nous n'avons apport\u00e9 que peu de modifications aux fichiers de configuration (nous avons seulement chang\u00e9 le type de format de nos bo\u00eetes aux lettres : mbox -> Maildir Si nous regardons quels ports sont \u00e9cout\u00e9s; nous voyons que nous avons pour l'instant: le port 22 (SSH)\nle port 25 (Postfix)\nle port 80 (Apache)\nle port 443 (Apache)\nle port 53 et 953 (Bind) et le port 143 (imap) de dovecot, mais dovecot n'est pas encore int\u00e9gr\u00e9 \u00e0 notre serveur mail et est non-configur\u00e9 . root@aijan:/home/ericadmin# netstat -tlnp\nConnexions Internet actives (seulement serveurs)\nProto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name\ntcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 536/named\ntcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 536/named\ntcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 603/sshd\ntcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 850/master\ntcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 536/named\ntcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 676/apache2\ntcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 607/dovecot\ntcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 676/apache2\ntcp6 0 0 :::53 :::* LISTEN 536/named\ntcp6 0 0 :::22 :::* LISTEN 603/sshd\ntcp6 0 0 :::25 :::* LISTEN 850/master\ntcp6 0 0 ::1:953 :::* LISTEN 536/named\ntcp6 0 0 :::143 :::* LISTEN 607/dovecot\nroot@aijan:/home/ericadmin# Notez la commande netstat -tlnp pour voir les ports ouverts ainsi que les programmes qui les g\u00e8rent. Nous n'utiliserons pas le protocole Pop3 (ni sa variante pop3s). Le protocole Imap offre bien plus de possibilit\u00e9s. (parties rouges entour\u00e9es de noir)",
  421. "title": "Architecture"
  422. },
  423. {
  424. "location": "/10-dix/#schema-densemble",
  425. "text": "Les parties impl\u00e9ment\u00e9es sont en rouge sur le dessin suivant:",
  426. "title": "Sch\u00e9ma d'ensemble"
  427. },
  428. {
  429. "location": "/10-dix/#explication",
  430. "text": "",
  431. "title": "Explication:"
  432. },
  433. {
  434. "location": "/10-dix/#les-ports-servis-par-postfix",
  435. "text": "Le port 25 est utilis\u00e9 pour la communication entre serveurs smtp; il permet une connexion \"en clair\" ou chiffr\u00e9e. Il peut \u00eatre aussi utilis\u00e9 pour l'envoi des mails \u00e0 partir d'un client. Nous l'avons d'ailleurs fait avec la commande mail et telnet . Le port 587 est le port \"submission\", port utilis\u00e9 par d\u00e9faut par les clients mail pour envoyer du courrier sur le serveur (thunderbird, etc ...) qui le dispatche ensuite, soit dans les bo\u00eetes de courrier locales, soit \u00e0 un destinataire ext\u00e9rieur. Le port 465 est un port qui a \u00e9t\u00e9 r\u00e9serv\u00e9 pour les communications chiffr\u00e9es (SMTP over SSL): il \u00e9tait utilis\u00e9 avant que STARTTLS ne soit utilis\u00e9; il a \u00e9t\u00e9 enlev\u00e9 des ports standards de mail. Le premier port (25) est un port d'entr\u00e9e-sortie r\u00e9serv\u00e9 \u00e0 la communication entre serveurs (\"mais permet aussi la submission de messages avec authentification\".) Souvenez-vous que le port 25 est bloqu\u00e9 par de nombreux FAI. La communication peut \u00eatre chiffr\u00e9e ou non, suivant les possibilit\u00e9s du serveur et du client, et donc, les mots de passe peuvent passer en clair. La communication commence en mode \"clair\" et apr\u00e8s n\u00e9gociation, passe en mode \"chiffr\u00e9e\" si celle-ci est disponible: (STARTTLS) Les 2 derniers ports (465 et 587) sont des ports d'entr\u00e9e de vos messages envoy\u00e9s par des clients, apr\u00e8s authentification, en mode chiffr\u00e9 ou non.",
  436. "title": "Les ports servis par Postfix"
  437. },
  438. {
  439. "location": "/10-dix/#les-ports-servis-par-dovecot",
  440. "text": "Les ports 143 et 993 sont des ports r\u00e9serv\u00e9s au protocole IMAP(s). Les port 110 et 995 sont des ports r\u00e9serv\u00e9s au protocole POP3(s), mais nous ne l'utiliserons pas. Ces ports sont servis par Dovecot. Il permettent de g\u00e9rer notre bo\u00eete mail, r\u00e9cup\u00e9rer, effacer nos messages, cr\u00e9er des dossiers dans lesquels nous pouvons trier nos messages.",
  441. "title": "Les ports servis par Dovecot"
  442. },
  443. {
  444. "location": "/10-dix/#ce-que-nous-allons-implementer",
  445. "text": "Nous impl\u00e9menterons une politique particuli\u00e8re, comme celle d\u00e9crite ici: RasperryPi Email server Part 2 \nCet auteur s\u00e9pare les communications entre serveurs (port 25) et client-serveur (ports 587 et 465). Il emp\u00eache les communications non-chifr\u00e9es entre client et serveur, et utilise le port 465 pour les communications chiffr\u00e9es (d\u00e9pr\u00e9ci\u00e9 par le standard.)\nJusqu'\u00e0 maintenant, nous n'avons utilis\u00e9 ni dovecot, ni base de donn\u00e9es; l'authentification se faisant directement sur le serveur en acc\u00e9dant \u00e0 notre compte sur le serveur (login par identifiant/mot de passe ou clef SSH).\nNous allons impl\u00e9menter l'acc\u00e8s par Imap et Imaps de nos courriers \u00e0 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\u00e9j\u00e0 g\u00e9n\u00e9r\u00e9 auparavant nos clefs de chiffrage avec certbot . (voir le chapitre suivant ...)\nElles sont situ\u00e9es dans /etc/letsencrypt/live/atom.yojik.net .\nDovecot est un serveur Imap et pop3. Il assure en plus l'authentification.",
  446. "title": "Ce que nous allons impl\u00e9menter"
  447. },
  448. {
  449. "location": "/10-dix/#configuration-de-dovecot",
  450. "text": "Indiquer \u00e0 Dovecot d'\u00e9couter sur toutes les interfaces, en IPV4 et IPV6. Le fichier \u00e0 configurer (apr\u00e8s copie) est /etc/dovecot/dovecot.conf ; changer la ligne qui contient: listen =\nen\nlisten = *, :: Il faut lui indiquer o\u00f9 sont stock\u00e9s nos mails et sous quel format . Cela se configure dans le fichier: /etc/dovecot/conf.d/10-mail.conf\nVoici un extrait du contenu original: ## Mailbox locations and namespaces\n##\nmail_location = mbox:~/mail:INBOX=/var/mail/%u Le format par d\u00e9faut est mbox situ\u00e9 dans /var/mail/user \nNous allons changer cela en: mail_location = maildir:~/Maildir Dovecot utilisera notre bo\u00eete aux lettres situ\u00e9e dans le home de chaque user, et dans le r\u00e9pertoire Maildir. Souvenez-vous que nous avions configur\u00e9 Postfix afin qu'il utilise le format Maidir. Indiquer \u00e0 Postfix d'utiliser dovecot pour l'acc\u00e8s 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\nsmtpd_sasl_path = private/auth\nsmtpd_sasl_auth_enable = yes Nous allons indiquer \u00e0 Dovecot de r\u00e9pondre aux demandes d'authentification de postfix:\nApr\u00e8s 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\u00e9canisme d'authentification de docvecot. Pour cela nous allons remplacer la partie intitul\u00e9e service auth par ce qui suit: service auth {\n unix_listener /var/spool/postfix/private/auth {\n mode = 0660\n user = postfix\n group = postfix\n } 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\nauth_mechanisms = plain login On relance postfix et dovecot pour prendre en compte les modifications. root@atom:/etc/postfix# systemctl restart postfix\nroot@atom:/etc/postfix# systemctl restart dovecot On v\u00e9rifie que tout s'est bien pass\u00e9 avec la commande: root@atom:/etc/postfix# tail -f /var/log/daemon.log\nNov 26 12:47:22 atom systemd[1]: Stopped Postfix Mail Transport Agent (instance -).\nNov 26 12:47:22 atom systemd[1]: Starting Postfix Mail Transport Agent (instance -)...\nNov 26 12:47:23 atom systemd[1]: Started Postfix Mail Transport Agent (instance -).\nNov 26 12:47:23 atom systemd[1]: Starting Postfix Mail Transport Agent...\nNov 26 12:47:23 atom systemd[1]: Started Postfix Mail Transport Agent.\nNov 26 12:47:28 atom systemd[1]: Stopping Dovecot IMAP/POP3 email server...\nNov 26 12:47:29 atom systemd[1]: Stopped Dovecot IMAP/POP3 email server.\nNov 26 12:47:29 atom systemd[1]: Starting Dovecot IMAP/POP3 email server...\nNov 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\nNov 26 12:47:29 atom systemd[1]: Started Dovecot IMAP/POP3 email server. On quitte avec Ctrl C. C'est bon. Test 1 Nous allons nous connecter avec telnet; voici la capture de la session: Tout d'abord, cr\u00e9ation 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 \u00e0 cet utilisateur (voir au-dessus pour comment faire avec la commande mail.) Testons si le message est bien arriv\u00e9: root@atom:/etc/postfix# adduser testmail\nAjout de l'utilisateur \u00ab testmail25 \u00bb ...\nAjout du nouveau groupe \u00ab testmail25 \u00bb (1001) ...\nAjout du nouvel utilisateur \u00ab testmail25 \u00bb (1001) avec le groupe \u00ab testmail25 \u00bb ...\nCr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/testmail25 \u00bb...\nCopie des fichiers depuis \u00ab /etc/skel \u00bb...\n Entrez le nouveau mot de passe UNIX :\n Retapez le nouveau mot de passe UNIX :\n passwd: password updated successfully\n Changing the user information for testmail\n Enter the new value, or press ENTER for the default\n Full Name []:\n Room Number []:\n Work Phone []:\n Home Phone []:\n Other []:\nCette information est-elle correcte ? [O/n]o\nroot@atom:/etc/postfix# mail testmail\nCc:\nSubject: Essai 7\nEssai 7\n.\nroot@atom:/etc/postfix# su - testmail\ntestmail25@atom:~$ mutt -f ./Maildir/\nGPGME : protocole CMS non disponible\n1 gard\u00e9(s), 0 effac\u00e9(s). Le message est bien arriv\u00e9. 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. root@aijan:/home/ericadmin# telnet localhost 143\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\n* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.\nx1 LOGIN testmail testmail\nx1 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\nx2 SELECT Inbox\n* FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft)\n* OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft \\*)] Flags permitted.\n* 1 EXISTS\n* 1 RECENT\n* OK [UNSEEN 1] First unseen.\n* OK [UIDVALIDITY 1527165527] UIDs valid\n* OK [UIDNEXT 2] Predicted next UID\nx2 OK [READ-WRITE] Select completed (0.000 + 0.000 secs).\nx4 LOGOUT\n* BYE Logging out\nx4 OK Logout completed (0.000 + 0.000 secs).\nConnection closed by foreign host.\nroot@aijan:/home/ericadmin# \u00c7a marche: OK [UNSEEN 1] First unseen. Nous nous sommes connect\u00e9s avec le mot de passe en clait (testmail pour l'utilisateur testmail.) Test 2: envoi de mail Connexion sur le port 25 (postfix) en utilisant l'authentification g\u00e9r\u00e9e par dovecot.\n Nous avons chiffr\u00e9 le mot de passe avec la commande suivante: printf '\\0%s\\0%s' 'testmail' 'testmail' | openssl base64\n AHRlc3RtYWlsAHRlc3RtYWls root@aijan:/home/ericadmin# telnet localhost 25\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\n220 aijan.yojik.net ESMTP Postfix (Debian/GNU)\nehlo localhost\n250-aijan.yojik.net\n250-PIPELINING\n250-SIZE 10240000\n250-VRFY\n250-ETRN\n250-STARTTLS\n250-AUTH PLAIN LOGIN\n250-ENHANCEDSTATUSCODES\n250-8BITMIME\n250-DSN\n250 SMTPUTF8\nAUTH PLAIN AHRlc3RtYWlsAHRlc3RtYWls\n235 2.7.0 Authentication successful\nmail from: testmail\n250 2.1.0 Ok\ndata\n554 5.5.1 Error: no valid recipients\nrcpt to: ericounet26200@gmail.com\n250 2.1.5 Ok\ndata\n354 End data with <CR><LF>.<CR><LF>\nSubject: mon, premier mail avec sasl\nmon premier mail avec sasl\n.\n250 2.0.0 Ok: queued as A664BD004A1\nquit\n221 2.0.0 Bye\nConnection closed by foreign host.\nroot@aijan:/home/ericadmin# V\u00e9rification de la bonne r\u00e9ception du message: le message est bien re\u00e7u.",
  451. "title": "Configuration de Dovecot"
  452. },
  453. {
  454. "location": "/10-dix/#configuration-des-certificats",
  455. "text": "Jusqu'\u00e0 pr\u00e9sent, nous avons utilis\u00e9 les certificats fournis par Debian \u00e0 l'installation.\nNous allons utiliser les certificats que nous avons cr\u00e9\u00e9s auparavant avec letsencrypt.\nIl y a 2 lignes \u00e0 modifier dans /etc/postfix/main.cf: smtpd_tls_cert_file = /etc/letsencrypt/live/toto.yojik.net/fullchain.pem\nsmtpd_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\u00e9n\u00e9r\u00e9 les certificats.\nIl y a 3 lignes \u00e0 ajouter/modifier dans /etc/dovecot/conf.d/10-ssl.conf ssl = required\nssl_cert = </etc/letsencrypt/live/toto.yojik.net/fullchain.pem\nssl_key = </etc/letsencrypt/live/toto.yojik.net/privkey.pem Comme avant, personnalisez avec votre nom de serveur mail.\nRelancez vos serveurs avec les commandes suivantes: root@aijan:/home/ericadmin# systemctl restart postfix\nroot@aijan:/home/ericadmin# systemctl restart dovecot Bien v\u00e9rifier dans les logs (/var/log/daemon.log) que tout s'est bien pass\u00e9 (pas d'erreur de frappe par exemple ...)",
  456. "title": "Configuration des certificats"
  457. },
  458. {
  459. "location": "/10-dix/#test",
  460. "text": "Nous allons refaire les tests d\u00e9j\u00e0 r\u00e9alis\u00e9s pr\u00e9c\u00e9demment pour v\u00e9rifier que \"rien n'est cass\u00e9\" suite \u00e0 la modification de nos certificats. root@aijan:/home/ericadmin# telnet localhost 25\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\n220 aijan.yojik.net ESMTP Postfix (Debian/GNU)\nehlo aijan.yojik.net\n250-aijan.yojik.net\n250-PIPELINING\n250-SIZE 10240000\n250-VRFY\n250-ETRN\n250-STARTTLS\n250-AUTH PLAIN LOGIN\n250-ENHANCEDSTATUSCODES\n250-8BITMIME\n250-DSN\n250 SMTPUTF8\nAUTH PLAIN AHRlc3RtYWlsAHRlc3RtYWls\n235 2.7.0 Authentication successful\nmail from: testmail\n250 2.1.0 Ok\nrcpt to: ericounet26200@gmail.com\n250 2.1.5 Ok\ndata\n354 End data with <CR><LF>.<CR><LF>\nsubject: essai\nun essai\n.\n250 2.0.0 Ok: queued as 9EEF6D0002E\nquit\n502 5.5.2 Error: command not recognized\nquit\n221 2.0.0 Bye\nConnection closed by foreign host.\nroot@aijan:/home/ericadmin# \u00c7a fonctionne. L'authentification avec les nouveaux certificats est assur\u00e9e.",
  461. "title": "Test"
  462. },
  463. {
  464. "location": "/10-dix/#test-de-la-connexion-sur-le-port-993-a-partir-dun-ordinateur-exterieur",
  465. "text": "eric@aldebaran:~$ openssl s_client -connect yojik.net:993\nCONNECTED(00000003)\ndepth=2 O = Digital Signature Trust Co., CN = DST Root CA X3\nverify return:1\ndepth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3\nverify return:1\ndepth=0 CN = atom.yojik.net\nverify return:1\n---\nCertificate chain\n 0 s:/CN=atom.yojik.net\n i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3\n 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3\n i:/O=Digital Signature Trust Co./CN=DST Root CA X3\n---\nServer certificate\n-----BEGIN CERTIFICATE-----\nMIIFVTCCBD2gAwIBAgISA2ymxMSWOd9z4d5MhK1RarzkMA0GCSqGSIb3DQEBCwUA\nMEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD\nExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODExMTExNTI2NDhaFw0x\nOTAyMDkxNTI2NDhaMBkxFzAVBgNVBAMTDmF0b20ueW9qaWsubmV0MIIBIjANBgkq\nhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAr+SwsS/VwilSnazx4Y9Xj9OIzYPx2s5W\nkxocZT7BMdO0oKNKolbe6AJMGrNKf5TjQu9EN+yal6rNZUOrrR7dS2gKvRjyH2mW\n5JniCW/osYVkHglgjvNbihQP4IBY9brvvtIW9reKyA9adq5zHHRW2RNaBG18oXFa\nmQb+uFGiCkpyjGK7XYmPkVA7DM6TtciFBGeTmY15vF4aniPQtu1TuksEc+WDvWfR\nK9ebYXghqBJd1OigtgVhOpDiSAnxjtx9wcjHuic/9wU8iI2VdkOB0xoMxlRNjQSZ\nDWgRCiZr/LwtoX6bSWzJex1kW7Q/zQnvA1eaKqD6mCIp5uO7KiK5AQIDAQABo4IC\nZDCCAmAwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF\nBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQyxrlKdL9RV+v8Y7YwH4mV0iq4\nEDAfBgNVHSMEGDAWgBSoSmpjBH3duubRObemRWXv86jsoTBvBggrBgEFBQcBAQRj\nMGEwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3NwLmludC14My5sZXRzZW5jcnlwdC5v\ncmcwLwYIKwYBBQUHMAKGI2h0dHA6Ly9jZXJ0LmludC14My5sZXRzZW5jcnlwdC5v\ncmcvMBkGA1UdEQQSMBCCDmF0b20ueW9qaWsubmV0MEwGA1UdIARFMEMwCAYGZ4EM\nAQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0\nc2VuY3J5cHQub3JnMIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcA4mlLribo6UAJ\n6IYbtjuD1D7n/nSI+6SPKJMBnd3x2/4AAAFnA5jZtQAABAMASDBGAiEAshqJHr2M\nl6n+9Dd31jkskn3lxh5iC7FTfPZoKxZGT6ECIQDDby9vNMmzh8eYysYr5UuTE4R9\nVOko3rzQZgj51O/nEQB2AGPy283oO8wszwtyhCdXazOkjWF3j711pjixx2hUS9iN\nAAABZwOY2bgAAAQDAEcwRQIhAPTO+Wry4Fl2+HddFMsWpfYJQ7dkXtW93N1+z77y\nofgMAiB76ad1N7+AVOh4YvrRboK31F5cs3YJnKmKxINWkrI70TANBgkqhkiG9w0B\nAQsFAAOCAQEAJ1BYUTWpCIIYD0FKB9vuCEfYrg1NNHhYYr0jUKR49EPLO8DS1aRp\nKK1tr9EZti2lOYaEOKNo4dQkLLKgsF1kovHreosvXPF2oXRbN6UdVu+67fhIokD5\nFIS9pphaxIHEC4A9h7JK0LHJHMG9ySRDBbtz9Y0b7z5jGIxX0yzaqBcPJVG26SJm\nuyiys2bklC+N3mYAVYb/c3VWdCWzusHks+HCTx2y+YkqVkvCepdQYFoUKpk6ScSc\nFz6r0DWBXGmhJLg0K+KxfXGUtTtwDjnBZCocX3FrQsQNrbYtvLyK2QhDv1Mr6V96\nP11a4LV3qq2eTfoIiNd9m2iqCJ7/pSWIjw==\n-----END CERTIFICATE-----\nsubject=/CN=atom.yojik.net\nissuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3\n---\nNo client certificate CA names sent\nPeer signing digest: SHA512\nServer Temp Key: ECDH, P-384, 384 bits\n---\nSSL handshake has read 3236 bytes and written 334 bytes\nVerification: OK\n---\nNew, TLSv1.2, Cipher is ECDHE-RSA-AES256-GCM-SHA384\nServer public key is 2048 bit\nSecure Renegotiation IS supported\nCompression: NONE\nExpansion: NONE\nNo ALPN negotiated\nSSL-Session:\n Protocol : TLSv1.2\n Cipher : ECDHE-RSA-AES256-GCM-SHA384\n Session-ID: D488F9943CD771D5DF400C676729BDF315F5CBD01128E922D7DBCC0D80B467F3\n Session-ID-ctx:\n Master-Key: 45BF00E99AA29FB83E1395741E3A506800473105882554C46B50639665B600000E1F3048F051EF5E12D6C0804A0698D8\n PSK identity: None\n PSK identity hint: None\n SRP username: None\n TLS session ticket lifetime hint: 7200 (seconds)\n TLS session ticket:\n 0000 - 59 1e 77 bc e8 c1 0e f8-c9 f2 38 f8 f9 f0 e9 4f Y.w.......8....O\n 0010 - 4b 91 2a 39 73 cc a6 85-f2 22 96 ae 4a a3 84 b8 K.*9s....\"..J...\n 0020 - e8 de 9b 34 74 1a d9 e7-88 f5 d1 bb 4c 2d 59 f2 ...4t.......L-Y.\n 0030 - 0e 99 1e bd b7 82 ef 32-ab 0c 1a 33 c0 dd 31 6a .......2...3..1j\n 0040 - 5b 38 fc c5 27 29 d7 a3-ae f0 a5 bb 66 a0 b4 eb [8..')......f...\n 0050 - 7c 95 f2 16 cb 92 5c f3-7f c0 30 33 ec 77 f0 a8 |.....\\...03.w..\n 0060 - 8f 5e 9c f7 de c9 4f 95-1a 0e 09 27 7a 45 b0 db .^....O....'zE..\n 0070 - 84 ba 72 37 f1 a2 f5 95-43 0c e2 eb a3 18 94 a8 ..r7....C.......\n 0080 - b3 d4 d7 15 4c 81 08 a2-17 3f 7b 15 fe 81 d8 5c ....L....?{....\\\n 0090 - 74 60 ac 5e 2a 5a 22 07-6f ba 03 4f d5 46 5a 04 t`.^*Z\".o..O.FZ.\n\n Start Time: 1543235404\n Timeout : 7200 (sec)\n Verify return code: 0 (ok)\n Extended master secret: yes\n---\n* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.\n1 Login testmail testmail\n1 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\nQUIT\nDONE\neric@aldebaran:~$ Le OK [CAPABILITY ... indique que la connexion s'est faite normalement; les caract\u00e9ristiques du certificat sont affich\u00e9es au-dessus. Le Logged: in indique que l'authentification a march\u00e9. Nous avons donc test\u00e9 les ports 25, 143 et 993 avec succ\u00e8s.",
  466. "title": "Test de la connexion sur le port 993 \u00e0 partir d'un ordinateur ext\u00e9rieur"
  467. },
  468. {
  469. "location": "/10-dix/#configuration-dun-port-qui-naccepte-que-les-communications-chiffrees",
  470. "text": "Pour l'instant, postfix n'\u00e9coute que le port 25 (vous pouvez le v\u00e9rifier avec la commande netstat -tlpn .\nDans le fichier /etc/postfix/master.cf, seul la ligne suivante est active (d\u00e9comment\u00e9e): smtp inet n - y - - smtpd Nous allons mettre postfix en \u00e9coute du port 465:\nDans le fichier /etc/postfix/master.cf, la ligne \u00e0 d\u00e9commenter est la suivante: # smtps inet n - - - - smtpd pour obtenir: smtps inet n - - - - smtpd",
  471. "title": "Configuration d'un port qui n'accepte que les communications chiffr\u00e9es."
  472. },
  473. {
  474. "location": "/10-dix/#test_1",
  475. "text": "On relance postfix et on regarde les ports servis: root@aijan:/home/ericadmin# service postfix restart\nroot@aijan:/home/ericadmin# netstat -tlpn\nConnexions Internet actives (seulement serveurs)\nProto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name\ntcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 552/named\ntcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 552/named\ntcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 580/sshd\ntcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2159/master\ntcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 552/named\ntcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 649/apache2\ntcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 1792/dovecot\ntcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 649/apache2\ntcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 2159/master\ntcp6 0 0 :::53 :::* LISTEN 552/named\ntcp6 0 0 :::22 :::* LISTEN 580/sshd\ntcp6 0 0 :::25 :::* LISTEN 2159/master\ntcp6 0 0 ::1:953 :::* LISTEN 552/named\ntcp6 0 0 :::143 :::* LISTEN 1792/dovecot\ntcp6 0 0 :::465 :::* LISTEN 2159/master\nroot@aijan:/home/ericadmin# Le port 465 est ouvert et servi par postfix.",
  476. "title": "Test"
  477. },
  478. {
  479. "location": "/10-dix/#test-de-connexion-sur-le-port-465",
  480. "text": "root@aijan:/home/ericadmin# telnet localhost 465\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\n220 aijan.yojik.net ESMTP Postfix (Debian/GNU)\nehlo aijan.yojik.net\n250-aijan.yojik.net\n250-PIPELINING\n250-SIZE 10240000\n250-VRFY\n250-ETRN\n250-STARTTLS\n250-AUTH PLAIN LOGIN\n250-ENHANCEDSTATUSCODES\n250-8BITMIME\n250-DSN\n250 SMTPUTF8\nquit\n221 2.0.0 Bye\nConnection closed by foreign host.\nroot@aijan:/home/ericadmin# La connexion se fait normalement.\nNous allons maintenant bloquer les communications non-chiffr\u00e9es; les param\u00e8tres \u00e0 modifier sont dans /etc/postfix/master.conf (2 premiers param\u00e8tres de la ligne smtps \u00e0 d\u00e9commenter.) smtps inet n - - - - smtpd\n -o syslog_name=postfix/smtps\n -o smtpd_tls_wrappermode=yes",
  481. "title": "test de connexion sur le port 465"
  482. },
  483. {
  484. "location": "/10-dix/#test_2",
  485. "text": "Essai avec communication non-chifr\u00e9e: root@aijan:/home/ericadmin# telnet localhost 465\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\nConnection closed by foreign host.\nroot@aijan:/home/ericadmin# La communication est refus\u00e9e . Essai avec communication chiffr\u00e9e (nous utilisons openssl pour cela): root@adara:/etc# openssl s_client -connect localhost:465 -quiet\ndepth=2 O = Digital Signature Trust Co., CN = DST Root CA X3\nverify return:1\ndepth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3\nverify return:1\ndepth=0 CN = adara.yojik.eu\nverify return:1\n220 adara.yojik.eu ESMTP Postfix (Debian/GNU)\nehlo me\n250-adara.yojik.eu\n250-PIPELINING\n250-SIZE 10240000\n250-VRFY\n250-ETRN\n250-AUTH PLAIN LOGIN\n250-ENHANCEDSTATUSCODES\n250-8BITMIME\n250-DSN\n250 SMTPUTF8\nquit\n221 2.0.0 Bye\nroot@adara:/etc# La communication est accept\u00e9e et fonctionne. Nous voyons aussi que notre certificat Letsencrypt a \u00e9t\u00e9 v\u00e9rifi\u00e9. Il reste une modification \u00e0 faire pour n'autoriser que les communications chiffr\u00e9es:\nDans /etc/postfix/main.cf ajouter ou modifier la ligne suivante: smtpd_tls_auth_only = yes Et rechargez Postfix.",
  486. "title": "Test"
  487. },
  488. {
  489. "location": "/10-dix/#test_3",
  490. "text": "root@aijan:/home/ericadmin# telnet localhost 25\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\n220 aijan.yojik.net ESMTP Postfix (Debian/GNU)\nehlo aijan.yojik.net\n250-aijan.yojik.net\n250-PIPELINING\n250-SIZE 10240000\n250-VRFY\n250-ETRN\n250-STARTTLS\n250-ENHANCEDSTATUSCODES\n250-8BITMIME\n250-DSN\n250 SMTPUTF8\nquit\n221 2.0.0 Bye\nConnection closed by foreign host.\nroot@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\u00e8re modification.",
  491. "title": "Test"
  492. },
  493. {
  494. "location": "/10-dix/#interdiction-de-communications-non-chiffrees-sur-le-port-465",
  495. "text": "Nous allons rajouter/modifier une \"restriction\" \u00e0 la ligne g\u00e9rant le port 465 dans /etc/postfix/master.cf smtps inet n - - - - smtpd\n -o syslog_name=postfix/smtps\n -o smtpd_tls_wrappermode=yes\n -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject La derni\u00e8re ligne est rajout\u00e9e, d\u00e9-comment\u00e9e, modifi\u00e9e (suivant le cas). On recharge postfix et on teste.",
  496. "title": "Interdiction de communications non-chiffr\u00e9es sur le port 465"
  497. },
  498. {
  499. "location": "/10-dix/#test_4",
  500. "text": "root@aijan:/etc/postfix# telnet localhost 465\nTrying ::1...\nConnected to localhost.\nEscape character is '^]'.\nquit\nConnection closed by foreign host.\nroot@aijan:/etc/postfix# \u00c7a fonctionne.",
  501. "title": "Test"
  502. },
  503. {
  504. "location": "/10-dix/#ajout-de-la-gestion-du-port-587",
  505. "text": "Dans le fichier /etc/postfix/master.cf, d\u00e9-commentez les lignes suivantes et modifiez les comme indiqu\u00e9. Ce sont les m\u00eames modifications que celles effectu\u00e9es pour le port 465. submission inet n - y - - smtpd\n -o syslog_name=postfix/submission\n -o smtpd_tls_security_level=encrypt\n -o smtpd_sasl_auth_enable=yes\n\nAinsi que\n\n -o smtpd_recipient_restrictions=",
  506. "title": "Ajout de la gestion du port 587"
  507. },
  508. {
  509. "location": "/10-dix/#test_5",
  510. "text": "root@aijan:/etc/bind# netstat -tlnp\nConnexions Internet actives (seulement serveurs)\nProto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name\ntcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 3410/named\ntcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 3410/named\ntcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 580/sshd\ntcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 4080/master\ntcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 3410/named\ntcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 649/apache2\ntcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 2668/dovecot\ntcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN 4080/master\ntcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 2668/dovecot\ntcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 649/apache2\ntcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 4080/master\ntcp6 0 0 :::53 :::* LISTEN 3410/named\ntcp6 0 0 :::22 :::* LISTEN 580/sshd\ntcp6 0 0 :::25 :::* LISTEN 4080/master\ntcp6 0 0 ::1:953 :::* LISTEN 3410/named\ntcp6 0 0 :::993 :::* LISTEN 2668/dovecot\ntcp6 0 0 :::587 :::* LISTEN 4080/master\ntcp6 0 0 :::143 :::* LISTEN 2668/dovecot\ntcp6 0 0 :::465 :::* LISTEN 4080/master\nroot@aijan:/etc/bind# Le port 587 est g\u00e9r\u00e9.",
  511. "title": "Test"
  512. },
  513. {
  514. "location": "/10-dix/#ajout-de-la-gesion-du-port-993-imap-avec-ssltls",
  515. "text": "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 \u00e0 modifier est: /etc/dovecot/conf.d/10-master.conf\nLa partie du fichier \u00e0 modifier est la suivante: service imap-login {\n inet_listener imap {\n #port = 143\n }\n inet_listener imaps {\n #port = 993\n #ssl = yes\n } pour donner ceci: service imap-login {\n inet_listener imap {\n port = 143\n }\n inet_listener imaps {\n port = 993\n ssl = yes\n } Dans le fichier /etc/dovecot/conf.d/10-ssl.conf: ssl = yes\n ssl_protocols = !SSLv3",
  516. "title": "Ajout de la gesion du port 993 (imap avec SSL/TLS)"
  517. },
  518. {
  519. "location": "/10-dix/#test_6",
  520. "text": "root@aijan:/etc/dovecot# netstat -tlpn\nConnexions Internet actives (seulement serveurs)\nProto Recv-Q Send-Q Adresse locale Adresse distante Etat PID/Program name\ntcp 0 0 192.168.111.240:53 0.0.0.0:* LISTEN 552/named\ntcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 552/named\ntcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 580/sshd\ntcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 2376/master\ntcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 552/named\ntcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 649/apache2\ntcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN 2668/dovecot\ntcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN 2668/dovecot\ntcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 649/apache2\ntcp 0 0 0.0.0.0:465 0.0.0.0:* LISTEN 2376/master\ntcp6 0 0 :::53 :::* LISTEN 552/named\ntcp6 0 0 :::22 :::* LISTEN 580/sshd\ntcp6 0 0 :::25 :::* LISTEN 2376/master\ntcp6 0 0 ::1:953 :::* LISTEN 552/named\ntcp6 0 0 :::993 :::* LISTEN 2668/dovecot\ntcp6 0 0 :::143 :::* LISTEN 2668/dovecot\ntcp6 0 0 :::465 :::* LISTEN 2376/master\nroot@aijan:/etc/dovecot# Le port 993 est actif.",
  521. "title": "Test"
  522. },
  523. {
  524. "location": "/10-dix/#mise-en-route",
  525. "text": "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 \u00e0 supprimer le r\u00e9pertoire home de cet utlisateur: rm -Rf /home/testmail Ceci fait, ouvrons nos ports. Voici les lignes \u00e0 ajouter \u00e0 notre programme firewall.sh. Il suffira de le lancer et de sauver la configuration (comme d\u00e9j\u00e0 vu pr\u00e9c\u00e9demment) #mail!!\n\n # Mail SMTP:25\n $IPT -t filter -A INPUT -p tcp --dport 25 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT\n\n $IP6T -t filter -A INPUT -p tcp --dport 25 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 25 -j ACCEPT\n\n # Mail SMTP:587\n $IPT -t filter -A INPUT -p tcp --dport 587 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT\n\n $IP6T -t filter -A INPUT -p tcp --dport 597 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 587 -j ACCEPT\n\n # Mail IMAP:143\n $IPT -t filter -A INPUT -p tcp --dport 143 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT\n\n $IP6T -t filter -A INPUT -p tcp --dport 143 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 143 -j ACCEPT\n\n # Mail IMAPS:993\n $IPT -t filter -A INPUT -p tcp --dport 993 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT\n\n $IP6T -t filter -A INPUT -p tcp --dport 993 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 993 -j ACCEPT\n\n # Mail 465\n $IPT -t filter -A INPUT -p tcp --dport 465 -j ACCEPT\n $IPT -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT\n\n $IP6T -t filter -A INPUT -p tcp --dport 465 -j ACCEPT\n $IP6T -t filter -A OUTPUT -p tcp --dport 465 -j ACCEPT",
  526. "title": "Mise en route"
  527. },
  528. {
  529. "location": "/10-dix/#test_7",
  530. "text": "root@aijan:/home/ericadmin/bin# ./firewall.sh restart\nfirewall stopped [OK]\nfirewall started [OK]\nroot@aijan:/home/ericadmin/bin# iptables -L\nChain INPUT (policy DROP)\ntarget prot opt source destination\nACCEPT all -- anywhere anywhere\nACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED\nACCEPT tcp -- anywhere anywhere tcp dpt:domain\nACCEPT udp -- anywhere anywhere udp dpt:domain\nACCEPT tcp -- 192.168.111.150 anywhere\nACCEPT tcp -- anywhere anywhere tcp dpt:ssh\nACCEPT tcp -- anywhere anywhere tcp dpt:http\nACCEPT tcp -- anywhere anywhere tcp dpt:https\nACCEPT tcp -- anywhere anywhere tcp dpt:smtp\nACCEPT tcp -- anywhere anywhere tcp dpt:submission\nACCEPT tcp -- anywhere anywhere tcp dpt:imap2\nACCEPT tcp -- anywhere anywhere tcp dpt:imaps\nACCEPT tcp -- anywhere anywhere tcp dpt:urd\n\nChain FORWARD (policy DROP)\ntarget prot opt source destination\n\nChain OUTPUT (policy ACCEPT)\ntarget prot opt source destination\nACCEPT all -- anywhere anywhere\nACCEPT tcp -- anywhere anywhere tcp dpt:ssh\nACCEPT udp -- anywhere anywhere udp dpt:ntp\nACCEPT tcp -- anywhere anywhere tcp dpt:http\nACCEPT tcp -- anywhere anywhere tcp dpt:https\nACCEPT tcp -- anywhere anywhere tcp dpt:smtp\nACCEPT tcp -- anywhere anywhere tcp dpt:submission\nACCEPT tcp -- anywhere anywhere tcp dpt:imap2\nACCEPT tcp -- anywhere anywhere tcp dpt:imaps\nACCEPT tcp -- anywhere anywhere tcp dpt:urd\nroot@aijan:/home/ericadmin/bin# Les ports sont bien ouverts.\nEt on sauvegarde: service netfilter-persistent save root@aijan:/home/ericadmin/bin# service netfilter-persistent save\n[....] Saving netfilter rules...run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables save\nrun-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables save\ndone.\nroot@aijan:/home/ericadmin/bin# Les r\u00e8gles IPV4 et IPV6 sont sauvegard\u00e9es.",
  531. "title": "Test"
  532. },
  533. {
  534. "location": "/10-dix/#mise-en-place-du-fichier-auto-configuration-mozilla",
  535. "text": "A voir ....",
  536. "title": "Mise en place du fichier \"auto-configuration\" Mozilla"
  537. },
  538. {
  539. "location": "/10-dix/#test-en-situation",
  540. "text": "",
  541. "title": "Test en situation ..."
  542. },
  543. {
  544. "location": "/10-dix/#lecture-des-messages",
  545. "text": "A partir de ma machine de bureau, test de connexion en IMAP, liste des messages, et lecture du contenu (port 993): eric@aldebaran:~$ openssl s_client -connect atom.yojik.net:993 -quiet\ndepth=2 O = Digital Signature Trust Co., CN = DST Root CA X3\nverify return:1\ndepth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3\nverify return:1\ndepth=0 CN = aijan.yojik.net\nverify return:1\n* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.\na login ericadmin eBnIDQ+FZZI=\na 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\nb select inbox\n* FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk)\n* OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk \\*)] Flags permitted.\n* 3 EXISTS\n* 0 RECENT\n* OK [UIDVALIDITY 1527410684] UIDs valid\n* OK [UIDNEXT 4] Predicted next UID\nb OK [READ-WRITE] Select completed (0.000 + 0.000 secs).\nc FETCH 1:* FLAGS\n* 1 FETCH (FLAGS (\\Seen NonJunk))\n* 2 FETCH (FLAGS (\\Seen NonJunk))\n* 3 FETCH (FLAGS (\\Seen))\nc OK Fetch completed (0.001 + 0.000 secs).\nd Fetch BODY[TEXT]\nd BAD Error in IMAP command FETCH: Invalid arguments (0.000 + 0.000 secs).\nd fetch body\nd BAD Error in IMAP command FETCH: Invalid arguments (0.000 + 0.000 secs).\nd FETCH 1 body\n* 1 FETCH (BODY (\"text\" \"plain\" (\"charset\" \"us-ascii\") NIL NIL \"7bit\" 10 2))\nd OK Fetch completed (0.002 + 0.000 + 0.001 secs).\ne fetch 2 body\n* 2 FETCH (BODY (\"text\" \"plain\" (\"charset\" \"us-ascii\") NIL NIL \"7bit\" 3 1))\ne OK Fetch completed (0.001 + 0.000 secs).\nf fetch 2 body[]\n* 2 FETCH (BODY[] {466}\nReturn-Path: <ericadmin@aijan.yojik.net>\nX-Original-To: root@localhost\nDelivered-To: root@localhost\nReceived: by aijan.yojik.net (Postfix, from userid 1000)\n id 6D42CD00904; Mon, 21 May 2018 12:11:41 +0200 (CEST)\nTo: <root@localhost>\nSubject: essai d'envoi \u00e0 root\nX-Mailer: mail (GNU Mailutils 3.1.1)\nMessage-Id: <20180521101141.6D42CD00904@aijan.yojik.net>\nDate: Mon, 21 May 2018 12:11:41 +0200 (CEST)\nFrom: ericadmin@aijan.yojik.net (Eric Streit)\n\n.\n)\nf OK Fetch completed (0.001 + 0.000 secs).\ng fetch 3 body[]\n* 3 FETCH (BODY[] {735}\nReturn-Path: <eric@aldebaran.yojik.net>\nX-Original-To: ericadmin@aijan.yojik.net\nDelivered-To: ericadmin@aijan.yojik.net\nReceived: from aldebaran.yojik.net (unknown [IPv6:2a01:e0a:54:c220:6423:417b:6ef:ee21])\n by aijan.yojik.net (Postfix) with ESMTP id EC11BD00903\n for <ericadmin@aijan.yojik.net>; Mon, 21 May 2018 12:12:56 +0200 (CEST)\nReceived: by aldebaran.yojik.net (Postfix, from userid 1000)\n id 8B42920620A; Mon, 21 May 2018 12:12:56 +0200 (CEST)\nTo: <ericadmin@aijan.yojik.net>\nSubject: Re-essai\nX-Mailer: mail (GNU Mailutils 3.1.1)\nMessage-Id: <20180521101256.8B42920620A@aldebaran.yojik.net>\nDate: Mon, 21 May 2018 12:12:56 +0200 (CEST)\nFrom: eric@aldebaran.yojik.net (Eric Streit)\n\nre-essai de aldebaran\n.\n)\ng OK Fetch completed (0.001 + 0.000 secs).\nh logout\n* BYE Logging out\nh OK Logout completed (0.000 + 0.000 secs).\neric@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\nTrying 192.168.111.240...\nConnected to aijan.yojik.net.\nEscape character is '^]'.\n* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE STARTTLS AUTH=PLAIN AUTH=LOGIN] Dovecot ready.\nehlo aldebaran.yojik.eu\nehlo BAD Error in IMAP command received by server.\na login ericadmin eBnIDQ+FZZI=\na 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\nb select inbox\n* FLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk)\n* OK [PERMANENTFLAGS (\\Answered \\Flagged \\Deleted \\Seen \\Draft NonJunk \\*)] Flags permitted.\n* 3 EXISTS\n* 0 RECENT\n* OK [UIDVALIDITY 1527410684] UIDs valid\n* OK [UIDNEXT 4] Predicted next UID\nb OK [READ-WRITE] Select completed (0.000 + 0.000 secs).\nc logout\n* BYE Logging out\nc OK Logout completed (0.000 + 0.000 secs).\nConnection closed by foreign host.\neric@aldebaran:~$ La r\u00e9cup\u00e9ration des messages s'est bien pass\u00e9e.",
  546. "title": "Lecture des messages"
  547. },
  548. {
  549. "location": "/10-dix/#envoi-de-messages",
  550. "text": "Image de la configuration \u00e0 faire sur thunderbird : L'envoi de messages \u00e0 partir de Thunderbird fonctionne. Il faut bien configurer le port smtp \u00e0 465 ... Image de la configuration \u00e0 faire. L'envoi sur mon serveur personnel a \u00e9chou\u00e9: l'adresse IPV4 fournie par FREE \u00e9tait sur une liste de blocage (anti-spams). J'ai demand\u00e9 \u00e0 \u00eatre enlev\u00e9 de cette liste, ce qui va prendre 48H environ. R\u00e9-essai ensuite ... Envoi d'un message sur le compte du serveur \u00e0 partir de la machine de bureau (thunderbird): OK. R\u00e9ception des messages sur la machine de bureau (thunderbird): OK. Envoi d'un message \u00e0 partir du compte du serveur (thunderbird): \u00e7a OK.",
  551. "title": "Envoi de messages"
  552. },
  553. {
  554. "location": "/10-dix/#installation-dun-analyseur-des-logs-mail",
  555. "text": "",
  556. "title": "Installation d'un analyseur des logs mail"
  557. },
  558. {
  559. "location": "/10-dix/#installation",
  560. "text": "apt-get install pflogsumm",
  561. "title": "Installation"
  562. },
  563. {
  564. "location": "/10-dix/#utilisation",
  565. "text": "pflogsumm -d today /var/log/mail.log Vous obtiendrez une analyse approfondie des logs de la partie mail. root@adara:/home/ericadmin# pflogsumm -d today /var/log/mail.log\nPostfix log summaries for Jul 1\n\nGrand Totals\n\nmessages\n\n 24 received\n 23 delivered\n 0 forwarded\n 0 deferred\n 0 bounced\n 29 rejected (55%)\n 0 reject warnings\n 0 held\n 0 discarded (0%)\n\n 2248k bytes received\n 2248k bytes delivered\n 17 senders\n 13 sending hosts/domains\n 3 recipients\n 2 recipient hosts/domains\n\n\nPer-Hour Traffic Summary\n\n time received delivered deferred bounced rejected\n --\n 0000-0100 0 0 0 0 0\n 0100-0200 0 0 0 0 0\n 0200-0300 0 0 0 0 0\n 0300-0400 0 0 0 0 3\n 0400-0500 0 0 0 0 7\n 0500-0600 0 0 0 0 1\n 0600-0700 1 1 0 0 1\n 0700-0800 2 2 0 0 1\n 0800-0900 4 4 0 0 7\n 0900-1000 4 4 0 0 2\n 1000-1100 10 9 0 0 2\n 1100-1200 2 2 0 0 1\n 1200-1300 0 0 0 0 2\n 1300-1400 0 0 0 0 0\n 1400-1500 0 0 0 0 0\n 1500-1600 1 1 0 0 2\n 1600-1700 0 0 0 0 0\n 1700-1800 0 0 0 0 0\n 1800-1900 0 0 0 0 0\n 1900-2000 0 0 0 0 0\n 2000-2100 0 0 0 0 0\n 2100-2200 0 0 0 0 0\n 2200-2300 0 0 0 0 0\n 2300-2400 0 0 0 0 0\n\nHost/Domain Summary: Message Delivery\n--\n sent cnt bytes defers avg dly max dly host/domain\n -- - - - - --\n 21 2241k 0 4,6 s 47,0 s yojik.eu\n 2 7008 0 0,8 s 1,0 s picapo.net\n\nHost/Domain Summary: Messages Received\n\n msg cnt bytes host/domain\n -- - --\n 7 1918k yojik.eu\n 4 12773 lists.oasis-open.org\n 2 29818 nongnu.org\n 1 61932 sg.booking.com\n 1 53567 bounces.amazon.fr\n 1 46492 bounce.newsletter.delamaison.fr\n 1 36499 mail.bitwarden.com\n 1 36232 infos.materiel.net\n 1 25976 newsdesmarq.ccemails.com\n 1 20320 tradepubs.nl00.net\n 1 6892 5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com\n 1 4987 hussein.org\n 1 2021 inhrr.gob.ve\n\nSenders by message count\n\n 6 goulya@yojik.eu\n 2 m17n-list-bounces+eric=yojik.eu@nongnu.org\n 1 bounces+3318447-412f-eric=yojik.eu@mail.bitwarden.com\n 1 bounces+4713178-1151-eric=yojik.eu@sg.booking.com\n 1 email@newsdesmarq.ccemails.com\n 1 do_not_reply=netgear.com__413ah3rz7vwihm9c.ly8u7ddmyngfvref@5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com\n 1 eric@yojik.eu\n 1 20180701072218f38c0af2e0e840cf938ae502e570p0eu@bounces.amazon.fr\n 1 bounce-419_HTML-28507929-182305-7304800-452@bounce.newsletter.delamaison.fr\n 1 p-m8bl38j2p7vg88u3n3hrzdpp4rcbq9n7x8cvc2fn23u5pwpnseghvzq-BHP30@infos.materiel.net\n 1 Offers@tradepubs.nl00.net\n 1 info@hussein.org\n 1 docbook-apps-return-14782-eric=yojik.eu@lists.oasis-open.org\n 1 docbook-apps-return-14783-eric=yojik.eu@lists.oasis-open.org\n 1 docbook-apps-return-14784-eric=yojik.eu@lists.oasis-open.org\n 1 docbook-return-3958-eric=yojik.eu@lists.oasis-open.org\n 1 maria.rueda@inhrr.gob.ve\n\nRecipients by message count\n\n 15 eric@yojik.eu\n 6 goulya@yojik.eu\n 2 nico@picapo.net\n\nSenders by message size\n--\n 1917k goulya@yojik.eu\n 61932 bounces+4713178-1151-eric=yojik.eu@sg.booking.com\n 53567 20180701072218f38c0af2e0e840cf938ae502e570p0eu@bounces.amazon.fr\n 46492 bounce-419_HTML-28507929-182305-7304800-452@bounce.newsletter.delamaison.fr\n 36499 bounces+3318447-412f-eric=yojik.eu@mail.bitwarden.com\n 36232 p-m8bl38j2p7vg88u3n3hrzdpp4rcbq9n7x8cvc2fn23u5pwpnseghvzq-BHP30@infos.materiel.net\n 29818 m17n-list-bounces+eric=yojik.eu@nongnu.org\n 25976 email@newsdesmarq.ccemails.com\n 20320 Offers@tradepubs.nl00.net\n 6892 do_not_reply=netgear.com__413ah3rz7vwihm9c.ly8u7ddmyngfvref@5v7mfyjapqzjtpqc.fncpq.3-xsveaq.na6.bnc.salesforce.com\n 4987 info@hussein.org\n 4275 docbook-apps-return-14782-eric=yojik.eu@lists.oasis-open.org\n 3589 docbook-return-3958-eric=yojik.eu@lists.oasis-open.org\n 2564 docbook-apps-return-14784-eric=yojik.eu@lists.oasis-open.org\n 2345 docbook-apps-return-14783-eric=yojik.eu@lists.oasis-open.org\n 2021 maria.rueda@inhrr.gob.ve\n 1124 eric@yojik.eu\n\nRecipients by message size\n--\n 1916k goulya@yojik.eu\n 333462 eric@yojik.eu\n 7008 nico@picapo.net\n\nmessage deferral detail: none\n\nmessage bounce detail (by relay): none\n\nmessage reject detail\n\n RCPT\n blocked using zen.spamhaus.org (total: 2)\n 1 amazonaws.com\n 1 b941c024.business.dg-w.de\n cannot find your hostname (total: 25)\n 9 183.159.95.6\n 3 210.239.8.55\n 3 114.228.155.122\n 2 2406:fc00:1:7:214:22ff:fe08:eb34\n 2 117.63.127.41\n 2 159.89.236.50\n 1 140.127.1.29\n 1 37.49.227.169\n 1 80.211.61.89\n 1 222.95.187.160\n Client host rejected: Access denied (total: 2)\n 2 80.211.61.89\n\nmessage reject warning detail: none\n\nmessage hold detail: none\n\nmessage discard detail: none\n\nsmtp delivery failures: none\n\nWarnings\n--\n smtpd (total: 16)\n 6 hostname host89-61-211-80.serverdedicati.aruba.it does not reso...\n 3 hostname host-210.239.8.55.n-cube.ne.jp does not resolve to add...\n 2 mm-115-58-214-37.mogilev.dynamic.pppoe.byfly.by[37.214.58.115]:...\n 2 hostname 41.127.63.117.broad.cz.js.dynamic.163data.com.cn does ...\n 1 hostname hn.kd.ny.adsl does not resolve to address 115.57.125.2...\n 1 hostname mails.npust.edu.tw does not resolve to address 140.127...\n 1 hostname 82-64-48-5.subs.proxad.net does not resolve to address...\n\nFatal Errors: none\n\nPanics: none\n\nMaster daemon messages: none\nroot@adara:/home/ericadmin# Bien: la configuration est quasi termin\u00e9e: il nous reste \u00e0 ajouter SPF, DKIM, Dane et DNSSEC. et les comptes virtuels ...",
  566. "title": "Utilisation"
  567. },
  568. {
  569. "location": "/11-onze/",
  570. "text": "Installation des certificats letsencrypt\n\n\nInstallation des programmes\n\n\nIl existe plusieurs clients \nletsencrypt\n pour la gestion des certificats. Nous utiliserons \ncertbot\n, le client officiel de \nletsencrypt\n.\n\n\nroot@atom:/home/ericadmin/bin# apt install certbot python-certbot-apache\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n augeas-lenses libaugeas0 python-acme python-augeas python-certbot python-cffi-backend python-chardet python-configargparse python-configobj python-cryptography\n python-dnspython python-enum34 python-funcsigs python-idna python-ipaddress python-mock python-openssl python-parsedatetime python-pbr python-pkg-resources python-psutil\n python-pyasn1 python-pyicu python-requests python-rfc3339 python-setuptools python-six python-tz python-urllib3 python-zope.component python-zope.event\n python-zope.hookable python-zope.interface\n\netc...\n\n\n\n\nCr\u00e9ation des certificats pour nos domaines\n\n\nBien, les programmes sont install\u00e9s. Nous allons cr\u00e9er des certificats pour les domaines suivantes, apr\u00e8s avoir cr\u00e9\u00e9 les h\u00f4tes virtuels apache.\n\n\n\n\nyojik.net\n\n\nwww.yojik.net\n\n\natom.yojik.net\n\n\n\n\nLes 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\u00e9clar\u00e9 qu'un seul nom: atom.yojik.net. Rajoutons les suivants avec des enregistrements CNAME. Ne pas oublier d'incr\u00e9menter le compteur situ\u00e9 dans le fichier de zone DNS apr\u00e8s chaque modification.\n\n\nLors de l'installation de notre webmail, nous rajouterons le domaine correspondant.\n\n\nNous ajoutons ici la r\u00e9f\u00e9rence du serveur web, avec un enregistrement CNAME: www.yojik.eu\n\n\nwww IN CNAME atom.yojik.net.\n\n\n\n\nRelecture des fichiers de configuration par bind:\n\n\nroot@atom:/home/ericadmin# service bind9 reload\n\n\n\n\nlancement du programme certbot\n\n\nroot@atom:/home/ericadmin# certbot --apache\nSaving debug log to /var/log/letsencrypt/letsencrypt.log\n\nWhich names would you like to activate HTTPS for?\n-\n1: yojik.net\n2: www.yojik.net\n-\nSelect the appropriate numbers separated by commas and/or spaces, or leave input\nblank to select all options shown (Enter 'c' to cancel):1 2\nObtaining a new certificate\nPerforming the following challenges:\nClient with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.\nClient with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.\n\n\n\n\nBon, il y a un probl\u00e8me ... apr\u00e8s recherche sur le web, il se trouve que le programme certbot de Debian/stretch n'est pas \u00e0 jour (modification due \u00e0 un probl\u00e8me de s\u00e9curit\u00e9.)\n\n\n\n\nVoici le lien:\n\n\n\n\ncertbot sur Debian/Stretch problem and solution\n\n\n\n\n\n\nAjout des backports dans la liste des d\u00e9pots:\n\n\nIl nous faut ajouter dans /etc/sources.list le d\u00e9pot \nbackports\n pour obtenir le fichier qui suit:\nLien: \nInstallation des backports\n\n\nVoici le contenu du fichier \netc/apt/sources.list\n\n\n\n\n\n\nroot@atom:/home/ericadmin# cat /etc/apt/sources.list\n#\n\n# deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 NETINST 20171209-12:10]/ stretch main\n\n#deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 NETINST 20171209-12:10]/ stretch main\n\ndeb http://deb.debian.org/debian/ stretch main contrib non-free\ndeb-src http://deb.debian.org/debian/ stretch main contrib non-free\n\ndeb http://security.debian.org/debian-security stretch/updates main contrib non-free\ndeb-src http://security.debian.org/debian-security stretch/updates main contrib non-free\n\n# stretch-updates, previously known as 'volatile'\ndeb http://deb.debian.org/debian/ stretch-updates main contrib non-free\ndeb-src http://deb.debian.org/debian/ stretch-updates main contrib non-free\n\ndeb http://ftp.debian.org/debian stretch-backports main contrib non-free\n\n\n\n\nNotez la derni\u00e8re ligne rajout\u00e9e au fichier. Ensuite,entrez les commandes suivantes:\n\n\napt update\napt-get install python-certbot-apache -t stretch-backports\n\n\n\n\nUn grand nombre de paquets vont \u00eatre install\u00e9s ...\n\n\nOn relance le programme certbot:\n\n\ncertbot --apache\n\n\n\n\nCette fois-ci, \u00e7a fonctionne.\n\n\nroot@atom:/home/ericadmin# certbot --apache\nSaving debug log to /var/log/letsencrypt/letsencrypt.log\nPlugins selected: Authenticator apache, Installer apache\n\nWhich names would you like to activate HTTPS for?\n-\n1: yojik.net\n2: www.yojik.net\n-\nSelect the appropriate numbers separated by commas and/or spaces, or leave input\nblank to select all options shown (Enter 'c' to cancel): 1\nObtaining a new certificate\nPerforming the following challenges:\nhttp-01 challenge for yojik.net\nWaiting for verification...\nCleaning up challenges\nCreated an SSL vhost at /etc/apache2/sites-available/yojiknet-le-ssl.conf\nDeploying Certificate to VirtualHost /etc/apache2/sites-available/yojiknet-le-ssl.conf\nEnabling available site: /etc/apache2/sites-available/yojiknet-le-ssl.conf\n\nPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.\n-\n1: No redirect - Make no further changes to the webserver configuration.\n2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for\nnew sites, or if you're confident your site works on HTTPS. You can undo this\nchange by editing your web server's configuration.\n-\nSelect the appropriate number [1-2] then [enter] (press 'c' to cancel): 2\nRedirecting vhost in /etc/apache2/sites-enabled/yojiknet.conf to ssl vhost in /etc/apache2/sites-available/yojiknet-le-ssl.conf\n\n-\nCongratulations! You have successfully enabled https://yojik.net\n\nYou should test your configuration at:\nhttps://www.ssllabs.com/ssltest/analyze.html?d=yojik.net\n-\n\nIMPORTANT NOTES:\n - Congratulations! Your certificate and chain have been saved at:\n /etc/letsencrypt/live/yojik.net/fullchain.pem\n Your key file has been saved at:\n /etc/letsencrypt/live/yojik.net/privkey.pem\n Your cert will expire on 2018-08-19. To obtain a new or tweaked\n version of this certificate in the future, simply run certbot again\n with the \"certonly\" option. To non-interactively renew *all* of\n your certificates, run \"certbot renew\"\n - If you like Certbot, please consider supporting our work by:\n\n Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate\n Donating to EFF: https://eff.org/donate-le\n\nroot@atom:/home/ericadmin#\n\n\n\n\nOn retape les m\u00eames commandes pour g\u00e9n\u00e9rer les certificats pour le domaine \nwww.yojik.net\n.\n\n\nTestez votre configuration comme indiqu\u00e9 ci-dessus. Vous devez obtenir une note \nA\n.\n\n\nIl nous faut maintenant cr\u00e9er un certificat pour notre serveur mail:\n\n\nroot@atom:/home/ericadmin# certbot certonly -d atom.yojik.net\nSaving debug log to /var/log/letsencrypt/letsencrypt.log\n\nHow would you like to authenticate with the ACME CA?\n-\n1: Apache Web Server plugin - Beta (apache)\n2: Spin up a temporary webserver (standalone)\n3: Place files in webroot directory (webroot)\n-\nSelect the appropriate number [1-3] then [enter] (press 'c' to cancel): 1\nPlugins selected: Authenticator apache, Installer None\nObtaining a new certificate\nPerforming the following challenges:\nhttp-01 challenge for atom.yojik.net\nWaiting for verification...\nCleaning up challenges\n\nIMPORTANT NOTES:\n - Congratulations! Your certificate and chain have been saved at:\n /etc/letsencrypt/live/atom.yojik.net/fullchain.pem\n Your key file has been saved at:\n /etc/letsencrypt/live/atom.yojik.net/privkey.pem\n Your cert will expire on 2018-08-19. To obtain a new or tweaked\n version of this certificate in the future, simply run certbot\n again. To non-interactively renew *all* of your certificates, run\n \"certbot renew\"\n - If you like Certbot, please consider supporting our work by:\n\n Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate\n Donating to EFF: https://eff.org/donate-le\n\nroot@atom:/home/ericadmin#\n\n\n\n\nVoil\u00e0, nos certificats sont cr\u00e9\u00e9s. Lors de la configuration, notez que j'ai demand\u00e9 une redirection automatique vers la version en \nhttps\n.",
  571. "title": "Installation des certificats letsencrypt"
  572. },
  573. {
  574. "location": "/11-onze/#installation-des-certificats-letsencrypt",
  575. "text": "",
  576. "title": "Installation des certificats letsencrypt"
  577. },
  578. {
  579. "location": "/11-onze/#installation-des-programmes",
  580. "text": "Il existe plusieurs clients letsencrypt pour la gestion des certificats. Nous utiliserons certbot , le client officiel de letsencrypt . root@atom:/home/ericadmin/bin# apt install certbot python-certbot-apache\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n augeas-lenses libaugeas0 python-acme python-augeas python-certbot python-cffi-backend python-chardet python-configargparse python-configobj python-cryptography\n python-dnspython python-enum34 python-funcsigs python-idna python-ipaddress python-mock python-openssl python-parsedatetime python-pbr python-pkg-resources python-psutil\n python-pyasn1 python-pyicu python-requests python-rfc3339 python-setuptools python-six python-tz python-urllib3 python-zope.component python-zope.event\n python-zope.hookable python-zope.interface\n\netc...",
  581. "title": "Installation des programmes"
  582. },
  583. {
  584. "location": "/11-onze/#creation-des-certificats-pour-nos-domaines",
  585. "text": "Bien, les programmes sont install\u00e9s. Nous allons cr\u00e9er des certificats pour les domaines suivantes, apr\u00e8s avoir cr\u00e9\u00e9 les h\u00f4tes 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\u00e9clar\u00e9 qu'un seul nom: atom.yojik.net. Rajoutons les suivants avec des enregistrements CNAME. Ne pas oublier d'incr\u00e9menter le compteur situ\u00e9 dans le fichier de zone DNS apr\u00e8s chaque modification. Lors de l'installation de notre webmail, nous rajouterons le domaine correspondant. Nous ajoutons ici la r\u00e9f\u00e9rence du serveur web, avec un enregistrement CNAME: www.yojik.eu www IN CNAME atom.yojik.net. Relecture des fichiers de configuration par bind: root@atom:/home/ericadmin# service bind9 reload",
  586. "title": "Cr\u00e9ation des certificats pour nos domaines"
  587. },
  588. {
  589. "location": "/11-onze/#lancement-du-programme-certbot",
  590. "text": "root@atom:/home/ericadmin# certbot --apache\nSaving debug log to /var/log/letsencrypt/letsencrypt.log\n\nWhich names would you like to activate HTTPS for?\n-\n1: yojik.net\n2: www.yojik.net\n-\nSelect the appropriate numbers separated by commas and/or spaces, or leave input\nblank to select all options shown (Enter 'c' to cancel):1 2\nObtaining a new certificate\nPerforming the following challenges:\nClient with the currently selected authenticator does not support any combination of challenges that will satisfy the CA.\nClient with the currently selected authenticator does not support any combination of challenges that will satisfy the CA. Bon, il y a un probl\u00e8me ... apr\u00e8s recherche sur le web, il se trouve que le programme certbot de Debian/stretch n'est pas \u00e0 jour (modification due \u00e0 un probl\u00e8me de s\u00e9curit\u00e9.) Voici le lien: certbot sur Debian/Stretch problem and solution Ajout des backports dans la liste des d\u00e9pots: Il nous faut ajouter dans /etc/sources.list le d\u00e9pot backports pour obtenir le fichier qui suit:\nLien: Installation des backports Voici le contenu du fichier etc/apt/sources.list root@atom:/home/ericadmin# cat /etc/apt/sources.list\n#\n\n# deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 NETINST 20171209-12:10]/ stretch main\n\n#deb cdrom:[Debian GNU/Linux 9.3.0 _Stretch_ - Official amd64 NETINST 20171209-12:10]/ stretch main\n\ndeb http://deb.debian.org/debian/ stretch main contrib non-free\ndeb-src http://deb.debian.org/debian/ stretch main contrib non-free\n\ndeb http://security.debian.org/debian-security stretch/updates main contrib non-free\ndeb-src http://security.debian.org/debian-security stretch/updates main contrib non-free\n\n# stretch-updates, previously known as 'volatile'\ndeb http://deb.debian.org/debian/ stretch-updates main contrib non-free\ndeb-src http://deb.debian.org/debian/ stretch-updates main contrib non-free\n\ndeb http://ftp.debian.org/debian stretch-backports main contrib non-free Notez la derni\u00e8re ligne rajout\u00e9e au fichier. Ensuite,entrez les commandes suivantes: apt update\napt-get install python-certbot-apache -t stretch-backports Un grand nombre de paquets vont \u00eatre install\u00e9s ... On relance le programme certbot: certbot --apache Cette fois-ci, \u00e7a fonctionne. root@atom:/home/ericadmin# certbot --apache\nSaving debug log to /var/log/letsencrypt/letsencrypt.log\nPlugins selected: Authenticator apache, Installer apache\n\nWhich names would you like to activate HTTPS for?\n-\n1: yojik.net\n2: www.yojik.net\n-\nSelect the appropriate numbers separated by commas and/or spaces, or leave input\nblank to select all options shown (Enter 'c' to cancel): 1\nObtaining a new certificate\nPerforming the following challenges:\nhttp-01 challenge for yojik.net\nWaiting for verification...\nCleaning up challenges\nCreated an SSL vhost at /etc/apache2/sites-available/yojiknet-le-ssl.conf\nDeploying Certificate to VirtualHost /etc/apache2/sites-available/yojiknet-le-ssl.conf\nEnabling available site: /etc/apache2/sites-available/yojiknet-le-ssl.conf\n\nPlease choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.\n-\n1: No redirect - Make no further changes to the webserver configuration.\n2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for\nnew sites, or if you're confident your site works on HTTPS. You can undo this\nchange by editing your web server's configuration.\n-\nSelect the appropriate number [1-2] then [enter] (press 'c' to cancel): 2\nRedirecting vhost in /etc/apache2/sites-enabled/yojiknet.conf to ssl vhost in /etc/apache2/sites-available/yojiknet-le-ssl.conf\n\n-\nCongratulations! You have successfully enabled https://yojik.net\n\nYou should test your configuration at:\nhttps://www.ssllabs.com/ssltest/analyze.html?d=yojik.net\n-\n\nIMPORTANT NOTES:\n - Congratulations! Your certificate and chain have been saved at:\n /etc/letsencrypt/live/yojik.net/fullchain.pem\n Your key file has been saved at:\n /etc/letsencrypt/live/yojik.net/privkey.pem\n Your cert will expire on 2018-08-19. To obtain a new or tweaked\n version of this certificate in the future, simply run certbot again\n with the \"certonly\" option. To non-interactively renew *all* of\n your certificates, run \"certbot renew\"\n - If you like Certbot, please consider supporting our work by:\n\n Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate\n Donating to EFF: https://eff.org/donate-le\n\nroot@atom:/home/ericadmin# On retape les m\u00eames commandes pour g\u00e9n\u00e9rer les certificats pour le domaine www.yojik.net . Testez votre configuration comme indiqu\u00e9 ci-dessus. Vous devez obtenir une note A . Il nous faut maintenant cr\u00e9er un certificat pour notre serveur mail: root@atom:/home/ericadmin# certbot certonly -d atom.yojik.net\nSaving debug log to /var/log/letsencrypt/letsencrypt.log\n\nHow would you like to authenticate with the ACME CA?\n-\n1: Apache Web Server plugin - Beta (apache)\n2: Spin up a temporary webserver (standalone)\n3: Place files in webroot directory (webroot)\n-\nSelect the appropriate number [1-3] then [enter] (press 'c' to cancel): 1\nPlugins selected: Authenticator apache, Installer None\nObtaining a new certificate\nPerforming the following challenges:\nhttp-01 challenge for atom.yojik.net\nWaiting for verification...\nCleaning up challenges\n\nIMPORTANT NOTES:\n - Congratulations! Your certificate and chain have been saved at:\n /etc/letsencrypt/live/atom.yojik.net/fullchain.pem\n Your key file has been saved at:\n /etc/letsencrypt/live/atom.yojik.net/privkey.pem\n Your cert will expire on 2018-08-19. To obtain a new or tweaked\n version of this certificate in the future, simply run certbot\n again. To non-interactively renew *all* of your certificates, run\n \"certbot renew\"\n - If you like Certbot, please consider supporting our work by:\n\n Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate\n Donating to EFF: https://eff.org/donate-le\n\nroot@atom:/home/ericadmin# Voil\u00e0, nos certificats sont cr\u00e9\u00e9s. Lors de la configuration, notez que j'ai demand\u00e9 une redirection automatique vers la version en https .",
  591. "title": "lancement du programme certbot"
  592. },
  593. {
  594. "location": "/12-douze/",
  595. "text": "SPF, DKIM, OPENDMARC\n\n\nSPF\n\n\nAjout des enregistrements \nspf\n au fichier de zone DNS\n\n\nNous allons maintenant ajouter un enregistrement \nspf\n \u00e0 notre configuration. SPF est un enregistrement qui d\u00e9clare quelle machine est responsable et autoris\u00e9e \u00e0 envoyer des mails pour notre domaine. Cela permet d'\u00e9viter que nos mails soient consid\u00e9r\u00e9s comme du \nspam\n.\n\n\nLa syntaxe de la ligne \u00e0 ajouter est assez simple. Il existe des g\u00e9n\u00e9rateurs de ligne SPF, comme:\n\n\n\n\nspfwizard\n\n\n\n\nou\n\n\n\n\nmxtoolbox\n.\n\n\n\n\nLe site \nopenspf\n contient tout ce qu'il faut savoir \u00e0 propos de SPF, syntaxe, param\u00e8tres etc ...\n\n\nPour mon serveur, j'ai choisi une politique stricte de rejet des mails qui ne viennent pas d'une source autoris\u00e9e.\n\n\nVoici la ligne \u00e0 rajouter au fichier de zone. C'est le param\u00e8tre \"-all\" qui d\u00e9termine la politique (de rejet ici). Nous aurions pu mettre \n~all\n pour une politique moins stricte. (notez le \n~\n \u00e0 la place du \n-\n)\n\n\n; spf\nyojik.net. IN TXT \"v=spf1 a mx mx:adara.yojik.net a:adara.yojik.net -all\"\nyojik.net. IN SPF \"v=spf1 a mx mx:adara.yojik.net a:adara.yojik.net -all\"\n\n\n\n\nOn recharge bind pour la prise en compte des modifications:\n\n\nservice bind9 restart\n\n\n\n\nIl nous reste \u00e0 configurer postfix pour prendre en compte cet enregistrement et effectuer les validations.\n\n\nInstallation des logiciels n\u00e9cessaires\n\n\nroot@atom:/etc/bind# apt-get install postfix-policyd-spf-python\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n python3-authres python3-dns python3-spf\nPaquets sugg\u00e9r\u00e9s :\n python3-yaml\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n postfix-policyd-spf-python python3-authres python3-dns python3-spf\n0 mis \u00e0 jour, 4 nouvellement install\u00e9s, 0 \u00e0 enlever et 12 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 153 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 494 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main amd64 python3-dns all 3.1.1-1 [27,5 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main amd64 python3-authres all 0.900-1 [17,5 kB]\nR\u00e9ception de:3 http://deb.debian.org/debian stretch/main amd64 python3-spf all 2.0.12t-3 [64,1 kB]\nR\u00e9ception de:4 http://deb.debian.org/debian stretch/main amd64 postfix-policyd-spf-python all 2.0.1-1 [43,8 kB]\n153 ko r\u00e9ceptionn\u00e9s en 0s (1 533 ko/s)\nS\u00e9lection du paquet python3-dns pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 40435 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../python3-dns_3.1.1-1_all.deb ...\nD\u00e9paquetage de python3-dns (3.1.1-1) ...\nS\u00e9lection du paquet python3-authres pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../python3-authres_0.900-1_all.deb ...\nD\u00e9paquetage de python3-authres (0.900-1) ...\nS\u00e9lection du paquet python3-spf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../python3-spf_2.0.12t-3_all.deb ...\nD\u00e9paquetage de python3-spf (2.0.12t-3) ...\nS\u00e9lection du paquet postfix-policyd-spf-python pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../postfix-policyd-spf-python_2.0.1-1_all.deb ...\nD\u00e9paquetage de postfix-policyd-spf-python (2.0.1-1) ...\nParam\u00e9trage de python3-authres (0.900-1) ...\nParam\u00e9trage de python3-dns (3.1.1-1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de python3-spf (2.0.12t-3) ...\nParam\u00e9trage de postfix-policyd-spf-python (2.0.1-1) ...\nroot@atom:/etc/bind#\n\n\n\n\nConfiguration de postfix: master.cf\n\n\nDans le fichier /etc/postfix/master.cf, il faut rajouter le service suivant:\n\n\npolicyd-spf unix - n n - 0 spawn\n user=policyd-spf argv=/usr/bin/policyd-spf\n\n\n\n\nConfiguration de postfix: main.cf\n\n\nIl nous faut ajouter la r\u00e8gle correspondante dans la lsite des restrictions de main.cf. Bien afire attention de positionner \ncheck_policy_service\n APR\u00c8S \nreject_unauth_destination\n, sinon, votre serveur mail devient \nopenrelay\n!\n\n\nsmtpd_recipient_restrictions =\n ...\n reject_unauth_destination\n check_policy_service unix:private/policyd-spf\n ...\n\npolicyd-spf_time_limit = 3600\n\n\n\n\nRelancez \npostfix\n:\n\n\nservice postfix restart\n\n\n\n\nTest\n\n\nJe teste ma configuration sur les sites:\n\n\n\n\nMxtoolbox\n\n\nKitterman\n\n\nMail-tester\n\n\n\n\nLes tests ne fonctionnent pas ... en fait, cela vient de la config IPV6 du serveur. La configuration automatique avec privext 2 donne plusieurs adresses IPV6 \u00e0 la machine (avec le m\u00eame pr\u00e9fixe, bien s\u00fbr). Mais l'adresse de la machine ne correspond plus \u00e0 l'adresse de la machine d\u00e9clar\u00e9e dans bind. Et SPF ne peut plus fonctionner.\n\n\nLa solution a \u00e9t\u00e9 de configurer manuellement l'adresse IPV6 dans /etc/network/interfaces de la fa\u00e7on suivante:\n\n\niface enp2s0 inet6 static\naddress 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93\nnetmask 64\ngateway 2a01:e0a:54:c220:OOOO:0000:000:0001\n\n\n\n\nOn va aussi modifier la configuration de Postfix pour permettre l'envoi de messages de l'ext\u00e9rieur de la machine (uniquement les utilisateurs enregistr\u00e9s, bien s\u00fbr).\n\n\nJ'ai modifi\u00e9 /etc/postfix/main.cf de la fa\u00e7on suivante: j'ai ajout\u00e9 ceci au fichier:\n\n\nsmtpd_recipient_restrictions =\n permit_sasl_authenticated,\n permit_mynetworks,\n reject_unauth_destination,\n check_policy_service unix:private/policyd-spf\n\n\n\n\net comment\u00e9 les lignes correspondantes dans la section submission et smtps du fichier /etc/postfix/master.cf:\n\n\n# -o smtpd_sender_restrictions=$mua_sender_restrictions\n\n\n\n\nJ'ai simplement transf\u00e9r\u00e9 les restrictions \nsmtpd_sender_restrictions\n qui \u00e9taient dans main.cf dans master.cf.\n\n\nApr\u00e8s modifications, tout marche comme il faut, v\u00e9rification SPF comprise.\n\n\nroot@atom:/home/ericadmin# tail -f /var/log/mail.log\nMay 28 11:58:06 atom dovecot: imap-login: Login: user=<ericadmin>, method=PLAIN, rip=192.168.111.150, lip=192.168.111.240, mpid=1901, TLS, session=<I0V6J0FtWODAqG+W>\nMay 28 11:58:26 atom postfix/smtpd[1902]: connect from adara.yojik.eu[91.121.72.10]\nMay 28 11:58:26 atom 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>\nMay 28 11:58:26 atom postfix/smtpd[1902]: C701DD004F2: client=adara.yojik.eu[91.121.72.10]\nMay 28 11:58:26 atom postfix/cleanup[1908]: C701DD004F2: message-id=<4c621385-3822-cb78-9c1d-7e9f43c3fc52@yojik.eu>\nMay 28 11:58:26 atom postfix/qmgr[867]: C701DD004F2: from=<eric@yojik.eu>, size=1414, nrcpt=1 (queue active)\nMay 28 11:58:26 atom 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\nMay 28 11:58:26 atom 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)\nMay 28 11:58:26 atom postfix/qmgr[867]: C701DD004F2: removed\nMay 28 11:59:00 atom dovecot: imap-login: Login: user=<ericadmin>, method=PLAIN, rip=192.168.111.150, lip=192.168.111.240, mpid=1915, TLS, session=<FoqwKkFtduDAqG+W>\n\n\n\n\nLa ligne \nMay 28 11:43:12 atom policyd-spf[1830]: prepend Received-SPF: Pass (mailfrom) identity=mailfrom; \n montre que notre contr\u00f4le SPF fonctionne comme il faut.\n\n\nDKIM\n\n\nDKIM (DomainKeys Identified Mail) est un syst\u00e8me qui vous permet d'ajouter aux ent\u00eates de vos \u00e9mails une signature qui vous identifie et qui permet aux autres serveurs mails de la v\u00e9rifier. L'ent\u00eate peut \u00eatre configur\u00e9 pour garantir que le mail n'a pas \u00e9t\u00e9 modifi\u00e9 apr\u00e8s signature (on peut g\u00e9n\u00e9rer une clef qui signe tout ou partie du message, selon configuration)\n\n\nL'installation et la configuration de DKIM n\u00e9cessite 3 \u00e9tapes:\n\n\nConfiguration de DKIM\n\n\nNous commen\u00e7ons par l'installation de opendkim.\n\n\nroot@atom:/home/ericadmin# apt install opendkim\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\ndns-root-data liblua5.1-0 libmemcached11 libmemcachedutil2 libmilter1.0.1 libopendbx1 libopendbx1-sqlite3 libopendkim11 librbl1 libunbound2 libvbr2\nPaquets sugg\u00e9r\u00e9s :\n... etc ...\n\n\n\n\nUne fois install\u00e9, nous allons configurer opendkim: cela se fait dans le fichier /etc/opendkim.conf\n\n\nCr\u00e9ation des r\u00e9pertoires:\n\n\nmkdir -p /etc/opendkim/keys/yojik.net/\n\n\n\n\nPermissions:\n\n\nchmod u=rw,go=r /etc/opendkim.conf\nchown -R opendkim:opendkim /etc/opendkim\nchmod go-rw /etc/opendkim/keys\n\n\n\n\nUn fichier opendkim.conf enti\u00e8rement comment\u00e9 est disponible dans:\n\n\n\n\n/usr/share/doc/opendkim/examples\n\n\n\n\nVoici notre fichier de configuration; adaptez-le en fonction de votre domaine, bien s\u00fbr:\n\n\n# This is a basic configuration that can easily be adapted to suit a standard\n# installation. For more advanced options, see opendkim.conf(5) and/or\n# /usr/share/doc/opendkim/examples/opendkim.conf.sample.\n\n# Log to syslog\nSyslog yes\n# Required to use local socket with MTAs that access the socket as a non-\n# privileged user (e.g. Postfix)\n## UMask 002\n\n# Sign for example.com with key in /etc/mail/dkim.key using\n# selector '2007' (e.g. 2007._domainkey.example.com)\nDomain yojik.net\nKeyFile /etc/opendkim/keys/yojik.net/yojik.private\nSelector yojik\n\n# Commonly-used options; the commented-out versions show the defaults.\n#Canonicalization simple\n#Mode sv\n#SubDomains no\n#ADSPAction continue\n\n# Always oversign From (sign using actual From and a null From to prevent\n# malicious signatures header fields (From and/or others) between the signer\n# and the verifier. From is oversigned by default in the Debian pacakge\n# because it is often the identity key used by reputation systems and thus\n# somewhat security sensitive.\nOversignHeaders From\n\n# List domains to use for RFC 6541 DKIM Authorized Third-Party Signatures\n# (ATPS) (experimental)\n\n#ATPSDomains example.com\n\nAutoRestart Yes\nAutoRestartRate 10/1h\nUMask 002\nSyslog yes\nSyslogSuccess Yes\nLogWhy Yes\nCanonicalization relaxed/simple\n\nExternalIgnoreList refile:/etc/opendkim/TrustedHosts\nInternalHosts refile:/etc/opendkim/TrustedHosts\nKeyTable refile:/etc/opendkim/KeyTable\nSigningTable refile:/etc/opendkim/SigningTable\n\nMode sv\nPidFile /var/run/opendkim/opendkim.pid\nSignatureAlgorithm rsa-sha256\n\nUserID opendkim:opendkim\n\nSocket inet:12301@localhost\n\n\n\n\nPostix acc\u00e9dera \u00e0 opendkim \u00e0 travers le port 12301.\n\n\nIl nous reste 3 fichiers \u00e0 configurer/cr\u00e9er, ainsi que g\u00e9n\u00e9rer les clefs priv\u00e9es et publiques.\n\n\n\n\n\n\n/etc/opendkim/SigningTable\n\n\nCe fichier ne contient qu'une seule ligne:\n\n\n\n\n*@yojik.net yojik._domainkey.yojik.net\n\n\n\n\n\n\n\n\n/etc/opendkim/KeyTable\n\n\nCe fichier ne contient qu'une seule ligne:\n\n\n\n\nyojik._domainkey.yojik.net yojik.net:yojik:/etc/opendkim/keys/yojik.net/yojik.private\n\n\n\n\n\n\n\n\n/etc/opendkim/TrustedHosts\n\n\n\n\n127.0.0.1\n\n\n::1\n\n\nlocalhost\n\n\nyojik.net\n\n\n\n\nNe pas modifier les 3 premi\u00e8res lignes qui sont n\u00e9cessaires \u00e0 opendkim ...\n\n\n\n\n\n\nCr\u00e9ation des clefs publiques et priv\u00e9es\n\n\n\n\ncd /etc/opendkim/keys/yojik.net/\n\n\nopendkim-genkey -b 2048 -h rsa-sha256 -r -s yojik -d yojik.net -v\n\n\n\n\nUne erreur appara\u00eet: il nous faut installer opendkim-tools:\n\n\n\n\napt install opendkim-tools\n\n\n\n\n2 fichiers sont cr\u00e9es: la clef publique et la clef priv\u00e9e. Nous allons renommer ces 2 clefs.\n\n\n\n\nmv mv 201805.private yojik.private\n\n\nmv 201805.txt yojik.txt\n\n\n\n\nNote du 9 d\u00e9cembre 2018: les fichiers sont cr\u00e9es avec les noms corrects; pas besoin de les renommer.\n On r\u00e9applique la modification des permissions:\n\n\n\n\n\n\nroot@atom:/etc/opendkim/keys# cd /etc\nroot@atom:/etc# chown -R opendkim:opendkim /etc/opendkim\nroot@atom:/etc# chmod -R go-rw /etc/opendkim/keys\nroot@atom:/etc#\n\n\n\n\nOn relance opendkim pour voir s'il y a des erreurs:\n\n\n\n\nsystemctl restart opendkim\n\n\n\n\nOn lance:\n\n\n\n\nnetstat -tlnp\n\n\n\n\net on voit la ligne:\n\n\n\n\ntcp 0 0 127.0.0.1:12301 0.0.0.0:* LISTEN 2395/opendkim\n\n\n\n\nC'est bon .. le service est en place.\n\n\nAjout de DKIM \u00e0 Postix\n\n\nOn va rajouter la gestion de DKIM \u00e0 Postfix dans le fichier /etc/postfix/main.cf\n\n\nOn ajoute les lignes suivantes:\n\n\n\n\nmilter_default_action = accept\n\n\nmilter_protocol = 2\n\n\nsmtpd_milters = inet:localhost:12301\n\n\nnon_smtpd_milters = inet:localhost:12301\n\n\n\n\nOn relance Postfix par:\n\n\n\n\nservice postfix restart\n\n\n\n\nAjout d'un enregistrement DNS\n\n\nOn ajoute la partie entre double-quotes du fichier /etc/opendkim/keys/yojik.net/yojik.txt \u00e0 la ligne suivante:\n\n\nAttention \u00e0 la syntaxe: ne pas oublier le \".\" derri\u00e8re yojik.net!\n\n\n\n\nyojik._domainkey.yojik.net.<>IN<->TXT<>( \"v=DKIM1; h=rsa-sha256; k=rsa; s=email; p=;\")\n\n\n\n\nAjouter la clef derri\u00e8re p= (supprimer les doubles quotes du d\u00e9but, milieu et fin de clef: ex:\n \"ljjoj\" \"dfjj\")\n\n\nTest\n\n\n> opendkim-testkey -d yojik.net -s yojik\n\n\n\nSi votre clef est de longueur 2048, il va falloir la d\u00e9couper ... et utiliser le format \"multi-lignes\" comme ce qui suit:\n\n\nNotes\n\n\n\n\nUne chose \u00e0 v\u00e9rifier: le point \".\" \u00e0 la fin du nom de domaine (premi\u00e8re partie de la ligne). Les messages d'erreur style \"erreur de syntaxe\" n'aident pas beaucoup ...\n\n\n\n\nCette fois-ci, tout est bon.\n\n\n\n\nJ'ai adopt\u00e9 une technique pour coller ma clef dans l'enregistrement dns: je fais un:\n\n\n\n\n\n\ncat fichier_de_zone fichier_de_clef > fichier_de_zone.new\n\n\n\n\nJ'\u00e9dite le fichier (les retours-chariot etc ...) et je remplace le fichier original (que je sauve d'abord) en incr\u00e9mentant le numero de s\u00e9rie dans le fichier.\n\n\nTest\n\n\nOn envoie un message pour voir s'il est bien sign\u00e9.\n\n\nJe red\u00e9marre le serveur et j'envoie un message.\n\n\nVoil\u00e0 les r\u00e9sultats:\n\n\n> ARC-Authentication-Results: i=1; mx.google.com;\n> dkim=pass header.i=@yojik.net header.s=yojik header.b=CE0b13ii;\n> spf=pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > smtp.mailfrom=ericadmin@yojik.net\n> Received-SPF: pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > client-ip=82.64.48.5;\n> Authentication-Results: mx.google.com;\n> dkim=pass header.i=@yojik.net header.s=yojik header.b=CE0b13ii;\n> spf=pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > smtp.mailfrom=ericadmin@yojik.net\n> Received: from [192.168.111.150] (unknown [192.168.111.150])\n> by atom.yojik.net (Postfix) with ESMTPSA id AFB9ED004F3\n> for <ericounet26200@gmail.com>; Thu, 31 May 2018 12:09:41 +0200 (CEST)\n> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yojik.net; s=yojik;\n> t=1527761381; bh=ay9Odp/rKTenfDlpDmHqBM+YFfCITM3u/keXU6iwx20=;\n> h=To:From:Subject:Date:From;\n> b=CE0b13iiZgEQgrd7EngBovulGeU6QnSU/cKzia42u9s9B+S/dxUsm1u7JRjBrTLLg\n> /c/uW05pdE5QS+9y3dvZtji0hogr0H87nRpZE7QBZaFLpVWGpUTukRsJ47JskO+Cwi\n> 4cRYjeyUOLTY8Gc8uQaiS79CDko8E107fsfoUGV8=\n\n\n\n\nTout est bon ....\n\n\nIL est recommand\u00e9 de changer les clefs DKIM tous les mois!\n ... Je pense qu'il va falloir cr\u00e9er des scripts pour toute la maintenance des clefs et de leur renouvellement.\n\n\nADSP\n\n\nAuthor Domain Signing Practices (ADSP)Permalink (technique obsol\u00e8te ...)\n\n\nNous allons rajouter un enregistrement DNS qui va indiquer que tous les \u00e9mails issus par yojik.net doivent \u00eatre sign\u00e9s par DKIM. C'est une s\u00e9curit\u00e9 suppl\u00e9mentaire.\n\n\nLa syntaxe est assez simple:\n\n\n\n\n_adsp._domainkey.yojik.net. IN TXT \"dkim=all\"\n\n\n\n\nLe param\u00e8tre dkim accepte d'autres valeurs moins strictes, mais j'ai choisi la plus stricte.\n\n\nNe pas oublier d'incr\u00e9menter le num\u00e9ro de s\u00e9rie du fichier de zone apr\u00e8s modification.\n\n\nRechargez bind.\n\n\n\n\nservice bind9 restart (ou reload)\n\n\n\n\nTout est OK.\n\n\nNote: ADSP et Dmarc remplissent le m\u00eame r\u00f4le. Apr\u00e8s consultation d'experts, ADSP est \"obsol\u00e8te\". Nous allons donc enlever ce service (commenter la ligne DNS) et configurer DMARC.\n\n\nDMARC\n\n\nDmarc (Domain Message Authentication, Reporting & Conformance) pr\u00e9cise les politiques d'envoi des messages issus du domaine concern\u00e9 (gr\u00e2ce \u00e0 DKIM et SPF), indique quelle politique utiliser si les conditions ne sont pas respect\u00e9es (validations SPF ou DKIM , et peut \u00e9ventuellement demander un rapport en cas d'\u00e9chec de livraison du message.\n\n\nLa mise en place de DMARC n\u00e9cessite de configurer/installer opendmarc, de mettre en place l'enregistrement TXT dans le fichier de zone DNS et de configurer le \nhook\n dans Postfix.\n\n\nInstallation de Opendmarc\n\n\nroot@atom:/home/ericadmin# apt install opendmarc\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n libdbd-mysql-perl libdbi-perl libencode-locale-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libopendbx1-mysql libopendmarc2\n libspf2-2 libtimedate-perl liburi-perl publicsuffix\netc ...\n\nParam\u00e9trage de libdbd-mysql-perl (4.041-2) ...\nParam\u00e9trage de opendmarc (1.3.2-2+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u3) ...\n\n\n\n\nVoil\u00e0, opendmarc est install\u00e9. Passons \u00e0 sa configuration.\n\n\nConfiguration de Opendmarc\n\n\n2 fichiers sont \u00e0 configurer.\n\n\nLa configuration se fait dans /etc/opendmarc.conf et dans /etc/default/opendmarc:\n\n\nComme d'habitude, faite une copie de sauvegarde du fichier d'origine avant modification.\n\n\nFichier /etc/opendmarc.conf\n:\n\n\n# This is a basic configuration that can easily be adapted to suit a standard\n# installation. For more advanced options, see opendkim.conf(5) and/or\n# /usr/share/doc/opendmarc/examples/opendmarc.conf.sample.\n\n## AuthservID (string)\n## <-->defaults to MTA name\n#\n# AuthservID name\n\n## FailureReports { true | false }\n## <-->default \"false\"\n##\n# FailureReports false\n\nPidFile /var/run/opendmarc/opendmarc.pid\n\n## RejectFailures { true | false }\n## <-->default \"false\"\n##\nRejectFailures false\n\n## Socket socketspec\n## <-->default (none)\n##\n## Specifies the socket that should be established by the filter to receive\n## connections from sendmail(8) in order to provide service. socketspec is\n## in one of two forms: local:path, which creates a UNIX domain socket at\n## the specified path, or inet:port[@host] or inet6:port[@host] which creates\n## a TCP socket on the specified port for the appropriate protocol family.\n## If the host is not given as either a hostname or an IP address, the\n## socket will be listening on all interfaces. This option is mandatory\n## either in the configuration file or on the command line. If an IP\n## address is used, it must be enclosed in square brackets.\n#\n# Socket local:/var/run/opendmarc/opendmarc.sock\nSocket inet:54444@localhost\n\n## Syslog { true | false }\n## <-->default \"false\"\n##\n## Log via calls to syslog(3) any interesting activity.\n#\nSyslog true\n\n## SyslogFacility facility-name\n## <-->default \"mail\"\n##\n## Log via calls to syslog(3) using the named facility. The facility names\n## are the same as the ones allowed in syslog.conf(5).\n#\n# SyslogFacility mail\n\n## TrustedAuthservIDs string\n## <-->default HOSTNAME\n##\n## Specifies one or more \"authserv-id\" values to trust as relaying true\n## upstream DKIM and SPF results. The default is to use the name of\n## the MTA processing the message. To specify a list, separate each entry\n## with a comma. The key word \"HOSTNAME\" will be replaced by the name of\n## the host running the filter as reported by the gethostname(3) function.\n#\n# TrustedAuthservIDs HOSTNAME\n\n\n## UMask mask\n## <-->default (none)\n##\n## Requests a specific permissions mask to be used for file creation. This\n## only really applies to creation of the socket when Socket specifies a\n## UNIX domain socket, and to the HistoryFile and PidFile (if any); temporary\n## files are normally created by the mkstemp(3) function that enforces a\n## specific file mode on creation regardless of the process umask. See\n## umask(2) for more information.\n#\nUMask 0002\n\n## UserID user[:group]\n## <-->default (none)\n##\n## Attempts to become the specified userid before starting operations.\n## The process will be assigned all of the groups and primary group ID of\n## the named userid unless an alternate group is specified.\n#\nUserID opendmarc\n\n## Path to system copy of PSL (needed to determine organizational domain)\n#\nPublicSuffixList /usr/share/publicsuffix/\n\nIgnoreHosts /etc/opendmarc/ignore.hosts\nHistoryFile /var/run/opendmarc/opendmarc.dat\n#for testing:\nSoftwareHeader true\n\n\n\n\nOn cr\u00e9e le r\u00e9pertoire suivant: /etc/opendmarc et on cr\u00e9e un fichier qui va contenir la liste des machines auxquelles vous avez confiance.\n\n\nroot@atom:/etc# mkdir /etc/opendmarc\n\n\n\n\nOn cr\u00e9e le fichier \n/etc/opendmarc/ignore.hosts\n avec le contenu suivant (le fichier ignore.hosts a \u00e9t\u00e9 d\u00e9clar\u00e9 dans le fichier /etc/opendmarc.conf):\n\n\n\n\nlocalhost\n192.168.111.0/24\n\n\n\n\nLes mails envoy\u00e9s par les machines list\u00e9es dans ce fichier ne seront pas test\u00e9s. Ici, le serveur de mail lui-m\u00eame et les machines du r\u00e9seau local familial.\n\n\nOn ajoute la ligne suivante \u00e0 /etc/default/opendmarc:\n\n\n\n\nSOCKET=inet:54444@localhost\n\n\n\n\nNotre daemon \u00e9coutera sur le port 54444. On relance opendmarc par la commande suivante:\n\n\n\n\nservice opendmarc restart\n\n\n\n\nMise en place du hook dans postfix:\n\n\nNous modifierons les 2 lignes suivantes dans le fichier: /etc/postfix/main.cf:\n\n\n\n\nsmtpd_milters = inet:localhost:12301,inet:localhost:54444\nnon_smtpd_milters = inet:localhost:12301,inet:localhost:54444\n\n\n\n\nOn recharge postfix (comme d'habitude ...)\nConfiguration de l'enregistrement DNS dans le fichier de zone (ne pas oublier d'incr\u00e9menter le compteur!):\n\n\n\n\n_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\")\n\n\n\n\nTest d'envoi de messages:\n\n\n\n\nAuthentication-Results: atom.yojik.net; dmarc=\npass\n\n\n\n\n\u00c7a fonctionne :)",
  596. "title": "Ajout des enregistrements SPF et DKIM au fichier de zone DNS"
  597. },
  598. {
  599. "location": "/12-douze/#spf-dkim-opendmarc",
  600. "text": "",
  601. "title": "SPF, DKIM, OPENDMARC"
  602. },
  603. {
  604. "location": "/12-douze/#spf",
  605. "text": "",
  606. "title": "SPF"
  607. },
  608. {
  609. "location": "/12-douze/#ajout-des-enregistrements-spf-au-fichier-de-zone-dns",
  610. "text": "Nous allons maintenant ajouter un enregistrement spf \u00e0 notre configuration. SPF est un enregistrement qui d\u00e9clare quelle machine est responsable et autoris\u00e9e \u00e0 envoyer des mails pour notre domaine. Cela permet d'\u00e9viter que nos mails soient consid\u00e9r\u00e9s comme du spam . La syntaxe de la ligne \u00e0 ajouter est assez simple. Il existe des g\u00e9n\u00e9rateurs de ligne SPF, comme: spfwizard ou mxtoolbox . Le site openspf contient tout ce qu'il faut savoir \u00e0 propos de SPF, syntaxe, param\u00e8tres etc ... Pour mon serveur, j'ai choisi une politique stricte de rejet des mails qui ne viennent pas d'une source autoris\u00e9e. Voici la ligne \u00e0 rajouter au fichier de zone. C'est le param\u00e8tre \"-all\" qui d\u00e9termine la politique (de rejet ici). Nous aurions pu mettre ~all pour une politique moins stricte. (notez le ~ \u00e0 la place du - ) ; spf\nyojik.net. IN TXT \"v=spf1 a mx mx:adara.yojik.net a:adara.yojik.net -all\"\nyojik.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 \u00e0 configurer postfix pour prendre en compte cet enregistrement et effectuer les validations.",
  611. "title": "Ajout des enregistrements spf au fichier de zone DNS"
  612. },
  613. {
  614. "location": "/12-douze/#installation-des-logiciels-necessaires",
  615. "text": "root@atom:/etc/bind# apt-get install postfix-policyd-spf-python\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n python3-authres python3-dns python3-spf\nPaquets sugg\u00e9r\u00e9s :\n python3-yaml\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n postfix-policyd-spf-python python3-authres python3-dns python3-spf\n0 mis \u00e0 jour, 4 nouvellement install\u00e9s, 0 \u00e0 enlever et 12 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 153 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 494 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main amd64 python3-dns all 3.1.1-1 [27,5 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main amd64 python3-authres all 0.900-1 [17,5 kB]\nR\u00e9ception de:3 http://deb.debian.org/debian stretch/main amd64 python3-spf all 2.0.12t-3 [64,1 kB]\nR\u00e9ception de:4 http://deb.debian.org/debian stretch/main amd64 postfix-policyd-spf-python all 2.0.1-1 [43,8 kB]\n153 ko r\u00e9ceptionn\u00e9s en 0s (1 533 ko/s)\nS\u00e9lection du paquet python3-dns pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 40435 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../python3-dns_3.1.1-1_all.deb ...\nD\u00e9paquetage de python3-dns (3.1.1-1) ...\nS\u00e9lection du paquet python3-authres pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../python3-authres_0.900-1_all.deb ...\nD\u00e9paquetage de python3-authres (0.900-1) ...\nS\u00e9lection du paquet python3-spf pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../python3-spf_2.0.12t-3_all.deb ...\nD\u00e9paquetage de python3-spf (2.0.12t-3) ...\nS\u00e9lection du paquet postfix-policyd-spf-python pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../postfix-policyd-spf-python_2.0.1-1_all.deb ...\nD\u00e9paquetage de postfix-policyd-spf-python (2.0.1-1) ...\nParam\u00e9trage de python3-authres (0.900-1) ...\nParam\u00e9trage de python3-dns (3.1.1-1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de python3-spf (2.0.12t-3) ...\nParam\u00e9trage de postfix-policyd-spf-python (2.0.1-1) ...\nroot@atom:/etc/bind#",
  616. "title": "Installation des logiciels n\u00e9cessaires"
  617. },
  618. {
  619. "location": "/12-douze/#configuration-de-postfix-mastercf",
  620. "text": "Dans le fichier /etc/postfix/master.cf, il faut rajouter le service suivant: policyd-spf unix - n n - 0 spawn\n user=policyd-spf argv=/usr/bin/policyd-spf",
  621. "title": "Configuration de postfix: master.cf"
  622. },
  623. {
  624. "location": "/12-douze/#configuration-de-postfix-maincf",
  625. "text": "Il nous faut ajouter la r\u00e8gle correspondante dans la lsite des restrictions de main.cf. Bien afire attention de positionner check_policy_service APR\u00c8S reject_unauth_destination , sinon, votre serveur mail devient openrelay ! smtpd_recipient_restrictions =\n ...\n reject_unauth_destination\n check_policy_service unix:private/policyd-spf\n ...\n\npolicyd-spf_time_limit = 3600 Relancez postfix : service postfix restart",
  626. "title": "Configuration de postfix: main.cf"
  627. },
  628. {
  629. "location": "/12-douze/#test",
  630. "text": "Je teste ma configuration sur les sites: Mxtoolbox Kitterman Mail-tester 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 \u00e0 la machine (avec le m\u00eame pr\u00e9fixe, bien s\u00fbr). Mais l'adresse de la machine ne correspond plus \u00e0 l'adresse de la machine d\u00e9clar\u00e9e dans bind. Et SPF ne peut plus fonctionner. La solution a \u00e9t\u00e9 de configurer manuellement l'adresse IPV6 dans /etc/network/interfaces de la fa\u00e7on suivante: iface enp2s0 inet6 static\naddress 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93\nnetmask 64\ngateway 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\u00e9rieur de la machine (uniquement les utilisateurs enregistr\u00e9s, bien s\u00fbr). J'ai modifi\u00e9 /etc/postfix/main.cf de la fa\u00e7on suivante: j'ai ajout\u00e9 ceci au fichier: smtpd_recipient_restrictions =\n permit_sasl_authenticated,\n permit_mynetworks,\n reject_unauth_destination,\n check_policy_service unix:private/policyd-spf et comment\u00e9 les lignes correspondantes dans la section submission et smtps du fichier /etc/postfix/master.cf: # -o smtpd_sender_restrictions=$mua_sender_restrictions J'ai simplement transf\u00e9r\u00e9 les restrictions smtpd_sender_restrictions qui \u00e9taient dans main.cf dans master.cf. Apr\u00e8s modifications, tout marche comme il faut, v\u00e9rification SPF comprise. root@atom:/home/ericadmin# tail -f /var/log/mail.log\nMay 28 11:58:06 atom dovecot: imap-login: Login: user=<ericadmin>, method=PLAIN, rip=192.168.111.150, lip=192.168.111.240, mpid=1901, TLS, session=<I0V6J0FtWODAqG+W>\nMay 28 11:58:26 atom postfix/smtpd[1902]: connect from adara.yojik.eu[91.121.72.10]\nMay 28 11:58:26 atom 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>\nMay 28 11:58:26 atom postfix/smtpd[1902]: C701DD004F2: client=adara.yojik.eu[91.121.72.10]\nMay 28 11:58:26 atom postfix/cleanup[1908]: C701DD004F2: message-id=<4c621385-3822-cb78-9c1d-7e9f43c3fc52@yojik.eu>\nMay 28 11:58:26 atom postfix/qmgr[867]: C701DD004F2: from=<eric@yojik.eu>, size=1414, nrcpt=1 (queue active)\nMay 28 11:58:26 atom 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\nMay 28 11:58:26 atom 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)\nMay 28 11:58:26 atom postfix/qmgr[867]: C701DD004F2: removed\nMay 28 11:59:00 atom 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 atom policyd-spf[1830]: prepend Received-SPF: Pass (mailfrom) identity=mailfrom; montre que notre contr\u00f4le SPF fonctionne comme il faut.",
  631. "title": "Test"
  632. },
  633. {
  634. "location": "/12-douze/#dkim",
  635. "text": "DKIM (DomainKeys Identified Mail) est un syst\u00e8me qui vous permet d'ajouter aux ent\u00eates de vos \u00e9mails une signature qui vous identifie et qui permet aux autres serveurs mails de la v\u00e9rifier. L'ent\u00eate peut \u00eatre configur\u00e9 pour garantir que le mail n'a pas \u00e9t\u00e9 modifi\u00e9 apr\u00e8s signature (on peut g\u00e9n\u00e9rer une clef qui signe tout ou partie du message, selon configuration) L'installation et la configuration de DKIM n\u00e9cessite 3 \u00e9tapes:",
  636. "title": "DKIM"
  637. },
  638. {
  639. "location": "/12-douze/#configuration-de-dkim",
  640. "text": "Nous commen\u00e7ons par l'installation de opendkim. root@atom:/home/ericadmin# apt install opendkim\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\ndns-root-data liblua5.1-0 libmemcached11 libmemcachedutil2 libmilter1.0.1 libopendbx1 libopendbx1-sqlite3 libopendkim11 librbl1 libunbound2 libvbr2\nPaquets sugg\u00e9r\u00e9s :\n... etc ... Une fois install\u00e9, nous allons configurer opendkim: cela se fait dans le fichier /etc/opendkim.conf Cr\u00e9ation des r\u00e9pertoires: mkdir -p /etc/opendkim/keys/yojik.net/ Permissions: chmod u=rw,go=r /etc/opendkim.conf\nchown -R opendkim:opendkim /etc/opendkim\nchmod go-rw /etc/opendkim/keys Un fichier opendkim.conf enti\u00e8rement comment\u00e9 est disponible dans: /usr/share/doc/opendkim/examples Voici notre fichier de configuration; adaptez-le en fonction de votre domaine, bien s\u00fbr: # This is a basic configuration that can easily be adapted to suit a standard\n# installation. For more advanced options, see opendkim.conf(5) and/or\n# /usr/share/doc/opendkim/examples/opendkim.conf.sample.\n\n# Log to syslog\nSyslog yes\n# Required to use local socket with MTAs that access the socket as a non-\n# privileged user (e.g. Postfix)\n## UMask 002\n\n# Sign for example.com with key in /etc/mail/dkim.key using\n# selector '2007' (e.g. 2007._domainkey.example.com)\nDomain yojik.net\nKeyFile /etc/opendkim/keys/yojik.net/yojik.private\nSelector yojik\n\n# Commonly-used options; the commented-out versions show the defaults.\n#Canonicalization simple\n#Mode sv\n#SubDomains no\n#ADSPAction continue\n\n# Always oversign From (sign using actual From and a null From to prevent\n# malicious signatures header fields (From and/or others) between the signer\n# and the verifier. From is oversigned by default in the Debian pacakge\n# because it is often the identity key used by reputation systems and thus\n# somewhat security sensitive.\nOversignHeaders From\n\n# List domains to use for RFC 6541 DKIM Authorized Third-Party Signatures\n# (ATPS) (experimental)\n\n#ATPSDomains example.com\n\nAutoRestart Yes\nAutoRestartRate 10/1h\nUMask 002\nSyslog yes\nSyslogSuccess Yes\nLogWhy Yes\nCanonicalization relaxed/simple\n\nExternalIgnoreList refile:/etc/opendkim/TrustedHosts\nInternalHosts refile:/etc/opendkim/TrustedHosts\nKeyTable refile:/etc/opendkim/KeyTable\nSigningTable refile:/etc/opendkim/SigningTable\n\nMode sv\nPidFile /var/run/opendkim/opendkim.pid\nSignatureAlgorithm rsa-sha256\n\nUserID opendkim:opendkim\n\nSocket inet:12301@localhost Postix acc\u00e9dera \u00e0 opendkim \u00e0 travers le port 12301. Il nous reste 3 fichiers \u00e0 configurer/cr\u00e9er, ainsi que g\u00e9n\u00e9rer les clefs priv\u00e9es et publiques. /etc/opendkim/SigningTable Ce fichier ne contient qu'une seule ligne: *@yojik.net yojik._domainkey.yojik.net /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 /etc/opendkim/TrustedHosts 127.0.0.1 ::1 localhost yojik.net Ne pas modifier les 3 premi\u00e8res lignes qui sont n\u00e9cessaires \u00e0 opendkim ... Cr\u00e9ation des clefs publiques et priv\u00e9es cd /etc/opendkim/keys/yojik.net/ opendkim-genkey -b 2048 -h rsa-sha256 -r -s yojik -d yojik.net -v Une erreur appara\u00eet: il nous faut installer opendkim-tools: apt install opendkim-tools 2 fichiers sont cr\u00e9es: la clef publique et la clef priv\u00e9e. Nous allons renommer ces 2 clefs. mv mv 201805.private yojik.private mv 201805.txt yojik.txt Note du 9 d\u00e9cembre 2018: les fichiers sont cr\u00e9es avec les noms corrects; pas besoin de les renommer.\n On r\u00e9applique la modification des permissions: root@atom:/etc/opendkim/keys# cd /etc\nroot@atom:/etc# chown -R opendkim:opendkim /etc/opendkim\nroot@atom:/etc# chmod -R go-rw /etc/opendkim/keys\nroot@atom:/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.",
  641. "title": "Configuration de DKIM"
  642. },
  643. {
  644. "location": "/12-douze/#ajout-de-dkim-a-postix",
  645. "text": "On va rajouter la gestion de DKIM \u00e0 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",
  646. "title": "Ajout de DKIM \u00e0 Postix"
  647. },
  648. {
  649. "location": "/12-douze/#ajout-dun-enregistrement-dns",
  650. "text": "On ajoute la partie entre double-quotes du fichier /etc/opendkim/keys/yojik.net/yojik.txt \u00e0 la ligne suivante: Attention \u00e0 la syntaxe: ne pas oublier le \".\" derri\u00e8re yojik.net! yojik._domainkey.yojik.net.<>IN<->TXT<>( \"v=DKIM1; h=rsa-sha256; k=rsa; s=email; p=;\") Ajouter la clef derri\u00e8re p= (supprimer les doubles quotes du d\u00e9but, milieu et fin de clef: ex:\n \"ljjoj\" \"dfjj\")",
  651. "title": "Ajout d'un enregistrement DNS"
  652. },
  653. {
  654. "location": "/12-douze/#test_1",
  655. "text": "> opendkim-testkey -d yojik.net -s yojik Si votre clef est de longueur 2048, il va falloir la d\u00e9couper ... et utiliser le format \"multi-lignes\" comme ce qui suit:",
  656. "title": "Test"
  657. },
  658. {
  659. "location": "/12-douze/#notes",
  660. "text": "Une chose \u00e0 v\u00e9rifier: le point \".\" \u00e0 la fin du nom de domaine (premi\u00e8re 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\u00e9 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'\u00e9dite le fichier (les retours-chariot etc ...) et je remplace le fichier original (que je sauve d'abord) en incr\u00e9mentant le numero de s\u00e9rie dans le fichier.",
  661. "title": "Notes"
  662. },
  663. {
  664. "location": "/12-douze/#test_2",
  665. "text": "On envoie un message pour voir s'il est bien sign\u00e9. Je red\u00e9marre le serveur et j'envoie un message. Voil\u00e0 les r\u00e9sultats: > ARC-Authentication-Results: i=1; mx.google.com;\n> dkim=pass header.i=@yojik.net header.s=yojik header.b=CE0b13ii;\n> spf=pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > smtp.mailfrom=ericadmin@yojik.net\n> Received-SPF: pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > client-ip=82.64.48.5;\n> Authentication-Results: mx.google.com;\n> dkim=pass header.i=@yojik.net header.s=yojik header.b=CE0b13ii;\n> spf=pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > smtp.mailfrom=ericadmin@yojik.net\n> Received: from [192.168.111.150] (unknown [192.168.111.150])\n> by atom.yojik.net (Postfix) with ESMTPSA id AFB9ED004F3\n> for <ericounet26200@gmail.com>; Thu, 31 May 2018 12:09:41 +0200 (CEST)\n> DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=yojik.net; s=yojik;\n> t=1527761381; bh=ay9Odp/rKTenfDlpDmHqBM+YFfCITM3u/keXU6iwx20=;\n> h=To:From:Subject:Date:From;\n> b=CE0b13iiZgEQgrd7EngBovulGeU6QnSU/cKzia42u9s9B+S/dxUsm1u7JRjBrTLLg\n> /c/uW05pdE5QS+9y3dvZtji0hogr0H87nRpZE7QBZaFLpVWGpUTukRsJ47JskO+Cwi\n> 4cRYjeyUOLTY8Gc8uQaiS79CDko8E107fsfoUGV8= Tout est bon .... IL est recommand\u00e9 de changer les clefs DKIM tous les mois! ... Je pense qu'il va falloir cr\u00e9er des scripts pour toute la maintenance des clefs et de leur renouvellement.",
  666. "title": "Test"
  667. },
  668. {
  669. "location": "/12-douze/#adsp",
  670. "text": "Author Domain Signing Practices (ADSP)Permalink (technique obsol\u00e8te ...) Nous allons rajouter un enregistrement DNS qui va indiquer que tous les \u00e9mails issus par yojik.net doivent \u00eatre sign\u00e9s par DKIM. C'est une s\u00e9curit\u00e9 suppl\u00e9mentaire. La syntaxe est assez simple: _adsp._domainkey.yojik.net. IN TXT \"dkim=all\" Le param\u00e8tre dkim accepte d'autres valeurs moins strictes, mais j'ai choisi la plus stricte. Ne pas oublier d'incr\u00e9menter le num\u00e9ro de s\u00e9rie du fichier de zone apr\u00e8s modification. Rechargez bind. service bind9 restart (ou reload) Tout est OK. Note: ADSP et Dmarc remplissent le m\u00eame r\u00f4le. Apr\u00e8s consultation d'experts, ADSP est \"obsol\u00e8te\". Nous allons donc enlever ce service (commenter la ligne DNS) et configurer DMARC.",
  671. "title": "ADSP"
  672. },
  673. {
  674. "location": "/12-douze/#dmarc",
  675. "text": "Dmarc (Domain Message Authentication, Reporting & Conformance) pr\u00e9cise les politiques d'envoi des messages issus du domaine concern\u00e9 (gr\u00e2ce \u00e0 DKIM et SPF), indique quelle politique utiliser si les conditions ne sont pas respect\u00e9es (validations SPF ou DKIM , et peut \u00e9ventuellement demander un rapport en cas d'\u00e9chec de livraison du message. La mise en place de DMARC n\u00e9cessite de configurer/installer opendmarc, de mettre en place l'enregistrement TXT dans le fichier de zone DNS et de configurer le hook dans Postfix.",
  676. "title": "DMARC"
  677. },
  678. {
  679. "location": "/12-douze/#installation-de-opendmarc",
  680. "text": "root@atom:/home/ericadmin# apt install opendmarc\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n libdbd-mysql-perl libdbi-perl libencode-locale-perl libhttp-date-perl libhttp-message-perl libio-html-perl liblwp-mediatypes-perl libopendbx1-mysql libopendmarc2\n libspf2-2 libtimedate-perl liburi-perl publicsuffix\netc ...\n\nParam\u00e9trage de libdbd-mysql-perl (4.041-2) ...\nParam\u00e9trage de opendmarc (1.3.2-2+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u3) ... Voil\u00e0, opendmarc est install\u00e9. Passons \u00e0 sa configuration.",
  681. "title": "Installation de Opendmarc"
  682. },
  683. {
  684. "location": "/12-douze/#configuration-de-opendmarc",
  685. "text": "2 fichiers sont \u00e0 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 : # This is a basic configuration that can easily be adapted to suit a standard\n# installation. For more advanced options, see opendkim.conf(5) and/or\n# /usr/share/doc/opendmarc/examples/opendmarc.conf.sample.\n\n## AuthservID (string)\n## <-->defaults to MTA name\n#\n# AuthservID name\n\n## FailureReports { true | false }\n## <-->default \"false\"\n##\n# FailureReports false\n\nPidFile /var/run/opendmarc/opendmarc.pid\n\n## RejectFailures { true | false }\n## <-->default \"false\"\n##\nRejectFailures false\n\n## Socket socketspec\n## <-->default (none)\n##\n## Specifies the socket that should be established by the filter to receive\n## connections from sendmail(8) in order to provide service. socketspec is\n## in one of two forms: local:path, which creates a UNIX domain socket at\n## the specified path, or inet:port[@host] or inet6:port[@host] which creates\n## a TCP socket on the specified port for the appropriate protocol family.\n## If the host is not given as either a hostname or an IP address, the\n## socket will be listening on all interfaces. This option is mandatory\n## either in the configuration file or on the command line. If an IP\n## address is used, it must be enclosed in square brackets.\n#\n# Socket local:/var/run/opendmarc/opendmarc.sock\nSocket inet:54444@localhost\n\n## Syslog { true | false }\n## <-->default \"false\"\n##\n## Log via calls to syslog(3) any interesting activity.\n#\nSyslog true\n\n## SyslogFacility facility-name\n## <-->default \"mail\"\n##\n## Log via calls to syslog(3) using the named facility. The facility names\n## are the same as the ones allowed in syslog.conf(5).\n#\n# SyslogFacility mail\n\n## TrustedAuthservIDs string\n## <-->default HOSTNAME\n##\n## Specifies one or more \"authserv-id\" values to trust as relaying true\n## upstream DKIM and SPF results. The default is to use the name of\n## the MTA processing the message. To specify a list, separate each entry\n## with a comma. The key word \"HOSTNAME\" will be replaced by the name of\n## the host running the filter as reported by the gethostname(3) function.\n#\n# TrustedAuthservIDs HOSTNAME\n\n\n## UMask mask\n## <-->default (none)\n##\n## Requests a specific permissions mask to be used for file creation. This\n## only really applies to creation of the socket when Socket specifies a\n## UNIX domain socket, and to the HistoryFile and PidFile (if any); temporary\n## files are normally created by the mkstemp(3) function that enforces a\n## specific file mode on creation regardless of the process umask. See\n## umask(2) for more information.\n#\nUMask 0002\n\n## UserID user[:group]\n## <-->default (none)\n##\n## Attempts to become the specified userid before starting operations.\n## The process will be assigned all of the groups and primary group ID of\n## the named userid unless an alternate group is specified.\n#\nUserID opendmarc\n\n## Path to system copy of PSL (needed to determine organizational domain)\n#\nPublicSuffixList /usr/share/publicsuffix/\n\nIgnoreHosts /etc/opendmarc/ignore.hosts\nHistoryFile /var/run/opendmarc/opendmarc.dat\n#for testing:\nSoftwareHeader true On cr\u00e9e le r\u00e9pertoire suivant: /etc/opendmarc et on cr\u00e9e un fichier qui va contenir la liste des machines auxquelles vous avez confiance. root@atom:/etc# mkdir /etc/opendmarc On cr\u00e9e le fichier /etc/opendmarc/ignore.hosts avec le contenu suivant (le fichier ignore.hosts a \u00e9t\u00e9 d\u00e9clar\u00e9 dans le fichier /etc/opendmarc.conf): localhost\n192.168.111.0/24 Les mails envoy\u00e9s par les machines list\u00e9es dans ce fichier ne seront pas test\u00e9s. Ici, le serveur de mail lui-m\u00eame et les machines du r\u00e9seau local familial. On ajoute la ligne suivante \u00e0 /etc/default/opendmarc: SOCKET=inet:54444@localhost Notre daemon \u00e9coutera 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\nnon_smtpd_milters = inet:localhost:12301,inet:localhost:54444 On recharge postfix (comme d'habitude ...)\nConfiguration de l'enregistrement DNS dans le fichier de zone (ne pas oublier d'incr\u00e9menter 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: atom.yojik.net; dmarc= pass \u00c7a fonctionne :)",
  686. "title": "Configuration de Opendmarc"
  687. },
  688. {
  689. "location": "/17-dixsept/",
  690. "text": "Installation de logwatch\n\n\nInstallation\n\n\n# apt install logwatch\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nPaquets sugg\u00e9r\u00e9s :\n fortune-mod\nPaquets recommand\u00e9s :\n libdate-manip-perl libsys-cpu-perl libsys-meminfo-perl\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n logwatch\n0 mis \u00e0 jour, 1 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 373 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 2 267 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nR\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 logwatch all 7.4.3+git20161207-2 [373 kB]\n373 ko r\u00e9ceptionn\u00e9s en 0s (2 054 ko/s)\nS\u00e9lection du paquet logwatch pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 30506 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../logwatch_7.4.3+git20161207-2_all.deb ...\nD\u00e9paquetage de logwatch (7.4.3+git20161207-2) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de logwatch (7.4.3+git20161207-2) ...\n\n\n\n\nConfiguration\n\n\n\n\nvim /usr/share/logwatch/default.conf/logwatch.conf\n\n\n\n\nIl faut changer les lignes suivantes:\n\n\n\n\nMailTo = root -> Mailto = adresse \u00e9mail de l'administrateur\nRange = Yesterday -> Range = All\n\n\n\n\nJ'ai laiss\u00e9 \nRange\n \u00e0 Yesterday pour limiter la taille du rapport.\n\n\nOn teste en le lan\u00e7ant manuellement:\n\n\n\n\nlogwatch --detail Low --mailto admin@example.net --service All --range today\n\n\n\n\nBien s\u00fbr, remplacez l'adresse \u00e9mail fictive par celle du compte administrateur de votre serveur.\nVous devez recevoir le compte-rendu dans votre bo\u00eete mail.\n\n\nMail bien re\u00e7u :)",
  691. "title": "Installation de programmes de surveillance du serveur"
  692. },
  693. {
  694. "location": "/17-dixsept/#installation-de-logwatch",
  695. "text": "",
  696. "title": "Installation de logwatch"
  697. },
  698. {
  699. "location": "/17-dixsept/#installation",
  700. "text": "# apt install logwatch\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nPaquets sugg\u00e9r\u00e9s :\n fortune-mod\nPaquets recommand\u00e9s :\n libdate-manip-perl libsys-cpu-perl libsys-meminfo-perl\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n logwatch\n0 mis \u00e0 jour, 1 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 373 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 2 267 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nR\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 logwatch all 7.4.3+git20161207-2 [373 kB]\n373 ko r\u00e9ceptionn\u00e9s en 0s (2 054 ko/s)\nS\u00e9lection du paquet logwatch pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 30506 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../logwatch_7.4.3+git20161207-2_all.deb ...\nD\u00e9paquetage de logwatch (7.4.3+git20161207-2) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de logwatch (7.4.3+git20161207-2) ...",
  701. "title": "Installation"
  702. },
  703. {
  704. "location": "/17-dixsept/#configuration",
  705. "text": "vim /usr/share/logwatch/default.conf/logwatch.conf Il faut changer les lignes suivantes: MailTo = root -> Mailto = adresse \u00e9mail de l'administrateur\nRange = Yesterday -> Range = All J'ai laiss\u00e9 Range \u00e0 Yesterday pour limiter la taille du rapport. On teste en le lan\u00e7ant manuellement: logwatch --detail Low --mailto admin@example.net --service All --range today Bien s\u00fbr, remplacez l'adresse \u00e9mail fictive par celle du compte administrateur de votre serveur.\nVous devez recevoir le compte-rendu dans votre bo\u00eete mail. Mail bien re\u00e7u :)",
  706. "title": "Configuration"
  707. },
  708. {
  709. "location": "/18-dixhuit/",
  710. "text": "Installation de rainloop (webmail)\n\n\nT\u00e9l\u00e9charger la version communautaire sur le site, et la d\u00e9compresser dans votre r\u00e9pertoire web (/home/www/ pour moi.)\n\n\nLa documentation d'installation est ici:\n\n\nDocumentation de l'installation de rainloop\n\n\nInstallation des d\u00e9pendances: librairies et programmes\n\n\nPartie \u00e0 am\u00e9liorer .....\n\n\nRainloop repose sur le language PHP et il y a beaucoup de librairies n\u00e9cessaires \u00e0 son fonctionnement. J'ai install\u00e9 la base et regard\u00e9 les erreurs pour charger au fur et \u00e0 mesure les paquets n\u00e9cessaires.\n\n\nJe vais plut\u00f4t faire la liste de tous les paquets install\u00e9s avec php; ce sera plus simple. Vous aurez aussi besoin de \nunzip\n pour d\u00e9-archiver rainloop.\n\n\napt install unzip\n\n\n\n\nroot@atom:/var/www/html/yaziknet# dpkg -l | grep php\nii libapache2-mod-php7.0 7.0.33-0+deb9u1 i386 server-side, HTML-embedded scripting language (Apache 2 module)\nii php-common 1:49 all Common files for PHP packages\nii php7.0 7.0.33-0+deb9u1 all server-side, HTML-embedded scripting language (metapackage)\nii php7.0-cli 7.0.33-0+deb9u1 i386 command-line interpreter for the PHP scripting language\nii php7.0-common 7.0.33-0+deb9u1 i386 documentation, examples and common module for PHP\nii php7.0-curl 7.0.33-0+deb9u1 i386 CURL module for PHP\nii php7.0-json 7.0.33-0+deb9u1 i386 JSON module for PHP\nii php7.0-opcache 7.0.33-0+deb9u1 i386 Zend OpCache module for PHP\nii php7.0-readline 7.0.33-0+deb9u1 i386 readline module for PHP\nii php7.0-sqlite3 7.0.33-0+deb9u1 i386 SQLite3 module for PHP\nii php7.0-xml 7.0.33-0+deb9u1 i386 DOM, SimpleXML, WDDX, XML, and XSL module for PHP\nroot@atom:/var/www/html/yaziknet#\n\n\n\n\nCr\u00e9ation du r\u00e9pertoire o\u00f9 sera install\u00e9 rainloop:\n\n\nNous installerons rainloop dans le r\u00e9pertoire par d\u00e9faut de apache:\n\n\n/var/www/html/\n\n\n\n\nroot@atom:/home/www# cd /var/www/html\nroot@atom:/var/www/html# mkdir rainloop\nroot@atom:/var/www/html# cd rainloop\n\n\n\n\nT\u00e9l\u00e9chargement du programme et d\u00e9compression dans son r\u00e9pertoire d'accueil\n\n\nwget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip\nunzip rainloop-latest.zip -d /var/www/html/rainloop\n\n\n\n\nIl existe dans la documentation une approche diff\u00e9rente \ntout en un\n, qui fait appel \u00e0 un script \nqui fait tout\n. Voyez la documentation correspondante. Remplacez bien s\u00fbr \nrepository\n dans les commandes suivantes par le r\u00e9pertoire dans lequel vous avez install\u00e9 rainloop.\n\n\nurl -sL https://repository.rainloop.net/installer.php | php\n\nou\n\nwget -qO- https://repository.rainloop.net/installer.php | php\n\n\n\n\nConfiguration des permissions\n\n\nVoil\u00e0 les \u00e9tapes \u00e0 suivre:\n\n\n\u2022 Donner les droits de lecture/\u00e9criture correspondants et n\u00e9cessaires \u00e0 l'application:\n\n\ncd /var/www/html/rainloop\nfind . -type d -exec chmod 755 {} \\;\nfind . -type f -exec chmod 644 {} \\;\n\n\n\n\n\u2022 D\u00e9terminer l'utilisateur (pour nous, www-data du groupe www-data):\n\n\ncd /var/www/html/rainloop\nchown -R www-data:www-data .\n\n\n\n\nMise en route du webmail dans apache\n\n\nUn example de site web apache (dans /etc/apache2/sites-available), que j'ai appel\u00e9 \nwebmail.conf\n:\n\n\n<VirtualHost *:80>\n\nServerAdmin webmaster@yojik.net\nServerName webmail.yojik.net\n\nDocumentRoot /var/www/html/rainloop/\n\n<Directory \"/var/www/html/rainloop/\">\n Options Indexes MultiViews\n AllowOverride FileInfo AuthConfig Indexes\n Order allow,deny\n allow from all\n Require all granted\n</Directory>\n\nErrorLog ${APACHE_LOG_DIR}/error.log\nCustomLog ${APACHE_LOG_DIR}/access.log combined\n\n</VirtualHost>\n\n\n\n\nLe webmail sera accessible sous: \nwebmail.yojik.net\n\n\nValidation du site dans apache et rechargement de apache:\n\n\nroot@atom:/etc# a2ensite webmail\nroot@adara:/home/www/rainloop# service apache2 restart\n\n\n\n\nInstallation de l'interface sqlite de php\n\n\nPour certaines parties de rainloop, une base de donn\u00e9es est n\u00e9cessaire; il y a le choix entre plusieurs bases de donn\u00e9es, comme mysql, postgresql et sqlite, que j'ai choisie.\n\n\nIl nous faut donc installer les d\u00e9pendances php correspondantes:\n\n\nroot@adara:/home/www/rainloop# apt install php7.0-sqlite3\netc...\n\n\n\n\nOn relance apache:\n\n\nroot@adara:/home/www/rainloop# service apache2 restart\nroot@adara:/home/www/rainloop#\n\n\n\n\nAjout de l'acc\u00e8s en \nhttps\n de notre webmail (avec le programme certbot de letsencrypt):\n\n\nroot@adara:/home/www/rainloop# certbot --apache\n\n\n\n\net suivre les instructions.\n\n\nRelancez apache:\n\n\nroot@adara:/home/www/rainloop# service apache2 restart\nroot@adara:/home/www/rainloop#\n\n\n\n\nVotre webmail est maintenant accessible. Il nous reste \u00e0 le configurer.\n\n\nConfiguration de notre webmail\n\n\nLe panneau de configuration est acessible \u00e0 cette adresse:\n\n\nhttp://webmail.yojik.net/?admin\n\n\n\nLes identifiants \nd'usine\n sont les suivants:\n\n\n\n\nlogin: admin\n\n\npassword: 12345\n\n\n\n\nIls ont \u00e0 changer d'urgence! dans le panneau de configuration.\n\n\nVous pouvez ensuite ajouter vos domaines ainsi que les comptes de messagerie. Les images suivantes sont celles de la documentation officielle.\n\n\n\n\n\n\nVous pouvez parcourir le menu gauche pour adapter votre webmail \u00e0 vos convenance: plugins, th\u00e8mes, language d'affichage etc ...",
  711. "title": "Installation d'un webmail"
  712. },
  713. {
  714. "location": "/18-dixhuit/#installation-de-rainloop-webmail",
  715. "text": "T\u00e9l\u00e9charger la version communautaire sur le site, et la d\u00e9compresser dans votre r\u00e9pertoire web (/home/www/ pour moi.)",
  716. "title": "Installation de rainloop (webmail)"
  717. },
  718. {
  719. "location": "/18-dixhuit/#la-documentation-dinstallation-est-ici",
  720. "text": "Documentation de l'installation de rainloop",
  721. "title": "La documentation d'installation est ici:"
  722. },
  723. {
  724. "location": "/18-dixhuit/#installation-des-dependances-librairies-et-programmes",
  725. "text": "Partie \u00e0 am\u00e9liorer ..... Rainloop repose sur le language PHP et il y a beaucoup de librairies n\u00e9cessaires \u00e0 son fonctionnement. J'ai install\u00e9 la base et regard\u00e9 les erreurs pour charger au fur et \u00e0 mesure les paquets n\u00e9cessaires. Je vais plut\u00f4t faire la liste de tous les paquets install\u00e9s avec php; ce sera plus simple. Vous aurez aussi besoin de unzip pour d\u00e9-archiver rainloop. apt install unzip root@atom:/var/www/html/yaziknet# dpkg -l | grep php\nii libapache2-mod-php7.0 7.0.33-0+deb9u1 i386 server-side, HTML-embedded scripting language (Apache 2 module)\nii php-common 1:49 all Common files for PHP packages\nii php7.0 7.0.33-0+deb9u1 all server-side, HTML-embedded scripting language (metapackage)\nii php7.0-cli 7.0.33-0+deb9u1 i386 command-line interpreter for the PHP scripting language\nii php7.0-common 7.0.33-0+deb9u1 i386 documentation, examples and common module for PHP\nii php7.0-curl 7.0.33-0+deb9u1 i386 CURL module for PHP\nii php7.0-json 7.0.33-0+deb9u1 i386 JSON module for PHP\nii php7.0-opcache 7.0.33-0+deb9u1 i386 Zend OpCache module for PHP\nii php7.0-readline 7.0.33-0+deb9u1 i386 readline module for PHP\nii php7.0-sqlite3 7.0.33-0+deb9u1 i386 SQLite3 module for PHP\nii php7.0-xml 7.0.33-0+deb9u1 i386 DOM, SimpleXML, WDDX, XML, and XSL module for PHP\nroot@atom:/var/www/html/yaziknet#",
  726. "title": "Installation des d\u00e9pendances: librairies et programmes"
  727. },
  728. {
  729. "location": "/18-dixhuit/#creation-du-repertoire-ou-sera-installe-rainloop",
  730. "text": "Nous installerons rainloop dans le r\u00e9pertoire par d\u00e9faut de apache: /var/www/html/ root@atom:/home/www# cd /var/www/html\nroot@atom:/var/www/html# mkdir rainloop\nroot@atom:/var/www/html# cd rainloop",
  731. "title": "Cr\u00e9ation du r\u00e9pertoire o\u00f9 sera install\u00e9 rainloop:"
  732. },
  733. {
  734. "location": "/18-dixhuit/#telechargement-du-programme-et-decompression-dans-son-repertoire-daccueil",
  735. "text": "wget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip\nunzip rainloop-latest.zip -d /var/www/html/rainloop Il existe dans la documentation une approche diff\u00e9rente tout en un , qui fait appel \u00e0 un script qui fait tout . Voyez la documentation correspondante. Remplacez bien s\u00fbr repository dans les commandes suivantes par le r\u00e9pertoire dans lequel vous avez install\u00e9 rainloop. url -sL https://repository.rainloop.net/installer.php | php\n\nou\n\nwget -qO- https://repository.rainloop.net/installer.php | php",
  736. "title": "T\u00e9l\u00e9chargement du programme et d\u00e9compression dans son r\u00e9pertoire d'accueil"
  737. },
  738. {
  739. "location": "/18-dixhuit/#configuration-des-permissions",
  740. "text": "Voil\u00e0 les \u00e9tapes \u00e0 suivre: \u2022 Donner les droits de lecture/\u00e9criture correspondants et n\u00e9cessaires \u00e0 l'application: cd /var/www/html/rainloop\nfind . -type d -exec chmod 755 {} \\;\nfind . -type f -exec chmod 644 {} \\; \u2022 D\u00e9terminer l'utilisateur (pour nous, www-data du groupe www-data): cd /var/www/html/rainloop\nchown -R www-data:www-data .",
  741. "title": "Configuration des permissions"
  742. },
  743. {
  744. "location": "/18-dixhuit/#mise-en-route-du-webmail-dans-apache",
  745. "text": "Un example de site web apache (dans /etc/apache2/sites-available), que j'ai appel\u00e9 webmail.conf : <VirtualHost *:80>\n\nServerAdmin webmaster@yojik.net\nServerName webmail.yojik.net\n\nDocumentRoot /var/www/html/rainloop/\n\n<Directory \"/var/www/html/rainloop/\">\n Options Indexes MultiViews\n AllowOverride FileInfo AuthConfig Indexes\n Order allow,deny\n allow from all\n Require all granted\n</Directory>\n\nErrorLog ${APACHE_LOG_DIR}/error.log\nCustomLog ${APACHE_LOG_DIR}/access.log combined\n\n</VirtualHost> Le webmail sera accessible sous: webmail.yojik.net",
  746. "title": "Mise en route du webmail dans apache"
  747. },
  748. {
  749. "location": "/18-dixhuit/#validation-du-site-dans-apache-et-rechargement-de-apache",
  750. "text": "root@atom:/etc# a2ensite webmail\nroot@adara:/home/www/rainloop# service apache2 restart",
  751. "title": "Validation du site dans apache et rechargement de apache:"
  752. },
  753. {
  754. "location": "/18-dixhuit/#installation-de-linterface-sqlite-de-php",
  755. "text": "Pour certaines parties de rainloop, une base de donn\u00e9es est n\u00e9cessaire; il y a le choix entre plusieurs bases de donn\u00e9es, comme mysql, postgresql et sqlite, que j'ai choisie. Il nous faut donc installer les d\u00e9pendances php correspondantes: root@adara:/home/www/rainloop# apt install php7.0-sqlite3\netc... On relance apache: root@adara:/home/www/rainloop# service apache2 restart\nroot@adara:/home/www/rainloop#",
  756. "title": "Installation de l'interface sqlite de php"
  757. },
  758. {
  759. "location": "/18-dixhuit/#ajout-de-lacces-en-https-de-notre-webmail-avec-le-programme-certbot-de-letsencrypt",
  760. "text": "root@adara:/home/www/rainloop# certbot --apache et suivre les instructions. Relancez apache: root@adara:/home/www/rainloop# service apache2 restart\nroot@adara:/home/www/rainloop# Votre webmail est maintenant accessible. Il nous reste \u00e0 le configurer.",
  761. "title": "Ajout de l'acc\u00e8s en https de notre webmail (avec le programme certbot de letsencrypt):"
  762. },
  763. {
  764. "location": "/18-dixhuit/#configuration-de-notre-webmail",
  765. "text": "Le panneau de configuration est acessible \u00e0 cette adresse: http://webmail.yojik.net/?admin Les identifiants d'usine sont les suivants: login: admin password: 12345 Ils ont \u00e0 changer d'urgence! dans le panneau de configuration. Vous pouvez ensuite ajouter vos domaines ainsi que les comptes de messagerie. Les images suivantes sont celles de la documentation officielle. Vous pouvez parcourir le menu gauche pour adapter votre webmail \u00e0 vos convenance: plugins, th\u00e8mes, language d'affichage etc ...",
  766. "title": "Configuration de notre webmail"
  767. },
  768. {
  769. "location": "/19-dixneuf/",
  770. "text": "Installation de \ngit\n\n\nIl y a plusieurs fa\u00e7ons d'installer un serveur \ngit\n sur notre serveur. Nous allons essayer plusieurs solutions, d'une solution compl\u00e8tement basique sans serveur graphique, suivie de solutions graphiques avec plus ou moins de capacit\u00e9s (suivi de tickets, wiki, gestion des utilisateurs, int\u00e9gration continue.\n\n\nInstallation d'un serveur git \nbasique\n (mais parfaitement fonctionnel :) )\n\n\nInstallation de \ngit\n\n\nroot@atom:/home/ericadmin# apt install git\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n git-man\nPaquets sugg\u00e9r\u00e9s :\n git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n git git-man\n0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 0 o/6 311 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 34,8 Mo d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nS\u00e9lection du paquet git-man pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 39220 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../git-man_1%3a2.11.0-3+deb9u4_all.deb ...\nD\u00e9paquetage de git-man (1:2.11.0-3+deb9u4) ...\nS\u00e9lection du paquet git pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../git_1%3a2.11.0-3+deb9u4_i386.deb ...\nD\u00e9paquetage de git (1:2.11.0-3+deb9u4) ...\nParam\u00e9trage de git-man (1:2.11.0-3+deb9u4) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de git (1:2.11.0-3+deb9u4) ...\nroot@atom:/home/ericadmin# mc\n\n\n\n\nInstallation de l'utilisateur \ngit\n et du groupe \ngit\n\n\nroot@atom:/home/ericadmin# adduser git\nAjout de l'utilisateur \u00ab git \u00bb ...\nAjout du nouveau groupe \u00ab git \u00bb (1001) ...\nAjout du nouvel utilisateur \u00ab git \u00bb (1001) avec le groupe \u00ab git \u00bb ...\nCr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/git \u00bb...\nCopie des fichiers depuis \u00ab /etc/skel \u00bb...\nEntrez le nouveau mot de passe UNIX :\nRetapez le nouveau mot de passe UNIX :\npasswd: password updated successfully\nChanging the user information for git\nEnter the new value, or press ENTER for the default\n Full Name []:\n Room Number []:\n Work Phone []:\n Home Phone []:\n Other []:\nCette information est-elle correcte ? [O/n]o\nroot@atom:/home/ericadmin#\n\n\n\n\nUn r\u00e9pertoire /home/git a \u00e9t\u00e9 cr\u00e9\u00e9 ainsi que le groupe git et l'utilisateur git, avec son mot de passe que vous avez saisi dans l'\u00e9tape ci-dessus.\n\n\nCopie de la clef \nssh\n pour un acc\u00e8s sans mot de passe.\n\n\nPour cela, il faut ajouter l'utilisateur \ngit\n dans le fichier de configuration de \nsshd\n. Modifiez la ligne qui contient AllowUsers pour obtenir ceci:\n\n\n\n\nAllowUsers ericadmin git\n\n\n\n\nRechargez \nsshd\n en lan\u00e7ant:\n\n\n\n\nservice sshd restart\n\n\n\n\nCopie de votre clef sur le serveur: dans un premier temps, il faut remettre la configuration d'origine de \nsshd\n.\n\n\nPour cela, copiez cotre fichier actuel en sshd_config.n. Copiez le fichier /etc/ssh/sshd_config.orig en /etc/ssh/sshd_config et relancez sshd avec service sshd restart.\n\n\n\n\nservice sshd restart\n\n\nVous devez pouvoir vous connecter sur le compte git en tapant ceci:\n\n\n\n\neric@aldebaran:~$ ssh git@atom\ngit@atom's password:\nLinux atom 4.9.0-8-686-pae #1 SMP Debian 4.9.130-2 (2018-10-27) i686\n\nThe programs included with the Debian GNU/Linux system are free software;\nthe exact distribution terms for each program are described in the\nindividual files in /usr/share/doc/*/copyright.\n\nDebian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent\npermitted by applicable law.\ngit@atom:~$\n\n\n\n\nD\u00e9connectez-vous en tapant Ctrl D et copiez votre clef sur le serveur:\n\n\neric@aldebaran:~$ ssh-copy-id git@atom\n/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed\n/usr/bin/ssh-copy-id: INFO: 2 key(s) remain to be installed -- if you are prompted now it is to install the new keys\ngit@atom's password:\n\nNumber of key(s) added: 2\n\nNow try logging into the machine, with: \"ssh 'git@atom'\"\nand check to make sure that only the key(s) you wanted were added.\n\neric@aldebaran:~$\n\n\n\n\nTestez avec la commande fournie:\n\n\neric@aldebaran:~$ ssh 'git@atom'\nLinux atom 4.9.0-8-686-pae #1 SMP Debian 4.9.130-2 (2018-10-27) i686\n\nThe programs included with the Debian GNU/Linux system are free software;\nthe exact distribution terms for each program are described in the\nindividual files in /usr/share/doc/*/copyright.\n\nDebian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent\npermitted by applicable law.\nLast login: Sun Dec 30 09:40:18 2018 from 192.168.111.150\ngit@atom:~$\n\n\n\n\nVous avez pu vous connecter sans taper votre mot de passe.\n\n\nD\u00e9connectez-vous \u00e0 nouveau (Ctrl D)\n\n\nRemettez le fichier sshd_config (qui contient le AllowUsers que nous avons configur\u00e9 auparavant).\n\n\nTest:\n\n\neric@aldebaran:~$ ssh 'git@atom'\nLast login: Sun Dec 30 09:45:36 2018 from 192.168.111.150\ngit@atom:~$\n\n\n\n\n\u00c7a marche. Nous avons un acc\u00e8s \u00e0 notre compte \ngit\n sans mot de passe, par \u00e9change de clefs, et avons bloqu\u00e9 l'acc\u00e8s par mot de passe, comme pour notre utilisateur d'administration \nericadmin\n.\n\n\nCr\u00e9ation d'un r\u00e9pertoire qui va contenir nos d\u00e9pots \ngit\n\n\nOn se connecte sous l'utilisateur git et on cr\u00e9e un r\u00e9pertoire \nRepos\n (Choisissez le nom que vous voulez ...)\n\n\neric@aldebaran:~$ ssh 'git@atom'\nLast login: Sun Dec 30 09:48:14 2018 from 192.168.111.150\ngit@atom:~$ mkdir Repos\ngit@atom:~$ ls\nRepos\ngit@atom:~$\n\n\n\n\nVoil\u00e0, le r\u00e9pertoire est cr\u00e9\u00e9.\n\n\nCr\u00e9ation d'un premier d\u00e9pot sur le serveur\n\n\nLa commande \ngit init --bare\n permet la cr\u00e9ation, d'un d\u00e9pot qui ne contient que les donn\u00e9es \ngit\n sans les sources/documents.\n\n\ngit@atom:~$ cd Repos/\ngit@atom:~/Repos$ mkdir Essai1.git\ngit@atom:~/Repos$ cd Essai1.git/\ngit@atom:~/Repos/Essai1.git$ git init --bare\nD\u00e9p\u00f4t Git vide initialis\u00e9 dans /home/git/Repos/Essai1.git/\ngit@atom:~/Repos/Essai1.git$\n\n\n\n\nCr\u00e9ation d'un projet sur la machine locale\n\n\n(pour moi dans le r\u00e9pertoire /home/eric/Devs)\n\n\neric@aldebaran:~/Devs$ mkdir Essai1\neric@aldebaran:~/Devs$ cd Essai1/\neric@aldebaran:~/Devs/Essai1$ git init\nD\u00e9p\u00f4t Git vide initialis\u00e9 dans /home/eric/Devs/Essai1/.git/\neric@aldebaran:~/Devs/Essai1$ ls -al\ntotal 12\ndrwxr-xr-x 3 eric eric 4096 d\u00e9c. 30 10:01 .\ndrwxr-xr-x 18 eric eric 4096 d\u00e9c. 30 10:00 ..\ndrwxr-xr-x 7 eric eric 4096 d\u00e9c. 30 10:01 .git\neric@aldebaran:~/Devs/Essai1$\n\n\n\n\nLe r\u00e9pertoire de notre projet est vide, nous venons de le cr\u00e9er. Ajoutons un premier fichier \nREADME.md\n avec un contenu quelconque au projet.\n\n\neric@aldebaran:~/Devs/Essai1$ touch README.md\neric@aldebaran:~/Devs/Essai1$ ls\nREADME.md\neric@aldebaran:~/Devs/Essai1$ echo \"Un premier fichier\" > README.md\neric@aldebaran:~/Devs/Essai1$ cat README.md\nUn premier fichier\neric@aldebaran:~/Devs/Essai1$\n\n\n\n\nAjoutons-le \u00e0 la base \ngit\n\n\neric@aldebaran:~/Devs/Essai1$ git add .\neric@aldebaran:~/Devs/Essai1$ git commit -m \"mon premier commit\"\n[master (commit racine) bc25e5b] mon premier commit\n 1 file changed, 1 insertion(+)\n create mode 100644 README.md\neric@aldebaran:~/Devs/Essai1$ git status\nSur la branche master\nrien \u00e0 valider, la copie de travail est propre\neric@aldebaran:~/Devs/Essai1$\n\n\n\n\nNotre fichier a \u00e9t\u00e9 ajout\u00e9 \u00e0 notre base git locale. Nous allons ajouter le d\u00e9pot distant situ\u00e9 sur notre serveur.\n\n\neric@aldebaran:~/Devs/Essai1$ git remote add origin ssh://git@atom.yojik.net:Repos/Essai1.git\neric@aldebaran:~/Devs/Essai1$ git remote\norigin\neric@aldebaran:~/Devs/Essai1$ git remote -v\norigin ssh://git@atom/Repos/Essai1.git (fetch)\norigin ssh://git@atom/Repos/Essai1.git (push)\neric@aldebaran:~/Devs/Essai1$\n\n\n\n\nJ'ai ajout\u00e9 les commandes de v\u00e9rification.\n\n\nNous allons \"pousser\" notre projet sur le serveur.\n\n\neric@aldebaran:~/Devs/Essai1$ git push origin master\nD\u00e9compte des objets: 3, fait.\n\u00c9criture des objets: 100% (3/3), 220 bytes | 0 bytes/s, fait.\nTotal 3 (delta 0), reused 0 (delta 0)\nTo atom.yojik.net:Repos/Essai1.git\n * [new branch] master -> master\n\n\n\n\nTests suivants:\n\n\nEffacement des projets sur notre machine locale et clonage de notre d\u00e9p\u00f4t distant, avec le protocole \ngit\n ainsi qu'avec le protocole \nhttps\n:\n\n\nProtocole *git\n*:\n\n\neric@aldebaran:~/Devs$ git clone git@atom.yojik.net:Repos/Essai1.git Essai1\nClonage dans 'Essai1'...\nremote: D\u00e9compte des objets: 3, fait.\nremote: Total 3 (delta 0), reused 0 (delta 0)\nR\u00e9ception d'objets: 100% (3/3), fait.\neric@aldebaran:~/Devs$ cd Essai1/\neric@aldebaran:~/Devs/Essai1$ ls\nREADME.md\neric@aldebaran:~/Devs/Essai1$ cat README.md\nEssai2\neric@aldebaran:~/Devs/Essai1$ echo \" d'un deuxi\u00e8me poussage\" >> README.md\neric@aldebaran:~/Devs/Essai1$ cat README.md\nEssai2\n d'un deuxi\u00e8me poussage\neric@aldebaran:~/Devs/Essai1$ git add .\neric@aldebaran:~/Devs/Essai1$ git commit -m \"2\u00e8me poussage\"\n[master 4edff63] 2\u00e8me poussage\n 1 file changed, 1 insertion(+)\neric@aldebaran:~/Devs/Essai1$ git push origin master\nD\u00e9compte des objets: 3, fait.\n\u00c9criture des objets: 100% (3/3), 280 bytes | 0 bytes/s, fait.\nTotal 3 (delta 0), reused 0 (delta 0)\nTo atom.yojik.net:Repos/Essai1.git\n e9cd815..4edff63 master -> master\neric@aldebaran:~/Devs/Essai1$\n\n\n\n\nProtocole *https\n*:\n\n\nEssai de clonage du d\u00e9pot git contenant les sources de ce tutorial avec la commande suivante; vous noterez que les sources du d\u00e9pot sont l\u00e9g\u00e8rement diff\u00e9rentes, suite \u00e0 l'installation de \ngogs\n, mais le principe est le m\u00eame.\n\n\n\n\ngit clone https://git.yojik.net/eric/InstallationServeur.git\n\n\n\n\neric@aldebaran:~/temp$ git clone https://git.yojik.net/eric/InstallationServeur.git\nClonage dans 'InstallationServeur'...\nremote: D\u00e9compte des objets: 431, fait.\nremote: Compression des objets: 100% (357/357), fait.\nremote: Total 431 (delta 145), reused 252 (delta 30)\nR\u00e9ception d'objets: 100% (431/431), 4.74 MiB | 6.37 MiB/s, fait.\nR\u00e9solution des deltas: 100% (145/145), fait.\neric@aldebaran:~/temp$\n\n\n\n\nVoil\u00e0, la configuration d'un serveur git de base est effectu\u00e9e; il nous faut bien s\u00fbr nous loguer sur le serveur pour cr\u00e9er un d\u00e9pot avant de l'utiliser. Des programmes, souvent graphiques d'ailleurs, permettent de cr\u00e9er les d\u00e9pots \u00e0 partir d'une interface \nweb\n. Nous allons en voir quelques uns en commen\u00e7ant par le serveur graphique fourni avec \ngit\n, appel\u00e9 \ngitweb\n.\n\n\nInstallation et configuration de \ngitweb\n\n\nInstallation\n\n\nroot@atom:/home/ericadmin# apt install gitweb\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl\nPaquets sugg\u00e9r\u00e9s :\n git-doc libdata-dump-perl\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n gitweb libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl\n0 mis \u00e0 jour, 6 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 1 067 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 1 605 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 libhtml-tagset-perl all 3.20-3 [12,7 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 libhtml-parser-perl i386 3.72-3 [105 kB]\nR\u00e9ception de:3 http://deb.debian.org/debian stretch/main i386 libcgi-pm-perl all 4.35-1 [222 kB]\nR\u00e9ception de:4 http://deb.debian.org/debian stretch/main i386 gitweb all 1:2.11.0-3+deb9u4 [676 kB]\nR\u00e9ception de:5 http://deb.debian.org/debian stretch/main i386 libfcgi-perl i386 0.78-2 [40,2 kB]\nR\u00e9ception de:6 http://deb.debian.org/debian stretch/main i386 libcgi-fast-perl all 1:2.12-1 [11,2 kB]\n1 067 ko r\u00e9ceptionn\u00e9s en 0s (6 128 ko/s)\netc...\nroot@atom:/home/ericadmin#\n\n\n\n\nConfiguration de \ngitweb\n\n\nLa seule chose \u00e0 configurer pour une utilisation basique est le fichier /etc/gitweb.conf. En faire une copie avant modification et modifiez la ligne suivante pour obtenir ce qui suit:\n\n\n\n\n$projectroot = \"/home/git/Repos\";\n\n\n\n\nC'est la racine de nos d\u00e9pots.\n\n\nActivez le module \ncgi\n dans \napache\n et rechargez la configuration de \napache\n:\n\n\nroot@atom:/home/ericadmin# a2enmod cgi\nEnabling module cgi.\nTo activate the new configuration, you need to run:\n systemctl restart apache2\nroot@atom:/home/ericadmin# systemctl restart apache2\n\n\n\n\nVous pouvez acc\u00e9der directement \u00e0 l'interface graphique avec l'url suivante: atom.yojik.net/gitweb. Pour \u00eatre honn\u00eate, je ne vois pas vraiment l'int\u00e9r\u00eat de cette interface, \u00e0 part visualiser les projets sur le serveur. Je n'ai pas trouv\u00e9 s'il est possible de t\u00e9l\u00e9charger une archive du projet, s'il est possible de cr\u00e9er un projet, pas plus que je n'ai vu la possibilit\u00e9 de g\u00e9rer des utilisateurs. Il faudra approfondir la question ... L'utilisation de l'url par d\u00e9faut n'est pas s\u00e9curis\u00e9e non plus (pas de https).\n\n\nInstallation de \ngogs\n\n\nNous allons installer un serveur git sur notre petit serveur. Gogs est un serveur git \u00e9crit en \ngo\n.\nNous allons l'installer progressivement, en ajoutant ensuite le d\u00e9marrage par un service, et l'acc\u00e8s sur un port standard servi par \napache\n et redirig\u00e9 vers le port 3000 servi par \ngogs\n. Nous allons reprendre une installation \u00e0 partir du d\u00e9but (avec l'installation de git etc ...)\n\n\nJe me suis inspir\u00e9 de la documentation officielle ainsi que de ce tutorial:\n\n\n# How to Install Gogs Go Git Service on Ubuntu 16.04\n\n\nCommen\u00e7ons par installer \ngit\n, si nous ne l'avons pas encore fait auparavant.\n\n\nInstallation de \ngit\n\n\nroot@atom:~# apt-get install git\netc ...\nroot@atom:~#\n\n\n\n\nCr\u00e9ation de l'utilisateur \ngit\n au sein du syst\u00e8me\n\n\n\n\ncommande adduser\n\n\n\n\nroot@atom:/home/ericadmin# adduser --disabled-login --gecos 'Gogs' git\nAjout de l'utilisateur \u00ab git \u00bb ...\nAjout du nouveau groupe \u00ab git \u00bb (1001) ...\nAjout du nouvel utilisateur \u00ab git \u00bb (1001) avec le groupe \u00ab git \u00bb ...\nCr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/git \u00bb...\nCopie des fichiers depuis \u00ab /etc/skel \u00bb...\nroot@atom:/home/ericadmin#\n\n\n\n\nInstallation de la base de donn\u00e9es \nPostgresql\n\n\nNous aurions pu utiliser \u00e0 la place de \nPostgresql\n, \nmysql\n ou \nsqlite3\n.\n\n\nroot@atom:/home/ericadmin# apt install -y postgresql postgresql-client libpq-dev\netc...\nroot@atom:/home/ericadmin#\n\n\n\n\nLancement du serveur Postgresql et configuration pour un lancement automatique au d\u00e9marrage de la machine:\n\n\nroot@atom:/home/ericadmin# systemctl start postgresql\nroot@atom:/home/ericadmin# systemctl enable postgresql\nSynchronizing state of postgresql.service with SysV service script with /lib/systemd/systemd-sysv-install.\nExecuting: /lib/systemd/systemd-sysv-install enable postgresql\nroot@atom:/home/ericadmin#\n\n\n\n\nNous allons nous connecter sous le user \"postgres\" pour configurer notre serveur de base de donn\u00e9es et cr\u00e9er la base initiale pour \ngogs\n, ainsi que l'utilisateur \ngogs\n..\n\n\nVoici les donn\u00e9es que nous allons utiliser:\n\n\n\n\ngestionnaire principal de la base de donn\u00e9es postgres: postgres\n\n\nmot de passe correspondant : ****\n\n\nutilisateur de la base de donn\u00e9es postgres: git\n\n\nmot de passe de l'utlisateur git dans postgres: ****\n\n\nbase de donn\u00e9es postgres, appartenant \u00e0 l'utilisateur git de postgres: gogsdb\n\n\n\n\nroot@atom:/home/ericadmin# su - postgres\npostgres@atom:~$\n\n\n\n\nNous allons lancer le shell \npostgres\n qui nous permettra de configurer notre base:\n\n\npostgres@atom:~$ psql\npsql (9.6.10)\nSaisissez \u00ab help \u00bb pour l'aide.\n\npostgres=#\n\n\n\n\nCr\u00e9ation de l'utilisateur \ngit\n ainsi que le \nmot de passe\n pour cet utilisateur:\n\n\npostgres=# CREATE USER git CREATEDB;\nCREATE ROLE\npostgres=# \\password git\nSaisissez le nouveau mot de passe : ****\nSaisissez-le \u00e0 nouveau : ****\npostgres=#\n\n\n\n\nRemplacez bien s\u00fbr les **** par un vrai mot de passe et notez le bien soigneusement.\n\n\nCr\u00e9ation de la base de donn\u00e9e et v\u00e9rification:\n\n\npostgres=# CREATE DATABASE gogsdb OWNER git;\nCREATE DATABASE\npostgres=# \\du\n Liste des r\u00f4les\n Nom du r\u00f4le | Attributs | Membre de\n-------------+---------------------------------------------------------------------------------+-----------\n git | Cr\u00e9er une base | {}\n postgres | Superutilisateur, Cr\u00e9er un r\u00f4le, Cr\u00e9er une base, R\u00e9plication, Contournement RLS | {}\n\npostgres=# \\l\n Liste des bases de donn\u00e9es\n Nom | Propri\u00e9taire | Encodage | Collationnement | Type caract. | Droits d'acc\u00e8s\n-----------+--------------+----------+-----------------+--------------+-----------------------\n gogsdb | git | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 |\n postgres | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 |\n template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n(4 lignes)\n\npostgres=#\n\n\n\n\nVoil\u00e0, nous avons install\u00e9 le serveur de base de donn\u00e9es (postgres), la base de donn\u00e9es n\u00e9cessaire \u00e0 \ngogs\n (gogsdb), ainsi que l'utilisateur \ngit\n (au sein de la base de donn\u00e9es) qui pourra g\u00e9rer les donn\u00e9es de \ngogs\n.\n\n\nCr\u00e9ation d'un r\u00e9pertoire r\u00e9serv\u00e9 au binaire \ngogs\n appartenant \u00e0 l'utilisateur \ngit\n\n\nroot@atom:/home/ericadmin# su - git\ngit@atom:~$ mkdir -p /home/git/bin\ngit@atom:~$\n\n\n\n\nT\u00e9l\u00e9chargement du binaire \ngogs\n dans notre r\u00e9pertoire nouvellement cr\u00e9\u00e9\n\n\ngit@atom:~$ cd bin\ngit@atom:~/bin$ wget https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz\n--2018-11-29 14:12:26-- https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz\nR\u00e9solution de dl.gogs.io (dl.gogs.io)\u2026 68.183.105.37\nConnexion \u00e0 dl.gogs.io (dl.gogs.io)|68.183.105.37|:443\u2026 connect\u00e9.\nrequ\u00eate HTTP transmise, en attente de la r\u00e9ponse\u2026 200 OK\nTaille : 20296268 (19M) [application/x-gzip]\nSauvegarde en : \u00ab gogs_0.11.66_linux_386.tar.gz \u00bb\n\ngogs_0.11.66_linux_386.tar.gz 100%[====================================================================>] 19,36M 6,65MB/s in 2,9s\n\n2018-11-29 14:12:30 (6,65 MB/s) \u2014 \u00ab gogs_0.11.66_linux_386.tar.gz \u00bb sauvegard\u00e9 [20296268/20296268]\n\ngit@atom:~/bin$\n\n\n\n\nMon serveur est en i386, et pas en amd64: prenez la version qui correspond au syst\u00e8me d'exploitation que vous avez install\u00e9. Maintenant, c'est quasi exclusivement du amd64 . Mon serveur est vieux .... (mais vaillant :) )\n\n\nD\u00e9compression de l'archive et suppression de l'archive\n\n\ngit@atom:~/bin$ tar vxfz gogs_0.11.66_linux_386.tar.gz && rm gogs_0.11.66_linux_386.tar.gz\n\n\n\n\nNotez bien que toutes ces derni\u00e8res \u00e9tapes se font sous utilisateur \ngit\n.\n\n\nVoici le r\u00e9sultat dans le r\u00e9pertoire \ngogs\n cr\u00e9\u00e9 pr\u00e9alablement:\n\n\ngit@atom:~/bin/gogs$ ls\ngogs LICENSE public README.md README_ZH.md scripts templates\ngit@atom:~/bin/gogs$\n\n\n\n\nBien, tous nos \u00e9l\u00e9ments sont en place, base de donn\u00e9es, utilisateur \ngit\n, programme \ngogs\n. Il nous reste \u00e0 connecter le tout.\nTapez :\n\n\n\n\n./gogs web\n\n\n\n\net lancez votre navigateur sur le nom de votre serveur suivi de :3000\n\n\nVous arriverez sur la page de configuration de \ngogs\n. Remplissez les champs avec les donn\u00e9es pr\u00e9c\u00e9demment entr\u00e9es et que vous avez bien s\u00fbr not\u00e9es ;).\n\n\nConfirmez votre choix, reconnectez-vous et \u00e7a y est:)\n\n\nCr\u00e9ez ensuite un \nutilisateur\n avec son mot de passe (\u00e0 noter pr\u00e9cieusement ...)\n\n\nIl nous reste \u00e0 installer les fichiers de lancement \nsystemd\n ou \ninit\n; pour moi, \nsystemd\n, la redirection \napache\n, les certificats \nletsencrypt\n.\n\n\nCr\u00e9ation de l'enregistrement \nbind\n\n\nOn ajoute un enregistrement CNAME\n\n\n\n\ngit IN CNAME atom.yojik.net.\n\n\n\n\nCr\u00e9ation du fichier de configuration d'\napache\n\n\n\n\nOn cr\u00e9e le fichier */etc/apache2/sites-available/git.conf avec le contenu suivant:\n\n\nIl faut activer les modules \napache\n suivants avec \na2enmod\n, parce que il y aura une redirection du port 443 (https) vers le port 3000 interne (non -accessible de l'ext\u00e9rieur du serveur):\n\n\n\n\n\n\nproxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html\n\n\n\n\n<VirtualHost *:80>\n\n ServerAdmin webmaster@localhost\n\n ProxyPreserveHost On\n\n # Servers to proxy the connection, or;\n # List of application servers:\n # Usage:\n # ProxyPass / http://[IP Addr.]:[port]/\n # ProxyPassReverse / http://[IP Addr.]:[port]/\n # Example:\n ProxyPass / http://localhost:3000/\n ProxyPassReverse / http://localhost:3000/\n\n ServerName git.yojik.net\n\n ErrorLog ${APACHE_LOG_DIR}/error.log\n CustomLog ${APACHE_LOG_DIR}/access.log combined\n</VirtualHost>\n\n\n\n\nOn \nrelance \napache*\n\n\n\n\nservice apache2 restart\n\n\n\n\nCr\u00e9ation du certificat \nletsencrypt\n correspondant\n\n\nOn lance la commande suivante:\n\n\n\n\ncertbot --apache\n\n\n\n\nEt on suit les instructions ...\n\n\nCr\u00e9ation des fichiers de configuration \nsystemd\n\n\nIl y a un exemple de fichier dans le sous-r\u00e9pertoire scripts/systemd de \ngogs\n\n\nroot@atom:/etc/systemd/system# cat gogs.service\n[Unit]\n Description=Gogs\n After=syslog.target\n After=network.target\n After=postgresql.service\n\n [Service]\n # Modify these two values and uncomment them if you have\n # repos with lots of files and get an HTTP error 500 because\n # of that\n ###\n #LimitMEMLOCK=infinity\n #LimitNOFILE=65535\n Type=simple\n User=git\n Group=git\n WorkingDirectory=/home/git/bin/gogs\n ExecStart=/home/git/bin/gogs/gogs web\n Restart=always\n Environment=USER=git HOME=/home/git/\n\n [Install]\n WantedBy=multi-user.target\nroot@atom:/etc/systemd/system#\n\n\n\n\nPour le lancer automatiquement au d\u00e9marrage et activer la prise en compte par \nsystemd\n, lancer:\n\n\n\n\nsystemctl daemon-reload\n\n\nsystemctl enable gogs\n\n\n\n\nroot@atom:/etc/systemd/system# systemctl enable gogs\nCreated symlink /etc/systemd/system/multi-user.target.wants/gogs.service \u2192 /etc/systemd/system/gogs.service.\nroot@atom:/etc/systemd/system#\n\n\n\n\nTests\n\n\nLancez les commandes suivantes pour vous assurer que tout est fonctionnel:\n\n\nroot@atom:/etc/systemd/system# service gogs start\nroot@atom:/etc/systemd/system# tail -f /var/log/daemon.log\nDec 16 17:14:38 atom systemd[1]: Failed to start Gogs.\nDec 16 17:14:38 atom systemd[1]: gogs.service: Unit entered failed state.\nDec 16 17:14:38 atom systemd[1]: gogs.service: Failed with result 'exit-code'.\nDec 16 17:16:09 atom systemd[1]: Reloading.\nDec 16 17:16:09 atom systemd[1]: apt-daily.timer: Adding 6h 12min 40.966652s random time.\nDec 16 17:16:13 atom systemd[1]: Started Gogs.\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Custom path: /home/git/bin/gogs/custom\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace)\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916\n\nroot@atom:/etc/systemd/system# service gogs stop\nroot@atom:/etc/systemd/system# service gogs start\nroot@atom:/etc/systemd/system# tail -f /var/log/daemon.log\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace)\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916\nDec 16 17:16:28 atom systemd[1]: Stopping Gogs...\nDec 16 17:16:28 atom systemd[1]: Stopped Gogs.\nDec 16 17:16:33 atom systemd[1]: Started Gogs.\nDec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Custom path: /home/git/bin/gogs/custom\nDec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log path: /home/git/bin/gogs/log\nDec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log Mode: File (Trace)\nDec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [ INFO] Gogs on Yojik.net 0.11.66.0916\n\n\n\n\nLe lancement de \ngogs\n marche parfaitement.\nConnectez-vous \u00e0 partir de votre navigateur sur \ngit.yojik.net\n (ou plut\u00f4t l'url que vous avez d\u00e9finie auparavant); vous devez vous retrouver sur la page d'accueil de \ngogs\n.\n\n\nVoil\u00e0 une capture d'\u00e9cran de ce que vous devez obtenir (ici, avec le d\u00e9pot de ce tutoriel)\n\n\n\n\nTests\n\n\nSur la page d'administration de notre projet, nous pouvons voir les commandes \u00e0 effectuer pour diff\u00e9rentes op\u00e9rations sur notre d\u00e9pot:\n\n\n\n\nCr\u00e9ation d'un d\u00e9pot\n\n\n\n\n\n\n\n\nCr\u00e9ation d'un d\u00e9pot: formulaire et r\u00e9capitulatif\n\n\n\n\n\n\n\n\n\n\nAffichage des commandes disponibles pour g\u00e9rer notre d\u00e9pot en https\n\n\n\n\n\n\n\n\nAffichage des commandes disponibles pour g\u00e9rer notre d\u00e9pot en ssh\n\n\n\n\n\n\n\n\n\n\nCr\u00e9ation d'un r\u00e9pertoire local \nA1\n\n\nDonnez-lui le nom que vous voulez.\n\n\n\n\n\n\neric@aldebaran:~/temp$ mkdir A1\neric@aldebaran:~/temp$ cd A1\neric@aldebaran:~/temp/A1$ git init\nD\u00e9p\u00f4t Git vide initialis\u00e9 dans /home/eric/temp/A1/.git/\neric@aldebaran:~/temp/A1$\n\n\n\n\n\n\n\n\nAjout du fichier epub au d\u00e9pot local\n\n\nOn copie notre fichier epub d\u00e9j\u00e0 existant dans notre r\u00e9pertoire et on l'ajoute au d\u00e9pot local.\n\n\n\n\n\n\neric@aldebaran:~/temp/A1$ cp ~/Devs/Chinois/Chinese-grammar-wiki/Epub/Grammar-wiki-A1/Chinese-grammar-wiki-A1.epub .\neric@aldebaran:~/temp/A1$git add .\neric@aldebaran:~/temp/A1$ git commit -m \"premier commit\"\n[master (commit racine) 381b37b] premier commit\n 1 file changed, 0 insertions(+), 0 deletions(-)\n create mode 100644 Chinese-grammar-wiki-A1.epub\neric@aldebaran:~/temp/A1$\n\n\n\n\n\n\nAjout du fichier epub au d\u00e9pot distant (sur atom) apr\u00e8s configuration des d\u00e9pots \nremote\n en \nhttps\n et \nssh\n et \npoussage\n des donn\u00e9es avec la m\u00e9thode \nhttps\n.\n\n\n\n\neric@aldebaran:~/temp/A1$ git remote add atomssh git@atom.yojik.net:eric/Repos/chinesegrammarwiki-a1.git\neric@aldebaran:~/temp/A1$ git remote add atomhttp https://git.yojik.net/eric/ChineseGrammarWiki-A1.git\neric@aldebaran:~/temp/A1$ git push atomhttp master\nUsername for 'https://git.yojik.net': eric\nPassword for 'https://eric@git.yojik.net':\nD\u00e9compte des objets: 3, fait.\nDelta compression using up to 12 threads.\nCompression des objets: 100% (3/3), fait.\n\u00c9criture des objets: 100% (3/3), 13.90 MiB | 6.05 MiB/s, fait.\nTotal 3 (delta 0), reused 0 (delta 0)\nTo https://git.yojik.net/eric/ChineseGrammarWiki-A1.git\n * [new branch] master -> master\neric@aldebaran:~/temp/A1$\n\n\n\n\n\n\n\n\nAffichage des derniers commits\n\n\n\n\n\n\n\n\nTest de clonage en \nhttps\n\n\n\n\n\n\neric@aldebaran:~/temp$ git clone https://git.yojik.net/eric/ChineseGrammarWiki-A1.git\nClonage dans 'ChineseGrammarWiki-A1'...\nUsername for 'https://git.yojik.net': eric\nPassword for 'https://eric@git.yojik.net':\nremote: D\u00e9compte des objets: 3, fait.\nremote: Compression des objets: 100% (3/3), fait.\nremote: Total 3 (delta 0), reused 0 (delta 0)\nD\u00e9paquetage des objets: 100% (3/3), fait.\neric@aldebaran:~/temp$\n\n\n\n\n\n\nTest de clonage en \nssh\n\n\n\n\neric@aldebaran:~/temp$ git clone git@atom.yojik.net:Repos/eric/chinesegrammarwiki-a1.git\nClonage dans 'chinesegrammarwiki-a1'...\nremote: D\u00e9compte des objets: 3, fait.\nremote: Compression des objets: 100% (3/3), fait.\nremote: Total 3 (delta 0), reused 0 (delta 0)\nR\u00e9ception d'objets: 100% (3/3), 13.90 MiB | 13.56 MiB/s, fait.\n\n\n\n\nExplications sur les diff\u00e9rences constat\u00e9es entre les 2 types d'URL\n\n\nL\u00e0, c'est un peu sioux pour trouver la bonne URL; tout d'abord, celle donn\u00e9e par la page de \ngogs\n est fausse: il faut rep\u00e9rer le \nbon r\u00e9pertoire\n avec le \nbon chemin\n et mettre la derni\u00e8re partie en minuscules pour la m\u00e9thode \ngit\n. Les URLs sont donc diff\u00e9rentes en \nhttps\n et \ngit\n.\n\n\nVoil\u00e0 les diff\u00e9rences entre les 2 URLs:\n\n\n\n\ngit clone https://git.yojik.net/eric/ChineseGrammarWiki-A1.git\n\n\ngit clone git@atom.yojik.net:Repos/eric/chinesegrammarwiki-a1.git\n\n\n\n\nVous voyez que le chemin relatif, sans la partie \nRepos\n, est accept\u00e9e avec la m\u00e9thode \nhttps\n, car le chemin \n/home/git/Repos\n est celui donn\u00e9 \u00e0 \ngogs\n dans sa configuration de base. Par contre, avec la m\u00e9thode \nssh\n, il faut redonner le chemin complet, avec \nRepos\n.\n\n\nGogs transforme le nom du projet en un nom tout en minuscules; ChineseGrammarWiki-A1.git devient chinesegrammarwiki-a1.git.",
  771. "title": "Installation de git et de gogs"
  772. },
  773. {
  774. "location": "/19-dixneuf/#installation-de-git",
  775. "text": "Il y a plusieurs fa\u00e7ons d'installer un serveur git sur notre serveur. Nous allons essayer plusieurs solutions, d'une solution compl\u00e8tement basique sans serveur graphique, suivie de solutions graphiques avec plus ou moins de capacit\u00e9s (suivi de tickets, wiki, gestion des utilisateurs, int\u00e9gration continue.",
  776. "title": "Installation de git"
  777. },
  778. {
  779. "location": "/19-dixneuf/#installation-dun-serveur-git-basique-mais-parfaitement-fonctionnel",
  780. "text": "",
  781. "title": "Installation d'un serveur git basique (mais parfaitement fonctionnel :) )"
  782. },
  783. {
  784. "location": "/19-dixneuf/#installation-de-git_1",
  785. "text": "root@atom:/home/ericadmin# apt install git\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n git-man\nPaquets sugg\u00e9r\u00e9s :\n git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-arch git-cvs git-mediawiki git-svn\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n git git-man\n0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 0 o/6 311 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 34,8 Mo d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nS\u00e9lection du paquet git-man pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 39220 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../git-man_1%3a2.11.0-3+deb9u4_all.deb ...\nD\u00e9paquetage de git-man (1:2.11.0-3+deb9u4) ...\nS\u00e9lection du paquet git pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../git_1%3a2.11.0-3+deb9u4_i386.deb ...\nD\u00e9paquetage de git (1:2.11.0-3+deb9u4) ...\nParam\u00e9trage de git-man (1:2.11.0-3+deb9u4) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de git (1:2.11.0-3+deb9u4) ...\nroot@atom:/home/ericadmin# mc",
  786. "title": "Installation de git"
  787. },
  788. {
  789. "location": "/19-dixneuf/#installation-de-lutilisateur-git-et-du-groupe-git",
  790. "text": "root@atom:/home/ericadmin# adduser git\nAjout de l'utilisateur \u00ab git \u00bb ...\nAjout du nouveau groupe \u00ab git \u00bb (1001) ...\nAjout du nouvel utilisateur \u00ab git \u00bb (1001) avec le groupe \u00ab git \u00bb ...\nCr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/git \u00bb...\nCopie des fichiers depuis \u00ab /etc/skel \u00bb...\nEntrez le nouveau mot de passe UNIX :\nRetapez le nouveau mot de passe UNIX :\npasswd: password updated successfully\nChanging the user information for git\nEnter the new value, or press ENTER for the default\n Full Name []:\n Room Number []:\n Work Phone []:\n Home Phone []:\n Other []:\nCette information est-elle correcte ? [O/n]o\nroot@atom:/home/ericadmin# Un r\u00e9pertoire /home/git a \u00e9t\u00e9 cr\u00e9\u00e9 ainsi que le groupe git et l'utilisateur git, avec son mot de passe que vous avez saisi dans l'\u00e9tape ci-dessus.",
  791. "title": "Installation de l'utilisateur git et du groupe git"
  792. },
  793. {
  794. "location": "/19-dixneuf/#copie-de-la-clef-ssh-pour-un-acces-sans-mot-de-passe",
  795. "text": "Pour cela, il faut ajouter l'utilisateur git dans le fichier de configuration de sshd . Modifiez la ligne qui contient AllowUsers pour obtenir ceci: AllowUsers ericadmin git Rechargez sshd en lan\u00e7ant: service sshd restart Copie de votre clef sur le serveur: dans un premier temps, il faut remettre la configuration d'origine de sshd . Pour cela, copiez cotre fichier actuel en sshd_config.n. Copiez le fichier /etc/ssh/sshd_config.orig en /etc/ssh/sshd_config et relancez sshd avec service sshd restart. service sshd restart Vous devez pouvoir vous connecter sur le compte git en tapant ceci: eric@aldebaran:~$ ssh git@atom\ngit@atom's password:\nLinux atom 4.9.0-8-686-pae #1 SMP Debian 4.9.130-2 (2018-10-27) i686\n\nThe programs included with the Debian GNU/Linux system are free software;\nthe exact distribution terms for each program are described in the\nindividual files in /usr/share/doc/*/copyright.\n\nDebian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent\npermitted by applicable law.\ngit@atom:~$ D\u00e9connectez-vous en tapant Ctrl D et copiez votre clef sur le serveur: eric@aldebaran:~$ ssh-copy-id git@atom\n/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed\n/usr/bin/ssh-copy-id: INFO: 2 key(s) remain to be installed -- if you are prompted now it is to install the new keys\ngit@atom's password:\n\nNumber of key(s) added: 2\n\nNow try logging into the machine, with: \"ssh 'git@atom'\"\nand check to make sure that only the key(s) you wanted were added.\n\neric@aldebaran:~$ Testez avec la commande fournie: eric@aldebaran:~$ ssh 'git@atom'\nLinux atom 4.9.0-8-686-pae #1 SMP Debian 4.9.130-2 (2018-10-27) i686\n\nThe programs included with the Debian GNU/Linux system are free software;\nthe exact distribution terms for each program are described in the\nindividual files in /usr/share/doc/*/copyright.\n\nDebian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent\npermitted by applicable law.\nLast login: Sun Dec 30 09:40:18 2018 from 192.168.111.150\ngit@atom:~$ Vous avez pu vous connecter sans taper votre mot de passe. D\u00e9connectez-vous \u00e0 nouveau (Ctrl D) Remettez le fichier sshd_config (qui contient le AllowUsers que nous avons configur\u00e9 auparavant). Test: eric@aldebaran:~$ ssh 'git@atom'\nLast login: Sun Dec 30 09:45:36 2018 from 192.168.111.150\ngit@atom:~$ \u00c7a marche. Nous avons un acc\u00e8s \u00e0 notre compte git sans mot de passe, par \u00e9change de clefs, et avons bloqu\u00e9 l'acc\u00e8s par mot de passe, comme pour notre utilisateur d'administration ericadmin .",
  796. "title": "Copie de la clef ssh pour un acc\u00e8s sans mot de passe."
  797. },
  798. {
  799. "location": "/19-dixneuf/#creation-dun-repertoire-qui-va-contenir-nos-depots-git",
  800. "text": "On se connecte sous l'utilisateur git et on cr\u00e9e un r\u00e9pertoire Repos (Choisissez le nom que vous voulez ...) eric@aldebaran:~$ ssh 'git@atom'\nLast login: Sun Dec 30 09:48:14 2018 from 192.168.111.150\ngit@atom:~$ mkdir Repos\ngit@atom:~$ ls\nRepos\ngit@atom:~$ Voil\u00e0, le r\u00e9pertoire est cr\u00e9\u00e9.",
  801. "title": "Cr\u00e9ation d'un r\u00e9pertoire qui va contenir nos d\u00e9pots git"
  802. },
  803. {
  804. "location": "/19-dixneuf/#creation-dun-premier-depot-sur-le-serveur",
  805. "text": "La commande git init --bare permet la cr\u00e9ation, d'un d\u00e9pot qui ne contient que les donn\u00e9es git sans les sources/documents. git@atom:~$ cd Repos/\ngit@atom:~/Repos$ mkdir Essai1.git\ngit@atom:~/Repos$ cd Essai1.git/\ngit@atom:~/Repos/Essai1.git$ git init --bare\nD\u00e9p\u00f4t Git vide initialis\u00e9 dans /home/git/Repos/Essai1.git/\ngit@atom:~/Repos/Essai1.git$",
  806. "title": "Cr\u00e9ation d'un premier d\u00e9pot sur le serveur"
  807. },
  808. {
  809. "location": "/19-dixneuf/#creation-dun-projet-sur-la-machine-locale",
  810. "text": "(pour moi dans le r\u00e9pertoire /home/eric/Devs) eric@aldebaran:~/Devs$ mkdir Essai1\neric@aldebaran:~/Devs$ cd Essai1/\neric@aldebaran:~/Devs/Essai1$ git init\nD\u00e9p\u00f4t Git vide initialis\u00e9 dans /home/eric/Devs/Essai1/.git/\neric@aldebaran:~/Devs/Essai1$ ls -al\ntotal 12\ndrwxr-xr-x 3 eric eric 4096 d\u00e9c. 30 10:01 .\ndrwxr-xr-x 18 eric eric 4096 d\u00e9c. 30 10:00 ..\ndrwxr-xr-x 7 eric eric 4096 d\u00e9c. 30 10:01 .git\neric@aldebaran:~/Devs/Essai1$ Le r\u00e9pertoire de notre projet est vide, nous venons de le cr\u00e9er. Ajoutons un premier fichier README.md avec un contenu quelconque au projet. eric@aldebaran:~/Devs/Essai1$ touch README.md\neric@aldebaran:~/Devs/Essai1$ ls\nREADME.md\neric@aldebaran:~/Devs/Essai1$ echo \"Un premier fichier\" > README.md\neric@aldebaran:~/Devs/Essai1$ cat README.md\nUn premier fichier\neric@aldebaran:~/Devs/Essai1$ Ajoutons-le \u00e0 la base git eric@aldebaran:~/Devs/Essai1$ git add .\neric@aldebaran:~/Devs/Essai1$ git commit -m \"mon premier commit\"\n[master (commit racine) bc25e5b] mon premier commit\n 1 file changed, 1 insertion(+)\n create mode 100644 README.md\neric@aldebaran:~/Devs/Essai1$ git status\nSur la branche master\nrien \u00e0 valider, la copie de travail est propre\neric@aldebaran:~/Devs/Essai1$ Notre fichier a \u00e9t\u00e9 ajout\u00e9 \u00e0 notre base git locale. Nous allons ajouter le d\u00e9pot distant situ\u00e9 sur notre serveur. eric@aldebaran:~/Devs/Essai1$ git remote add origin ssh://git@atom.yojik.net:Repos/Essai1.git\neric@aldebaran:~/Devs/Essai1$ git remote\norigin\neric@aldebaran:~/Devs/Essai1$ git remote -v\norigin ssh://git@atom/Repos/Essai1.git (fetch)\norigin ssh://git@atom/Repos/Essai1.git (push)\neric@aldebaran:~/Devs/Essai1$ J'ai ajout\u00e9 les commandes de v\u00e9rification. Nous allons \"pousser\" notre projet sur le serveur. eric@aldebaran:~/Devs/Essai1$ git push origin master\nD\u00e9compte des objets: 3, fait.\n\u00c9criture des objets: 100% (3/3), 220 bytes | 0 bytes/s, fait.\nTotal 3 (delta 0), reused 0 (delta 0)\nTo atom.yojik.net:Repos/Essai1.git\n * [new branch] master -> master Tests suivants: Effacement des projets sur notre machine locale et clonage de notre d\u00e9p\u00f4t distant, avec le protocole git ainsi qu'avec le protocole https : Protocole *git *: eric@aldebaran:~/Devs$ git clone git@atom.yojik.net:Repos/Essai1.git Essai1\nClonage dans 'Essai1'...\nremote: D\u00e9compte des objets: 3, fait.\nremote: Total 3 (delta 0), reused 0 (delta 0)\nR\u00e9ception d'objets: 100% (3/3), fait.\neric@aldebaran:~/Devs$ cd Essai1/\neric@aldebaran:~/Devs/Essai1$ ls\nREADME.md\neric@aldebaran:~/Devs/Essai1$ cat README.md\nEssai2\neric@aldebaran:~/Devs/Essai1$ echo \" d'un deuxi\u00e8me poussage\" >> README.md\neric@aldebaran:~/Devs/Essai1$ cat README.md\nEssai2\n d'un deuxi\u00e8me poussage\neric@aldebaran:~/Devs/Essai1$ git add .\neric@aldebaran:~/Devs/Essai1$ git commit -m \"2\u00e8me poussage\"\n[master 4edff63] 2\u00e8me poussage\n 1 file changed, 1 insertion(+)\neric@aldebaran:~/Devs/Essai1$ git push origin master\nD\u00e9compte des objets: 3, fait.\n\u00c9criture des objets: 100% (3/3), 280 bytes | 0 bytes/s, fait.\nTotal 3 (delta 0), reused 0 (delta 0)\nTo atom.yojik.net:Repos/Essai1.git\n e9cd815..4edff63 master -> master\neric@aldebaran:~/Devs/Essai1$ Protocole *https *: Essai de clonage du d\u00e9pot git contenant les sources de ce tutorial avec la commande suivante; vous noterez que les sources du d\u00e9pot sont l\u00e9g\u00e8rement diff\u00e9rentes, suite \u00e0 l'installation de gogs , mais le principe est le m\u00eame. git clone https://git.yojik.net/eric/InstallationServeur.git eric@aldebaran:~/temp$ git clone https://git.yojik.net/eric/InstallationServeur.git\nClonage dans 'InstallationServeur'...\nremote: D\u00e9compte des objets: 431, fait.\nremote: Compression des objets: 100% (357/357), fait.\nremote: Total 431 (delta 145), reused 252 (delta 30)\nR\u00e9ception d'objets: 100% (431/431), 4.74 MiB | 6.37 MiB/s, fait.\nR\u00e9solution des deltas: 100% (145/145), fait.\neric@aldebaran:~/temp$ Voil\u00e0, la configuration d'un serveur git de base est effectu\u00e9e; il nous faut bien s\u00fbr nous loguer sur le serveur pour cr\u00e9er un d\u00e9pot avant de l'utiliser. Des programmes, souvent graphiques d'ailleurs, permettent de cr\u00e9er les d\u00e9pots \u00e0 partir d'une interface web . Nous allons en voir quelques uns en commen\u00e7ant par le serveur graphique fourni avec git , appel\u00e9 gitweb .",
  811. "title": "Cr\u00e9ation d'un projet sur la machine locale"
  812. },
  813. {
  814. "location": "/19-dixneuf/#installation-et-configuration-de-gitweb",
  815. "text": "",
  816. "title": "Installation et configuration de gitweb"
  817. },
  818. {
  819. "location": "/19-dixneuf/#installation",
  820. "text": "root@atom:/home/ericadmin# apt install gitweb\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl\nPaquets sugg\u00e9r\u00e9s :\n git-doc libdata-dump-perl\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n gitweb libcgi-fast-perl libcgi-pm-perl libfcgi-perl libhtml-parser-perl libhtml-tagset-perl\n0 mis \u00e0 jour, 6 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 1 067 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 1 605 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nSouhaitez-vous continuer ? [O/n] o\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 libhtml-tagset-perl all 3.20-3 [12,7 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 libhtml-parser-perl i386 3.72-3 [105 kB]\nR\u00e9ception de:3 http://deb.debian.org/debian stretch/main i386 libcgi-pm-perl all 4.35-1 [222 kB]\nR\u00e9ception de:4 http://deb.debian.org/debian stretch/main i386 gitweb all 1:2.11.0-3+deb9u4 [676 kB]\nR\u00e9ception de:5 http://deb.debian.org/debian stretch/main i386 libfcgi-perl i386 0.78-2 [40,2 kB]\nR\u00e9ception de:6 http://deb.debian.org/debian stretch/main i386 libcgi-fast-perl all 1:2.12-1 [11,2 kB]\n1 067 ko r\u00e9ceptionn\u00e9s en 0s (6 128 ko/s)\netc...\nroot@atom:/home/ericadmin#",
  821. "title": "Installation"
  822. },
  823. {
  824. "location": "/19-dixneuf/#configuration-de-gitweb",
  825. "text": "La seule chose \u00e0 configurer pour une utilisation basique est le fichier /etc/gitweb.conf. En faire une copie avant modification et modifiez la ligne suivante pour obtenir ce qui suit: $projectroot = \"/home/git/Repos\"; C'est la racine de nos d\u00e9pots. Activez le module cgi dans apache et rechargez la configuration de apache : root@atom:/home/ericadmin# a2enmod cgi\nEnabling module cgi.\nTo activate the new configuration, you need to run:\n systemctl restart apache2\nroot@atom:/home/ericadmin# systemctl restart apache2 Vous pouvez acc\u00e9der directement \u00e0 l'interface graphique avec l'url suivante: atom.yojik.net/gitweb. Pour \u00eatre honn\u00eate, je ne vois pas vraiment l'int\u00e9r\u00eat de cette interface, \u00e0 part visualiser les projets sur le serveur. Je n'ai pas trouv\u00e9 s'il est possible de t\u00e9l\u00e9charger une archive du projet, s'il est possible de cr\u00e9er un projet, pas plus que je n'ai vu la possibilit\u00e9 de g\u00e9rer des utilisateurs. Il faudra approfondir la question ... L'utilisation de l'url par d\u00e9faut n'est pas s\u00e9curis\u00e9e non plus (pas de https).",
  826. "title": "Configuration de gitweb"
  827. },
  828. {
  829. "location": "/19-dixneuf/#installation-de-gogs",
  830. "text": "Nous allons installer un serveur git sur notre petit serveur. Gogs est un serveur git \u00e9crit en go .\nNous allons l'installer progressivement, en ajoutant ensuite le d\u00e9marrage par un service, et l'acc\u00e8s sur un port standard servi par apache et redirig\u00e9 vers le port 3000 servi par gogs . Nous allons reprendre une installation \u00e0 partir du d\u00e9but (avec l'installation de git etc ...) Je me suis inspir\u00e9 de la documentation officielle ainsi que de ce tutorial: # How to Install Gogs Go Git Service on Ubuntu 16.04 Commen\u00e7ons par installer git , si nous ne l'avons pas encore fait auparavant.",
  831. "title": "Installation de gogs"
  832. },
  833. {
  834. "location": "/19-dixneuf/#installation-de-git_2",
  835. "text": "root@atom:~# apt-get install git\netc ...\nroot@atom:~#",
  836. "title": "Installation de git"
  837. },
  838. {
  839. "location": "/19-dixneuf/#creation-de-lutilisateur-git-au-sein-du-systeme",
  840. "text": "commande adduser root@atom:/home/ericadmin# adduser --disabled-login --gecos 'Gogs' git\nAjout de l'utilisateur \u00ab git \u00bb ...\nAjout du nouveau groupe \u00ab git \u00bb (1001) ...\nAjout du nouvel utilisateur \u00ab git \u00bb (1001) avec le groupe \u00ab git \u00bb ...\nCr\u00e9ation du r\u00e9pertoire personnel \u00ab /home/git \u00bb...\nCopie des fichiers depuis \u00ab /etc/skel \u00bb...\nroot@atom:/home/ericadmin#",
  841. "title": "Cr\u00e9ation de l'utilisateur git au sein du syst\u00e8me"
  842. },
  843. {
  844. "location": "/19-dixneuf/#installation-de-la-base-de-donnees-postgresql",
  845. "text": "Nous aurions pu utiliser \u00e0 la place de Postgresql , mysql ou sqlite3 . root@atom:/home/ericadmin# apt install -y postgresql postgresql-client libpq-dev\netc...\nroot@atom:/home/ericadmin# Lancement du serveur Postgresql et configuration pour un lancement automatique au d\u00e9marrage de la machine: root@atom:/home/ericadmin# systemctl start postgresql\nroot@atom:/home/ericadmin# systemctl enable postgresql\nSynchronizing state of postgresql.service with SysV service script with /lib/systemd/systemd-sysv-install.\nExecuting: /lib/systemd/systemd-sysv-install enable postgresql\nroot@atom:/home/ericadmin# Nous allons nous connecter sous le user \"postgres\" pour configurer notre serveur de base de donn\u00e9es et cr\u00e9er la base initiale pour gogs , ainsi que l'utilisateur gogs .. Voici les donn\u00e9es que nous allons utiliser: gestionnaire principal de la base de donn\u00e9es postgres: postgres mot de passe correspondant : **** utilisateur de la base de donn\u00e9es postgres: git mot de passe de l'utlisateur git dans postgres: **** base de donn\u00e9es postgres, appartenant \u00e0 l'utilisateur git de postgres: gogsdb root@atom:/home/ericadmin# su - postgres\npostgres@atom:~$ Nous allons lancer le shell postgres qui nous permettra de configurer notre base: postgres@atom:~$ psql\npsql (9.6.10)\nSaisissez \u00ab help \u00bb pour l'aide.\n\npostgres=# Cr\u00e9ation de l'utilisateur git ainsi que le mot de passe pour cet utilisateur: postgres=# CREATE USER git CREATEDB;\nCREATE ROLE\npostgres=# \\password git\nSaisissez le nouveau mot de passe : ****\nSaisissez-le \u00e0 nouveau : ****\npostgres=# Remplacez bien s\u00fbr les **** par un vrai mot de passe et notez le bien soigneusement. Cr\u00e9ation de la base de donn\u00e9e et v\u00e9rification: postgres=# CREATE DATABASE gogsdb OWNER git;\nCREATE DATABASE\npostgres=# \\du\n Liste des r\u00f4les\n Nom du r\u00f4le | Attributs | Membre de\n-------------+---------------------------------------------------------------------------------+-----------\n git | Cr\u00e9er une base | {}\n postgres | Superutilisateur, Cr\u00e9er un r\u00f4le, Cr\u00e9er une base, R\u00e9plication, Contournement RLS | {}\n\npostgres=# \\l\n Liste des bases de donn\u00e9es\n Nom | Propri\u00e9taire | Encodage | Collationnement | Type caract. | Droits d'acc\u00e8s\n-----------+--------------+----------+-----------------+--------------+-----------------------\n gogsdb | git | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 |\n postgres | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 |\n template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres +\n | | | | | postgres=CTc/postgres\n(4 lignes)\n\npostgres=# Voil\u00e0, nous avons install\u00e9 le serveur de base de donn\u00e9es (postgres), la base de donn\u00e9es n\u00e9cessaire \u00e0 gogs (gogsdb), ainsi que l'utilisateur git (au sein de la base de donn\u00e9es) qui pourra g\u00e9rer les donn\u00e9es de gogs .",
  846. "title": "Installation de la base de donn\u00e9es Postgresql"
  847. },
  848. {
  849. "location": "/19-dixneuf/#creation-dun-repertoire-reserve-au-binaire-gogs-appartenant-a-lutilisateur-git",
  850. "text": "root@atom:/home/ericadmin# su - git\ngit@atom:~$ mkdir -p /home/git/bin\ngit@atom:~$",
  851. "title": "Cr\u00e9ation d'un r\u00e9pertoire r\u00e9serv\u00e9 au binaire gogs appartenant \u00e0 l'utilisateur git"
  852. },
  853. {
  854. "location": "/19-dixneuf/#telechargement-du-binaire-gogs-dans-notre-repertoire-nouvellement-cree",
  855. "text": "git@atom:~$ cd bin\ngit@atom:~/bin$ wget https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz\n--2018-11-29 14:12:26-- https://dl.gogs.io/0.11.66/gogs_0.11.66_linux_386.tar.gz\nR\u00e9solution de dl.gogs.io (dl.gogs.io)\u2026 68.183.105.37\nConnexion \u00e0 dl.gogs.io (dl.gogs.io)|68.183.105.37|:443\u2026 connect\u00e9.\nrequ\u00eate HTTP transmise, en attente de la r\u00e9ponse\u2026 200 OK\nTaille : 20296268 (19M) [application/x-gzip]\nSauvegarde en : \u00ab gogs_0.11.66_linux_386.tar.gz \u00bb\n\ngogs_0.11.66_linux_386.tar.gz 100%[====================================================================>] 19,36M 6,65MB/s in 2,9s\n\n2018-11-29 14:12:30 (6,65 MB/s) \u2014 \u00ab gogs_0.11.66_linux_386.tar.gz \u00bb sauvegard\u00e9 [20296268/20296268]\n\ngit@atom:~/bin$ Mon serveur est en i386, et pas en amd64: prenez la version qui correspond au syst\u00e8me d'exploitation que vous avez install\u00e9. Maintenant, c'est quasi exclusivement du amd64 . Mon serveur est vieux .... (mais vaillant :) )",
  856. "title": "T\u00e9l\u00e9chargement du binaire gogs dans notre r\u00e9pertoire nouvellement cr\u00e9\u00e9"
  857. },
  858. {
  859. "location": "/19-dixneuf/#decompression-de-larchive-et-suppression-de-larchive",
  860. "text": "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\u00e8res \u00e9tapes se font sous utilisateur git . Voici le r\u00e9sultat dans le r\u00e9pertoire gogs cr\u00e9\u00e9 pr\u00e9alablement: git@atom:~/bin/gogs$ ls\ngogs LICENSE public README.md README_ZH.md scripts templates\ngit@atom:~/bin/gogs$ Bien, tous nos \u00e9l\u00e9ments sont en place, base de donn\u00e9es, utilisateur git , programme gogs . Il nous reste \u00e0 connecter le tout.\nTapez : ./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\u00e9es pr\u00e9c\u00e9demment entr\u00e9es et que vous avez bien s\u00fbr not\u00e9es ;). Confirmez votre choix, reconnectez-vous et \u00e7a y est:) Cr\u00e9ez ensuite un utilisateur avec son mot de passe (\u00e0 noter pr\u00e9cieusement ...) Il nous reste \u00e0 installer les fichiers de lancement systemd ou init ; pour moi, systemd , la redirection apache , les certificats letsencrypt .",
  861. "title": "D\u00e9compression de l'archive et suppression de l'archive"
  862. },
  863. {
  864. "location": "/19-dixneuf/#creation-de-lenregistrement-bind",
  865. "text": "On ajoute un enregistrement CNAME git IN CNAME atom.yojik.net.",
  866. "title": "Cr\u00e9ation de l'enregistrement bind"
  867. },
  868. {
  869. "location": "/19-dixneuf/#creation-du-fichier-de-configuration-dapache",
  870. "text": "On cr\u00e9e le fichier */etc/apache2/sites-available/git.conf avec le contenu suivant: Il faut activer les modules apache suivants avec a2enmod , parce que il y aura une redirection du port 443 (https) vers le port 3000 interne (non -accessible de l'ext\u00e9rieur du serveur): proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html <VirtualHost *:80>\n\n ServerAdmin webmaster@localhost\n\n ProxyPreserveHost On\n\n # Servers to proxy the connection, or;\n # List of application servers:\n # Usage:\n # ProxyPass / http://[IP Addr.]:[port]/\n # ProxyPassReverse / http://[IP Addr.]:[port]/\n # Example:\n ProxyPass / http://localhost:3000/\n ProxyPassReverse / http://localhost:3000/\n\n ServerName git.yojik.net\n\n ErrorLog ${APACHE_LOG_DIR}/error.log\n CustomLog ${APACHE_LOG_DIR}/access.log combined\n</VirtualHost> On relance apache* service apache2 restart",
  871. "title": "Cr\u00e9ation du fichier de configuration d'apache"
  872. },
  873. {
  874. "location": "/19-dixneuf/#creation-du-certificat-letsencrypt-correspondant",
  875. "text": "On lance la commande suivante: certbot --apache Et on suit les instructions ...",
  876. "title": "Cr\u00e9ation du certificat letsencrypt correspondant"
  877. },
  878. {
  879. "location": "/19-dixneuf/#creation-des-fichiers-de-configuration-systemd",
  880. "text": "Il y a un exemple de fichier dans le sous-r\u00e9pertoire scripts/systemd de gogs root@atom:/etc/systemd/system# cat gogs.service\n[Unit]\n Description=Gogs\n After=syslog.target\n After=network.target\n After=postgresql.service\n\n [Service]\n # Modify these two values and uncomment them if you have\n # repos with lots of files and get an HTTP error 500 because\n # of that\n ###\n #LimitMEMLOCK=infinity\n #LimitNOFILE=65535\n Type=simple\n User=git\n Group=git\n WorkingDirectory=/home/git/bin/gogs\n ExecStart=/home/git/bin/gogs/gogs web\n Restart=always\n Environment=USER=git HOME=/home/git/\n\n [Install]\n WantedBy=multi-user.target\nroot@atom:/etc/systemd/system# Pour le lancer automatiquement au d\u00e9marrage et activer la prise en compte par systemd , lancer: systemctl daemon-reload systemctl enable gogs root@atom:/etc/systemd/system# systemctl enable gogs\nCreated symlink /etc/systemd/system/multi-user.target.wants/gogs.service \u2192 /etc/systemd/system/gogs.service.\nroot@atom:/etc/systemd/system#",
  881. "title": "Cr\u00e9ation des fichiers de configuration systemd"
  882. },
  883. {
  884. "location": "/19-dixneuf/#tests",
  885. "text": "Lancez les commandes suivantes pour vous assurer que tout est fonctionnel: root@atom:/etc/systemd/system# service gogs start\nroot@atom:/etc/systemd/system# tail -f /var/log/daemon.log\nDec 16 17:14:38 atom systemd[1]: Failed to start Gogs.\nDec 16 17:14:38 atom systemd[1]: gogs.service: Unit entered failed state.\nDec 16 17:14:38 atom systemd[1]: gogs.service: Failed with result 'exit-code'.\nDec 16 17:16:09 atom systemd[1]: Reloading.\nDec 16 17:16:09 atom systemd[1]: apt-daily.timer: Adding 6h 12min 40.966652s random time.\nDec 16 17:16:13 atom systemd[1]: Started Gogs.\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Custom path: /home/git/bin/gogs/custom\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace)\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916\n\nroot@atom:/etc/systemd/system# service gogs stop\nroot@atom:/etc/systemd/system# service gogs start\nroot@atom:/etc/systemd/system# tail -f /var/log/daemon.log\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log path: /home/git/bin/gogs/log\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [TRACE] Log Mode: File (Trace)\nDec 16 17:16:13 atom gogs[1991]: 2018/12/16 17:16:13 [ INFO] Gogs on Yojik.net 0.11.66.0916\nDec 16 17:16:28 atom systemd[1]: Stopping Gogs...\nDec 16 17:16:28 atom systemd[1]: Stopped Gogs.\nDec 16 17:16:33 atom systemd[1]: Started Gogs.\nDec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Custom path: /home/git/bin/gogs/custom\nDec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log path: /home/git/bin/gogs/log\nDec 16 17:16:33 atom gogs[2053]: 2018/12/16 17:16:33 [TRACE] Log Mode: File (Trace)\nDec 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.\nConnectez-vous \u00e0 partir de votre navigateur sur git.yojik.net (ou plut\u00f4t l'url que vous avez d\u00e9finie auparavant); vous devez vous retrouver sur la page d'accueil de gogs . Voil\u00e0 une capture d'\u00e9cran de ce que vous devez obtenir (ici, avec le d\u00e9pot de ce tutoriel)",
  886. "title": "Tests"
  887. },
  888. {
  889. "location": "/19-dixneuf/#tests_1",
  890. "text": "Sur la page d'administration de notre projet, nous pouvons voir les commandes \u00e0 effectuer pour diff\u00e9rentes op\u00e9rations sur notre d\u00e9pot: Cr\u00e9ation d'un d\u00e9pot Cr\u00e9ation d'un d\u00e9pot: formulaire et r\u00e9capitulatif Affichage des commandes disponibles pour g\u00e9rer notre d\u00e9pot en https Affichage des commandes disponibles pour g\u00e9rer notre d\u00e9pot en ssh Cr\u00e9ation d'un r\u00e9pertoire local A1 Donnez-lui le nom que vous voulez. eric@aldebaran:~/temp$ mkdir A1\neric@aldebaran:~/temp$ cd A1\neric@aldebaran:~/temp/A1$ git init\nD\u00e9p\u00f4t Git vide initialis\u00e9 dans /home/eric/temp/A1/.git/\neric@aldebaran:~/temp/A1$ Ajout du fichier epub au d\u00e9pot local On copie notre fichier epub d\u00e9j\u00e0 existant dans notre r\u00e9pertoire et on l'ajoute au d\u00e9pot local. eric@aldebaran:~/temp/A1$ cp ~/Devs/Chinois/Chinese-grammar-wiki/Epub/Grammar-wiki-A1/Chinese-grammar-wiki-A1.epub .\neric@aldebaran:~/temp/A1$git add .\neric@aldebaran:~/temp/A1$ git commit -m \"premier commit\"\n[master (commit racine) 381b37b] premier commit\n 1 file changed, 0 insertions(+), 0 deletions(-)\n create mode 100644 Chinese-grammar-wiki-A1.epub\neric@aldebaran:~/temp/A1$ Ajout du fichier epub au d\u00e9pot distant (sur atom) apr\u00e8s configuration des d\u00e9pots remote en https et ssh et poussage des donn\u00e9es avec la m\u00e9thode https . eric@aldebaran:~/temp/A1$ git remote add atomssh git@atom.yojik.net:eric/Repos/chinesegrammarwiki-a1.git\neric@aldebaran:~/temp/A1$ git remote add atomhttp https://git.yojik.net/eric/ChineseGrammarWiki-A1.git\neric@aldebaran:~/temp/A1$ git push atomhttp master\nUsername for 'https://git.yojik.net': eric\nPassword for 'https://eric@git.yojik.net':\nD\u00e9compte des objets: 3, fait.\nDelta compression using up to 12 threads.\nCompression des objets: 100% (3/3), fait.\n\u00c9criture des objets: 100% (3/3), 13.90 MiB | 6.05 MiB/s, fait.\nTotal 3 (delta 0), reused 0 (delta 0)\nTo https://git.yojik.net/eric/ChineseGrammarWiki-A1.git\n * [new branch] master -> master\neric@aldebaran:~/temp/A1$ Affichage des derniers commits Test de clonage en https eric@aldebaran:~/temp$ git clone https://git.yojik.net/eric/ChineseGrammarWiki-A1.git\nClonage dans 'ChineseGrammarWiki-A1'...\nUsername for 'https://git.yojik.net': eric\nPassword for 'https://eric@git.yojik.net':\nremote: D\u00e9compte des objets: 3, fait.\nremote: Compression des objets: 100% (3/3), fait.\nremote: Total 3 (delta 0), reused 0 (delta 0)\nD\u00e9paquetage des objets: 100% (3/3), fait.\neric@aldebaran:~/temp$ Test de clonage en ssh eric@aldebaran:~/temp$ git clone git@atom.yojik.net:Repos/eric/chinesegrammarwiki-a1.git\nClonage dans 'chinesegrammarwiki-a1'...\nremote: D\u00e9compte des objets: 3, fait.\nremote: Compression des objets: 100% (3/3), fait.\nremote: Total 3 (delta 0), reused 0 (delta 0)\nR\u00e9ception d'objets: 100% (3/3), 13.90 MiB | 13.56 MiB/s, fait. Explications sur les diff\u00e9rences constat\u00e9es entre les 2 types d'URL L\u00e0, c'est un peu sioux pour trouver la bonne URL; tout d'abord, celle donn\u00e9e par la page de gogs est fausse: il faut rep\u00e9rer le bon r\u00e9pertoire avec le bon chemin et mettre la derni\u00e8re partie en minuscules pour la m\u00e9thode git . Les URLs sont donc diff\u00e9rentes en https et git . Voil\u00e0 les diff\u00e9rences entre les 2 URLs: git clone https://git.yojik.net/eric/ChineseGrammarWiki-A1.git git clone git@atom.yojik.net:Repos/eric/chinesegrammarwiki-a1.git Vous voyez que le chemin relatif, sans la partie Repos , est accept\u00e9e avec la m\u00e9thode https , car le chemin /home/git/Repos est celui donn\u00e9 \u00e0 gogs dans sa configuration de base. Par contre, avec la m\u00e9thode ssh , il faut redonner le chemin complet, avec Repos . Gogs transforme le nom du projet en un nom tout en minuscules; ChineseGrammarWiki-A1.git devient chinesegrammarwiki-a1.git.",
  891. "title": "Tests"
  892. }
  893. ]
  894. }