{ "docs": [ { "location": "/", "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\n\n\nGestion de clefs\u00ab SSH multiples\n\n\nUtilisation d'une carte \u00e0 puce pour s'authentifier\n\n\nUtilisation d'un lecteur NFC et de tags", "title": "Home" }, { "location": "/#installation-dun-serveur-debianstretch-securise", "text": "", "title": "Installation d'un serveur Debian/Stretch s\u00e9curis\u00e9" }, { "location": "/#resume", "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 Gestion de clefs\u00ab SSH multiples Utilisation d'une carte \u00e0 puce pour s'authentifier Utilisation d'un lecteur NFC et de tags", "title": "R\u00e9sum\u00e9" }, { "location": "/1-un/", "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\n\n\nPr\u00e9requis\n\n\n\n\n\n\nUn serveur\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\n\n\nUn nom de domaine\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.\nMon 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\n\n\nUn nom de machine\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\n\n\nUne adresse IP fixe\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\n\n\nUn compte utilisateur\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\n\n\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\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\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\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\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\n\n\nChoix du nom de domaine\n\n\nyojik.net\n (mettez le votre!)\n\n\n\n\n\n\n\n\nSaisie du mot de passe root (super-utilisateur)\n\n\n\n\nConfirmation du mot de passe super-utilisateur.\n\n\n\n\n\n\n\n\nSaisie du compte utilisateur\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\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\n\nConfirmation du partitionnement choisi:\n\n\n\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\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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\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\n\nAffichage de notre table de partitions\n\n\n\n\n\n\n\n\nFin du partitionnement\n\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\n\n\n\n\n\n \n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n\n\n \n\n\n\n\n\n\n \n\n\n\n\n\n\n \n\n\n\n\n\n\n \n\n\n\n\n\n\n \n\n\n\n\n\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\n\nChoix du disque \u00e0 partitionner \n\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\n\nOn modifie les partitions\n\n\n \n\n\n\n\n\n\nPartitionnement en cours\n\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\n\nSaisie de la phrase de passe\n\n\n \n\n\n\n\n\n\nSuite\n\n\n \n\n\n\n\n\n\nAffichage de vos choix\n\n\n \n\n\n\n\n\n\nConfirmation de vos choix\n\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\n \n\n\n\n\n\n\n \n\n\n\n\n\n\n \n\n\n\n\n\n\n \n\n\n\n\n\n\n \n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\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\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", "title": "Installation d'un serveur Debian/Stretch s\u00e9curis\u00e9" }, { "location": "/1-un/#schema-de-notre-installation-at-home", "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.", "title": "Sch\u00e9ma de notre installation \"at home\"" }, { "location": "/1-un/#prerequis", "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.\nMon 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.", "title": "Pr\u00e9requis" }, { "location": "/1-un/#recapitulatif", "text": "Nom de la machine Domaine Adresse IPV4 Comptes Mot de passe atom yojik.net 192.168.111.160 ericadmin *** root ***", "title": "R\u00e9capitulatif" }, { "location": "/1-un/#preparation-de-linstallation", "text": "", "title": "Pr\u00e9paration de l'installation" }, { "location": "/1-un/#telechargement-de-limage-iso-netinstall", "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", "title": "T\u00e9l\u00e9chargement de l'image ISO netinstall" }, { "location": "/1-un/#copie-de-limage-sur-une-clef-usb", "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.", "title": "Copie de l'image sur une clef USB" }, { "location": "/1-un/#modification-du-bios", "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)", "title": "Modification du BIOS" }, { "location": "/1-un/#lancement-de-linstallation", "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.", "title": "Lancement de l'installation" }, { "location": "/1-un/#installation-du-serveur-sans-chiffrage-des-partitions", "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 ...) Confirmation du partitionnement choisi: 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.", "title": "Installation du serveur sans chiffrage des partitions" }, { "location": "/1-un/#installation-de-serveur-avec-chiffrage-des-partitions-methode-manuelle", "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. 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.", "title": "Installation de serveur avec chiffrage des partitions (m\u00e9thode manuelle)" }, { "location": "/1-un/#installation-de-serveur-avec-chiffrage-des-partitions-mode-assiste-lvm", "text": "Le d\u00e9but de l'installation est identique. Nous allons passer directement \u00e0 la partie partitionnement. (section 12) 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) Re-d\u00e9marrage Saisie de la phrase de passe pour d\u00e9bloquer l'acc\u00e8s au disque Et voil\u00e0 :)", "title": "Installation de serveur avec chiffrage des partitions (mode assist\u00e9 LVM)" }, { "location": "/1-un/#installation-de-serveur-avec-chiffrage-des-partitions-et-clef-de-chiffrage-sur-support-amovible", "text": "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 ...", "title": "Installation de serveur avec chiffrage des partitions et clef de chiffrage sur support amovible" }, { "location": "/1-un/#ecriture-de-donnees-aleatoires-sur-le-support-amovible", "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.", "title": "\u00c9criture de donn\u00e9es al\u00e9atoires sur le support amovible." }, { "location": "/1-un/#extraction-de-la-clef-a-partir-dun-secteur-donne-de-la-clef", "text": "dd if=/dev/sdb of=/root/secret.key bs=512 skip=8 count=16", "title": "Extraction de la clef \u00e0 partir d'un secteur donn\u00e9 de la clef" }, { "location": "/1-un/#ajout-de-cette-clef-a-cryptsetup", "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", "title": "Ajout de cette clef \u00e0 cryptsetup" }, { "location": "/1-un/#ajout-dune-regle-udev", "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.", "title": "Ajout d'une r\u00e8gle udev" }, { "location": "/1-un/#test", "text": "", "title": "Test" }, { "location": "/2-deux/", "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 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\n inet6 fe80::223:54ff:fec6:a07 prefixlen 64 scopeid 0x20\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 mtu 65536\n inet 127.0.0.1 netmask 255.0.0.0\n inet6 ::1 prefixlen 128 scopeid 0x10\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\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\nou\n\nssh-copy-id ericadmin@192.168.111.23\n\n\n\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\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\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):\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\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.", "title": "Premi\u00e8res \u00e9tapes de s\u00e9curisation du serveur" }, { "location": "/2-deux/#premieres-etapes-de-securisation-du-serveur", "text": "", "title": "Premi\u00e8res \u00e9tapes de s\u00e9curisation du serveur" }, { "location": "/2-deux/#preambule", "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", "title": "Pr\u00e9ambule" }, { "location": "/2-deux/#recuperation-de-lip-du-serveur", "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 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\n inet6 fe80::223:54ff:fec6:a07 prefixlen 64 scopeid 0x20\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 mtu 65536\n inet 127.0.0.1 netmask 255.0.0.0\n inet6 ::1 prefixlen 128 scopeid 0x10\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", "title": "R\u00e9cup\u00e9ration de l'IP du serveur:" }, { "location": "/2-deux/#securisation-de-ssh", "text": "Voir le lien suivant: Le blog de Guillaume", "title": "S\u00e9curisation de ssh" }, { "location": "/2-deux/#operations-a-effectuer-sur-le-poste-principal", "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\n\nou\n\nssh-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\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\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#", "title": "Op\u00e9rations \u00e0 effectuer sur le poste principal" }, { "location": "/2-deux/#operations-a-effectuer-sur-le-serveur-en-mode-super-utilisateur", "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): 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", "title": "Op\u00e9rations \u00e0 effectuer sur le serveur en mode super-utilisateur." }, { "location": "/2-deux/#test-de-connexion", "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.", "title": "Test de connexion:" }, { "location": "/2-deux/#deuxieme-phase", "text": "", "title": "Deuxi\u00e8me phase" }, { "location": "/2-deux/#securisation-des-mots-de-passe", "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", "title": "S\u00e9curisation des mots de passe" }, { "location": "/2-deux/#exemples-dutilisation-de-ces-programmes", "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", "title": "Exemples d'utilisation de ces programmes:" }, { "location": "/2-deux/#securisation-du-mot-de-passe-super-utilisateur-root", "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.", "title": "S\u00e9curisation du mot de passe super-utilisateur (root)" }, { "location": "/2-deux/#securisation-du-mot-de-passe-administrateur", "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.", "title": "S\u00e9curisation du mot de passe administrateur" }, { "location": "/2-deux/#test-du-hostname", "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.", "title": "Test du hostname" }, { "location": "/3-trois/", "text": "\ufeff\n\n\nConfiguration 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 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\n inet6 fe80::223:54ff:fec6:a07 prefixlen 64 scopeid 0x20\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 mtu 65536\n inet 127.0.0.1 netmask 255.0.0.0\n inet6 ::1 prefixlen 128 scopeid 0x10\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 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\n inet6 fe80::3aea:a7ff:fea6:cf93 prefixlen 64 scopeid 0x20\n inet6 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 prefixlen 64 scopeid 0x0\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", "title": "Configuration du r\u00e9seau" }, { "location": "/3-trois/#configuration-du-reseau", "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)", "title": "Configuration du r\u00e9seau" }, { "location": "/3-trois/#configuration-de-lipv4", "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 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\n inet6 fe80::223:54ff:fec6:a07 prefixlen 64 scopeid 0x20\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 mtu 65536\n inet 127.0.0.1 netmask 255.0.0.0\n inet6 ::1 prefixlen 128 scopeid 0x10\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", "title": "Configuration de l'IPV4" }, { "location": "/3-trois/#configuration-de-lipv6", "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 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\n inet6 fe80::3aea:a7ff:fea6:cf93 prefixlen 64 scopeid 0x20\n inet6 2a01:e0a:54:c220:3aea:a7ff:fea6:cf93 prefixlen 64 scopeid 0x0\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.", "title": "Configuration de l'IPV6" }, { "location": "/3-trois/#tester-la-configuration-reseau", "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", "title": "Tester la configuration r\u00e9seau" }, { "location": "/4-quatre/", "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", "title": "Installation d'un serveur de temps" }, { "location": "/4-quatre/#installation-dun-serveur-de-temps", "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) ...", "title": "Installation d'un serveur de temps" }, { "location": "/4-quatre/#test-du-serveur-de-temps", "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", "title": "Test du serveur de temps" }, { "location": "/5-cinq/", "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\n\n\nroot@aijan:/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@aijan:/home/ericadmin#\n\n\n\n\n\n\nVous noterez que le nom du serveur est diff\u00e9rent. J'ai test\u00e9 mon tutoriel sur un nouveau serveur (aijan.yojik.net.)\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\n\n\niptables-save > /etc/iptables/rules.v4\nip6tables-save > /etc/iptables/rules.v6\n\n\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\n\n\nroot@aijan:/home/ericadmin# systemctl stop netfilter-persistent\nroot@aijan:/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 aijan systemd[1]: Starting netfilter persistent configuration...\nf\u00e9vr. 11 13:42:02 aijan netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start\nf\u00e9vr. 11 13:42:02 aijan netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start\nf\u00e9vr. 11 13:42:02 aijan systemd[1]: Started netfilter persistent configuration.\nf\u00e9vr. 11 13:50:22 aijan systemd[1]: Stopping netfilter persistent configuration...\nf\u00e9vr. 11 13:50:22 aijan netfilter-persistent[1629]: Automatic flush disabled; use '/usr/sbin/netfilter-persistent flush'\nf\u00e9vr. 11 13:50:22 aijan systemd[1]: netfilter-persistent.service: Control process exited, code=exited status=1\nf\u00e9vr. 11 13:50:22 aijan systemd[1]: Stopped netfilter persistent configuration.\nf\u00e9vr. 11 13:50:22 aijan systemd[1]: netfilter-persistent.service: Unit entered failed state.\nf\u00e9vr. 11 13:50:22 aijan systemd[1]: netfilter-persistent.service: Failed with result 'exit-code'.\nroot@aijan:/home/ericadmin#\n\n\nroot@aijan:/home/ericadmin# systemctl start netfilter-persistent\nroot@aijan:/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 aijan systemd[1]: Starting netfilter persistent configuration...\nf\u00e9vr. 11 13:51:09 aijan netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start\nf\u00e9vr. 11 13:51:09 aijan netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start\nf\u00e9vr. 11 13:51:09 aijan systemd[1]: Started netfilter persistent configuration.\nroot@aijan:/home/ericadmin#\n\n\n\n\n\n\nPour sauver des r\u00e8gles \u201centr\u00e9es \u00e0 la main\u201d, tapez:\n\n\n\n\nservice netfilter-persistent save\n\n\n\n\n\n\nroot@aijan:/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@aijan:/home/ericadmin#\n\n\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\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\n\n\n\nExplications:\n\n\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\n\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\nroot@aijan:/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@aijan:/etc/iptables# iptables -N TCP\nroot@aijan:/etc/iptables# iptables -N UDP\n\nroot@aijan:/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\n\noot@aijan:/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\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\nIl suffit de r\u00e9p\u00e9ter pour les autres r\u00e8gles puis pour IPV6.\n\n\n\n\n\n\nNous obtenons donc les r\u00e8gles suivantes:\n\n\nPour IPV4:\n\n\n\n\nroot@aijan:/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@aijan:/etc/iptables#\n\n\n\n\n\n\nPour IPV6:\n\n\n\n\n\nroot@aijan:/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@aijan:/etc/iptables#\n\n\n\n\n\n\n\nTest DNS et du serveur de temps (avec iptables actif)\n\n\n\n\n\nroot@aijan:/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@aijan:/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\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\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\n\n\nConfiguration de \nufw\n\n\nApr\u00e8s installation, le pare-feu est inactif.\n\n\n\n\nroot@atom:/home/ericadmin# ufw status\nStatus: inactive\nroot@atom:/home/ericadmin#\n\n\n\n\n\n\nNous allons autoriser les connexions \nssh\n et \nntp\n, seuls services en place pour l'instant.\n\n\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\n\n\nActivation du pare-feu:\n\n\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\n\n\nV\u00e9rification:\n\n\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\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\n\n\nufw disable\n\n\n\n\n\n\nActivation du logging des actions de \nufw\n\n\n\n\nroot@atom:/home/ericadmin# ufw logging on\nLogging enabled\nroot@atom:/home/ericadmin#\n\n\n\n\n\n\nVous pouvez voiur l'ensemble des commandes de \nufw\n en tapant:\n\n\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\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.", "title": "Installation d'un pare-feu" }, { "location": "/5-cinq/#installation-dun-pare-feu", "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 .", "title": "Installation d'un pare-feu" }, { "location": "/5-cinq/#installation-de-iptables", "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@aijan:/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@aijan:/home/ericadmin# Vous noterez que le nom du serveur est diff\u00e9rent. J'ai test\u00e9 mon tutoriel sur un nouveau serveur (aijan.yojik.net.) Nous obtenons donc 2 fichiers de configuration, /etc/iptables/rules.v4 et /etc/iptables/rules.v6. En listant ces fichiers, aucune r\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@aijan:/home/ericadmin# systemctl stop netfilter-persistent\nroot@aijan:/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 aijan systemd[1]: Starting netfilter persistent configuration...\nf\u00e9vr. 11 13:42:02 aijan netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start\nf\u00e9vr. 11 13:42:02 aijan netfilter-persistent[1525]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start\nf\u00e9vr. 11 13:42:02 aijan systemd[1]: Started netfilter persistent configuration.\nf\u00e9vr. 11 13:50:22 aijan systemd[1]: Stopping netfilter persistent configuration...\nf\u00e9vr. 11 13:50:22 aijan netfilter-persistent[1629]: Automatic flush disabled; use '/usr/sbin/netfilter-persistent flush'\nf\u00e9vr. 11 13:50:22 aijan systemd[1]: netfilter-persistent.service: Control process exited, code=exited status=1\nf\u00e9vr. 11 13:50:22 aijan systemd[1]: Stopped netfilter persistent configuration.\nf\u00e9vr. 11 13:50:22 aijan systemd[1]: netfilter-persistent.service: Unit entered failed state.\nf\u00e9vr. 11 13:50:22 aijan systemd[1]: netfilter-persistent.service: Failed with result 'exit-code'.\nroot@aijan:/home/ericadmin#\n\n\nroot@aijan:/home/ericadmin# systemctl start netfilter-persistent\nroot@aijan:/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 aijan systemd[1]: Starting netfilter persistent configuration...\nf\u00e9vr. 11 13:51:09 aijan netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/15-ip4tables start\nf\u00e9vr. 11 13:51:09 aijan netfilter-persistent[1641]: run-parts: executing /usr/share/netfilter-persistent/plugins.d/25-ip6tables start\nf\u00e9vr. 11 13:51:09 aijan systemd[1]: Started netfilter persistent configuration.\nroot@aijan:/home/ericadmin# Pour sauver des r\u00e8gles \u201centr\u00e9es \u00e0 la main\u201d, tapez: service netfilter-persistent save root@aijan:/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@aijan:/home/ericadmin#", "title": "Installation de iptables" }, { "location": "/5-cinq/#configuration-des-regles-iptables", "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\n\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\nroot@aijan:/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@aijan:/etc/iptables# iptables -N TCP\nroot@aijan:/etc/iptables# iptables -N UDP\n\nroot@aijan:/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\n\noot@aijan:/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\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\nIl suffit de r\u00e9p\u00e9ter pour les autres r\u00e8gles puis pour IPV6. Nous obtenons donc les r\u00e8gles suivantes: Pour IPV4: root@aijan:/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@aijan:/etc/iptables# Pour IPV6: \nroot@aijan:/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@aijan:/etc/iptables#", "title": "Configuration des r\u00e8gles iptables" }, { "location": "/5-cinq/#test-dns-et-du-serveur-de-temps-avec-iptables-actif", "text": "root@aijan:/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@aijan:/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.", "title": "Test DNS et du serveur de temps (avec iptables actif)" }, { "location": "/5-cinq/#installation-de-ufw", "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) ...", "title": "Installation de ufw" }, { "location": "/5-cinq/#configuration-de-ufw", "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)", "title": "Configuration de ufw" }, { "location": "/5-cinq/#activation-du-pare-feu", "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#", "title": "Activation du pare-feu:" }, { "location": "/5-cinq/#verification", "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.", "title": "V\u00e9rification:" }, { "location": "/5-cinq/#pour-desactiver-le-pare-feu", "text": "ufw disable", "title": "Pour d\u00e9sactiver le pare-feu:" }, { "location": "/5-cinq/#activation-du-logging-des-actions-de-ufw", "text": "root@atom:/home/ericadmin# ufw logging on\nLogging enabled\nroot@atom:/home/ericadmin# Vous pouvez voiur 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.", "title": "Activation du logging des actions de ufw" }, { "location": "/6-six/", "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\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\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\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\n\n[sshd]\nenabled = true\n\n\n\n\n\n\nIl va falloir l'\u00e9diter (n'oubliez pas de faire une sauvegarde avant!), pour obtenir ceci:\n\n\n\n\n[sshd]\nenabled = false\n\n[ssh-with-ufw]\nenabled = true\nport = 22\nfilter = sshd\naction = ufw[application=\"OpenSSH\", blocktype=reject]\nlogpath = /var/log/auth.log\nmaxretry = 3\n\n\n\n\n\n\nEn effet, \nfail2ban\n fonctionne par d\u00e9faut avec \niptables\n. Il faut donc activer le fonctionnement avec \nufw\n.\n\n\nOn cr\u00e9e une nouvelle r\u00e8gle, appel\u00e9e [ssh-with-ufw]. L'action \nufw\n existe d\u00e9j\u00e0 par d\u00e9faut dans l'installation.", "title": "Contrer les attaques de brute-force avec fail2ban" }, { "location": "/6-six/#contrer-les-attaques-de-brute-force-avec-fail2ban", "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.", "title": "Contrer les attaques de brute-force avec fail2ban" }, { "location": "/6-six/#installation", "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#", "title": "Installation" }, { "location": "/6-six/#parametrage-de-fail2ban", "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 Il va falloir l'\u00e9diter (n'oubliez pas de faire une sauvegarde avant!), pour obtenir ceci: [sshd]\nenabled = false\n\n[ssh-with-ufw]\nenabled = true\nport = 22\nfilter = sshd\naction = ufw[application=\"OpenSSH\", blocktype=reject]\nlogpath = /var/log/auth.log\nmaxretry = 3 En effet, fail2ban fonctionne par d\u00e9faut avec iptables . Il faut donc activer le fonctionnement avec ufw . On cr\u00e9e une nouvelle r\u00e8gle, appel\u00e9e [ssh-with-ufw]. L'action ufw existe d\u00e9j\u00e0 par d\u00e9faut dans l'installation.", "title": "Param\u00e9trage de fail2ban" }, { "location": "/7-sept/", "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 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\nroot@atom:/etc/fail2ban# mail ericadmin\nCc: \nSubject: Essai 1\nEssai 1\n.\n\nericadmin@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\nReturn-Path: \nX-Original-To: ericadmin@atom.yojik.net\nDelivered-To: ericadmin@atom.yojik.net\nReceived: by atom.yojik.net (Postfix, from userid 0)\n id 3AE0F460033; Mon, 26 Nov 2018 09:26:26 +0100 (CET)\nTo: \nSubject: Essai 1\nX-Mailer: mail (GNU Mailutils 3.1.1)\nMessage-Id: <20181126082626.3AE0F460033@atom.yojik.net>\nDate: Mon, 26 Nov 2018 09:26:26 +0100 (CET)\nFrom: root@atom.yojik.net (root)\n\nEssai 1\n.\n? q\n1 message sauvegard\u00e9 dans /home/ericadmin/mbox\n0 message conserv\u00e9 dans /var/mail/ericadmin\n\n\n\n\n\n\n\n\nericadmin -> root\n\n\n\n\nericadmin@atom:~/bin$ mail root\nCc: \nSubject: Essai 2\nEssai 2\n.\n\n\nroot@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\nReturn-Path: \nX-Original-To: root@atom.yojik.net\nDelivered-To: root@atom.yojik.net\nReceived: by atom.yojik.net (Postfix, from userid 1000)\n id 46220460036; Mon, 26 Nov 2018 09:27:04 +0100 (CET)\nTo: \nSubject: Essai 2\nX-Mailer: mail (GNU Mailutils 3.1.1)\nMessage-Id: <20181126082704.46220460036@atom.yojik.net>\nDate: Mon, 26 Nov 2018 09:27:04 +0100 (CET)\nFrom: ericadmin@atom.yojik.net (Eric Streit)\n\nEssai 2\n.\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: \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 ; 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: \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.", "title": "Installation d'un serveur de courrier basique" }, { "location": "/7-sept/#installation-dun-serveur-de-courrier-basique", "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 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:~#", "title": "Installation d'un serveur de courrier basique" }, { "location": "/7-sept/#test-denvoi-dun-utilisateur-du-serveur-a-lautre", "text": "Root -> ericadmin root@atom:/etc/fail2ban# mail ericadmin\nCc: \nSubject: Essai 1\nEssai 1\n.\n\nericadmin@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\nReturn-Path: \nX-Original-To: ericadmin@atom.yojik.net\nDelivered-To: ericadmin@atom.yojik.net\nReceived: by atom.yojik.net (Postfix, from userid 0)\n id 3AE0F460033; Mon, 26 Nov 2018 09:26:26 +0100 (CET)\nTo: \nSubject: Essai 1\nX-Mailer: mail (GNU Mailutils 3.1.1)\nMessage-Id: <20181126082626.3AE0F460033@atom.yojik.net>\nDate: Mon, 26 Nov 2018 09:26:26 +0100 (CET)\nFrom: root@atom.yojik.net (root)\n\nEssai 1\n.\n? q\n1 message sauvegard\u00e9 dans /home/ericadmin/mbox\n0 message conserv\u00e9 dans /var/mail/ericadmin ericadmin -> root ericadmin@atom:~/bin$ mail root\nCc: \nSubject: Essai 2\nEssai 2\n.\n\n\nroot@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\nReturn-Path: \nX-Original-To: root@atom.yojik.net\nDelivered-To: root@atom.yojik.net\nReceived: by atom.yojik.net (Postfix, from userid 1000)\n id 46220460036; Mon, 26 Nov 2018 09:27:04 +0100 (CET)\nTo: \nSubject: Essai 2\nX-Mailer: mail (GNU Mailutils 3.1.1)\nMessage-Id: <20181126082704.46220460036@atom.yojik.net>\nDate: Mon, 26 Nov 2018 09:27:04 +0100 (CET)\nFrom: ericadmin@atom.yojik.net (Eric Streit)\n\nEssai 2\n. L'envoi des messages entre utilisateurs du serveur serveur marche comme il faut.", "title": "Test d'envoi d'un utilisateur du serveur \u00e0 l'autre" }, { "location": "/7-sept/#premiere-etape-de-configuration-de-postfix", "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", "title": "Premi\u00e8re \u00e9tape de configuration de postfix" }, { "location": "/7-sept/#test-denvoi-de-messages-a-partir-de-ce-serveur-sur-mon-serveur-principal", "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.", "title": "Test d'envoi de messages \u00e0 partir de ce serveur sur mon serveur principal" }, { "location": "/7-sept/#test-denvoi-de-messages-a-partir-dun-poste-exterieur", "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: \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 ; 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: \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.", "title": "Test d'envoi de messages \u00e0 partir d'un poste ext\u00e9rieur" }, { "location": "/7-sept/#mise-a-jour-du-fichier-etcaliases", "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:~#", "title": "Mise \u00e0 jour du fichier /etc/aliases" }, { "location": "/7-sept/#test-de-lenvoi-a-root-pour-verifier-la-redirection", "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.", "title": "Test de l'envoi \u00e0 root pour v\u00e9rifier la redirection" }, { "location": "/7-sept/#le-fichier-etcmailname", "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.", "title": "Le fichier /etc/mailname" }, { "location": "/8-huit/", "text": "\ufeff\n\n\nInstallation du serveur DNS\n\n\nNous allons installer \nbind\n. \n\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\n...\n\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\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\nadara.yojik.eu: serveur DNS primaire pour le domaine yojik.eu\n\n\npolis.yojik.eu: serveur DNS secondaire pour le domaine yojik.eu\n serveur DNS secondaire pour le domaine yojik.net\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\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\n\n\nContenu apr\u00e8s ajout de la zone yojik.net:\n\n\n\n\nzone \"yojik.net\" {\n type master;\n file \"/etc/bind/db.yojik.net\";\n};\n\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\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\n\n\nOn relance bind et on teste en local:\n\n\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\n\n\n\u00c7a marche!\nTest de notre enregistrement MX (mail) avec \ndig\n:\n\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\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\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\n\n\n\nConfiguration des options: fichier /etc/bind/named.conf.options\n\n\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\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\u00e9quoit.\n\n\nIl faut quelques heures pour que la propagation se fasse.", "title": "Installation du serveur DNS" }, { "location": "/8-huit/#installation-du-serveur-dns", "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\n...\n\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\n 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};", "title": "Installation du serveur DNS" }, { "location": "/8-huit/#configuration-des-options-fichier-etcbindnamedconfoptions", "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.", "title": "Configuration des options: fichier /etc/bind/named.conf.options" }, { "location": "/8-huit/#configuration-de-votre-box-et-des-enregistrements-de-votre-registrar", "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. V\u00e9rification de la config DNS: Allez sur le site https://toolbox.googleapps.com/apps/dig/ pour tester votre configuration.", "title": "Configuration de votre box et des enregistrements de votre registrar" }, { "location": "/8-huit/#configuration-du-reverse-dns", "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\u00e9quoit. Il faut quelques heures pour que la propagation se fasse.", "title": "Configuration du reverse DNS" }, { "location": "/9-neuf/", "text": "\ufeff## 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\n...\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\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\nwww.yojik.net\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\n\nServerAdmin webmaster@yojik.net\nServerName www.yojik.net\n\nDocumentRoot /var/www/html/yojiknet/\n\n\n Options Indexes MultiViews\n AllowOverride FileInfo AuthConfig Indexes\n Order allow,deny\n allow from all\n Require all granted\n\n\n ErrorLog ${APACHE_LOG_DIR}/error.log\n CustomLog ${APACHE_LOG_DIR}/access.log combined\n\nLogLevel warn\n\n\n\n\n\n\nVirtualhost: yazik.yojik.net\n\n\n\n\nServerAdmin webmaster@yojik.net\nServerName yazik.yojik.net\n\nDocumentRoot /var/www/html/yaziknet/\n\n\n Options Indexes MultiViews\n AllowOverride FileInfo AuthConfig Indexes\n Order allow,deny\n allow from all\n Require all granted\n\n\n ErrorLog ${APACHE_LOG_DIR}/error.log\n CustomLog ${APACHE_LOG_DIR}/access.log combined\n\nLogLevel warn\n\n\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\nmkdir /var/www/html/yojiknet /var/www/html/yaziknet\n\n\ncd /var/www/html\n\n\n\n\nOn cr\u00e9e 2 fichiers \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\n\n\n \n The Yojik.net home page\n \n \n \n \n

The Yojik Net home page

\n

Nothing interesting at the moment .. comming soon!

\n \n\n\n\n\n\n\n/var/www/html/yaziknet/index.html\n\n\n\n\n\n \n The Yazik.net home page\n \n \n \n \n

The Yazik Net home page

\n

Nothing interesting at the moment .. comming soon!

\n \n\n\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 cr\u00e9e un \n\n\nOn teste avec un navigateur.\n\n\nadresse 1: www.yojik.net\n\n\nadresse 2: yazik.yojik.net\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 :)", "title": "Installation d'un serveur web" }, { "location": "/9-neuf/#sauvegarde-de-notre-nouvelle-configuration", "text": "root@aijan:#cd /home/ericadmin/bin/\nroot@aijan:/home/ericadmin/bin#./firewall.sh restart\nroot@aijan:/home/ericadmin/bin#service netfilter-persistent save", "title": "Sauvegarde de notre nouvelle configuration" }, { "location": "/9-neuf/#creation-des-hotes-virtuels-virtual-hosts", "text": "3 h\u00f4tes virtuels \u00e0 cr\u00e9er: yojik.net\nwww.yojik.net\nyazik.yojik.net Cr\u00e9ez 2 fichiers d'h\u00f4tes virtuels. Exemple de fichier: Virtualhost: www.yojik.net \n\nServerAdmin webmaster@yojik.net\nServerName www.yojik.net\n\nDocumentRoot /var/www/html/yojiknet/\n\n\n Options Indexes MultiViews\n AllowOverride FileInfo AuthConfig Indexes\n Order allow,deny\n allow from all\n Require all granted\n\n\n ErrorLog ${APACHE_LOG_DIR}/error.log\n CustomLog ${APACHE_LOG_DIR}/access.log combined\n\nLogLevel warn\n\n Virtualhost: yazik.yojik.net \n\nServerAdmin webmaster@yojik.net\nServerName yazik.yojik.net\n\nDocumentRoot /var/www/html/yaziknet/\n\n\n Options Indexes MultiViews\n AllowOverride FileInfo AuthConfig Indexes\n Order allow,deny\n allow from all\n Require all granted\n\n\n ErrorLog ${APACHE_LOG_DIR}/error.log\n CustomLog ${APACHE_LOG_DIR}/access.log combined\n\nLogLevel warn\n\n 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", "title": "Cr\u00e9ation des h\u00f4tes virtuels (virtual hosts)" }, { "location": "/9-neuf/#creation-des-fichiers-html", "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 2 fichiers index.html sous chaque r\u00e9pertoire cr\u00e9\u00e9: Exemple de fichier de base: /var/www/html/yojiknet/index.html \n\n\n \n The Yojik.net home page\n \n \n \n \n

The Yojik Net home page

\n

Nothing interesting at the moment .. comming soon!

\n \n /var/www/html/yaziknet/index.html \n\n\n \n The Yazik.net home page\n \n \n \n \n

The Yazik Net home page

\n

Nothing interesting at the moment .. comming soon!

\n \n 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 cr\u00e9e un 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 :)", "title": "Cr\u00e9ation des fichiers html" }, { "location": "/10-dix/", "text": "\ufeff## 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.\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\nCela se passe dans le fichier /etc/postfix/main.cf\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: \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 ; 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: \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```shell\n\n\nMailbox locations and namespaces\n\n\n\n\nmail_location = mbox:~/mail:INBOX=/var/mail/%u\n```\n\n\n\n\n\n\nLe format par d\u00e9faut est \nmbox\n situ\u00e9 dans \n/var/mail/user\n\n Nous allons changer cela en:\n\n\n```shell\nmail_location = maildir:~/Maildir\n```\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\nIndiquer \u00e0 Postfix d'utiliser dovecot pour l'acc\u00e8s aux mails ainsi que pour l'authentification.\n\n\n\n\nNous allons modifier le fichier \n/etc/postfix/main.cf\n et ajouter les lignes suivantes:\n\n\n> smtpd_sasl_type = dovecot\nsmtpd_sasl_path = private/auth\nsmtpd_sasl_auth_enable = yes\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 **service auth** par ce qui suit:\n\n ```shell\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\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 > disable_plaintext_auth = no\n auth_mechanisms = plain login\n\n\n\n\nOn relance postfix et dovecot pour prendre en compte les modifications.\n \nshell\n root@atom:/etc/postfix# systemctl restart postfix\n root@atom:/etc/postfix# systemctl restart dovecot\n\n On v\u00e9rifie que tout s'est bien pass\u00e9 avec la commande:\n \nshell\n root@atom:/etc/postfix# tail -f /var/log/daemon.log \n Nov 26 12:47:22 atom systemd[1]: Stopped Postfix Mail Transport Agent (instance -).\n Nov 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 -).\n Nov 26 12:47:23 atom systemd[1]: Starting Postfix Mail Transport Agent...\n Nov 26 12:47:23 atom systemd[1]: Started Postfix Mail Transport Agent.\n Nov 26 12:47:28 atom systemd[1]: Stopping Dovecot IMAP/POP3 email server...\n Nov 26 12:47:29 atom systemd[1]: Stopped Dovecot IMAP/POP3 email server.\n Nov 26 12:47:29 atom systemd[1]: Starting Dovecot IMAP/POP3 email server...\n Nov 26 12:47:29 atom systemd[1]: dovecot.service: PID file /var/run/dovecot/master.pid not readable (yet?) after start: No such file or directory\n Nov 26 12:47:29 atom systemd[1]: Started Dovecot IMAP/POP3 email server.\n\n On quitte avec Ctrl C. \n C'est bon.\n\n\n\n\nTest 1: Nous allons nous connecter avec telnet; voici la capture de la session:\n 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.)\n Testons si le message est bien arriv\u00e9:\n\n\n\n\nshell\n 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).\n\n\nLe message est bien arriv\u00e9. Essayons avec les commandes Imap; il nous faut installer telnet avant:\n\n\n\n\napt install telnet\n\n\n\n\nNous pouvons donc nous connecter aux ports suivants: 143 et 993.\n\n\nshell\n root@aijan:/home/ericadmin# telnet localhost 143\n Trying ::1...\n Connected to localhost.\n Escape character is '^]'.\n * OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN AUTH=LOGIN] Dovecot ready.\n x1 LOGIN testmail testmail\n x1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in\n x2 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\n x2 OK [READ-WRITE] Select completed (0.000 + 0.000 secs).\n x4 LOGOUT\n * BYE Logging out\n x4 OK Logout completed (0.000 + 0.000 secs).\n Connection closed by foreign host.\n root@aijan:/home/ericadmin#\n\n \u00c7a marche: \nOK [UNSEEN 1] First unseen.\n\nNous nous sommes connect\u00e9s avec le mot de passe en clait (testmail pour l'utilisateur testmail.)\n\n\n\n\nTest 2: envoi de mail\n 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:\n\n\nprintf '\\0%s\\0%s' 'testmail' 'testmail' | openssl base64\n AHRlc3RtYWlsAHRlc3RtYWls\n\n\n\n\n\n\n\n\nshell\n root@aijan:/home/ericadmin# telnet localhost 25\n Trying ::1...\n Connected to localhost.\n Escape character is '^]'.\n 220 aijan.yojik.net ESMTP Postfix (Debian/GNU)\n ehlo localhost\n 250-aijan.yojik.net\n 250-PIPELINING\n 250-SIZE 10240000\n 250-VRFY\n 250-ETRN\n 250-STARTTLS\n 250-AUTH PLAIN LOGIN\n 250-ENHANCEDSTATUSCODES\n 250-8BITMIME\n 250-DSN\n 250 SMTPUTF8\n AUTH PLAIN AHRlc3RtYWlsAHRlc3RtYWls\n 235 2.7.0 Authentication successful\n mail from: testmail\n 250 2.1.0 Ok\n data\n 554 5.5.1 Error: no valid recipients\n rcpt to: ericounet26200@gmail.com\n 250 2.1.5 Ok\n data\n 354 End data with .\n Subject: mon, premier mail avec sasl\n mon premier mail avec sasl\n .\n 250 2.0.0 Ok: queued as A664BD004A1\n quit\n 221 2.0.0 Bye\n Connection closed by foreign host.\n root@aijan:/home/ericadmin#\n\n V\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 = .\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\n\n\nsmtp inet n - y - - smtpd\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\nsmtps inet n - - - - smtpd\n\n\n\n\npour obtenir:\n\n\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\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 refus\u00e9e.\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 accept\u00e9e et fonctionne. Nous voyons aussi notre certificat Letsencrypt 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\n\n\nsmtpd_tls_auth_only = yes\n\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\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\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\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\n\nssl = yes\nssl_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\n\n\nuserdel testmail\n\n\n\n\nPensez \u00e0 supprimer le r\u00e9pertoire home de cet utlisateur:\n\n\n\n\nrm -Rf /home/testmail\n\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\n\n\nservice netfilter-persistent save\n\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: \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: \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: \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 ; 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: \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): \u00e7a marche.\n\n\nR\u00e9ception des messages sur la machine de bureau (thunderbird): \u00e7a marche.\n\n\nEnvoi d'un message \u00e0 partir du compte du serveur (thunderbird): \u00e7a marche.\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\nBien: la configuration est quasi termin\u00e9e: il nous reste \u00e0 ajouter SPF, DKIM, Dane et DNSSEC. et les comptes virtuels ...\n\n\nA faire:\n\n\nmettre le fichier mozilla de configuration automatique\ntester \u00e0 distance\n\n\nAjouter des utilisateurs virtuels (dbm, sqlite, mariadb)\n\n\nAnalyse des logs:\n\n\nJust install it by(for Debian/Ubuntu, for other Linux distr. you need other installation command)\n\n\napt-get install pflogsumm\n\n\n\nGet today's summary by:\n\n\npflogsumm -d today /var/log/mail.log\n\n\n\nR\u00e9sultat:\n\n\n\n\nroot@adara:/home/ericadmin# pflogsumm -d today /var/log/mail.log\nPostfix log summaries for Jul 1\n\n\nGrand Totals\n\n\nmessages\n\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\n\n2248k 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\ntime received delivered deferred bounced rejected\n--\n0000-0100 0 0 0 0 0 \n0100-0200 0 0 0 0 0 \n0200-0300 0 0 0 0 0 \n0300-0400 0 0 0 0 3 \n0400-0500 0 0 0 0 7 \n0500-0600 0 0 0 0 1 \n0600-0700 1 1 0 0 1 \n0700-0800 2 2 0 0 1 \n0800-0900 4 4 0 0 7 \n0900-1000 4 4 0 0 2 \n1000-1100 10 9 0 0 2 \n1100-1200 2 2 0 0 1 \n1200-1300 0 0 0 0 2 \n1300-1400 0 0 0 0 0 \n1400-1500 0 0 0 0 0 \n1500-1600 1 1 0 0 2 \n1600-1700 0 0 0 0 0 \n1700-1800 0 0 0 0 0 \n1800-1900 0 0 0 0 0 \n1900-2000 0 0 0 0 0 \n2000-2100 0 0 0 0 0 \n2100-2200 0 0 0 0 0 \n2200-2300 0 0 0 0 0 \n2300-2400 0 0 0 0 0\n\n\n\nHost/Domain Summary: Message Delivery\n\n\nsent cnt bytes defers avg dly max dly host/domain\n\n\n\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\n\n\nHost/Domain Summary: Messages Received \n\n\nmsg cnt bytes host/domain\n\n\n\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\n\n\nSenders by message count\n\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\n\n\nRecipients by message count\n\n\n 15 eric@yojik.eu\n 6 goulya@yojik.eu\n 2 nico@picapo.net\n\n\n\nSenders by message size\n\n\n1917k 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\n\nRecipients by message size\n\n\n1916k goulya@yojik.eu\n 333462 eric@yojik.eu\n 7008 nico@picapo.net\n\n\nmessage deferral detail: none\n\n\nmessage bounce detail (by relay): none\n\n\nmessage reject detail\n\n\nRCPT\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\n\nmessage reject warning detail: none\n\n\nmessage hold detail: none\n\n\nmessage discard detail: none\n\n\nsmtp delivery failures: none\n\n\nWarnings\n\n\nsmtpd (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\n\nFatal Errors: none\n\n\nPanics: none\n\n\nMaster daemon messages: none\nroot@adara:/home/ericadmin# \n\n\n\n\nInstallation 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\nInstallation des d\u00e9pendances: librairies et programmes\n\n\nroot@adara:/home/ericadmin/bin# apt install unzip\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances \n\nLecture des informations d'\u00e9tat... Fait\nPaquets sugg\u00e9r\u00e9s :\n zip\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n unzip\n0 mis \u00e0 jour, 1 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 170 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 547 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nR\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 unzip amd64 6.0-21 [170 kB]\n170 ko r\u00e9ceptionn\u00e9s en 0s (5 565 ko/s)\nS\u00e9lection du paquet unzip pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27662 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../unzip_6.0-21_amd64.deb ...\nD\u00e9paquetage de unzip (6.0-21) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour mime-support (3.60) ...\nParam\u00e9trage de unzip (6.0-21) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nroot@adara:/home/ericadmin/bin# mc\n\n\nroot@adara:/home/ericadmin/bin# \nroot@adara:/etc# mc\n\n\nroot@adara:/home/www# mkdir rainloop\n\n\nroot@adara:/etc# apt search php | grep curl\n\n\nWARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n\n\nphp-curl/stable 1:7.0+49 all\nphp7.0-curl/stable,stable 7.0.27-0+deb9u1 amd64\nroot@adara:/etc# apt install php7.0-curl\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances \n\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n libcurl3 php-common php7.0-common psmisc\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n libcurl3 php-common php7.0-common php7.0-curl psmisc\n0 mis \u00e0 jour, 5 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 1 333 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 6 149 ko 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 psmisc amd64 22.21-2.1+b2 [123 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-common all 1:49 [14,1 kB]\nR\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-common amd64 7.0.27-0+deb9u1 [877 kB]\nR\u00e9ception de:4 http://security.debian.org/debian-security stretch/updates/main amd64 libcurl3 amd64 7.52.1-5+deb9u6 [291 kB]\nR\u00e9ception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-curl amd64 7.0.27-0+deb9u1 [27,4 kB]\n1 333 ko r\u00e9ceptionn\u00e9s en 0s (3 062 ko/s) \n\nS\u00e9lection du paquet libcurl3:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27680 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../libcurl3_7.52.1-5+deb9u6_amd64.deb ...\nD\u00e9paquetage de libcurl3:amd64 (7.52.1-5+deb9u6) ...\nS\u00e9lection du paquet psmisc pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../psmisc_22.21-2.1+b2_amd64.deb ...\nD\u00e9paquetage de psmisc (22.21-2.1+b2) ...\nS\u00e9lection du paquet php-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php-common_1%3a49_all.deb ...\nD\u00e9paquetage de php-common (1:49) ...\nS\u00e9lection du paquet php7.0-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php7.0-common_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-common (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet php7.0-curl pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php7.0-curl_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-curl (7.0.27-0+deb9u1) ...\nParam\u00e9trage de psmisc (22.21-2.1+b2) ...\nParam\u00e9trage de libcurl3:amd64 (7.52.1-5+deb9u6) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nParam\u00e9trage de php-common (1:49) ...\nCreated symlink /etc/systemd/system/timers.target.wants/phpsessionclean.timer \u2192 /lib/systemd/system/phpsessionclean.timer.\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de php7.0-common (7.0.27-0+deb9u1) ...\n\n\nCreating config file /etc/php/7.0/mods-available/calendar.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/ctype.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/exif.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/fileinfo.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/ftp.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/gettext.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/iconv.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/pdo.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/phar.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/posix.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/shmop.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/sockets.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/sysvmsg.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/sysvsem.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/sysvshm.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/tokenizer.ini with new version\nParam\u00e9trage de php7.0-curl (7.0.27-0+deb9u1) ...\n\n\nCreating config file /etc/php/7.0/mods-available/curl.ini with new version\nroot@adara:/etc# apt search php | grep iconv\n\n\nWARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n\n\nlibhtml-wikiconverter-phpwiki-perl/stable 0.51-2 all\nphp-symfony-polyfill-iconv/stable 1.2.0-1 all\nroot@adara:/etc# apt install php-symfony-polyfill-iconv\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances \n\nLecture des informations d'\u00e9tat... Fait\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n php-symfony-polyfill-iconv\n0 mis \u00e0 jour, 1 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 124 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 1 585 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nR\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-symfony-polyfill-iconv all 1.2.0-1 [124 kB]\n124 ko r\u00e9ceptionn\u00e9s en 0s (817 ko/s) \n\nS\u00e9lection du paquet php-symfony-polyfill-iconv pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27826 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../php-symfony-polyfill-iconv_1.2.0-1_all.deb ...\nD\u00e9paquetage de php-symfony-polyfill-iconv (1.2.0-1) ...\nParam\u00e9trage de php-symfony-polyfill-iconv (1.2.0-1) ...\nroot@adara:/etc# apt search php | grep json\n\n\nWARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n\n\njsonlint/stable 1.5.0-1 all\nphp-json/stable 1:7.0+49 all\nphp-json-schema/stable 1.6.1-2 all\nphp7.0-json/stable,stable 7.0.27-0+deb9u1 amd64\nroot@adara:/etc# apt install php-json\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances \n\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n php7.0-json\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n php-json php7.0-json\n0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 22,0 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 80,9 ko 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 php7.0-json amd64 7.0.27-0+deb9u1 [17,0 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-json all 1:7.0+49 [5 050 B]\n22,0 ko r\u00e9ceptionn\u00e9s en 0s (839 ko/s)\nS\u00e9lection du paquet php7.0-json pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27895 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../php7.0-json_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-json (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet php-json pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php-json_1%3a7.0+49_all.deb ...\nD\u00e9paquetage de php-json (1:7.0+49) ...\nParam\u00e9trage de php7.0-json (7.0.27-0+deb9u1) ...\n\n\nCreating config file /etc/php/7.0/mods-available/json.ini with new version\nParam\u00e9trage de php-json (1:7.0+49) ...\nroot@adara:/etc# apt search php | grep libxml\n\n\nWARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n\n\nroot@adara:/etc# apt search php | grep xml\n\n\nWARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n\n\nlibsmokeqtxml4-3/stable 4:4.14.3-1.1 amd64\nlibsmokeqtxmlpatterns4-3/stable 4:4.14.3-1.1 amd64\nphp-horde-xml-element/stable 2.0.4-3 all\nphp-horde-xml-wbxml/stable 2.0.3-3 all\n Horde_Xml_Wbxml provides an API for encoding and decoding WBXML documents used in SyncML and other wireless applications\nphp-sabre-xml/stable 1.4.2-1 all\nphp-symfony-polyfill-xml/stable 1.2.0-1 all\n Symfony polyfill for xml's utf8_encode and utf8_decode functions\nphp-xml/stable 1:7.0+49 all\nphp-xml-htmlsax3/stable 3.0.0+really3.0.0-3 all\nphp-xml-rpc2/stable 1.1.3-0.1 all\nphp-xml-svg/stable 1.1.0-2 all\nphp-xmlrpc/stable 1:7.0+49 all\nphp7.0-xml/stable,stable 7.0.27-0+deb9u1 amd64\nphp7.0-xmlrpc/stable,stable 7.0.27-0+deb9u1 amd64\nroot@adara:/etc# apt install php-xml\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances \n\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n libxslt1.1 php7.0-xml\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n libxslt1.1 php-xml php7.0-xml\n0 mis \u00e0 jour, 3 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 351 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 992 ko 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 libxslt1.1 amd64 1.1.29-2.1 [233 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-xml amd64 7.0.27-0+deb9u1 [112 kB]\nR\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-xml all 1:7.0+49 [5 068 B]\n351 ko r\u00e9ceptionn\u00e9s en 0s (7 580 ko/s)\nS\u00e9lection du paquet libxslt1.1:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27907 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../libxslt1.1_1.1.29-2.1_amd64.deb ...\nD\u00e9paquetage de libxslt1.1:amd64 (1.1.29-2.1) ...\nS\u00e9lection du paquet php7.0-xml pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php7.0-xml_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-xml (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet php-xml pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php-xml_1%3a7.0+49_all.deb ...\nD\u00e9paquetage de php-xml (1:7.0+49) ...\nParam\u00e9trage de libxslt1.1:amd64 (1.1.29-2.1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nParam\u00e9trage de php7.0-xml (7.0.27-0+deb9u1) ...\n\n\nCreating config file /etc/php/7.0/mods-available/dom.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/simplexml.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/wddx.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/xml.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/xmlreader.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/xmlwriter.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/xsl.ini with new version\nParam\u00e9trage de php-xml (1:7.0+49) ...\nroot@adara:/etc# apt search php | grep dom\n\n\nWARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n\n\nConvert to/from Koremutake Memorable Random Strings\nphp-dompdf/stable 0.6.2+dfsg-3 all\nphp-fdomdocument/stable 1.6.1-2 all\n PHP Pear module for handling international domain names\n PHP module for detecting registered domains and public suffixes\nphp-random-compat/stable 2.0.2-2 all\n PHP 5.x polyfill for random_bytes() and random_int() from PHP 7\nphp-symfony-dom-crawler/stable 2.8.7+dfsg-1.3 all\nroot@adara:/etc# apt install php-symfony-dom-crawler\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances \n\nLecture des informations d'\u00e9tat... Fait\nThe following additional packages will be installed:\n php-symfony-polyfill-mbstring\nPaquets sugg\u00e9r\u00e9s :\n php-symfony-css-selector php-mbstring\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n php-symfony-dom-crawler php-symfony-polyfill-mbstring\n0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 41,6 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 225 ko 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 php-symfony-polyfill-mbstring all 1.2.0-1 [12,0 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-symfony-dom-crawler all 2.8.7+dfsg-1.3 [29,6 kB]\n41,6 ko r\u00e9ceptionn\u00e9s en 0s (199 ko/s)\n\nS\u00e9lection du paquet php-symfony-polyfill-mbstring pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27947 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../php-symfony-polyfill-mbstring_1.2.0-1_all.deb ...\nD\u00e9paquetage de php-symfony-polyfill-mbstring (1.2.0-1) ...\nS\u00e9lection du paquet php-symfony-dom-crawler pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php-symfony-dom-crawler_2.8.7+dfsg-1.3_all.deb ...\nD\u00e9paquetage de php-symfony-dom-crawler (2.8.7+dfsg-1.3) ...\nParam\u00e9trage de php-symfony-polyfill-mbstring (1.2.0-1) ...\nParam\u00e9trage de php-symfony-dom-crawler (2.8.7+dfsg-1.3) ...\nroot@adara:/etc# apt search php | grep openssl\n\n\nWARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n\n\nroot@adara:/etc# apt search php | grep ssl\n\n\nWARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n\n\nroot@adara:/etc# apt install php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-xml\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances \n\nLecture des informations d'\u00e9tat... Fait\nphp7.0-curl is already the newest version (7.0.27-0+deb9u1).\nphp7.0-xml is already the newest version (7.0.27-0+deb9u1).\nphp7.0-xml pass\u00e9 en \u00ab install\u00e9 manuellement \u00bb.\nThe following additional packages will be installed:\n libmagic-mgc libmagic1 php7.0-cli php7.0-opcache php7.0-readline\nPaquets sugg\u00e9r\u00e9s :\n php-pear file\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n libapache2-mod-php7.0 libmagic-mgc libmagic1 php7.0 php7.0-cli php7.0-opcache php7.0-readline\n0 mis \u00e0 jour, 7 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 2 984 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 14,3 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 libmagic-mgc amd64 1:5.30-1+deb9u1 [222 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmagic1 amd64 1:5.30-1+deb9u1 [111 kB]\nR\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-opcache amd64 7.0.27-0+deb9u1 [77,5 kB]\nR\u00e9ception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-readline amd64 7.0.27-0+deb9u1 [12,2 kB]\nR\u00e9ception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-cli amd64 7.0.27-0+deb9u1 [1 284 kB]\nR\u00e9ception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 libapache2-mod-php7.0 amd64 7.0.27-0+deb9u1 [1 224 kB]\nR\u00e9ception de:7 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0 all 7.0.27-0+deb9u1 [52,9 kB]\n2 984 ko r\u00e9ceptionn\u00e9s en 0s (10,9 Mo/s)\nS\u00e9lection du paquet libmagic-mgc pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27977 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../0-libmagic-mgc_1%3a5.30-1+deb9u1_amd64.deb ...\nD\u00e9paquetage de libmagic-mgc (1:5.30-1+deb9u1) ...\nS\u00e9lection du paquet libmagic1:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../1-libmagic1_1%3a5.30-1+deb9u1_amd64.deb ...\nD\u00e9paquetage de libmagic1:amd64 (1:5.30-1+deb9u1) ...\nS\u00e9lection du paquet php7.0-opcache pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../2-php7.0-opcache_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-opcache (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet php7.0-readline pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../3-php7.0-readline_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-readline (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet php7.0-cli pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../4-php7.0-cli_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-cli (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet libapache2-mod-php7.0 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../5-libapache2-mod-php7.0_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de libapache2-mod-php7.0 (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet php7.0 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../6-php7.0_7.0.27-0+deb9u1_all.deb ...\nD\u00e9paquetage de php7.0 (7.0.27-0+deb9u1) ...\nParam\u00e9trage de php7.0-readline (7.0.27-0+deb9u1) ...\n\n\nCreating config file /etc/php/7.0/mods-available/readline.ini with new version\nParam\u00e9trage de php7.0-opcache (7.0.27-0+deb9u1) ...\n\n\nCreating config file /etc/php/7.0/mods-available/opcache.ini with new version\nParam\u00e9trage de libmagic-mgc (1:5.30-1+deb9u1) ...\nParam\u00e9trage de libmagic1:amd64 (1:5.30-1+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 man-db (2.7.6.1-2) ...\nParam\u00e9trage de php7.0-cli (7.0.27-0+deb9u1) ...\nupdate-alternatives: utilisation de \u00ab /usr/bin/php7.0 \u00bb pour fournir \u00ab /usr/bin/php \u00bb (php) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/phar7.0 \u00bb pour fournir \u00ab /usr/bin/phar \u00bb (phar) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/phar.phar7.0 \u00bb pour fournir \u00ab /usr/bin/phar.phar \u00bb (phar.phar) en mode automatique\n\n\nCreating config file /etc/php/7.0/cli/php.ini with new version\nphp_invoke: Enable module fileinfo for cli sapi\nphp_invoke: Enable module dom for cli sapi\nphp_invoke: Enable module xmlwriter for cli sapi\nphp_invoke: Enable module sysvsem for cli sapi\nphp_invoke: Enable module ftp for cli sapi\nphp_invoke: Enable module curl for cli sapi\nphp_invoke: Enable module xml for cli sapi\nphp_invoke: Enable module gettext for cli sapi\nphp_invoke: Enable module ctype for cli sapi\nphp_invoke: Enable module json for cli sapi\nphp_invoke: Enable module sockets for cli sapi\nphp_invoke: Enable module sysvmsg for cli sapi\nphp_invoke: Enable module xsl for cli sapi\nphp_invoke: Enable module simplexml for cli sapi\nphp_invoke: Enable module xmlreader for cli sapi\nphp_invoke: Enable module exif for cli sapi\nphp_invoke: Enable module shmop for cli sapi\nphp_invoke: Enable module sysvshm for cli sapi\nphp_invoke: Enable module pdo for cli sapi\nphp_invoke: Enable module tokenizer for cli sapi\nphp_invoke: Enable module calendar for cli sapi\nphp_invoke: Enable module wddx for cli sapi\nphp_invoke: Enable module iconv for cli sapi\nphp_invoke: Enable module posix for cli sapi\nphp_invoke: Enable module phar for cli sapi\nParam\u00e9trage de libapache2-mod-php7.0 (7.0.27-0+deb9u1) ...\n\n\nCreating config file /etc/php/7.0/apache2/php.ini with new version\nphp_invoke: Enable module fileinfo for apache2 sapi\nphp_invoke: Enable module dom for apache2 sapi\nphp_invoke: Enable module xmlwriter for apache2 sapi\nphp_invoke: Enable module sysvsem for apache2 sapi\nphp_invoke: Enable module ftp for apache2 sapi\nphp_invoke: Enable module curl for apache2 sapi\nphp_invoke: Enable module xml for apache2 sapi\nphp_invoke: Enable module gettext for apache2 sapi\nphp_invoke: Enable module ctype for apache2 sapi\nphp_invoke: Enable module json for apache2 sapi\nphp_invoke: Enable module sockets for apache2 sapi\nphp_invoke: Enable module sysvmsg for apache2 sapi\nphp_invoke: Enable module xsl for apache2 sapi\nphp_invoke: Enable module simplexml for apache2 sapi\nphp_invoke: Enable module xmlreader for apache2 sapi\nphp_invoke: Enable module exif for apache2 sapi\nphp_invoke: Enable module shmop for apache2 sapi\nphp_invoke: Enable module sysvshm for apache2 sapi\nphp_invoke: Enable module pdo for apache2 sapi\nphp_invoke: Enable module tokenizer for apache2 sapi\nphp_invoke: Enable module calendar for apache2 sapi\nphp_invoke: Enable module wddx for apache2 sapi\nphp_invoke: Enable module iconv for apache2 sapi\nphp_invoke: Enable module posix for apache2 sapi\nphp_invoke: Enable module phar for apache2 sapi\nModule mpm_event disabled.\nEnabling module mpm_prefork.\napache2_switch_mpm Switch to prefork\napache2_invoke: Enable module php7.0\nParam\u00e9trage de php7.0 (7.0.27-0+deb9u1) ...\nroot@adara:/etc# mc\n\n\nroot@adara:/etc# a2ensite webmail\nEnabling site webmail.\nTo activate the new configuration, you need to run:\n systemctl reload apache2\nroot@adara:/etc# cd /home/www\nroot@adara:/home/www# ls\ndivers faqfctt goulya homepage New-FSI rainloop wordpress\nroot@adara:/home/www# cd rainloop/\nroot@adara:/home/www/rainloop# find . -type d -exec chmod 755 {} \\;\nroot@adara:/home/www/rainloop# find . -type f -exec chmod 644 {} \\;\nroot@adara:/home/www/rainloop# chown -R www-data:www-data .\nroot@adara:/home/www/rainloop# service apache2 restart\nroot@adara:/home/www/rainloop# mc\n\n\nroot@adara:/home/www/rainloop# service apache2 restart\nroot@adara:/home/www/rainloop# apt search php | grep sqlite\n\n\nWARNING: apt does not have a stable CLI interface. Use with caution in scripts.\n\n\nphp-sqlite3/stable 1:7.0+49 all\nphp7.0-sqlite3/stable,stable 7.0.27-0+deb9u1 amd64\nroot@adara:/home/www/rainloop# apt install php7.0-sqlite3\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances \n\nLecture des informations d'\u00e9tat... Fait\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n php7.0-sqlite3\n0 mis \u00e0 jour, 1 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 24,8 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 111 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nR\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-sqlite3 amd64 7.0.27-0+deb9u1 [24,8 kB]\n24,8 ko r\u00e9ceptionn\u00e9s en 0s (299 ko/s)\nS\u00e9lection du paquet php7.0-sqlite3 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 28052 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../php7.0-sqlite3_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-sqlite3 (7.0.27-0+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libapache2-mod-php7.0 (7.0.27-0+deb9u1) ...\nParam\u00e9trage de php7.0-sqlite3 (7.0.27-0+deb9u1) ...\n\n\nCreating config file /etc/php/7.0/mods-available/sqlite3.ini with new version\n\n\nCreating config file /etc/php/7.0/mods-available/pdo_sqlite.ini with new version\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libapache2-mod-php7.0 (7.0.27-0+deb9u1) ...\nroot@adara:/home/www/rainloop# service apache2 restart\nroot@adara:/home/www/rainloop# \n\n\nAjouter https avec certbot --apache", "title": "Installation de dovecot et de l'authentification" }, { "location": "/10-dix/#installation-des-programmes", "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.", "title": "Installation des programmes" }, { "location": "/10-dix/#choix-de-la-base-de-donnees", "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#", "title": "Choix de la base de donn\u00e9es" }, { "location": "/10-dix/#configuration-du-type-de-boite-aux-lettres", "text": "Cela se passe dans le fichier /etc/postfix/main.cf\nOn 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: \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 ; 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: \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.", "title": "Configuration du type de bo\u00eete aux lettres" }, { "location": "/10-dix/#architecture", "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)", "title": "Architecture" }, { "location": "/10-dix/#schema-densemble", "text": "Les parties impl\u00e9ment\u00e9es sont en rouge sur le dessin suivant:", "title": "Sch\u00e9ma d'ensemble" }, { "location": "/10-dix/#explication", "text": "", "title": "Explication:" }, { "location": "/10-dix/#les-ports-servis-par-postfix", "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.", "title": "Les ports servis par Postfix" }, { "location": "/10-dix/#les-ports-servis-par-dovecot", "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.", "title": "Les ports servis par Dovecot" }, { "location": "/10-dix/#ce-que-nous-allons-implementer", "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.", "title": "Ce que nous allons impl\u00e9menter" }, { "location": "/10-dix/#configuration-de-dovecot", "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: ```shell", "title": "Configuration de Dovecot" }, { "location": "/10-dix/#mailbox-locations-and-namespaces", "text": "", "title": "Mailbox locations and namespaces" }, { "location": "/10-dix/#configuration-des-certificats", "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 = .\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.", "title": "Test" }, { "location": "/10-dix/#test-de-la-connexion-sur-le-port-993-a-partir-dun-ordinateur-exterieur", "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.", "title": "Test de la connexion sur le port 993 \u00e0 partir d'un ordinateur ext\u00e9rieur" }, { "location": "/10-dix/#configuration-dun-port-qui-naccepte-que-les-communications-chiffrees", "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\nNous allons mettre postfix en \u00e9coute du port 465:\nDans le fichier /etc/postfix/master.cf, la ligne \u00e0 d\u00e9commenter est la suivante:", "title": "Configuration d'un port qui n'accepte que les communications chiffr\u00e9es." }, { "location": "/10-dix/#smtps-inet-n-smtpd", "text": "pour obtenir: smtps inet n - - - - smtpd", "title": "smtps inet n - - - - smtpd" }, { "location": "/10-dix/#test_1", "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.", "title": "Test" }, { "location": "/10-dix/#test-de-connexion-sur-le-port-465", "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", "title": "test de connexion sur le port 465" }, { "location": "/10-dix/#test_2", "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 notre certificat Letsencrypt 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.", "title": "Test" }, { "location": "/10-dix/#test_3", "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.", "title": "Test" }, { "location": "/10-dix/#interdiction-de-communications-non-chiffrees-sur-le-port-465", "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.", "title": "Interdiction de communications non-chiffr\u00e9es sur le port 465" }, { "location": "/10-dix/#test_4", "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.", "title": "Test" }, { "location": "/10-dix/#ajout-de-la-gestion-du-port-587", "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=", "title": "Ajout de la gestion du port 587" }, { "location": "/10-dix/#test_5", "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.", "title": "Test" }, { "location": "/10-dix/#ajout-de-la-gesion-du-port-993-imap-avec-ssltls", "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\nssl_protocols = !SSLv3", "title": "Ajout de la gesion du port 993 (imap avec SSL/TLS)" }, { "location": "/10-dix/#test_6", "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.", "title": "Test" }, { "location": "/10-dix/#mise-en-route", "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", "title": "Mise en route" }, { "location": "/10-dix/#test_7", "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.", "title": "Test" }, { "location": "/10-dix/#mise-en-place-du-fichier-auto-configuration-mozilla", "text": "A voir ....", "title": "Mise en place du fichier \"auto-configuration\" Mozilla" }, { "location": "/10-dix/#test-en-situation", "text": "", "title": "Test en situation ..." }, { "location": "/10-dix/#lecture-des-messages", "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: \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: \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: \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 ; 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: \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.", "title": "Lecture des messages" }, { "location": "/10-dix/#envoi-de-messages", "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): \u00e7a marche. R\u00e9ception des messages sur la machine de bureau (thunderbird): \u00e7a marche. Envoi d'un message \u00e0 partir du compte du serveur (thunderbird): \u00e7a marche.", "title": "Envoi de messages" }, { "location": "/10-dix/#installation-dun-analyseur-des-logs-mail", "text": "", "title": "Installation d'un analyseur des logs mail" }, { "location": "/10-dix/#installation", "text": "apt-get install pflogsumm", "title": "Installation" }, { "location": "/10-dix/#utilisation", "text": "pflogsumm -d today /var/log/mail.log Vous obtiendrez une analyse approfondie des logs de la partie mail. Bien: la configuration est quasi termin\u00e9e: il nous reste \u00e0 ajouter SPF, DKIM, Dane et DNSSEC. et les comptes virtuels ... A faire: mettre le fichier mozilla de configuration automatique\ntester \u00e0 distance Ajouter des utilisateurs virtuels (dbm, sqlite, mariadb) Analyse des logs: Just install it by(for Debian/Ubuntu, for other Linux distr. you need other installation command) apt-get install pflogsumm Get today's summary by: pflogsumm -d today /var/log/mail.log R\u00e9sultat: root@adara:/home/ericadmin# pflogsumm -d today /var/log/mail.log\nPostfix log summaries for Jul 1 Grand Totals messages 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%) 2248k bytes received\n 2248k bytes delivered\n 17 senders\n 13 sending hosts/domains\n 3 recipients\n 2 recipient hosts/domains Per-Hour Traffic Summary time received delivered deferred bounced rejected\n--\n0000-0100 0 0 0 0 0 \n0100-0200 0 0 0 0 0 \n0200-0300 0 0 0 0 0 \n0300-0400 0 0 0 0 3 \n0400-0500 0 0 0 0 7 \n0500-0600 0 0 0 0 1 \n0600-0700 1 1 0 0 1 \n0700-0800 2 2 0 0 1 \n0800-0900 4 4 0 0 7 \n0900-1000 4 4 0 0 2 \n1000-1100 10 9 0 0 2 \n1100-1200 2 2 0 0 1 \n1200-1300 0 0 0 0 2 \n1300-1400 0 0 0 0 0 \n1400-1500 0 0 0 0 0 \n1500-1600 1 1 0 0 2 \n1600-1700 0 0 0 0 0 \n1700-1800 0 0 0 0 0 \n1800-1900 0 0 0 0 0 \n1900-2000 0 0 0 0 0 \n2000-2100 0 0 0 0 0 \n2100-2200 0 0 0 0 0 \n2200-2300 0 0 0 0 0 \n2300-2400 0 0 0 0 0", "title": "Utilisation" }, { "location": "/10-dix/#hostdomain-summary-message-delivery", "text": "sent cnt bytes defers avg dly max dly host/domain 21 2241k 0 4,6 s 47,0 s yojik.eu\n 2 7008 0 0,8 s 1,0 s picapo.net Host/Domain Summary: Messages Received msg cnt bytes host/domain 7 1918k yojik.eu\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 Senders by message count 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 Recipients by message count 15 eric@yojik.eu\n 6 goulya@yojik.eu\n 2 nico@picapo.net", "title": "Host/Domain Summary: Message Delivery" }, { "location": "/10-dix/#senders-by-message-size", "text": "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", "title": "Senders by message size" }, { "location": "/10-dix/#recipients-by-message-size", "text": "1916k goulya@yojik.eu\n 333462 eric@yojik.eu\n 7008 nico@picapo.net message deferral detail: none message bounce detail (by relay): none message reject detail 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 message reject warning detail: none message hold detail: none message discard detail: none smtp delivery failures: none", "title": "Recipients by message size" }, { "location": "/10-dix/#warnings", "text": "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... Fatal Errors: none Panics: none Master daemon messages: none\nroot@adara:/home/ericadmin# Installation de rainloop (webmail) T\u00e9l\u00e9charger la version communautaire sur le site, et la d\u00e9compresser dans votre r\u00e9pertoire web (/home/www/ pour moi) Installation des d\u00e9pendances: librairies et programmes root@adara:/home/ericadmin/bin# apt install unzip\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances \nLecture des informations d'\u00e9tat... Fait\nPaquets sugg\u00e9r\u00e9s :\n zip\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n unzip\n0 mis \u00e0 jour, 1 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 170 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 547 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nR\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 unzip amd64 6.0-21 [170 kB]\n170 ko r\u00e9ceptionn\u00e9s en 0s (5 565 ko/s)\nS\u00e9lection du paquet unzip pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27662 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../unzip_6.0-21_amd64.deb ...\nD\u00e9paquetage de unzip (6.0-21) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour mime-support (3.60) ...\nParam\u00e9trage de unzip (6.0-21) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nroot@adara:/home/ericadmin/bin# mc root@adara:/home/ericadmin/bin# \nroot@adara:/etc# mc root@adara:/home/www# mkdir rainloop root@adara:/etc# apt search php | grep curl WARNING: apt does not have a stable CLI interface. Use with caution in scripts. php-curl/stable 1:7.0+49 all\nphp7.0-curl/stable,stable 7.0.27-0+deb9u1 amd64\nroot@adara:/etc# apt install php7.0-curl\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 libcurl3 php-common php7.0-common psmisc\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n libcurl3 php-common php7.0-common php7.0-curl psmisc\n0 mis \u00e0 jour, 5 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 1 333 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 6 149 ko 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 psmisc amd64 22.21-2.1+b2 [123 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-common all 1:49 [14,1 kB]\nR\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-common amd64 7.0.27-0+deb9u1 [877 kB]\nR\u00e9ception de:4 http://security.debian.org/debian-security stretch/updates/main amd64 libcurl3 amd64 7.52.1-5+deb9u6 [291 kB]\nR\u00e9ception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-curl amd64 7.0.27-0+deb9u1 [27,4 kB]\n1 333 ko r\u00e9ceptionn\u00e9s en 0s (3 062 ko/s) \nS\u00e9lection du paquet libcurl3:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27680 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../libcurl3_7.52.1-5+deb9u6_amd64.deb ...\nD\u00e9paquetage de libcurl3:amd64 (7.52.1-5+deb9u6) ...\nS\u00e9lection du paquet psmisc pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../psmisc_22.21-2.1+b2_amd64.deb ...\nD\u00e9paquetage de psmisc (22.21-2.1+b2) ...\nS\u00e9lection du paquet php-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php-common_1%3a49_all.deb ...\nD\u00e9paquetage de php-common (1:49) ...\nS\u00e9lection du paquet php7.0-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php7.0-common_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-common (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet php7.0-curl pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php7.0-curl_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-curl (7.0.27-0+deb9u1) ...\nParam\u00e9trage de psmisc (22.21-2.1+b2) ...\nParam\u00e9trage de libcurl3:amd64 (7.52.1-5+deb9u6) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nParam\u00e9trage de php-common (1:49) ...\nCreated symlink /etc/systemd/system/timers.target.wants/phpsessionclean.timer \u2192 /lib/systemd/system/phpsessionclean.timer.\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de php7.0-common (7.0.27-0+deb9u1) ... Creating config file /etc/php/7.0/mods-available/calendar.ini with new version Creating config file /etc/php/7.0/mods-available/ctype.ini with new version Creating config file /etc/php/7.0/mods-available/exif.ini with new version Creating config file /etc/php/7.0/mods-available/fileinfo.ini with new version Creating config file /etc/php/7.0/mods-available/ftp.ini with new version Creating config file /etc/php/7.0/mods-available/gettext.ini with new version Creating config file /etc/php/7.0/mods-available/iconv.ini with new version Creating config file /etc/php/7.0/mods-available/pdo.ini with new version Creating config file /etc/php/7.0/mods-available/phar.ini with new version Creating config file /etc/php/7.0/mods-available/posix.ini with new version Creating config file /etc/php/7.0/mods-available/shmop.ini with new version Creating config file /etc/php/7.0/mods-available/sockets.ini with new version Creating config file /etc/php/7.0/mods-available/sysvmsg.ini with new version Creating config file /etc/php/7.0/mods-available/sysvsem.ini with new version Creating config file /etc/php/7.0/mods-available/sysvshm.ini with new version Creating config file /etc/php/7.0/mods-available/tokenizer.ini with new version\nParam\u00e9trage de php7.0-curl (7.0.27-0+deb9u1) ... Creating config file /etc/php/7.0/mods-available/curl.ini with new version\nroot@adara:/etc# apt search php | grep iconv WARNING: apt does not have a stable CLI interface. Use with caution in scripts. libhtml-wikiconverter-phpwiki-perl/stable 0.51-2 all\nphp-symfony-polyfill-iconv/stable 1.2.0-1 all\nroot@adara:/etc# apt install php-symfony-polyfill-iconv\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 php-symfony-polyfill-iconv\n0 mis \u00e0 jour, 1 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 124 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 1 585 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nR\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-symfony-polyfill-iconv all 1.2.0-1 [124 kB]\n124 ko r\u00e9ceptionn\u00e9s en 0s (817 ko/s) \nS\u00e9lection du paquet php-symfony-polyfill-iconv pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27826 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../php-symfony-polyfill-iconv_1.2.0-1_all.deb ...\nD\u00e9paquetage de php-symfony-polyfill-iconv (1.2.0-1) ...\nParam\u00e9trage de php-symfony-polyfill-iconv (1.2.0-1) ...\nroot@adara:/etc# apt search php | grep json WARNING: apt does not have a stable CLI interface. Use with caution in scripts. jsonlint/stable 1.5.0-1 all\nphp-json/stable 1:7.0+49 all\nphp-json-schema/stable 1.6.1-2 all\nphp7.0-json/stable,stable 7.0.27-0+deb9u1 amd64\nroot@adara:/etc# apt install php-json\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 php7.0-json\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n php-json php7.0-json\n0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 22,0 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 80,9 ko 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 php7.0-json amd64 7.0.27-0+deb9u1 [17,0 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-json all 1:7.0+49 [5 050 B]\n22,0 ko r\u00e9ceptionn\u00e9s en 0s (839 ko/s)\nS\u00e9lection du paquet php7.0-json pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27895 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../php7.0-json_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-json (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet php-json pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php-json_1%3a7.0+49_all.deb ...\nD\u00e9paquetage de php-json (1:7.0+49) ...\nParam\u00e9trage de php7.0-json (7.0.27-0+deb9u1) ... Creating config file /etc/php/7.0/mods-available/json.ini with new version\nParam\u00e9trage de php-json (1:7.0+49) ...\nroot@adara:/etc# apt search php | grep libxml WARNING: apt does not have a stable CLI interface. Use with caution in scripts. root@adara:/etc# apt search php | grep xml WARNING: apt does not have a stable CLI interface. Use with caution in scripts. libsmokeqtxml4-3/stable 4:4.14.3-1.1 amd64\nlibsmokeqtxmlpatterns4-3/stable 4:4.14.3-1.1 amd64\nphp-horde-xml-element/stable 2.0.4-3 all\nphp-horde-xml-wbxml/stable 2.0.3-3 all\n Horde_Xml_Wbxml provides an API for encoding and decoding WBXML documents used in SyncML and other wireless applications\nphp-sabre-xml/stable 1.4.2-1 all\nphp-symfony-polyfill-xml/stable 1.2.0-1 all\n Symfony polyfill for xml's utf8_encode and utf8_decode functions\nphp-xml/stable 1:7.0+49 all\nphp-xml-htmlsax3/stable 3.0.0+really3.0.0-3 all\nphp-xml-rpc2/stable 1.1.3-0.1 all\nphp-xml-svg/stable 1.1.0-2 all\nphp-xmlrpc/stable 1:7.0+49 all\nphp7.0-xml/stable,stable 7.0.27-0+deb9u1 amd64\nphp7.0-xmlrpc/stable,stable 7.0.27-0+deb9u1 amd64\nroot@adara:/etc# apt install php-xml\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 libxslt1.1 php7.0-xml\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n libxslt1.1 php-xml php7.0-xml\n0 mis \u00e0 jour, 3 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 351 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 992 ko 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 libxslt1.1 amd64 1.1.29-2.1 [233 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-xml amd64 7.0.27-0+deb9u1 [112 kB]\nR\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-xml all 1:7.0+49 [5 068 B]\n351 ko r\u00e9ceptionn\u00e9s en 0s (7 580 ko/s)\nS\u00e9lection du paquet libxslt1.1:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27907 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../libxslt1.1_1.1.29-2.1_amd64.deb ...\nD\u00e9paquetage de libxslt1.1:amd64 (1.1.29-2.1) ...\nS\u00e9lection du paquet php7.0-xml pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php7.0-xml_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-xml (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet php-xml pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php-xml_1%3a7.0+49_all.deb ...\nD\u00e9paquetage de php-xml (1:7.0+49) ...\nParam\u00e9trage de libxslt1.1:amd64 (1.1.29-2.1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nParam\u00e9trage de php7.0-xml (7.0.27-0+deb9u1) ... Creating config file /etc/php/7.0/mods-available/dom.ini with new version Creating config file /etc/php/7.0/mods-available/simplexml.ini with new version Creating config file /etc/php/7.0/mods-available/wddx.ini with new version Creating config file /etc/php/7.0/mods-available/xml.ini with new version Creating config file /etc/php/7.0/mods-available/xmlreader.ini with new version Creating config file /etc/php/7.0/mods-available/xmlwriter.ini with new version Creating config file /etc/php/7.0/mods-available/xsl.ini with new version\nParam\u00e9trage de php-xml (1:7.0+49) ...\nroot@adara:/etc# apt search php | grep dom WARNING: apt does not have a stable CLI interface. Use with caution in scripts. Convert to/from Koremutake Memorable Random Strings\nphp-dompdf/stable 0.6.2+dfsg-3 all\nphp-fdomdocument/stable 1.6.1-2 all\n PHP Pear module for handling international domain names\n PHP module for detecting registered domains and public suffixes\nphp-random-compat/stable 2.0.2-2 all\n PHP 5.x polyfill for random_bytes() and random_int() from PHP 7\nphp-symfony-dom-crawler/stable 2.8.7+dfsg-1.3 all\nroot@adara:/etc# apt install php-symfony-dom-crawler\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 php-symfony-polyfill-mbstring\nPaquets sugg\u00e9r\u00e9s :\n php-symfony-css-selector php-mbstring\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n php-symfony-dom-crawler php-symfony-polyfill-mbstring\n0 mis \u00e0 jour, 2 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 41,6 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 225 ko 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 php-symfony-polyfill-mbstring all 1.2.0-1 [12,0 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 php-symfony-dom-crawler all 2.8.7+dfsg-1.3 [29,6 kB]\n41,6 ko r\u00e9ceptionn\u00e9s en 0s (199 ko/s) \nS\u00e9lection du paquet php-symfony-polyfill-mbstring pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27947 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../php-symfony-polyfill-mbstring_1.2.0-1_all.deb ...\nD\u00e9paquetage de php-symfony-polyfill-mbstring (1.2.0-1) ...\nS\u00e9lection du paquet php-symfony-dom-crawler pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../php-symfony-dom-crawler_2.8.7+dfsg-1.3_all.deb ...\nD\u00e9paquetage de php-symfony-dom-crawler (2.8.7+dfsg-1.3) ...\nParam\u00e9trage de php-symfony-polyfill-mbstring (1.2.0-1) ...\nParam\u00e9trage de php-symfony-dom-crawler (2.8.7+dfsg-1.3) ...\nroot@adara:/etc# apt search php | grep openssl WARNING: apt does not have a stable CLI interface. Use with caution in scripts. root@adara:/etc# apt search php | grep ssl WARNING: apt does not have a stable CLI interface. Use with caution in scripts. root@adara:/etc# apt install php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-xml\nLecture des listes de paquets... Fait\nConstruction de l'arbre des d\u00e9pendances \nLecture des informations d'\u00e9tat... Fait\nphp7.0-curl is already the newest version (7.0.27-0+deb9u1).\nphp7.0-xml is already the newest version (7.0.27-0+deb9u1).\nphp7.0-xml pass\u00e9 en \u00ab install\u00e9 manuellement \u00bb.\nThe following additional packages will be installed:\n libmagic-mgc libmagic1 php7.0-cli php7.0-opcache php7.0-readline\nPaquets sugg\u00e9r\u00e9s :\n php-pear file\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n libapache2-mod-php7.0 libmagic-mgc libmagic1 php7.0 php7.0-cli php7.0-opcache php7.0-readline\n0 mis \u00e0 jour, 7 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 2 984 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 14,3 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 libmagic-mgc amd64 1:5.30-1+deb9u1 [222 kB]\nR\u00e9ception de:2 http://debian.mirrors.ovh.net/debian stretch/main amd64 libmagic1 amd64 1:5.30-1+deb9u1 [111 kB]\nR\u00e9ception de:3 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-opcache amd64 7.0.27-0+deb9u1 [77,5 kB]\nR\u00e9ception de:4 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-readline amd64 7.0.27-0+deb9u1 [12,2 kB]\nR\u00e9ception de:5 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-cli amd64 7.0.27-0+deb9u1 [1 284 kB]\nR\u00e9ception de:6 http://debian.mirrors.ovh.net/debian stretch/main amd64 libapache2-mod-php7.0 amd64 7.0.27-0+deb9u1 [1 224 kB]\nR\u00e9ception de:7 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0 all 7.0.27-0+deb9u1 [52,9 kB]\n2 984 ko r\u00e9ceptionn\u00e9s en 0s (10,9 Mo/s)\nS\u00e9lection du paquet libmagic-mgc pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 27977 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../0-libmagic-mgc_1%3a5.30-1+deb9u1_amd64.deb ...\nD\u00e9paquetage de libmagic-mgc (1:5.30-1+deb9u1) ...\nS\u00e9lection du paquet libmagic1:amd64 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../1-libmagic1_1%3a5.30-1+deb9u1_amd64.deb ...\nD\u00e9paquetage de libmagic1:amd64 (1:5.30-1+deb9u1) ...\nS\u00e9lection du paquet php7.0-opcache pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../2-php7.0-opcache_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-opcache (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet php7.0-readline pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../3-php7.0-readline_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-readline (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet php7.0-cli pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../4-php7.0-cli_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-cli (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet libapache2-mod-php7.0 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../5-libapache2-mod-php7.0_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de libapache2-mod-php7.0 (7.0.27-0+deb9u1) ...\nS\u00e9lection du paquet php7.0 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../6-php7.0_7.0.27-0+deb9u1_all.deb ...\nD\u00e9paquetage de php7.0 (7.0.27-0+deb9u1) ...\nParam\u00e9trage de php7.0-readline (7.0.27-0+deb9u1) ... Creating config file /etc/php/7.0/mods-available/readline.ini with new version\nParam\u00e9trage de php7.0-opcache (7.0.27-0+deb9u1) ... Creating config file /etc/php/7.0/mods-available/opcache.ini with new version\nParam\u00e9trage de libmagic-mgc (1:5.30-1+deb9u1) ...\nParam\u00e9trage de libmagic1:amd64 (1:5.30-1+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 man-db (2.7.6.1-2) ...\nParam\u00e9trage de php7.0-cli (7.0.27-0+deb9u1) ...\nupdate-alternatives: utilisation de \u00ab /usr/bin/php7.0 \u00bb pour fournir \u00ab /usr/bin/php \u00bb (php) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/phar7.0 \u00bb pour fournir \u00ab /usr/bin/phar \u00bb (phar) en mode automatique\nupdate-alternatives: utilisation de \u00ab /usr/bin/phar.phar7.0 \u00bb pour fournir \u00ab /usr/bin/phar.phar \u00bb (phar.phar) en mode automatique Creating config file /etc/php/7.0/cli/php.ini with new version\nphp_invoke: Enable module fileinfo for cli sapi\nphp_invoke: Enable module dom for cli sapi\nphp_invoke: Enable module xmlwriter for cli sapi\nphp_invoke: Enable module sysvsem for cli sapi\nphp_invoke: Enable module ftp for cli sapi\nphp_invoke: Enable module curl for cli sapi\nphp_invoke: Enable module xml for cli sapi\nphp_invoke: Enable module gettext for cli sapi\nphp_invoke: Enable module ctype for cli sapi\nphp_invoke: Enable module json for cli sapi\nphp_invoke: Enable module sockets for cli sapi\nphp_invoke: Enable module sysvmsg for cli sapi\nphp_invoke: Enable module xsl for cli sapi\nphp_invoke: Enable module simplexml for cli sapi\nphp_invoke: Enable module xmlreader for cli sapi\nphp_invoke: Enable module exif for cli sapi\nphp_invoke: Enable module shmop for cli sapi\nphp_invoke: Enable module sysvshm for cli sapi\nphp_invoke: Enable module pdo for cli sapi\nphp_invoke: Enable module tokenizer for cli sapi\nphp_invoke: Enable module calendar for cli sapi\nphp_invoke: Enable module wddx for cli sapi\nphp_invoke: Enable module iconv for cli sapi\nphp_invoke: Enable module posix for cli sapi\nphp_invoke: Enable module phar for cli sapi\nParam\u00e9trage de libapache2-mod-php7.0 (7.0.27-0+deb9u1) ... Creating config file /etc/php/7.0/apache2/php.ini with new version\nphp_invoke: Enable module fileinfo for apache2 sapi\nphp_invoke: Enable module dom for apache2 sapi\nphp_invoke: Enable module xmlwriter for apache2 sapi\nphp_invoke: Enable module sysvsem for apache2 sapi\nphp_invoke: Enable module ftp for apache2 sapi\nphp_invoke: Enable module curl for apache2 sapi\nphp_invoke: Enable module xml for apache2 sapi\nphp_invoke: Enable module gettext for apache2 sapi\nphp_invoke: Enable module ctype for apache2 sapi\nphp_invoke: Enable module json for apache2 sapi\nphp_invoke: Enable module sockets for apache2 sapi\nphp_invoke: Enable module sysvmsg for apache2 sapi\nphp_invoke: Enable module xsl for apache2 sapi\nphp_invoke: Enable module simplexml for apache2 sapi\nphp_invoke: Enable module xmlreader for apache2 sapi\nphp_invoke: Enable module exif for apache2 sapi\nphp_invoke: Enable module shmop for apache2 sapi\nphp_invoke: Enable module sysvshm for apache2 sapi\nphp_invoke: Enable module pdo for apache2 sapi\nphp_invoke: Enable module tokenizer for apache2 sapi\nphp_invoke: Enable module calendar for apache2 sapi\nphp_invoke: Enable module wddx for apache2 sapi\nphp_invoke: Enable module iconv for apache2 sapi\nphp_invoke: Enable module posix for apache2 sapi\nphp_invoke: Enable module phar for apache2 sapi\nModule mpm_event disabled.\nEnabling module mpm_prefork.\napache2_switch_mpm Switch to prefork\napache2_invoke: Enable module php7.0\nParam\u00e9trage de php7.0 (7.0.27-0+deb9u1) ...\nroot@adara:/etc# mc root@adara:/etc# a2ensite webmail\nEnabling site webmail.\nTo activate the new configuration, you need to run:\n systemctl reload apache2\nroot@adara:/etc# cd /home/www\nroot@adara:/home/www# ls\ndivers faqfctt goulya homepage New-FSI rainloop wordpress\nroot@adara:/home/www# cd rainloop/\nroot@adara:/home/www/rainloop# find . -type d -exec chmod 755 {} \\;\nroot@adara:/home/www/rainloop# find . -type f -exec chmod 644 {} \\;\nroot@adara:/home/www/rainloop# chown -R www-data:www-data .\nroot@adara:/home/www/rainloop# service apache2 restart\nroot@adara:/home/www/rainloop# mc root@adara:/home/www/rainloop# service apache2 restart\nroot@adara:/home/www/rainloop# apt search php | grep sqlite WARNING: apt does not have a stable CLI interface. Use with caution in scripts. php-sqlite3/stable 1:7.0+49 all\nphp7.0-sqlite3/stable,stable 7.0.27-0+deb9u1 amd64\nroot@adara:/home/www/rainloop# apt install php7.0-sqlite3\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 php7.0-sqlite3\n0 mis \u00e0 jour, 1 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 24,8 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 111 ko d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nR\u00e9ception de:1 http://debian.mirrors.ovh.net/debian stretch/main amd64 php7.0-sqlite3 amd64 7.0.27-0+deb9u1 [24,8 kB]\n24,8 ko r\u00e9ceptionn\u00e9s en 0s (299 ko/s)\nS\u00e9lection du paquet php7.0-sqlite3 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 28052 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../php7.0-sqlite3_7.0.27-0+deb9u1_amd64.deb ...\nD\u00e9paquetage de php7.0-sqlite3 (7.0.27-0+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libapache2-mod-php7.0 (7.0.27-0+deb9u1) ...\nParam\u00e9trage de php7.0-sqlite3 (7.0.27-0+deb9u1) ... Creating config file /etc/php/7.0/mods-available/sqlite3.ini with new version Creating config file /etc/php/7.0/mods-available/pdo_sqlite.ini with new version\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libapache2-mod-php7.0 (7.0.27-0+deb9u1) ...\nroot@adara:/home/www/rainloop# service apache2 restart\nroot@adara:/home/www/rainloop# Ajouter https avec certbot --apache", "title": "Warnings" }, { "location": "/11-onze/", "text": "\ufeff## Installation des certificats letsencrypt\n\n\n\n\nroot@aijan:/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...\n\n\n\n\n\n\nBien, les programmes sont install\u00e9s. Nous allons cr\u00e9er des certificats pour les zones 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: aijan.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\nNous ajoutons ici la r\u00e9f\u00e9rence du serveur web, avec un enregistrement CNAME: www.yojik.eu\n\n\n\n\nwww IN CNAME aijan.yojik.net.\n\n\n\n\n\n\nRelecture des fichiers de configuration par bind:\n\n\n\n\nroot@aijan:/home/ericadmin# service bind9 reload\n\n\n\n\n\n\nlancement du programme certbot\n\n\n\n\ncertbot --apache\n\n\n\n\n\n\nroot@aijan:/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\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.) (lien: https://community.letsencrypt.org/t/solution-client-with-the-currently-selected-authenticator-does-not-support-any-combination-of-challenges-that-will-satisfy-the-ca/49983)\n\n\nIl nous faut ajouter dans /etc/sources.list le d\u00e9pot \nbackports\n pour obtenir le fichier qui suit:\n(lien: https://backports.debian.org/Instructions/)\n\n\n\n\nroot@aijan:/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\n\n\n\n\nNotez la derni\u00e8re ligne rajout\u00e9e au fichier. Ensuite,entrez les commandes suivantes:\n\n\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\n\n\ncertbot --apache\n\n\n\n\nCette fois-ci, \u00e7a fonctionne.\n\n\n\n\nroot@aijan:/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@aijan:/home/ericadmin# \n\n\n\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\n\n\n``root@aijan:/home/ericadmin# certbot certonly -d aijan.yojik.net\nSaving debug log to /var/log/letsencrypt/letsencrypt.log\n\n\nHow would you like to authenticate with the ACME CA?\n\n\n1: Apache Web Server plugin - Beta (apache)\n2: Spin up a temporary webserver (standalone)\n3: Place files in webroot directory (webroot)\n\n\n\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 aijan.yojik.net\nWaiting for verification...\nCleaning up challenges\n\n\nIMPORTANT NOTES:\n - Congratulations! Your certificate and chain have been saved at:\n /etc/letsencrypt/live/aijan.yojik.net/fullchain.pem\n Your key file has been saved at:\n /etc/letsencrypt/live/aijan.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 \nall\n of your certificates, run\n \"certbot renew\"\n - If you like Certbot, please consider supporting our work by:\n\n\nDonating to ISRG / Let's Encrypt: https://letsencrypt.org/donate\n Donating to EFF: https://eff.org/donate-le\n\n\nroot@aijan:/home/ericadmin# \n`\n\n\n```\n\n\n\n\nVoil\u00e0, le certificat est cr\u00e9\u00e9.", "title": "Installation des certificats letsencrypt" }, { "location": "/11-onze/#lancement-du-programme-certbot", "text": "certbot --apache root@aijan:/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.) (lien: https://community.letsencrypt.org/t/solution-client-with-the-currently-selected-authenticator-does-not-support-any-combination-of-challenges-that-will-satisfy-the-ca/49983) Il nous faut ajouter dans /etc/sources.list le d\u00e9pot backports pour obtenir le fichier qui suit:\n(lien: https://backports.debian.org/Instructions/) root@aijan:/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@aijan:/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@aijan:/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@aijan:/home/ericadmin# certbot certonly -d aijan.yojik.net\nSaving debug log to /var/log/letsencrypt/letsencrypt.log", "title": "lancement du programme certbot" }, { "location": "/11-onze/#how-would-you-like-to-authenticate-with-the-acme-ca", "text": "1: Apache Web Server plugin - Beta (apache)\n2: Spin up a temporary webserver (standalone)\n3: Place files in webroot directory (webroot) Select 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 aijan.yojik.net\nWaiting for verification...\nCleaning up challenges IMPORTANT NOTES:\n - Congratulations! Your certificate and chain have been saved at:\n /etc/letsencrypt/live/aijan.yojik.net/fullchain.pem\n Your key file has been saved at:\n /etc/letsencrypt/live/aijan.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: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate\n Donating to EFF: https://eff.org/donate-le root@aijan:/home/ericadmin# \n` ``` Voil\u00e0, le certificat est cr\u00e9\u00e9.", "title": "How would you like to authenticate with the ACME CA?" }, { "location": "/12-douze/", "text": "\ufeff\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 https://www.spfwizard.net/ ou https://mxtoolbox.com/SPFRecordGenerator.aspx.\n\n\nLe site http://www.openspf.org/ 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'uns 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.\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\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@aijan:/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@aijan:/etc/bind# \n\n\n\n\nDoc Debian\n\n\nThis package must be integrated with Postfix to be effective:\n\n\n\n\n\n\nAdd the following to /etc/postfix/master.cf:\n\n\npolicyd-spf unix - n n - 0 spawn\n user=policyd-spf argv=/usr/bin/policyd-spf\n\n\n\n\n\n\n\nConfigure the Postfix policy service in /etc/postfix/main.cf:\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\nNOTE: Specify check_policy_service AFTER reject_unauth_destination or\nelse your system can become an open relay.\n\n\n\n\n\n\nReload Postfix.\n\n\n\n\n\n\nConfiguration de postfix\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\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\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@aijan:/home/ericadmin# tail -f /var/log/mail.log\nMay 28 11:58:06 aijan dovecot: imap-login: Login: user=, method=PLAIN, rip=192.168.111.150, lip=192.168.111.240, mpid=1901, TLS, session=\nMay 28 11:58:26 aijan postfix/smtpd[1902]: connect from adara.yojik.eu[91.121.72.10]\nMay 28 11:58:26 aijan policyd-spf[1907]: prepend Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=91.121.72.10; helo=adara.yojik.eu; envelope-from=eric@yojik.eu; receiver=\nMay 28 11:58:26 aijan postfix/smtpd[1902]: C701DD004F2: client=adara.yojik.eu[91.121.72.10]\nMay 28 11:58:26 aijan postfix/cleanup[1908]: C701DD004F2: message-id=<4c621385-3822-cb78-9c1d-7e9f43c3fc52@yojik.eu>\nMay 28 11:58:26 aijan postfix/qmgr[867]: C701DD004F2: from=, size=1414, nrcpt=1 (queue active)\nMay 28 11:58:26 aijan postfix/smtpd[1902]: disconnect from adara.yojik.eu[91.121.72.10] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7\nMay 28 11:58:26 aijan postfix/local[1909]: C701DD004F2: to=, 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 aijan postfix/qmgr[867]: C701DD004F2: removed\nMay 28 11:59:00 aijan dovecot: imap-login: Login: user=, method=PLAIN, rip=192.168.111.150, lip=192.168.111.240, mpid=1915, TLS, session=\n\n\n\n\nLa ligne \nMay 28 11:43:12 aijan policyd-spf[1830]: prepend Received-SPF: Pass (mailfrom) identity=mailfrom; \n montre que notre contr\u00f4le SPF fonctionne comme il faut.\n\n\nInstallation de DKIM\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\n\n\nConfiguration de DKIM\n\n\n\n\nNous commen\u00e7ons par l'installation de opendkim.\n\n\nshell\n root@aijan:/home/ericadmin# apt install opendkim\n Lecture des listes de paquets... Fait\n Construction de l'arbre des d\u00e9pendances \n Lecture des informations d'\u00e9tat... Fait\n The following additional packages will be installed:\n dns-root-data liblua5.1-0 libmemcached11 libmemcachedutil2 libmilter1.0.1 libopendbx1 libopendbx1-sqlite3 libopendkim11 librbl1 libunbound2 libvbr2\n Paquets sugg\u00e9r\u00e9s :\n ... etc ...\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\n\n\nmkdir -p /etc/opendkim/keys/yojik.net/\n\n\n\n\nPermissions:\n\n\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 /usr/share/doc/opendkim/examples.\n Voici notre fichier de configuration; adaptez-le en fonction de votre domaine, bien s\u00fbr:\n\n\n```shell\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\n# Log to syslog\n Syslog 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\n# Sign for example.com with key in /etc/mail/dkim.key using\n # selector '2007' (e.g. 2007._domainkey.example.com)\n Domain yojik.net\n KeyFile /etc/opendkim/keys/yojik.net/yojik.private\n Selector yojik\n\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\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.\n OversignHeaders From\n\n\n# List domains to use for RFC 6541 DKIM Authorized Third-Party Signatures\n # (ATPS) (experimental)\n\n\n#ATPSDomains example.com\n\n\nAutoRestart Yes\n AutoRestartRate 10/1h\n UMask 002\n Syslog yes\n SyslogSuccess Yes\n LogWhy Yes\n Canonicalization relaxed/simple\n\n\nExternalIgnoreList refile:/etc/opendkim/TrustedHosts\n InternalHosts refile:/etc/opendkim/TrustedHosts\n KeyTable refile:/etc/opendkim/KeyTable\n SigningTable refile:/etc/opendkim/SigningTable\n\n\nMode sv\n PidFile /var/run/opendkim/opendkim.pid\n SignatureAlgorithm rsa-sha256\n\n\nUserID opendkim:opendkim\n\n\nSocket inet:12301@localhost\n ```\n\n\nPostix acc\u00e9dera \u00e0 opendkim \u00e0 travers le port 12301.\n Il nous reste 3 fichiers \u00e0 configurer/cr\u00e9er, ainsi que g\u00e9n\u00e9rer les clefs priv\u00e9es et publiques.\n\n\n\n\n/etc/opendkim/SigningTable\n Ce fichier ne contient qu'une seule ligne:\n > *@yojik.net yojik._domainkey.yojik.net\n\n\n/etc/opendkim/KeyTable\n Ce fichier ne contient qu'une seule ligne:\n > yojik._domainkey.yojik.net yojik.net:yojik:/etc/opendkim/keys/yojik.net/yojik.private\n\n\n/etc/opendkim/TrustedHosts\n > 127.0.0.1\n > ::1\n > localhost\n > \n > yojik.net \n Ne pas modifier les 3 premi\u00e8res lignes qui sont n\u00e9cessaires \u00e0 opendkim ...\n\n\n\n\nCr\u00e9ation des clefs publiques et priv\u00e9es\n > cd /etc/opendkim/keys/yojik.net/\n > opendkim-genkey -b 2048 -h rsa-sha256 -r -s yojik -d yojik.net -v\n Un erreur appara\u00eet: il nous faut installer opendkim-tools:\n > apt install opendkim-tools\n 2 fichiers sont cr\u00e9es: la clef publique et la clef priv\u00e9e. Nous allons renommer ces 2 clefs.\n > mv mv 201805.private yojik.private\n > mv 201805.txt yojik.txt\n 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:\n\n\nroot@aijan:/etc/opendkim/keys# cd /etc\n root@aijan:/etc# chown -R opendkim:opendkim /etc/opendkim\n root@aijan:/etc# chmod -R go-rw /etc/opendkim/keys\n root@aijan:/etc#\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 et on voit la ligne:\ntcp 0 0 127.0.0.1:12301 0.0.0.0:* LISTEN 2395/opendkim\n C'est bon .. le service est en place.\n\n\n\n\n\n\n\n\nAjout de DKIM \u00e0 Postix\n On va rajouter la gestion de DKIM \u00e0 Postfix dans le fichier /etc/postfix/main.cf\n On ajoute les lignes suivantes:\n\n\n\n\nmilter_default_action = accept\nmilter_protocol = 2\nsmtpd_milters = inet:localhost:12301 \nnon_smtpd_milters = inet:localhost:12301 \n\n\n\n\n\n\n\n\nOn relance Postfix par:\n\n\n\n\nservice postfix restart\n\n\n\n\n\n\n\n\nAjout d'un enregistrement DNS\n On ajoute la partie entre double-quotes du fichier /etc/opendkim/keys/yojik.net/yojik.txt \u00e0 la ligne suivante:\n Attention \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 Ajouter la clef derri\u00e8re p= (supprimer les doubles quotes du d\u00e9but, milieu et fin de clef: ex:\n \"ljjoj\" \"dfjj\")\n\n\n\n\nTest:\n\n\n\n\nopendkim-testkey -d yojik.net -s yojik\n\n\n\n\n\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\n ; multi-line format\n name._domainkey IN TXT (\"v=DKIM1\"\n \"p=MIGfMA0G ... \"\n \"oGeLnQg ... \"\n \"tdC2UzJ1lW ... \"\n \"MmPSPDdQPNUYckcQ2QIDAQAB\")\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\nCette fois-ci, tout est bon. J'ai adopt\u00e9 une technique pour coller ma clef dans l'enregistrement dns: je fais un:\n> cat fichier_de_zone fichier_de_clef > fichier_de_zone.new\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\n\n\n\n\n\nTest\n On envoie un message pour voir s'il est bien sign\u00e9.\n Je red\u00e9marre le serveur et j'envoie un message.\n\n\nVoil\u00e0 les r\u00e9sultats:\n\n\n\n\nARC-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\nReceived-SPF: pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > client-ip=82.64.48.5;\nAuthentication-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\nReceived: from [192.168.111.150] (unknown [192.168.111.150])\n by aijan.yojik.net (Postfix) with ESMTPSA id AFB9ED004F3\n for \nericounet26200@gmail.com\n; Thu, 31 May 2018 12:09:41 +0200 (CEST)\nDKIM-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\n\n\n\n\n\nAuthor Domain Signing Practices (ADSP)Permalink\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 La syntaxe est assez simple:\n\n\n\n\n_adsp._domainkey.yojik.net. IN TXT \"dkim=all\"\n Le param\u00e8tre dkim accepte d'autres valeurs moins strictes, mais j'ai choisi la plus stricte.\n Ne pas oublier d'incr\u00e9menter le num\u00e9ro de s\u00e9rie du fichier de zone apr\u00e8s modification.\n Rechargez bind.\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) indique 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@aijan:/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\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.\nLa configuration se fait dans /etc/opendmarc.conf et dans /etc/default/opendmarc:\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@aijan:/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:\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: aijan.yojik.net; dmarc=pass \n\n\n\n\n\u00c7a fonctionne :)", "title": "Ajout des enregistrements SPF et DKIM au fichier de zone DNS" }, { "location": "/12-douze/#ajout-des-enregistrements-spf-au-fichier-de-zone-dns", "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 https://www.spfwizard.net/ ou https://mxtoolbox.com/SPFRecordGenerator.aspx. Le site http://www.openspf.org/ 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'uns 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. ; 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.", "title": "Ajout des enregistrements spf au fichier de zone DNS" }, { "location": "/12-douze/#installation-des-logiciels-necessaires", "text": "root@aijan:/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@aijan:/etc/bind#", "title": "Installation des logiciels n\u00e9cessaires" }, { "location": "/12-douze/#doc-debian", "text": "This package must be integrated with Postfix to be effective: Add the following to /etc/postfix/master.cf: policyd-spf unix - n n - 0 spawn\n user=policyd-spf argv=/usr/bin/policyd-spf Configure the Postfix policy service in /etc/postfix/main.cf: smtpd_recipient_restrictions =\n ...\n reject_unauth_destination\n check_policy_service unix:private/policyd-spf\n ...\n\npolicyd-spf_time_limit = 3600 NOTE: Specify check_policy_service AFTER reject_unauth_destination or\nelse your system can become an open relay. Reload Postfix.", "title": "Doc Debian" }, { "location": "/12-douze/#configuration-de-postfix", "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", "title": "Configuration de postfix" }, { "location": "/12-douze/#test", "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@aijan:/home/ericadmin# tail -f /var/log/mail.log\nMay 28 11:58:06 aijan dovecot: imap-login: Login: user=, method=PLAIN, rip=192.168.111.150, lip=192.168.111.240, mpid=1901, TLS, session=\nMay 28 11:58:26 aijan postfix/smtpd[1902]: connect from adara.yojik.eu[91.121.72.10]\nMay 28 11:58:26 aijan policyd-spf[1907]: prepend Received-SPF: Pass (mailfrom) identity=mailfrom; client-ip=91.121.72.10; helo=adara.yojik.eu; envelope-from=eric@yojik.eu; receiver=\nMay 28 11:58:26 aijan postfix/smtpd[1902]: C701DD004F2: client=adara.yojik.eu[91.121.72.10]\nMay 28 11:58:26 aijan postfix/cleanup[1908]: C701DD004F2: message-id=<4c621385-3822-cb78-9c1d-7e9f43c3fc52@yojik.eu>\nMay 28 11:58:26 aijan postfix/qmgr[867]: C701DD004F2: from=, size=1414, nrcpt=1 (queue active)\nMay 28 11:58:26 aijan postfix/smtpd[1902]: disconnect from adara.yojik.eu[91.121.72.10] ehlo=2 starttls=1 mail=1 rcpt=1 data=1 quit=1 commands=7\nMay 28 11:58:26 aijan postfix/local[1909]: C701DD004F2: to=, 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 aijan postfix/qmgr[867]: C701DD004F2: removed\nMay 28 11:59:00 aijan dovecot: imap-login: Login: user=, method=PLAIN, rip=192.168.111.150, lip=192.168.111.240, mpid=1915, TLS, session= La ligne May 28 11:43:12 aijan policyd-spf[1830]: prepend Received-SPF: Pass (mailfrom) identity=mailfrom; montre que notre contr\u00f4le SPF fonctionne comme il faut.", "title": "Test" }, { "location": "/12-douze/#installation-de-dkim", "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: Configuration de DKIM Nous commen\u00e7ons par l'installation de opendkim. shell\n root@aijan:/home/ericadmin# apt install opendkim\n Lecture des listes de paquets... Fait\n Construction de l'arbre des d\u00e9pendances \n Lecture des informations d'\u00e9tat... Fait\n The following additional packages will be installed:\n dns-root-data liblua5.1-0 libmemcached11 libmemcachedutil2 libmilter1.0.1 libopendbx1 libopendbx1-sqlite3 libopendkim11 librbl1 libunbound2 libvbr2\n Paquets 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.\n Voici notre fichier de configuration; adaptez-le en fonction de votre domaine, bien s\u00fbr: ```shell\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. # Log to syslog\n Syslog 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 # Sign for example.com with key in /etc/mail/dkim.key using\n # selector '2007' (e.g. 2007._domainkey.example.com)\n Domain yojik.net\n KeyFile /etc/opendkim/keys/yojik.net/yojik.private\n Selector yojik # Commonly-used options; the commented-out versions show the defaults.\n #Canonicalization simple\n #Mode sv\n #SubDomains no\n #ADSPAction continue # 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.\n OversignHeaders From # List domains to use for RFC 6541 DKIM Authorized Third-Party Signatures\n # (ATPS) (experimental) #ATPSDomains example.com AutoRestart Yes\n AutoRestartRate 10/1h\n UMask 002\n Syslog yes\n SyslogSuccess Yes\n LogWhy Yes\n Canonicalization relaxed/simple ExternalIgnoreList refile:/etc/opendkim/TrustedHosts\n InternalHosts refile:/etc/opendkim/TrustedHosts\n KeyTable refile:/etc/opendkim/KeyTable\n SigningTable refile:/etc/opendkim/SigningTable Mode sv\n PidFile /var/run/opendkim/opendkim.pid\n SignatureAlgorithm rsa-sha256 UserID opendkim:opendkim Socket inet:12301@localhost\n ``` Postix acc\u00e9dera \u00e0 opendkim \u00e0 travers le port 12301.\n Il nous reste 3 fichiers \u00e0 configurer/cr\u00e9er, ainsi que g\u00e9n\u00e9rer les clefs priv\u00e9es et publiques. /etc/opendkim/SigningTable\n Ce fichier ne contient qu'une seule ligne:\n > *@yojik.net yojik._domainkey.yojik.net /etc/opendkim/KeyTable\n Ce fichier ne contient qu'une seule ligne:\n > yojik._domainkey.yojik.net yojik.net:yojik:/etc/opendkim/keys/yojik.net/yojik.private /etc/opendkim/TrustedHosts\n > 127.0.0.1\n > ::1\n > localhost\n > \n > yojik.net \n Ne pas modifier les 3 premi\u00e8res lignes qui sont n\u00e9cessaires \u00e0 opendkim ... Cr\u00e9ation des clefs publiques et priv\u00e9es\n > cd /etc/opendkim/keys/yojik.net/\n > opendkim-genkey -b 2048 -h rsa-sha256 -r -s yojik -d yojik.net -v\n Un erreur appara\u00eet: il nous faut installer opendkim-tools:\n > apt install opendkim-tools\n 2 fichiers sont cr\u00e9es: la clef publique et la clef priv\u00e9e. Nous allons renommer ces 2 clefs.\n > mv mv 201805.private yojik.private\n > mv 201805.txt yojik.txt\n 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@aijan:/etc/opendkim/keys# cd /etc\n root@aijan:/etc# chown -R opendkim:opendkim /etc/opendkim\n root@aijan:/etc# chmod -R go-rw /etc/opendkim/keys\n root@aijan:/etc# On relance opendkim pour voir s'il y a des erreurs: systemctl restart opendkim On lance: netstat -tlnp\n et on voit la ligne:\ntcp 0 0 127.0.0.1:12301 0.0.0.0:* LISTEN 2395/opendkim\n C'est bon .. le service est en place. Ajout de DKIM \u00e0 Postix\n On va rajouter la gestion de DKIM \u00e0 Postfix dans le fichier /etc/postfix/main.cf\n On ajoute les lignes suivantes: milter_default_action = accept\nmilter_protocol = 2\nsmtpd_milters = inet:localhost:12301 \nnon_smtpd_milters = inet:localhost:12301 On relance Postfix par: service postfix restart Ajout d'un enregistrement DNS\n On ajoute la partie entre double-quotes du fichier /etc/opendkim/keys/yojik.net/yojik.txt \u00e0 la ligne suivante:\n 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=;\")\n Ajouter la clef derri\u00e8re p= (supprimer les doubles quotes du d\u00e9but, milieu et fin de clef: ex:\n \"ljjoj\" \"dfjj\") Test: 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: ; multi-line format\n name._domainkey IN TXT (\"v=DKIM1\"\n \"p=MIGfMA0G ... \"\n \"oGeLnQg ... \"\n \"tdC2UzJ1lW ... \"\n \"MmPSPDdQPNUYckcQ2QIDAQAB\") 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 ...\n\nCette fois-ci, tout est bon. J'ai adopt\u00e9 une technique pour coller ma clef dans l'enregistrement dns: je fais un:\n> cat fichier_de_zone fichier_de_clef > fichier_de_zone.new\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. Test\n On envoie un message pour voir s'il est bien sign\u00e9.\n 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\nReceived-SPF: pass (google.com: domain of ericadmin@yojik.net designates 82.64.48.5 as permitted sender) > client-ip=82.64.48.5;\nAuthentication-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\nReceived: from [192.168.111.150] (unknown [192.168.111.150])\n by aijan.yojik.net (Postfix) with ESMTPSA id AFB9ED004F3\n for ericounet26200@gmail.com ; Thu, 31 May 2018 12:09:41 +0200 (CEST)\nDKIM-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!", "title": "Installation de DKIM" }, { "location": "/12-douze/#author-domain-signing-practices-adsppermalink", "text": "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.\n La syntaxe est assez simple: _adsp._domainkey.yojik.net. IN TXT \"dkim=all\"\n Le param\u00e8tre dkim accepte d'autres valeurs moins strictes, mais j'ai choisi la plus stricte.\n Ne pas oublier d'incr\u00e9menter le num\u00e9ro de s\u00e9rie du fichier de zone apr\u00e8s modification.\n Rechargez bind.\nservice 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.", "title": "Author Domain Signing Practices (ADSP)Permalink" }, { "location": "/12-douze/#dmarc", "text": "Dmarc (Domain Message Authentication, Reporting & Conformance) indique 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.", "title": "DMARC" }, { "location": "/12-douze/#installation-de-opendmarc", "text": "root@aijan:/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\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.", "title": "Installation de Opendmarc" }, { "location": "/12-douze/#configuration-de-opendmarc", "text": "2 fichiers sont \u00e0 configurer.\nLa configuration se fait dans /etc/opendmarc.conf et dans /etc/default/opendmarc:\nComme 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@aijan:/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:\nNous 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: aijan.yojik.net; dmarc=pass \u00c7a fonctionne :)", "title": "Configuration de Opendmarc" }, { "location": "/17-dixsept/", "text": "\ufeff# Installation de logwatch\n\n\nInstallation\n\n\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\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.\nOn teste en le lan\u00e7ant manuellement:\n\n\nOn teste en le len\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 :)", "title": "Installation de programmes de surveillance du serveur" }, { "location": "/17-dixsept/#installation", "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) ...", "title": "Installation" }, { "location": "/17-dixsept/#configuration", "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.\nOn teste en le lan\u00e7ant manuellement: On teste en le len\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 :)", "title": "Configuration" }, { "location": "/18-dixhuit/", "text": "\ufeff## Installation d'un webmail\n\n\nLe webmail permet de consulter/envoyer ses messages \u00e0 partir d'un navigateur. Nous allons installer \nrainloop\n.\nVous trouverez des informations compl\u00e9mentaires (installation, plugins, configuration) sur le site: \nRainloop\n. Il existe d'autres webmails, mais celui-ci me convient bien.\n\n\nInstallation\n\n\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 ```shell\nwget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip\n\n\n\n\nCr\u00e9ation du r\u00e9pertoire /var/www/html/webmail et d\u00e9compression de l'archive zip dans celui-ci\n\n\n\n\nmkdir /var/www/html/webmail\ncp /home/ericadmin/rainloop-community-latest.zip /var/www/html/webmail/\ncd /var/www/html/webmail\nunzip rainloop-community-latest.zip\n\n\n\n2. Installation des d\u00e9pendances: librairies et programmes \n\nIl nous faut les extensions php suivantes:\n> cURL, json, libxml, dom, openssl, DateTime, PCRE, SPL, sqlite\n\n\n\n\n\nroot@adara:/etc# apt install php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-xml php7.0-sqlite3 \n```\n\n\nconfiguration\n\n\n\u2022 Droits de lecture/\u00e9criture de l'application:\n\n\ncd /var/www/html/webmail/rainloop\nfind . -type d -exec chmod 755 {} \\;\nfind . -type f -exec chmod 644 {} \\;\n\n\n\u2022 Mise en place des propri\u00e9taires de l'application:\n\n\ncd /var/www/html/webmail/rainloop\nchown -R www-data:www-data .\n\n\nCr\u00e9ation du site webmail.yojik.net\n\n\nCr\u00e9ation du certificat pour webmail.yojik.net\n\n\nNous allons cr\u00e9er un certificat pour notre site webmail.\n\n\nTest", "title": "Installation d'un webmail" }, { "location": "/18-dixhuit/#installation", "text": "T\u00e9l\u00e9charger la version communautaire sur le site, et la d\u00e9compresser dans votre r\u00e9pertoire web (/home/www/ pour moi) \n ```shell\nwget http://www.rainloop.net/repository/webmail/rainloop-community-latest.zip Cr\u00e9ation du r\u00e9pertoire /var/www/html/webmail et d\u00e9compression de l'archive zip dans celui-ci mkdir /var/www/html/webmail\ncp /home/ericadmin/rainloop-community-latest.zip /var/www/html/webmail/\ncd /var/www/html/webmail\nunzip rainloop-community-latest.zip \n2. Installation des d\u00e9pendances: librairies et programmes \n\nIl nous faut les extensions php suivantes:\n> cURL, json, libxml, dom, openssl, DateTime, PCRE, SPL, sqlite root@adara:/etc# apt install php7.0 libapache2-mod-php7.0 php7.0-curl php7.0-xml php7.0-sqlite3 \n```", "title": "Installation" }, { "location": "/18-dixhuit/#configuration", "text": "\u2022 Droits de lecture/\u00e9criture de l'application: cd /var/www/html/webmail/rainloop\nfind . -type d -exec chmod 755 {} \\;\nfind . -type f -exec chmod 644 {} \\; \u2022 Mise en place des propri\u00e9taires de l'application: cd /var/www/html/webmail/rainloop\nchown -R www-data:www-data .", "title": "configuration" }, { "location": "/18-dixhuit/#creation-du-site-webmailyojiknet", "text": "", "title": "Cr\u00e9ation du site webmail.yojik.net" }, { "location": "/18-dixhuit/#creation-du-certificat-pour-webmailyojiknet", "text": "Nous allons cr\u00e9er un certificat pour notre site webmail.", "title": "Cr\u00e9ation du certificat pour webmail.yojik.net" }, { "location": "/18-dixhuit/#test", "text": "", "title": "Test" }, { "location": "/19-dixneuf/", "text": "\ufeff\n\n\nInstallation de \ngit\n et 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.\nJe me suis inspir\u00e9 de la documentation officielle ainsi que de ce tutorial:\n\n# How to Install Gogs Go Git Service on Ubuntu 16.04\n\n\nCommen\u00e7ons par installer \ngit\n.\n\n\nInstallation de \ngit\n\n\nroot@atom:~# apt-get 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 liberror-perl patch rsync\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 ed diffutils-doc\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n git git-man liberror-perl patch rsync\n0 mis \u00e0 jour, 5 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 6 869 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 35,9 Mo 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 liberror-perl all 0.17024-1 [26,9 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 git-man all 1:2.11.0-3+deb9u4 [1 433 kB]\nR\u00e9ception de:3 http://deb.debian.org/debian stretch/main i386 git i386 1:2.11.0-3+deb9u4 [4 879 kB]\nR\u00e9ception de:4 http://deb.debian.org/debian stretch/main i386 patch i386 2.7.5-1+deb9u1 [124 kB]\nR\u00e9ception de:5 http://deb.debian.org/debian stretch/main i386 rsync i386 3.1.2-1+deb9u1 [407 kB]\n6 869 ko r\u00e9ceptionn\u00e9s en 0s (12,4 Mo/s)\nS\u00e9lection du paquet liberror-perl pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 37491 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../liberror-perl_0.17024-1_all.deb ...\nD\u00e9paquetage de liberror-perl (0.17024-1) ...\nS\u00e9lection du paquet git-man pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\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) ...\nS\u00e9lection du paquet patch pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../patch_2.7.5-1+deb9u1_i386.deb ...\nD\u00e9paquetage de patch (2.7.5-1+deb9u1) ...\nS\u00e9lection du paquet rsync pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../rsync_3.1.2-1+deb9u1_i386.deb ...\nD\u00e9paquetage de rsync (3.1.2-1+deb9u1) ...\nParam\u00e9trage de git-man (1:2.11.0-3+deb9u4) ...\nParam\u00e9trage de liberror-perl (0.17024-1) ...\nParam\u00e9trage de rsync (3.1.2-1+deb9u1) ...\nCreated symlink /etc/systemd/system/multi-user.target.wants/rsync.service \u2192 /lib/systemd/system/rsync.service.\nParam\u00e9trage de patch (2.7.5-1+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u6) ...\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:~# \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\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 libpq5 libsensors4 postgresql-9.6 postgresql-client-9.6 postgresql-client-common postgresql-common postgresql-contrib-9.6 sysstat\nPaquets sugg\u00e9r\u00e9s :\n postgresql-doc-9.6 lm-sensors postgresql-doc locales-all libdbd-pg-perl isag\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n libpq-dev libpq5 libsensors4 postgresql postgresql-9.6 postgresql-client postgresql-client-9.6 postgresql-client-common postgresql-common\n postgresql-contrib-9.6 sysstat\n0 mis \u00e0 jour, 11 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 7 398 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 33,7 Mo d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 libpq5 i386 9.6.10-0+deb9u1 [142 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 libpq-dev i386 9.6.10-0+deb9u1 [224 kB]\nR\u00e9ception de:3 http://deb.debian.org/debian stretch/main i386 libsensors4 i386 1:3.4.0-4 [54,0 kB]\nR\u00e9ception de:4 http://deb.debian.org/debian stretch/main i386 postgresql-client-common all 181+deb9u2 [79,2 kB]\nR\u00e9ception de:5 http://deb.debian.org/debian stretch/main i386 postgresql-client-9.6 i386 9.6.10-0+deb9u1 [1 271 kB]\nR\u00e9ception de:6 http://deb.debian.org/debian stretch/main i386 postgresql-common all 181+deb9u2 [217 kB]\nR\u00e9ception de:7 http://deb.debian.org/debian stretch/main i386 postgresql-9.6 i386 9.6.10-0+deb9u1 [4 395 kB]\nR\u00e9ception de:8 http://deb.debian.org/debian stretch/main i386 postgresql all 9.6+181+deb9u2 [55,8 kB]\nR\u00e9ception de:9 http://deb.debian.org/debian stretch/main i386 postgresql-client all 9.6+181+deb9u2 [55,8 kB]\nR\u00e9ception de:10 http://deb.debian.org/debian stretch/main i386 postgresql-contrib-9.6 i386 9.6.10-0+deb9u1 [531 kB]\nR\u00e9ception de:11 http://deb.debian.org/debian stretch/main i386 sysstat i386 11.4.3-2 [373 kB]\n7 398 ko r\u00e9ceptionn\u00e9s en 0s (11,8 Mo/s) \nPr\u00e9configuration des paquets...\nS\u00e9lection du paquet libpq5:i386 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 38406 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../00-libpq5_9.6.10-0+deb9u1_i386.deb ...\nD\u00e9paquetage de libpq5:i386 (9.6.10-0+deb9u1) ...\nS\u00e9lection du paquet libpq-dev pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../01-libpq-dev_9.6.10-0+deb9u1_i386.deb ...\nD\u00e9paquetage de libpq-dev (9.6.10-0+deb9u1) ...\nS\u00e9lection du paquet libsensors4:i386 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../02-libsensors4_1%3a3.4.0-4_i386.deb ...\nD\u00e9paquetage de libsensors4:i386 (1:3.4.0-4) ...\nS\u00e9lection du paquet postgresql-client-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../03-postgresql-client-common_181+deb9u2_all.deb ...\nD\u00e9paquetage de postgresql-client-common (181+deb9u2) ...\nS\u00e9lection du paquet postgresql-client-9.6 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../04-postgresql-client-9.6_9.6.10-0+deb9u1_i386.deb ...\nD\u00e9paquetage de postgresql-client-9.6 (9.6.10-0+deb9u1) ...\nS\u00e9lection du paquet postgresql-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../05-postgresql-common_181+deb9u2_all.deb ...\nAjout de \u00ab d\u00e9tournement de /usr/bin/pg_config en /usr/bin/pg_config.libpq-dev par postgresql-common \u00bb\nD\u00e9paquetage de postgresql-common (181+deb9u2) ...\nS\u00e9lection du paquet postgresql-9.6 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../06-postgresql-9.6_9.6.10-0+deb9u1_i386.deb ...\nD\u00e9paquetage de postgresql-9.6 (9.6.10-0+deb9u1) ...\nS\u00e9lection du paquet postgresql pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../07-postgresql_9.6+181+deb9u2_all.deb ...\nD\u00e9paquetage de postgresql (9.6+181+deb9u2) ...\nS\u00e9lection du paquet postgresql-client pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../08-postgresql-client_9.6+181+deb9u2_all.deb ...\nD\u00e9paquetage de postgresql-client (9.6+181+deb9u2) ...\nS\u00e9lection du paquet postgresql-contrib-9.6 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../09-postgresql-contrib-9.6_9.6.10-0+deb9u1_i386.deb ...\nD\u00e9paquetage de postgresql-contrib-9.6 (9.6.10-0+deb9u1) ...\nS\u00e9lection du paquet sysstat pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../10-sysstat_11.4.3-2_i386.deb ...\nD\u00e9paquetage de sysstat (11.4.3-2) ...\nParam\u00e9trage de libpq5:i386 (9.6.10-0+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nParam\u00e9trage de postgresql-client-common (181+deb9u2) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u6) ...\nParam\u00e9trage de postgresql-common (181+deb9u2) ...\nAdding user postgres to group ssl-cert\n\nCreating config file /etc/postgresql-common/createcluster.conf with new version\n\nCreating config file /etc/logrotate.d/postgresql-common with new version\nBuilding PostgreSQL dictionaries from installed myspell/hunspell packages...\nRemoving obsolete dictionary files:\nCreated symlink /etc/systemd/system/multi-user.target.wants/postgresql.service \u2192 /lib/systemd/system/postgresql.service.\nParam\u00e9trage de libsensors4:i386 (1:3.4.0-4) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de libpq-dev (9.6.10-0+deb9u1) ...\nParam\u00e9trage de sysstat (11.4.3-2) ...\n\nCreating config file /etc/default/sysstat with new version\nupdate-alternatives: utilisation de \u00ab /usr/bin/sar.sysstat \u00bb pour fournir \u00ab /usr/bin/sar \u00bb (sar) en mode automatique\nParam\u00e9trage de postgresql-client-9.6 (9.6.10-0+deb9u1) ...\nupdate-alternatives: utilisation de \u00ab /usr/share/postgresql/9.6/man/man1/psql.1.gz \u00bb pour fournir \u00ab /usr/share/man/man1/psql.1.gz \u00bb (psql.1.gz) en mode automatique\nParam\u00e9trage de postgresql-9.6 (9.6.10-0+deb9u1) ...\nCreating new cluster 9.6/main ...\n config /etc/postgresql/9.6/main\n data /var/lib/postgresql/9.6/main\n locale fr_FR.UTF-8\n socket /var/run/postgresql\n port 5432\nupdate-alternatives: utilisation de \u00ab /usr/share/postgresql/9.6/man/man1/postmaster.1.gz \u00bb pour fournir \u00ab /usr/share/man/man1/postmaster.1.gz \u00bb (postmaster.1.gz) en mode automatique\nParam\u00e9trage de postgresql (9.6+181+deb9u2) ...\nParam\u00e9trage de postgresql-client (9.6+181+deb9u2) ...\nParam\u00e9trage de postgresql-contrib-9.6 (9.6.10-0+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u6) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\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\n\n\nsystemctl start postgresql\nsystemctl enable postgresql\n\n\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\nmot de passe correspondant : \n*\nutilisateur de la base de donn\u00e9es postgres: git \nmot de passe de l'utlisateur git dans postgres: \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\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 de l'utilisateur \ngit\n au sein du syst\u00e8me\n\n\n\n\ncommande adduser\nAvant, n'oubliez pas de repasser sous utilisateur \nroot\n en tapant \nCtrl D\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\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\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 ;). \nConfirmez votre choix, reconnectez-vous et \u00e7a y est:)\nCr\u00e9ez ensuite un \nutilisateur\n avec son mot de passe (\u00e0 noter pr\u00e9cieusement ...)\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\nOn cr\u00e9e le fichier \n/etc/apache2/sites-available/git.conf avec le contenu suivant:\nIl faut activer les modules \napache\n suivants avec \na2enmod*:\n\n\n\n\nproxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html\n\n\n\n\n\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\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\nEt on suit les instructions ...\n\n\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\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 gogs marche parfaitement.\n\n\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.", "title": "Installation de git et de gogs" }, { "location": "/19-dixneuf/#installation-de-git-et-de-gogs", "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 .\nJe 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 .", "title": "Installation de git et de gogs" }, { "location": "/19-dixneuf/#installation-de-git", "text": "root@atom:~# apt-get 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 liberror-perl patch rsync\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 ed diffutils-doc\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n git git-man liberror-perl patch rsync\n0 mis \u00e0 jour, 5 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 6 869 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 35,9 Mo 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 liberror-perl all 0.17024-1 [26,9 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 git-man all 1:2.11.0-3+deb9u4 [1 433 kB]\nR\u00e9ception de:3 http://deb.debian.org/debian stretch/main i386 git i386 1:2.11.0-3+deb9u4 [4 879 kB]\nR\u00e9ception de:4 http://deb.debian.org/debian stretch/main i386 patch i386 2.7.5-1+deb9u1 [124 kB]\nR\u00e9ception de:5 http://deb.debian.org/debian stretch/main i386 rsync i386 3.1.2-1+deb9u1 [407 kB]\n6 869 ko r\u00e9ceptionn\u00e9s en 0s (12,4 Mo/s)\nS\u00e9lection du paquet liberror-perl pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 37491 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../liberror-perl_0.17024-1_all.deb ...\nD\u00e9paquetage de liberror-perl (0.17024-1) ...\nS\u00e9lection du paquet git-man pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\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) ...\nS\u00e9lection du paquet patch pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../patch_2.7.5-1+deb9u1_i386.deb ...\nD\u00e9paquetage de patch (2.7.5-1+deb9u1) ...\nS\u00e9lection du paquet rsync pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../rsync_3.1.2-1+deb9u1_i386.deb ...\nD\u00e9paquetage de rsync (3.1.2-1+deb9u1) ...\nParam\u00e9trage de git-man (1:2.11.0-3+deb9u4) ...\nParam\u00e9trage de liberror-perl (0.17024-1) ...\nParam\u00e9trage de rsync (3.1.2-1+deb9u1) ...\nCreated symlink /etc/systemd/system/multi-user.target.wants/rsync.service \u2192 /lib/systemd/system/rsync.service.\nParam\u00e9trage de patch (2.7.5-1+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u6) ...\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:~#", "title": "Installation de git" }, { "location": "/19-dixneuf/#installation-de-la-base-de-donnees-postgresql", "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\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 libpq5 libsensors4 postgresql-9.6 postgresql-client-9.6 postgresql-client-common postgresql-common postgresql-contrib-9.6 sysstat\nPaquets sugg\u00e9r\u00e9s :\n postgresql-doc-9.6 lm-sensors postgresql-doc locales-all libdbd-pg-perl isag\nLes NOUVEAUX paquets suivants seront install\u00e9s :\n libpq-dev libpq5 libsensors4 postgresql postgresql-9.6 postgresql-client postgresql-client-9.6 postgresql-client-common postgresql-common\n postgresql-contrib-9.6 sysstat\n0 mis \u00e0 jour, 11 nouvellement install\u00e9s, 0 \u00e0 enlever et 0 non mis \u00e0 jour.\nIl est n\u00e9cessaire de prendre 7 398 ko dans les archives.\nApr\u00e8s cette op\u00e9ration, 33,7 Mo d'espace disque suppl\u00e9mentaires seront utilis\u00e9s.\nR\u00e9ception de:1 http://deb.debian.org/debian stretch/main i386 libpq5 i386 9.6.10-0+deb9u1 [142 kB]\nR\u00e9ception de:2 http://deb.debian.org/debian stretch/main i386 libpq-dev i386 9.6.10-0+deb9u1 [224 kB]\nR\u00e9ception de:3 http://deb.debian.org/debian stretch/main i386 libsensors4 i386 1:3.4.0-4 [54,0 kB]\nR\u00e9ception de:4 http://deb.debian.org/debian stretch/main i386 postgresql-client-common all 181+deb9u2 [79,2 kB]\nR\u00e9ception de:5 http://deb.debian.org/debian stretch/main i386 postgresql-client-9.6 i386 9.6.10-0+deb9u1 [1 271 kB]\nR\u00e9ception de:6 http://deb.debian.org/debian stretch/main i386 postgresql-common all 181+deb9u2 [217 kB]\nR\u00e9ception de:7 http://deb.debian.org/debian stretch/main i386 postgresql-9.6 i386 9.6.10-0+deb9u1 [4 395 kB]\nR\u00e9ception de:8 http://deb.debian.org/debian stretch/main i386 postgresql all 9.6+181+deb9u2 [55,8 kB]\nR\u00e9ception de:9 http://deb.debian.org/debian stretch/main i386 postgresql-client all 9.6+181+deb9u2 [55,8 kB]\nR\u00e9ception de:10 http://deb.debian.org/debian stretch/main i386 postgresql-contrib-9.6 i386 9.6.10-0+deb9u1 [531 kB]\nR\u00e9ception de:11 http://deb.debian.org/debian stretch/main i386 sysstat i386 11.4.3-2 [373 kB]\n7 398 ko r\u00e9ceptionn\u00e9s en 0s (11,8 Mo/s) \nPr\u00e9configuration des paquets...\nS\u00e9lection du paquet libpq5:i386 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\n(Lecture de la base de donn\u00e9es... 38406 fichiers et r\u00e9pertoires d\u00e9j\u00e0 install\u00e9s.)\nPr\u00e9paration du d\u00e9paquetage de .../00-libpq5_9.6.10-0+deb9u1_i386.deb ...\nD\u00e9paquetage de libpq5:i386 (9.6.10-0+deb9u1) ...\nS\u00e9lection du paquet libpq-dev pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../01-libpq-dev_9.6.10-0+deb9u1_i386.deb ...\nD\u00e9paquetage de libpq-dev (9.6.10-0+deb9u1) ...\nS\u00e9lection du paquet libsensors4:i386 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../02-libsensors4_1%3a3.4.0-4_i386.deb ...\nD\u00e9paquetage de libsensors4:i386 (1:3.4.0-4) ...\nS\u00e9lection du paquet postgresql-client-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../03-postgresql-client-common_181+deb9u2_all.deb ...\nD\u00e9paquetage de postgresql-client-common (181+deb9u2) ...\nS\u00e9lection du paquet postgresql-client-9.6 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../04-postgresql-client-9.6_9.6.10-0+deb9u1_i386.deb ...\nD\u00e9paquetage de postgresql-client-9.6 (9.6.10-0+deb9u1) ...\nS\u00e9lection du paquet postgresql-common pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../05-postgresql-common_181+deb9u2_all.deb ...\nAjout de \u00ab d\u00e9tournement de /usr/bin/pg_config en /usr/bin/pg_config.libpq-dev par postgresql-common \u00bb\nD\u00e9paquetage de postgresql-common (181+deb9u2) ...\nS\u00e9lection du paquet postgresql-9.6 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../06-postgresql-9.6_9.6.10-0+deb9u1_i386.deb ...\nD\u00e9paquetage de postgresql-9.6 (9.6.10-0+deb9u1) ...\nS\u00e9lection du paquet postgresql pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../07-postgresql_9.6+181+deb9u2_all.deb ...\nD\u00e9paquetage de postgresql (9.6+181+deb9u2) ...\nS\u00e9lection du paquet postgresql-client pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../08-postgresql-client_9.6+181+deb9u2_all.deb ...\nD\u00e9paquetage de postgresql-client (9.6+181+deb9u2) ...\nS\u00e9lection du paquet postgresql-contrib-9.6 pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../09-postgresql-contrib-9.6_9.6.10-0+deb9u1_i386.deb ...\nD\u00e9paquetage de postgresql-contrib-9.6 (9.6.10-0+deb9u1) ...\nS\u00e9lection du paquet sysstat pr\u00e9c\u00e9demment d\u00e9s\u00e9lectionn\u00e9.\nPr\u00e9paration du d\u00e9paquetage de .../10-sysstat_11.4.3-2_i386.deb ...\nD\u00e9paquetage de sysstat (11.4.3-2) ...\nParam\u00e9trage de libpq5:i386 (9.6.10-0+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nParam\u00e9trage de postgresql-client-common (181+deb9u2) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u6) ...\nParam\u00e9trage de postgresql-common (181+deb9u2) ...\nAdding user postgres to group ssl-cert\n\nCreating config file /etc/postgresql-common/createcluster.conf with new version\n\nCreating config file /etc/logrotate.d/postgresql-common with new version\nBuilding PostgreSQL dictionaries from installed myspell/hunspell packages...\nRemoving obsolete dictionary files:\nCreated symlink /etc/systemd/system/multi-user.target.wants/postgresql.service \u2192 /lib/systemd/system/postgresql.service.\nParam\u00e9trage de libsensors4:i386 (1:3.4.0-4) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour man-db (2.7.6.1-2) ...\nParam\u00e9trage de libpq-dev (9.6.10-0+deb9u1) ...\nParam\u00e9trage de sysstat (11.4.3-2) ...\n\nCreating config file /etc/default/sysstat with new version\nupdate-alternatives: utilisation de \u00ab /usr/bin/sar.sysstat \u00bb pour fournir \u00ab /usr/bin/sar \u00bb (sar) en mode automatique\nParam\u00e9trage de postgresql-client-9.6 (9.6.10-0+deb9u1) ...\nupdate-alternatives: utilisation de \u00ab /usr/share/postgresql/9.6/man/man1/psql.1.gz \u00bb pour fournir \u00ab /usr/share/man/man1/psql.1.gz \u00bb (psql.1.gz) en mode automatique\nParam\u00e9trage de postgresql-9.6 (9.6.10-0+deb9u1) ...\nCreating new cluster 9.6/main ...\n config /etc/postgresql/9.6/main\n data /var/lib/postgresql/9.6/main\n locale fr_FR.UTF-8\n socket /var/run/postgresql\n port 5432\nupdate-alternatives: utilisation de \u00ab /usr/share/postgresql/9.6/man/man1/postmaster.1.gz \u00bb pour fournir \u00ab /usr/share/man/man1/postmaster.1.gz \u00bb (postmaster.1.gz) en mode automatique\nParam\u00e9trage de postgresql (9.6+181+deb9u2) ...\nParam\u00e9trage de postgresql-client (9.6+181+deb9u2) ...\nParam\u00e9trage de postgresql-contrib-9.6 (9.6.10-0+deb9u1) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour systemd (232-25+deb9u6) ...\nTraitement des actions diff\u00e9r\u00e9es (\u00ab triggers \u00bb) pour libc-bin (2.24-11+deb9u3) ...\nroot@atom:/home/ericadmin# Lancement du serveur Postgresql et configuration pour un lancement automatique au d\u00e9marrage de la machine: systemctl start postgresql\nsystemctl enable postgresql 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\nmot de passe correspondant : *\nutilisateur de la base de donn\u00e9es postgres: git \nmot de passe de l'utlisateur git dans postgres: *\nbase 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 .", "title": "Installation de la base de donn\u00e9es Postgresql" }, { "location": "/19-dixneuf/#creation-de-lutilisateur-git-au-sein-du-systeme", "text": "commande adduser\nAvant, n'oubliez pas de repasser sous utilisateur root en tapant Ctrl D 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#", "title": "Cr\u00e9ation de l'utilisateur git au sein du syst\u00e8me" }, { "location": "/19-dixneuf/#creation-dun-repertoire-reserve-au-binaire-gogs-appartenant-a-lutilisateur-git", "text": "root@atom:/home/ericadmin# su - git\ngit@atom:~$ mkdir -p /home/git/bin\ngit@atom:~$", "title": "Cr\u00e9ation d'un r\u00e9pertoire r\u00e9serv\u00e9 au binaire gogs appartenant \u00e0 l'utilisateur git" }, { "location": "/19-dixneuf/#telechargement-du-binaire-gogs-dans-notre-repertoire-nouvellement-cree", "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 :) )", "title": "T\u00e9l\u00e9chargement du binaire gogs dans notre r\u00e9pertoire nouvellement cr\u00e9\u00e9" }, { "location": "/19-dixneuf/#decompression-de-larchive-et-suppression-de-larchive", "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\nVous 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 ;). \nConfirmez votre choix, reconnectez-vous et \u00e7a y est:)\nCr\u00e9ez ensuite un utilisateur avec son mot de passe (\u00e0 noter pr\u00e9cieusement ...)\nIl nous reste \u00e0 installer les fichiers de lancement systemd ou init ; pour moi, systemd , la redirection apache , les certificats letsencrypt .", "title": "D\u00e9compression de l'archive et suppression de l'archive" }, { "location": "/19-dixneuf/#creation-de-lenregistrement-bind", "text": "On ajoute un enregistrement CNAME git IN CNAME atom.yojik.net.", "title": "Cr\u00e9ation de l'enregistrement bind" }, { "location": "/19-dixneuf/#creation-du-fichier-de-configuration-dapache", "text": "On cr\u00e9e le fichier /etc/apache2/sites-available/git.conf avec le contenu suivant:\nIl faut activer les modules apache suivants avec a2enmod*: proxy proxy_ajp proxy_http rewrite deflate headers proxy_balancer proxy_connect proxy_html \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 On relance apache* service apache2 restart", "title": "Cr\u00e9ation du fichier de configuration d'apache" }, { "location": "/19-dixneuf/#creation-du-certificat-letsencrypt-correspondant", "text": "On lance la commande suivante: certbot --apache\nEt on suit les instructions ...", "title": "Cr\u00e9ation du certificat letsencrypt correspondant" }, { "location": "/19-dixneuf/#creation-des-fichiers-de-configuration-systemd", "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\nsystemctl 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#", "title": "Cr\u00e9ation des fichiers de configuration systemd" }, { "location": "/19-dixneuf/#tests", "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. Connectez-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 .", "title": "Tests" } ] }