search_index.json 120 KB

1
  1. {"config":{"lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Introduction Nous allons proc\u00e9der \u00e0 l'installation d'un serveur maison , s\u00e9curis\u00e9 dans la mesure du possible et de mes connaissances , avec explications et tests, afin de comprendre le pourquoi du comment. Nous utiliserons la distribution Debian dans sa derni\u00e8re mouture : Buster. Ce ne sera pas un tutoriel \u00e0 suivre pas \u00e0 pas , 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 Knot (service diff\u00e9rent par rapport au tutoriel pr\u00e9c\u00e9dent: nous avions utilis\u00e9 Bind9 ), un serveur Web (Apache), un bouncer IRC, un serveur Git (gogs ou Gitea). Nous aurions pu faire d'autres choix, comme Unbound (DNS), Citadel (courrier), etc. Note : j'ai voulu utiliser le format Markdown pour \u00e9crire ce tuto; une mani\u00e8re de tester, d'apprendre le markdown. J'avoue qu'apr\u00e8s des ann\u00e9es d'utilisation de LaTeX et de Docbook, j'ai vraiment gal\u00e9r\u00e9: j'ai mis en place des v\u00e9rificateurs de syntaxe markdown, utilis\u00e9 des \u00e9diteurs sp\u00e9cialis\u00e9s comme Stackedit, Dillinger (je ferai une partie pour expliquer l'installation de ces services en \"local\"), des extensions sp\u00e9cifiques \u00e0 VisualCode, SublimeText ou Atom. Toutes ces solutions donnent un markdown valide diff\u00e9rent, qui n'est pas transform\u00e9 correctement si on change de convertisseur. Je sais qu'il y a plusieurs versions de markdown, mais elles pourraient \u00eatre compatibles entre elles. Des outils comme mkdocs sont remarquables, mais markdown, pas \u00e0 mon go\u00fbt. J'aime ce qui est clair et reproductible. Pour l'\u00e9dition de cette version, je m'appuie sur l'\u00e9diteur Atom avec le plugin markdownlint en esp\u00e9rant que l'\u00e9dition en sera plus facile et reproductible (oui, je suis t\u00eatu.)","title":"Pr\u00e9sentation"},{"location":"#introduction","text":"Nous allons proc\u00e9der \u00e0 l'installation d'un serveur maison , s\u00e9curis\u00e9 dans la mesure du possible et de mes connaissances , avec explications et tests, afin de comprendre le pourquoi du comment. Nous utiliserons la distribution Debian dans sa derni\u00e8re mouture : Buster. Ce ne sera pas un tutoriel \u00e0 suivre pas \u00e0 pas , 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 Knot (service diff\u00e9rent par rapport au tutoriel pr\u00e9c\u00e9dent: nous avions utilis\u00e9 Bind9 ), un serveur Web (Apache), un bouncer IRC, un serveur Git (gogs ou Gitea). Nous aurions pu faire d'autres choix, comme Unbound (DNS), Citadel (courrier), etc. Note : j'ai voulu utiliser le format Markdown pour \u00e9crire ce tuto; une mani\u00e8re de tester, d'apprendre le markdown. J'avoue qu'apr\u00e8s des ann\u00e9es d'utilisation de LaTeX et de Docbook, j'ai vraiment gal\u00e9r\u00e9: j'ai mis en place des v\u00e9rificateurs de syntaxe markdown, utilis\u00e9 des \u00e9diteurs sp\u00e9cialis\u00e9s comme Stackedit, Dillinger (je ferai une partie pour expliquer l'installation de ces services en \"local\"), des extensions sp\u00e9cifiques \u00e0 VisualCode, SublimeText ou Atom. Toutes ces solutions donnent un markdown valide diff\u00e9rent, qui n'est pas transform\u00e9 correctement si on change de convertisseur. Je sais qu'il y a plusieurs versions de markdown, mais elles pourraient \u00eatre compatibles entre elles. Des outils comme mkdocs sont remarquables, mais markdown, pas \u00e0 mon go\u00fbt. J'aime ce qui est clair et reproductible. Pour l'\u00e9dition de cette version, je m'appuie sur l'\u00e9diteur Atom avec le plugin markdownlint en esp\u00e9rant que l'\u00e9dition en sera plus facile et reproductible (oui, je suis t\u00eatu.)","title":"Introduction"},{"location":"2-Installation-de-base/","text":"Installation d'un serveur Debian/Buster s\u00e9curis\u00e9 Sch\u00e9ma de notre installation \"at home\" Notre installation se compose donc d'une box , Freebox dans mon cas qui sera notre passerelle vers Internet. Free permet d'avoir une adresse IPV6 dans l'abonnement de base. IL suffit de l'activer dans la configuration de votre box. A compl\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. Pr\u00e9requis 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 HP Proliant MicroServer, AMD Turion(tm) II Neo N54L Dual-Core Processor, 8Go de RAM, et 2 disques de 1 To classiques et 2 SSDs de 250Go). Il sera reli\u00e9 \u00e0 un clavier et un \u00e9cran pendant la phase d'installation. Les captures d'\u00e9cran seront faites avec l'installation d'une configuration semblable simul\u00e9e dans une machine virtuelle (virt-manager.) Ce serveur est assez ancien et l'amor\u00e7age n'est pas bas\u00e9 sur UEFI, mais un bios standard. Le serveur est \u00e9quip\u00e9 de 2 disques non-SSD en mode RAID 1 , configur\u00e9s comme /home et 2 disques SSDs en mode RAID 1 pour / . **Note:** J'ai fait une installation de Debian/Buster sur du mat\u00e9riel plus r\u00e9cent, avec UEFI disponible. J'avoue que j'ai gal\u00e9r\u00e9 un peu. Voil\u00e0 la proc\u00e9dure utilis\u00e9e pour pouvoir proc\u00e9der \u00e0 l'installation: - Allez dans le bios du serveur et v\u00e9rifiez que le mode UEFI est activ\u00e9. - J'ai t\u00e9l\u00e9charg\u00e9 une ISO de **gparted**, logiciel de partionnement, je l'ai install\u00e9e sur une clef USB. J'ai ensuite d\u00e9marr\u00e9 sur cette clef. - Ensuite, j'ai effac\u00e9 toutes les partitions du disque et cr\u00e9\u00e9 une table de partition GPT. - Cr\u00e9ation de la premi\u00e8re partition de 500 Mo, avec \u00e9tiquette \"boot\", formatage en FAT32, et d\u00e9finition du type \u00e0 **esp**. Il faut monter cette partition sur **/boot/efi** pendant le partitionnement des disques lors de l'installation. - le reste du formatage du disque sera identique \u00e0 une installation normale. Voil\u00e0 par exemple le sch\u00e9ma de partitionnement de ma machine de bureau avec UEFI (partie **sdb**): root@aldebaran:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT .... sdb 8:16 0 223,6G 0 disk \u251c\u2500sdb1 8:17 0 500M 0 part /boot/efi \u251c\u2500sdb2 8:18 0 1000M 0 part /boot \u251c\u2500sdb3 8:19 0 97,7G 0 part / \u251c\u2500sdb4 8:20 0 48,8G 0 part \u2514\u2500sdb5 8:21 0 23,3G 0 part [SWAP] root@aldebaran:~# 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 \"registrar\" comme OVH, Gandi ou autre. Mon domaine r\u00e9serv\u00e9 est yojik.net . example.com est un nom de domaine couramment utilis\u00e9 dans les tutoriels. Un nom de machine D\u00e9terminez le nom de votre machine: le mien sera aijan . Le nom complet de ma machine serait donc: aijan.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. Les adresses fixes que je vais attribuer \u00e0 mon serveur sont les suivantes: IPV4: 192.168.111.240 IPV6: 2a01:e0a:d0:3c20::240 Un compte utilisateur L'installateur Debian vous demandera un mot de passe pour le compte root (super-utilisateur): laissez-le vide. nous utiliserons sudo Note : si vous laissez le mot de passe du super-utilisateur (root) vide pendant l'installation, l'utilitaire sudo sera install\u00e9 et le premier utilisateur (que vous d\u00e9finissez \u00e0 l'\u00e9tape suivante) aura les droits d'administration. Les commandes seront donc \u00e0 pr\u00e9fixer par sudo : ex: sudo ip a J'ai une pr\u00e9f\u00e9rence pour l'utilisation du compte root ... \u00e0 chacun de choisir suivant ses pr\u00e9f\u00e9rences. Mais j'ai d\u00e9cid\u00e9 d'utiliser sudo dans ce tutoriel. Ensuite, si vous n'avez pas activ\u00e9 le compte sudo , qui est le compte administrateur, il vous demandera de d\u00e9finir un compte utilisateur, ici, notre 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. 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. Si vous avez opt\u00e9 pour l'utilisation du compte root , pour obtenir les droits super utilisateur (root) , il faudra taper su suivi du mot de passe super utilisateur . Dans un deuxi\u00e8me temps, nous installerons aussi un mode d'acc\u00e8s encore plus s\u00e9curis\u00e9 2FA. (2FA \u2013 Two-factor authentication) Si j'ai le temps, j'essayerai aussi de s\u00e9curiser l'acc\u00e8s au serveur avec une carte \u00e0 puce. Nous modifierons \u00e9galement les mots de passe administrateur (et super-utilisateur) par la suite, en utilisant un g\u00e9n\u00e9rateur de mots de passe. R\u00e9capitulatif Voici les donn\u00e9es que nous voulons pour notre serveur. L'adresse ip actuelle est une adresse dhcp , attribu\u00e9e automatiquement par la box internet (freebox dans mon cas). Nous changerons \u00e7a pour une adresse IP fixe en ipv4 et ipv6. Nom de la machine Domaine Adresse IPV4 IPV6 aijan yojik.net 192.168.111.240 2a01:e0a:d0:3c20::240 Nom d'utilisateur: ericadmin Mot de passe: celui que vous avez saisi lors de l'installation et que nous changerons ensuite. Pr\u00e9paration de l'installation T\u00e9l\u00e9chargement de l'image ISO netinstall (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 amd64 . Note: Il existe des images \"non-officielles\" comprenant les firmwares de p\u00e9riph\u00e9riques. (partie software des p\u00e9riph\u00e9riques). Il n'est pas recommand\u00e9 de les utiliser sur des serveurs. (Iiiak). L'adresse est la suivante: Debian.org + firmwares Si vous avez besoin de firmwares particuliers (\u00e0 utiliser avec l'ISO officielle), ils sont disponibles ici: firmwares Installez-les suivant les instructions donn\u00e9es sur cette page. Copie de l'image sur une clef USB Il vous faut d\u00e9terminer le p\u00e9riph\u00e9rique utilis\u00e9 par votre clef. Lancez la commande : tail -f /var/log/messages dans un terminal root et ins\u00e9rez la clef dans votre ordinateur Linux. Voici un extrait du r\u00e9sultat sur ma machine: Apr 15 14:02:46 aldebaran kernel: [24895.010625] usb 2-5: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd Apr 15 14:02:48 aldebaran kernel: [24896.188120] usb 2-5: New USB device found, idVendor=1f75, idProduct=0917, bcdDevice= 0.01 Apr 15 14:02:48 aldebaran kernel: [24896.188126] usb 2-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Apr 15 14:02:48 aldebaran kernel: [24896.188129] usb 2-5: Product: PenDrive Apr 15 14:02:48 aldebaran kernel: [24896.188131] usb 2-5: Manufacturer: Innostor Apr 15 14:02:48 aldebaran kernel: [24896.188134] usb 2-5: SerialNumber: 000000000000000020 Apr 15 14:02:48 aldebaran mtp-probe: checking bus 2, device 2: \"/sys/devices/pci0000:00/0000:00:14.0/usb2/2-5\" Apr 15 14:02:48 aldebaran mtp-probe: bus: 2, device: 2 was not an MTP device Apr 15 14:02:48 aldebaran kernel: [24896.210264] usb-storage 2-5:1.0: USB Mass Storage device detected Apr 15 14:02:48 aldebaran kernel: [24896.210468] scsi host6: usb-storage 2-5:1.0 Apr 15 14:02:48 aldebaran kernel: [24896.210530] usbcore: registered new interface driver usb-storage Apr 15 14:02:48 aldebaran kernel: [24896.212430] usbcore: registered new interface driver uas Apr 15 14:02:48 aldebaran mtp-probe: checking bus 2, device 2: \"/sys/devices/pci0000:00/0000:00:14.0/usb2/2-5\" Apr 15 14:02:48 aldebaran mtp-probe: bus: 2, device: 2 was not an MTP device Apr 15 14:02:49 aldebaran kernel: [24897.233847] scsi 6:0:0:0: Direct-Access Innostor Innostor 1.00 PQ: 0 ANSI: 6 Apr 15 14:02:49 aldebaran kernel: [24897.234481] sd 6:0:0:0: Attached scsi generic sg2 type 0 Apr 15 14:02:49 aldebaran kernel: [24897.234855] sd 6:0:0:0: [sdc] 61440000 512-byte logical blocks: (31.5 GB/29.3 GiB) Apr 15 14:02:49 aldebaran kernel: [24897.235055] sd 6:0:0:0: [sdc] Write Protect is off Apr 15 14:02:49 aldebaran kernel: [24897.235247] sd 6:0:0:0: [sdc] Write cache: disabled, read cache: disabled, doesn\\'t support DPO or FUA Apr 15 14:02:49 aldebaran kernel: [24897.237088] sdc: sdc1 sdc2 Apr 15 14:02:49 aldebaran kernel: [24897.238655] sd 6:0:0:0: [sdc] Attached SCSI removable disk Apr 15 14:02:49 aldebaran udisksd[710]: Mounted /dev/sdc1 at /media/eric/Debian 10.3.0 amd64 1 on behalf of uid 1001 Le p\u00e9riph\u00e9rique utilis\u00e9 sera donc (dans mon cas): /dev/sdc . Proc\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.). Mon ordinateur fixe est sous Linux Debian/Buster. Copie avec un logiciel \"sp\u00e9cialis\u00e9\" comme unetbootin Copie avec la commande dd C'est la derni\u00e8re solution que j'utiliserai. L'image ISO est dans mon r\u00e9pertoire T\u00e9l\u00e9chargements . dd if=./T\u00e9l\u00e9chargements/debian-10.4.0-amd64-netinst.iso of=/dev/sdc bs=4096 Le param\u00e8tre bs=4096 est n\u00e9cessaire pour certaines clefs USB. Modification du BIOS 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 d\u00e9marrage (booting sequence) (quel p\u00e9riph\u00e9rique sera utilis\u00e9 pour amorcer la machine). Apr\u00e8s l'installation, l'op\u00e9ration inverse sera souvent n\u00e9cessaire pour r\u00e9tablir l'ordre initial de d\u00e9marrage. (d\u00e9marrage sur le disque dur principal) Lancement de l'installation \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 le p\u00e9riph\u00e9rique sur lequel d\u00e9marrer (amor\u00e7age, booter): choisissez votre clef. Installation du serveur sans chiffrement des partitions Nous utiliserons le mode graphique d'installation, mais vous pouvez utiliser le mode texte si vous voulez. Les \u00e9crans sont identiques. Ici, vous voyez la cr\u00e9ation d'une machine virtuelle dans laquelle j'installe Debian 10, ceci pour pouvoir prendre des copies d'\u00e9cran de l'installation. D\u00e9marrage Choix du mode d'installation Graphique 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, aijan 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 une fois configur\u00e9 pour l'IPV4 (la section IPV6 sera vue plus loin): 127.0.0.1 localhost # serveur aijan 192.168.111.240 aijan.yojik.net aijan # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters Vous voyez ici la correspondance entre le nom complet du serveur, son nom comme il est \u00e9crit dans /etc/hostname ainsi que son adresse IP (ici, IPV4). Nous rajouterons une adresse IPV6 fixe ensuite. A l'installation, le syst\u00e8me installe automatiquement des adresses obtenues par dhcp , en IPV4 et IPV6, attribu\u00e9es dans un pool (g\u00e9r\u00e9es souvent par la box internet). Ces adresses sont \u00e0 modifier pour l'utilisation de notre serveur avec acc\u00e8s de l'ext\u00e9rieur (internet). Il est possible de g\u00e9rer des adresses qui changent avec une redirection, mais l'utilisation d'adresses fixes est pr\u00e9f\u00e9rable. Sur l'image suivante, vous voyez le chargement des composants de base de l'installation. Configuration automatique du r\u00e9seau (que nous reconfigurerons plus tard) Le choix du nom du serveur. Choix du nom de domaine yojik.net (mettez le votre!) Saisie du mot de passe root (super-utilisateur) Nous laisserons ces champs vides pour que Debian nous configure automatiquement un compte utilisateur avec les droits sudo . Saisie des donn\u00e9es du compte utilisateur Ici, saisissez votre compte administrateur (admin ou celui de votre choix) qui aura les droits sudo car nous avons laiss\u00e9 les champs de saisie super-utilisateur vides; 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 . Il vous sera \u00e9galement demand\u00e9 votre nom r\u00e9el (ou le nom de votre choix!). Saisie du mot de passe utilisateur avec confirmation. Configuration de l'horloge. Pas de capture d'\u00e9cran .... elle a d\u00e9fil\u00e9 trop rapidement. Partitionnement du disque Ici, nous avons 2 solutions principalement: 1 partitionnement avec chiffrement du disque (manuel ou automatique) 2 partitionnement sans chiffrement Nous verrons ici un partitionnement sans chiffrement. Le chiffrement 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 \"distant\". Il existe des solutions de chiffrement avec r\u00e9cup\u00e9ration automatique de la clef sur un serveur. Article sur opensource qui d\u00e9taille 2 solutions quand il n'y a pas d'acc\u00e8s physique au serveur. Ici, nous utiliserons nos 4 disques en 2 syst\u00e8mes RAID 1. Le r\u00e9pertoire /home tiendra enti\u00e8rement sur les disques classiques mont\u00e9s en RAID 1. Voil\u00e0 ce \u00e0 quoi le partitionnement va aboutir: ericadmin@aijan:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931,5G 0 disk \u2514\u2500sda1 8:1 0 931,5G 0 part \u2514\u2500md0 9:0 0 931,4G 0 raid1 /home sdb 8:16 0 931,5G 0 disk \u2514\u2500sdb1 8:17 0 931,5G 0 part \u2514\u2500md0 9:0 0 931,4G 0 raid1 /home sdc 8:32 0 223,6G 0 disk \u251c\u2500sdc1 8:33 0 9,3G 0 part [SWAP] \u2514\u2500sdc2 8:34 0 214,3G 0 part \u2514\u2500md1 9:1 0 214,1G 0 raid1 / sdd 8:48 0 223,6G 0 disk \u251c\u2500sdd1 8:49 0 9,3G 0 part [SWAP] \u2514\u2500sdd2 8:50 0 214,3G 0 part \u2514\u2500md1 9:1 0 214,1G 0 raid1 / ericadmin@aijan:~$ Notez que vous voyez dans les captures d'\u00e9cran la simulation dans la machien virtuelle: le principe est exactement identique, mais avec des vrais disques durs. Choix du disque \u00e0 partitionner: Confirmation: Dans notre cas, nous allons partitionner notre disque virtuel pour simuler les 4 disques durs. Partitionner les disques: Cr\u00e9er une nouvelle partition: Ne pas mettre encore de point de montage: c'est le syst\u00e8me RAID qui aura un point de montage. J'ai cr\u00e9\u00e9 \u00e9galement des partitions swap . Voici les partitions une fois cr\u00e9es: Cr\u00e9ation des syst\u00e8mes RAID 1: Confirmation du partitionnement: Cr\u00e9ation des points de montage: Faites de m\u00eame avec l'autre syst\u00e8me RAID mont\u00e9 sur /home . Terminer le partitionnement: Progression de l'installation Installation du syst\u00e8me de base. 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 \"popularity contest\" 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 \"environnement de bureau\" et s\u00e9lectionnez: \"serveur ssh\" et \"utilitaires usuels du syst\u00e8me\" . 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. Kilobug m'a sugg\u00e9r\u00e9 d'installer grub sur les 2 disques qui constituent le syst\u00e8me raid . Simplement, revenir en arri\u00e8re, et rajouter le boot sur le deuxi\u00e8me disque de la grappe raid. L'installation se finalise: Red\u00e9marrage Enlevez la clef USB qui a permis de lancer l'installation et tapez ENTER . S'identifier (se loguer). Ici, utilisateur ericadmin , puis saisie du mot de passe. 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 \"quelques\" \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 de base"},{"location":"2-Installation-de-base/#installation-dun-serveur-debianbuster-securise","text":"","title":"Installation d'un serveur Debian/Buster s\u00e9curis\u00e9"},{"location":"2-Installation-de-base/#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":"2-Installation-de-base/#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 HP Proliant MicroServer, AMD Turion(tm) II Neo N54L Dual-Core Processor, 8Go de RAM, et 2 disques de 1 To classiques et 2 SSDs de 250Go). Il sera reli\u00e9 \u00e0 un clavier et un \u00e9cran pendant la phase d'installation. Les captures d'\u00e9cran seront faites avec l'installation d'une configuration semblable simul\u00e9e dans une machine virtuelle (virt-manager.) Ce serveur est assez ancien et l'amor\u00e7age n'est pas bas\u00e9 sur UEFI, mais un bios standard. Le serveur est \u00e9quip\u00e9 de 2 disques non-SSD en mode RAID 1 , configur\u00e9s comme /home et 2 disques SSDs en mode RAID 1 pour / . **Note:** J'ai fait une installation de Debian/Buster sur du mat\u00e9riel plus r\u00e9cent, avec UEFI disponible. J'avoue que j'ai gal\u00e9r\u00e9 un peu. Voil\u00e0 la proc\u00e9dure utilis\u00e9e pour pouvoir proc\u00e9der \u00e0 l'installation: - Allez dans le bios du serveur et v\u00e9rifiez que le mode UEFI est activ\u00e9. - J'ai t\u00e9l\u00e9charg\u00e9 une ISO de **gparted**, logiciel de partionnement, je l'ai install\u00e9e sur une clef USB. J'ai ensuite d\u00e9marr\u00e9 sur cette clef. - Ensuite, j'ai effac\u00e9 toutes les partitions du disque et cr\u00e9\u00e9 une table de partition GPT. - Cr\u00e9ation de la premi\u00e8re partition de 500 Mo, avec \u00e9tiquette \"boot\", formatage en FAT32, et d\u00e9finition du type \u00e0 **esp**. Il faut monter cette partition sur **/boot/efi** pendant le partitionnement des disques lors de l'installation. - le reste du formatage du disque sera identique \u00e0 une installation normale. Voil\u00e0 par exemple le sch\u00e9ma de partitionnement de ma machine de bureau avec UEFI (partie **sdb**): root@aldebaran:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT .... sdb 8:16 0 223,6G 0 disk \u251c\u2500sdb1 8:17 0 500M 0 part /boot/efi \u251c\u2500sdb2 8:18 0 1000M 0 part /boot \u251c\u2500sdb3 8:19 0 97,7G 0 part / \u251c\u2500sdb4 8:20 0 48,8G 0 part \u2514\u2500sdb5 8:21 0 23,3G 0 part [SWAP] root@aldebaran:~# 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 \"registrar\" comme OVH, Gandi ou autre. Mon domaine r\u00e9serv\u00e9 est yojik.net . example.com est un nom de domaine couramment utilis\u00e9 dans les tutoriels. Un nom de machine D\u00e9terminez le nom de votre machine: le mien sera aijan . Le nom complet de ma machine serait donc: aijan.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. Les adresses fixes que je vais attribuer \u00e0 mon serveur sont les suivantes: IPV4: 192.168.111.240 IPV6: 2a01:e0a:d0:3c20::240 Un compte utilisateur L'installateur Debian vous demandera un mot de passe pour le compte root (super-utilisateur): laissez-le vide. nous utiliserons sudo Note : si vous laissez le mot de passe du super-utilisateur (root) vide pendant l'installation, l'utilitaire sudo sera install\u00e9 et le premier utilisateur (que vous d\u00e9finissez \u00e0 l'\u00e9tape suivante) aura les droits d'administration. Les commandes seront donc \u00e0 pr\u00e9fixer par sudo : ex: sudo ip a J'ai une pr\u00e9f\u00e9rence pour l'utilisation du compte root ... \u00e0 chacun de choisir suivant ses pr\u00e9f\u00e9rences. Mais j'ai d\u00e9cid\u00e9 d'utiliser sudo dans ce tutoriel. Ensuite, si vous n'avez pas activ\u00e9 le compte sudo , qui est le compte administrateur, il vous demandera de d\u00e9finir un compte utilisateur, ici, notre 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. 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. Si vous avez opt\u00e9 pour l'utilisation du compte root , pour obtenir les droits super utilisateur (root) , il faudra taper su suivi du mot de passe super utilisateur . Dans un deuxi\u00e8me temps, nous installerons aussi un mode d'acc\u00e8s encore plus s\u00e9curis\u00e9 2FA. (2FA \u2013 Two-factor authentication) Si j'ai le temps, j'essayerai aussi de s\u00e9curiser l'acc\u00e8s au serveur avec une carte \u00e0 puce. Nous modifierons \u00e9galement les mots de passe administrateur (et super-utilisateur) par la suite, en utilisant un g\u00e9n\u00e9rateur de mots de passe.","title":"Pr\u00e9requis"},{"location":"2-Installation-de-base/#recapitulatif","text":"Voici les donn\u00e9es que nous voulons pour notre serveur. L'adresse ip actuelle est une adresse dhcp , attribu\u00e9e automatiquement par la box internet (freebox dans mon cas). Nous changerons \u00e7a pour une adresse IP fixe en ipv4 et ipv6. Nom de la machine Domaine Adresse IPV4 IPV6 aijan yojik.net 192.168.111.240 2a01:e0a:d0:3c20::240 Nom d'utilisateur: ericadmin Mot de passe: celui que vous avez saisi lors de l'installation et que nous changerons ensuite.","title":"R\u00e9capitulatif"},{"location":"2-Installation-de-base/#preparation-de-linstallation","text":"","title":"Pr\u00e9paration de l'installation"},{"location":"2-Installation-de-base/#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 amd64 . Note: Il existe des images \"non-officielles\" comprenant les firmwares de p\u00e9riph\u00e9riques. (partie software des p\u00e9riph\u00e9riques). Il n'est pas recommand\u00e9 de les utiliser sur des serveurs. (Iiiak). L'adresse est la suivante: Debian.org + firmwares Si vous avez besoin de firmwares particuliers (\u00e0 utiliser avec l'ISO officielle), ils sont disponibles ici: firmwares Installez-les suivant les instructions donn\u00e9es sur cette page.","title":"T\u00e9l\u00e9chargement de l'image ISO netinstall"},{"location":"2-Installation-de-base/#copie-de-limage-sur-une-clef-usb","text":"Il vous faut d\u00e9terminer le p\u00e9riph\u00e9rique utilis\u00e9 par votre clef. Lancez la commande : tail -f /var/log/messages dans un terminal root et ins\u00e9rez la clef dans votre ordinateur Linux. Voici un extrait du r\u00e9sultat sur ma machine: Apr 15 14:02:46 aldebaran kernel: [24895.010625] usb 2-5: new SuperSpeed Gen 1 USB device number 2 using xhci_hcd Apr 15 14:02:48 aldebaran kernel: [24896.188120] usb 2-5: New USB device found, idVendor=1f75, idProduct=0917, bcdDevice= 0.01 Apr 15 14:02:48 aldebaran kernel: [24896.188126] usb 2-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3 Apr 15 14:02:48 aldebaran kernel: [24896.188129] usb 2-5: Product: PenDrive Apr 15 14:02:48 aldebaran kernel: [24896.188131] usb 2-5: Manufacturer: Innostor Apr 15 14:02:48 aldebaran kernel: [24896.188134] usb 2-5: SerialNumber: 000000000000000020 Apr 15 14:02:48 aldebaran mtp-probe: checking bus 2, device 2: \"/sys/devices/pci0000:00/0000:00:14.0/usb2/2-5\" Apr 15 14:02:48 aldebaran mtp-probe: bus: 2, device: 2 was not an MTP device Apr 15 14:02:48 aldebaran kernel: [24896.210264] usb-storage 2-5:1.0: USB Mass Storage device detected Apr 15 14:02:48 aldebaran kernel: [24896.210468] scsi host6: usb-storage 2-5:1.0 Apr 15 14:02:48 aldebaran kernel: [24896.210530] usbcore: registered new interface driver usb-storage Apr 15 14:02:48 aldebaran kernel: [24896.212430] usbcore: registered new interface driver uas Apr 15 14:02:48 aldebaran mtp-probe: checking bus 2, device 2: \"/sys/devices/pci0000:00/0000:00:14.0/usb2/2-5\" Apr 15 14:02:48 aldebaran mtp-probe: bus: 2, device: 2 was not an MTP device Apr 15 14:02:49 aldebaran kernel: [24897.233847] scsi 6:0:0:0: Direct-Access Innostor Innostor 1.00 PQ: 0 ANSI: 6 Apr 15 14:02:49 aldebaran kernel: [24897.234481] sd 6:0:0:0: Attached scsi generic sg2 type 0 Apr 15 14:02:49 aldebaran kernel: [24897.234855] sd 6:0:0:0: [sdc] 61440000 512-byte logical blocks: (31.5 GB/29.3 GiB) Apr 15 14:02:49 aldebaran kernel: [24897.235055] sd 6:0:0:0: [sdc] Write Protect is off Apr 15 14:02:49 aldebaran kernel: [24897.235247] sd 6:0:0:0: [sdc] Write cache: disabled, read cache: disabled, doesn\\'t support DPO or FUA Apr 15 14:02:49 aldebaran kernel: [24897.237088] sdc: sdc1 sdc2 Apr 15 14:02:49 aldebaran kernel: [24897.238655] sd 6:0:0:0: [sdc] Attached SCSI removable disk Apr 15 14:02:49 aldebaran udisksd[710]: Mounted /dev/sdc1 at /media/eric/Debian 10.3.0 amd64 1 on behalf of uid 1001 Le p\u00e9riph\u00e9rique utilis\u00e9 sera donc (dans mon cas): /dev/sdc . Proc\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.). Mon ordinateur fixe est sous Linux Debian/Buster. Copie avec un logiciel \"sp\u00e9cialis\u00e9\" comme unetbootin Copie avec la commande dd C'est la derni\u00e8re solution que j'utiliserai. L'image ISO est dans mon r\u00e9pertoire T\u00e9l\u00e9chargements . dd if=./T\u00e9l\u00e9chargements/debian-10.4.0-amd64-netinst.iso of=/dev/sdc bs=4096 Le param\u00e8tre bs=4096 est n\u00e9cessaire pour certaines clefs USB.","title":"Copie de l'image sur une clef USB"},{"location":"2-Installation-de-base/#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 d\u00e9marrage (booting sequence) (quel p\u00e9riph\u00e9rique sera utilis\u00e9 pour amorcer la machine). Apr\u00e8s l'installation, l'op\u00e9ration inverse sera souvent n\u00e9cessaire pour r\u00e9tablir l'ordre initial de d\u00e9marrage. (d\u00e9marrage sur le disque dur principal)","title":"Modification du BIOS"},{"location":"2-Installation-de-base/#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 le p\u00e9riph\u00e9rique sur lequel d\u00e9marrer (amor\u00e7age, booter): choisissez votre clef.","title":"Lancement de l'installation"},{"location":"2-Installation-de-base/#installation-du-serveur-sans-chiffrement-des-partitions","text":"Nous utiliserons le mode graphique d'installation, mais vous pouvez utiliser le mode texte si vous voulez. Les \u00e9crans sont identiques. Ici, vous voyez la cr\u00e9ation d'une machine virtuelle dans laquelle j'installe Debian 10, ceci pour pouvoir prendre des copies d'\u00e9cran de l'installation. D\u00e9marrage Choix du mode d'installation Graphique 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, aijan 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 une fois configur\u00e9 pour l'IPV4 (la section IPV6 sera vue plus loin): 127.0.0.1 localhost # serveur aijan 192.168.111.240 aijan.yojik.net aijan # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters Vous voyez ici la correspondance entre le nom complet du serveur, son nom comme il est \u00e9crit dans /etc/hostname ainsi que son adresse IP (ici, IPV4). Nous rajouterons une adresse IPV6 fixe ensuite. A l'installation, le syst\u00e8me installe automatiquement des adresses obtenues par dhcp , en IPV4 et IPV6, attribu\u00e9es dans un pool (g\u00e9r\u00e9es souvent par la box internet). Ces adresses sont \u00e0 modifier pour l'utilisation de notre serveur avec acc\u00e8s de l'ext\u00e9rieur (internet). Il est possible de g\u00e9rer des adresses qui changent avec une redirection, mais l'utilisation d'adresses fixes est pr\u00e9f\u00e9rable. Sur l'image suivante, vous voyez le chargement des composants de base de l'installation. Configuration automatique du r\u00e9seau (que nous reconfigurerons plus tard) Le choix du nom du serveur. Choix du nom de domaine yojik.net (mettez le votre!) Saisie du mot de passe root (super-utilisateur) Nous laisserons ces champs vides pour que Debian nous configure automatiquement un compte utilisateur avec les droits sudo . Saisie des donn\u00e9es du compte utilisateur Ici, saisissez votre compte administrateur (admin ou celui de votre choix) qui aura les droits sudo car nous avons laiss\u00e9 les champs de saisie super-utilisateur vides; 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 . Il vous sera \u00e9galement demand\u00e9 votre nom r\u00e9el (ou le nom de votre choix!). Saisie du mot de passe utilisateur avec confirmation. Configuration de l'horloge. Pas de capture d'\u00e9cran .... elle a d\u00e9fil\u00e9 trop rapidement. Partitionnement du disque Ici, nous avons 2 solutions principalement: 1 partitionnement avec chiffrement du disque (manuel ou automatique) 2 partitionnement sans chiffrement Nous verrons ici un partitionnement sans chiffrement. Le chiffrement 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 \"distant\". Il existe des solutions de chiffrement avec r\u00e9cup\u00e9ration automatique de la clef sur un serveur. Article sur opensource qui d\u00e9taille 2 solutions quand il n'y a pas d'acc\u00e8s physique au serveur. Ici, nous utiliserons nos 4 disques en 2 syst\u00e8mes RAID 1. Le r\u00e9pertoire /home tiendra enti\u00e8rement sur les disques classiques mont\u00e9s en RAID 1. Voil\u00e0 ce \u00e0 quoi le partitionnement va aboutir: ericadmin@aijan:~$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 931,5G 0 disk \u2514\u2500sda1 8:1 0 931,5G 0 part \u2514\u2500md0 9:0 0 931,4G 0 raid1 /home sdb 8:16 0 931,5G 0 disk \u2514\u2500sdb1 8:17 0 931,5G 0 part \u2514\u2500md0 9:0 0 931,4G 0 raid1 /home sdc 8:32 0 223,6G 0 disk \u251c\u2500sdc1 8:33 0 9,3G 0 part [SWAP] \u2514\u2500sdc2 8:34 0 214,3G 0 part \u2514\u2500md1 9:1 0 214,1G 0 raid1 / sdd 8:48 0 223,6G 0 disk \u251c\u2500sdd1 8:49 0 9,3G 0 part [SWAP] \u2514\u2500sdd2 8:50 0 214,3G 0 part \u2514\u2500md1 9:1 0 214,1G 0 raid1 / ericadmin@aijan:~$ Notez que vous voyez dans les captures d'\u00e9cran la simulation dans la machien virtuelle: le principe est exactement identique, mais avec des vrais disques durs. Choix du disque \u00e0 partitionner: Confirmation: Dans notre cas, nous allons partitionner notre disque virtuel pour simuler les 4 disques durs. Partitionner les disques: Cr\u00e9er une nouvelle partition: Ne pas mettre encore de point de montage: c'est le syst\u00e8me RAID qui aura un point de montage. J'ai cr\u00e9\u00e9 \u00e9galement des partitions swap . Voici les partitions une fois cr\u00e9es: Cr\u00e9ation des syst\u00e8mes RAID 1: Confirmation du partitionnement: Cr\u00e9ation des points de montage: Faites de m\u00eame avec l'autre syst\u00e8me RAID mont\u00e9 sur /home . Terminer le partitionnement: Progression de l'installation Installation du syst\u00e8me de base. 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 \"popularity contest\" 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 \"environnement de bureau\" et s\u00e9lectionnez: \"serveur ssh\" et \"utilitaires usuels du syst\u00e8me\" . 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. Kilobug m'a sugg\u00e9r\u00e9 d'installer grub sur les 2 disques qui constituent le syst\u00e8me raid . Simplement, revenir en arri\u00e8re, et rajouter le boot sur le deuxi\u00e8me disque de la grappe raid. L'installation se finalise: Red\u00e9marrage Enlevez la clef USB qui a permis de lancer l'installation et tapez ENTER . S'identifier (se loguer). Ici, utilisateur ericadmin , puis saisie du mot de passe. 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 \"quelques\" \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 chiffrement des partitions"},{"location":"3-ovh/","text":"Boot en mode root avec clef ssh Lors du choix du syst\u00e8me d'exploitation et des param\u00e8tres de l'installation, vous avez le choix entre se faire envoyer par \u00e9mail les identifiants/mots de passe ou fournir votre clef SSH publique. Choisissez cette derni\u00e8re option si vous le pouvez. Evidemment, il vous faut une clef SSH . Si vous n'en avez pas encore, voyez dans le chapitre Premi\u00e8re \u00e9tape de s\u00e9curisation o\u00f9 cette \u00e9tape est d\u00e9crite en d\u00e9tail. Il suffit de copier/coller l'empreinte de la clef publique dans l'emplacement pr\u00e9vu dans les param\u00e8tres. Exemple (pour ma clef g\u00e9n\u00e9raliste): eric@aldebaran:~$ cat .ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL2quh1K3jSwBiUC+jYgOQCaVteYo/ir9ivZ7Qr+Hbg9 eric@aldebaran eric@aldebaran:~$ Collez la partie qui commence par ssh- et finit par votre adresse \u00e9mail et collez-l\u00e0 dans l'emplacement pr\u00e9vu dans la console d'administration. Il est toujours possible de proc\u00e9der \u00e0 cet ajout ult\u00e9rieurement. eric@aldebaran:~$ ssh root@91.127.72.12 The authenticity of host '91.127.72.12 (91.127.72.12)' can't be established. ECDSA key fingerprint is SHA256:eBYgeGPntU9stGkYe5GLltv46hCeVDRIu8xic3MDLbE. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '91.127.72.12' (ECDSA) to the list of known hosts. Linux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 Debian GNU/Linux 9 (stretch) Linux adara.yojik.eu 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 GNU/Linux Server : 141519 IPv4 : 91.127.72.12 IPv6 : 2001:41d0:f:7d0d::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 12:31:50 2018 from 217.182.145.216 D\u00e9marrez sur le serveur: eric@aldebaran:~$ ssh root@91.127.72.12 The authenticity of host '91.127.72.12 (91.127.72.12)' can't be established. ECDSA key fingerprint is SHA256:BT4r+uaJ8qAVUKgquJ557W4wyFJ3cfqOy/qC838RKMw. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '91.127.72.12' (ECDSA) to the list of known hosts. Linux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 Debian GNU/Linux 9 (stretch) Linux adara.yojik.eu 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 GNU/Linux Server : 141519 IPv4 : 91.127.72.12 IPv6 : 2001:41d0:f:7d0d::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 13:00:53 2018 from 217.182.145.216 Date et heure: il faut reconfigurer tzdata root@adara:~# date dimanche 24 juin 2018, 12:33:18 (UTC+0000) root@adara:~# dpkg-reconfigure tzdata Current default time zone: 'Europe/Paris' Local time is now: Sun Jun 24 14:33:42 CEST 2018. Universal Time is now: Sun Jun 24 12:33:42 UTC 2018. root@adara:~# Red\u00e9marrage et v\u00e9rification de l'heure: root@adara:~# date dimanche 24 juin 2018, 14:40:39 (UTC+0200) C'est bon. Installation sur serveur VPS de chez OVH J'ai lou\u00e9 2 serveurs VPS minimum pour installer mes serveurs DNS. La proc\u00e9dure est en tous points identique. La seule diff\u00e9rence est l'attribution d'un user debian avec les droits sudo d'administration. donc les commandes normalement sous le compte root seront pr\u00e9fix\u00e9es par sudo . Voir ci-dessus pour la clef SSH si vous n'en avez pas encore g\u00e9n\u00e9r\u00e9e. La suite des \u00e9tapes est identique \u00e0 celle de l'installation d'un home server .","title":"D\u00e9marrage sur serveur OVH"},{"location":"3-ovh/#boot-en-mode-root-avec-clef-ssh","text":"Lors du choix du syst\u00e8me d'exploitation et des param\u00e8tres de l'installation, vous avez le choix entre se faire envoyer par \u00e9mail les identifiants/mots de passe ou fournir votre clef SSH publique. Choisissez cette derni\u00e8re option si vous le pouvez. Evidemment, il vous faut une clef SSH . Si vous n'en avez pas encore, voyez dans le chapitre Premi\u00e8re \u00e9tape de s\u00e9curisation o\u00f9 cette \u00e9tape est d\u00e9crite en d\u00e9tail. Il suffit de copier/coller l'empreinte de la clef publique dans l'emplacement pr\u00e9vu dans les param\u00e8tres. Exemple (pour ma clef g\u00e9n\u00e9raliste): eric@aldebaran:~$ cat .ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIL2quh1K3jSwBiUC+jYgOQCaVteYo/ir9ivZ7Qr+Hbg9 eric@aldebaran eric@aldebaran:~$ Collez la partie qui commence par ssh- et finit par votre adresse \u00e9mail et collez-l\u00e0 dans l'emplacement pr\u00e9vu dans la console d'administration. Il est toujours possible de proc\u00e9der \u00e0 cet ajout ult\u00e9rieurement. eric@aldebaran:~$ ssh root@91.127.72.12 The authenticity of host '91.127.72.12 (91.127.72.12)' can't be established. ECDSA key fingerprint is SHA256:eBYgeGPntU9stGkYe5GLltv46hCeVDRIu8xic3MDLbE. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '91.127.72.12' (ECDSA) to the list of known hosts. Linux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 Debian GNU/Linux 9 (stretch) Linux adara.yojik.eu 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 GNU/Linux Server : 141519 IPv4 : 91.127.72.12 IPv6 : 2001:41d0:f:7d0d::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 12:31:50 2018 from 217.182.145.216 D\u00e9marrez sur le serveur: eric@aldebaran:~$ ssh root@91.127.72.12 The authenticity of host '91.127.72.12 (91.127.72.12)' can't be established. ECDSA key fingerprint is SHA256:BT4r+uaJ8qAVUKgquJ557W4wyFJ3cfqOy/qC838RKMw. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '91.127.72.12' (ECDSA) to the list of known hosts. Linux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 Debian GNU/Linux 9 (stretch) Linux adara.yojik.eu 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 GNU/Linux Server : 141519 IPv4 : 91.127.72.12 IPv6 : 2001:41d0:f:7d0d::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 13:00:53 2018 from 217.182.145.216 Date et heure: il faut reconfigurer tzdata root@adara:~# date dimanche 24 juin 2018, 12:33:18 (UTC+0000) root@adara:~# dpkg-reconfigure tzdata Current default time zone: 'Europe/Paris' Local time is now: Sun Jun 24 14:33:42 CEST 2018. Universal Time is now: Sun Jun 24 12:33:42 UTC 2018. root@adara:~# Red\u00e9marrage et v\u00e9rification de l'heure: root@adara:~# date dimanche 24 juin 2018, 14:40:39 (UTC+0200) C'est bon.","title":"Boot en mode root avec clef ssh"},{"location":"3-ovh/#installation-sur-serveur-vps-de-chez-ovh","text":"J'ai lou\u00e9 2 serveurs VPS minimum pour installer mes serveurs DNS. La proc\u00e9dure est en tous points identique. La seule diff\u00e9rence est l'attribution d'un user debian avec les droits sudo d'administration. donc les commandes normalement sous le compte root seront pr\u00e9fix\u00e9es par sudo . Voir ci-dessus pour la clef SSH si vous n'en avez pas encore g\u00e9n\u00e9r\u00e9e. La suite des \u00e9tapes est identique \u00e0 celle de l'installation d'un home server .","title":"Installation sur serveur VPS de chez OVH"},{"location":"4-Plan/","text":"Plan des op\u00e9rations \u00e0 effectuer suivant l'utilisation de notre serveur Etat des lieux sur les d\u00e9dies/vps, le hostname est celui donn\u00e9 par OVH (ou autre pour vous) et est souvent un nom cabalistique, en tous les cas, pas celui que vous voulez. le serveur SSH est trou\u00e9 (pas vraiment, simplement, il garde une compatibilit\u00e9 avec des protocoles anciens plus tr\u00e8s s\u00fbrs).... voil\u00e0 le r\u00e9sultat sur le serveur brut de fonderie (j'utilise l'adresse IPV6 pour qu'il soit accessible de l'ext\u00e9rieur par le site: audit ssh : R\u00e9cup\u00e9ration de l'adresse IPV6 de notre serveur: eric@aldebaran:~$ ssh ericadmin@192.168.111.49 ericadmin@192.168.111.49's password: Linux aijan 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Fri Jan 15 16:05:04 2021 from 192.168.111.150 ericadmin@aijan:~$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 38:ea:a7:a6:cf:93 brd ff:ff:ff:ff:ff:ff inet 192.168.111.49/24 brd 192.168.111.255 scope global dynamic enp2s0 valid_lft 37374sec preferred_lft 37374sec inet6 2a01:e0a:d0:3c20:3aea:a7ff:fea6:cf93/64 scope global dynamic mngtmpaddr valid_lft 85928sec preferred_lft 85928sec inet6 fe80::3aea:a7ff:fea6:cf93/64 scope link valid_lft forever preferred_lft forever ericadmin@aijan:~$ L'adresse est: 2a01:e0a:d0:3c20:3aea:a7ff:fea6:cf93 R\u00e9sultat de l'analyse (mauvais...) C'est la m\u00eame chose pour les d\u00e9di\u00e9s et les vps. nos serveurs \"at home\" ont une adresse ip donn\u00e9e par dhcp donc non fixe, en IPV4 et IPV6: \u00e0 fixer! Pas de firewall pas de protection contre les attaques de force brute Op\u00e9rations communes Pour tous nos serveurs, il y a des op\u00e9rations communes \u00e0 toutes les utilisations. * Mise \u00e0 jour du **hostname** et de **/etc/hosts** * S\u00e9curisation de **ssh** et de **sshd** * S\u00e9curisation des mots de passe * Configuration du r\u00e9seau * Installation d'un serveur de temps * Installation d'un pare-feux * Installation de fail2ban contre les attaques de force brute Op\u00e9rations particuli\u00e8res Ensuite, l'installation de logiciels et leur configuration d\u00e9pendra de l'usage auquel on r\u00e9serve notre serveur: * serveur **DNS** (knot) * serveur **web** (apache) * serveur **mail** (postfix, dovecot) * serveur **git** (gogs) Des services pourront \u00eatre ajout\u00e9s comme: * service de partage d'images (lufi) * serveur de partage de fichiers * serveur IRC * r\u00e9seaux sociaux comme xmpp, matrix, mastodon, hubzilla, etc ... * serveur de mots de passe (bitwarden-rs) Nos donn\u00e9es (ce que nous voulons): adresse IPV4 de notre serveur: 192.168.111.240 adresse IPV6 de notre serveur: 2a01:e0a:d0:3c20::240 hostname: aijan.yojik.net une unique porte d'entr\u00e9e par ssh sur le port 22 (mais vous pouvez opter pour une autre adresse si vous voulez) un firewall une protection contre les attaques de force brute (fail2ban) un serveur de temps pour une horloge \u00e0 l'heure des mots de passe s\u00fbrs (celui que j'ai indiqu\u00e9 \u00e0 l'installation est temporaire, pour faciliter ma connexion, et ceux de OVH sont donn\u00e9s par \u00e9mail si vous n'avez pas opt\u00e9 pour la connexion par clef) Commen\u00e7ons par les premi\u00e8res \u00e9tapes de s\u00e9curisation.","title":"Plan d'ensemble"},{"location":"4-Plan/#plan-des-operations-a-effectuer-suivant-lutilisation-de-notre-serveur","text":"","title":"Plan des op\u00e9rations \u00e0 effectuer suivant l'utilisation de notre serveur"},{"location":"4-Plan/#etat-des-lieux","text":"sur les d\u00e9dies/vps, le hostname est celui donn\u00e9 par OVH (ou autre pour vous) et est souvent un nom cabalistique, en tous les cas, pas celui que vous voulez. le serveur SSH est trou\u00e9 (pas vraiment, simplement, il garde une compatibilit\u00e9 avec des protocoles anciens plus tr\u00e8s s\u00fbrs).... voil\u00e0 le r\u00e9sultat sur le serveur brut de fonderie (j'utilise l'adresse IPV6 pour qu'il soit accessible de l'ext\u00e9rieur par le site: audit ssh : R\u00e9cup\u00e9ration de l'adresse IPV6 de notre serveur: eric@aldebaran:~$ ssh ericadmin@192.168.111.49 ericadmin@192.168.111.49's password: Linux aijan 4.19.0-13-amd64 #1 SMP Debian 4.19.160-2 (2020-11-28) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Fri Jan 15 16:05:04 2021 from 192.168.111.150 ericadmin@aijan:~$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 38:ea:a7:a6:cf:93 brd ff:ff:ff:ff:ff:ff inet 192.168.111.49/24 brd 192.168.111.255 scope global dynamic enp2s0 valid_lft 37374sec preferred_lft 37374sec inet6 2a01:e0a:d0:3c20:3aea:a7ff:fea6:cf93/64 scope global dynamic mngtmpaddr valid_lft 85928sec preferred_lft 85928sec inet6 fe80::3aea:a7ff:fea6:cf93/64 scope link valid_lft forever preferred_lft forever ericadmin@aijan:~$ L'adresse est: 2a01:e0a:d0:3c20:3aea:a7ff:fea6:cf93 R\u00e9sultat de l'analyse (mauvais...) C'est la m\u00eame chose pour les d\u00e9di\u00e9s et les vps. nos serveurs \"at home\" ont une adresse ip donn\u00e9e par dhcp donc non fixe, en IPV4 et IPV6: \u00e0 fixer! Pas de firewall pas de protection contre les attaques de force brute","title":"Etat des lieux"},{"location":"4-Plan/#operations-communes","text":"Pour tous nos serveurs, il y a des op\u00e9rations communes \u00e0 toutes les utilisations. * Mise \u00e0 jour du **hostname** et de **/etc/hosts** * S\u00e9curisation de **ssh** et de **sshd** * S\u00e9curisation des mots de passe * Configuration du r\u00e9seau * Installation d'un serveur de temps * Installation d'un pare-feux * Installation de fail2ban contre les attaques de force brute","title":"Op\u00e9rations communes"},{"location":"4-Plan/#operations-particulieres","text":"Ensuite, l'installation de logiciels et leur configuration d\u00e9pendra de l'usage auquel on r\u00e9serve notre serveur: * serveur **DNS** (knot) * serveur **web** (apache) * serveur **mail** (postfix, dovecot) * serveur **git** (gogs) Des services pourront \u00eatre ajout\u00e9s comme: * service de partage d'images (lufi) * serveur de partage de fichiers * serveur IRC * r\u00e9seaux sociaux comme xmpp, matrix, mastodon, hubzilla, etc ... * serveur de mots de passe (bitwarden-rs)","title":"Op\u00e9rations particuli\u00e8res"},{"location":"4-Plan/#nos-donnees-ce-que-nous-voulons","text":"adresse IPV4 de notre serveur: 192.168.111.240 adresse IPV6 de notre serveur: 2a01:e0a:d0:3c20::240 hostname: aijan.yojik.net une unique porte d'entr\u00e9e par ssh sur le port 22 (mais vous pouvez opter pour une autre adresse si vous voulez) un firewall une protection contre les attaques de force brute (fail2ban) un serveur de temps pour une horloge \u00e0 l'heure des mots de passe s\u00fbrs (celui que j'ai indiqu\u00e9 \u00e0 l'installation est temporaire, pour faciliter ma connexion, et ceux de OVH sont donn\u00e9s par \u00e9mail si vous n'avez pas opt\u00e9 pour la connexion par clef) Commen\u00e7ons par les premi\u00e8res \u00e9tapes de s\u00e9curisation.","title":"Nos donn\u00e9es (ce que nous voulons):"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/","text":"Premi\u00e8res \u00e9tapes de s\u00e9curisation du serveur Pr\u00e9ambule Voil\u00e0 la liste des \u00e9tapes que je fais habituellement \u00e0 la main et qu'il est toujours possible de faire \u00e0 la main. J'ai d\u00e9cid\u00e9 dans ce tutoriel d'utiliser ansible pour pouvoir automatiser ensuite la cr\u00e9ation de serveurs, plus rapide en cas de crash de disque dur ou compromission. (et aussi pour apprendre de nouvelles techniques ...) R\u00e9cup\u00e9ration de l'IP du serveur \"\u00e0 la maison\" Il nous faut conna\u00eetre l'adresse IP de notre serveur qui est allou\u00e9e dynamiquement par le serveur dhcp de notre box (freebox). Sur le poste client \u00e0 partir duquel nous nous connectons par ssh sur le serveur, nous allons lancer une commande qui va scruter notre r\u00e9seau local et faire appara\u00eetre les IPs des machines du r\u00e9seau. Bien s\u00fbr, cela ne fonctionne que si le serveur est \"at home\". Ne lancez pas un scan de tout l'internet! :D root@aldebaran:~# nmap -sP 192.168.111.0/24 | grep \"Nmap scan\" Nmap scan report for 192.168.111.20 Nmap scan report for 192.168.111.49 Nmap scan report for switch.yojik.net (192.168.111.140) Nmap scan report for goulya.yojik.net (192.168.111.151) Nmap scan report for 192.168.111.153 Nmap scan report for atom.yojik.net (192.168.111.160) Nmap scan report for freebox.yojik.net (192.168.111.254) Nmap scan report for aldebaran.yojik.net (192.168.111.150) root@aldebaran:~# Vous voyez l\u00e0 toutes les machines allum\u00e9es sur mon r\u00e9seau local. Celle qui nous int\u00e9resse est la suivante: **192.168.111.49** Vous pouvez utiliser les options suivantes de nmap qui vous donnera des inbformations suppl\u00e9mentaires \u00e0 m\u00eame de vous permettre de trouver votre serveur: eric@aldebaran:/mnt/Raid/eric/Devs/Travail/Installation serveur/Tutorial/Tuto-Buster$ sudo nmap -sn 192.168.111.0/24 Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-15 16:05 CET Nmap scan report for 192.168.111.13 Host is up (0.19s latency). MAC Address: 54:35:30:1D:5A:C4 (Hon Hai Precision Ind.) Nmap scan report for 192.168.111.20 Host is up (0.22s latency). MAC Address: 90:78:B2:A1:31:E7 (Xiaomi Communications) Nmap scan report for 192.168.111.25 Host is up (0.25s latency). MAC Address: D8:12:65:5B:DD:90 (Chongqing Fugui Electronics) Nmap scan report for 192.168.111.34 Host is up (0.27s latency). MAC Address: 00:73:8D:92:7E:B6 (Shenzhen Tinno Mobile Technology) Nmap scan report for 192.168.111.48 Host is up (0.22s latency). MAC Address: 70:EE:50:6B:7B:3A (Netatmo) Nmap scan report for 192.168.111.49 Host is up (0.00025s latency). MAC Address: 38:EA:A7:A6:CF:93 (Hewlett Packard) Nmap scan report for switch.yojik.net (192.168.111.140) Host is up (0.14s latency). MAC Address: 98:DA:C4:37:BF:F9 (Tp-link Technologies) Nmap scan report for goulya.yojik.net (192.168.111.151) Host is up (0.00014s latency). MAC Address: D0:50:99:A5:69:C5 (ASRock Incorporation) Nmap scan report for atom.yojik.net (192.168.111.160) Host is up (0.00030s latency). MAC Address: 00:23:54:C6:0A:07 (Asustek Computer) Nmap scan report for mynas2.yojik.net (192.168.111.211) Host is up (0.00021s latency). MAC Address: 00:11:32:08:D8:E1 (Synology Incorporated) Nmap scan report for freebox.yojik.net (192.168.111.254) Host is up (0.0015s latency). MAC Address: 68:A3:78:65:7B:5C (Freebox SAS) Nmap scan report for aldebaran.yojik.net (192.168.111.150) Host is up. Nmap done: 256 IP addresses (12 hosts up) scanned in 4.87 seconds L\u00e0, on voit la t\u00e9trachi\u00e9e de machines sur le r\u00e9seau, entre t\u00e9l\u00e9phones mobiles, imprimantes wifi, station m\u00e9t\u00e9o, lampes connect\u00e9es etc .. Mon serveur est de marque HP ce qui permet de retrouver son ip dans la liste. R\u00e9cup\u00e9ration de l'ip de votre \"d\u00e9di\u00e9\" ou \"VPS\" Vos serveurs d\u00e9di\u00e9s ou vps utilisent une adresse IP (ou plusieurs) automatiquement attribu\u00e9es et consultables sur la console d'administration du fournisseur (OVH chez moi) Pr\u00e9paration du poste de travail Sur notre poste de travail, nous allons pr\u00e9parer la configuration de SSH et de Ansible . SSH Il y a 2 parties \u00e0 configurer sur le poste de travail: /etc/ssh/ (permet de s\u00e9curiser les acc\u00e8s \u00e0 notre poste de travail: facultatif, mais la qualit\u00e9 du serveur ssh de notre poste de travail est \u00e9quivalente \u00e0 celle des serveurs bruts de fonderie) ~/.ssh/ (pr\u00e9paration des r\u00e9pertoires et des clefs) Nous allons utiliser les recommandations de Mozilla: Mozilla recommendations ainsi que des tutoriaux comme ceux-ci: S\u00e9curiser OpenSSH SSH - Comment tester et s\u00e9curiser son serveur ? OpenSSH Config File Examples Ansible Installation de ansible Nous allons suivre la documentation du site web de ansible: Installation de ansible Ajouter la ligne suivante \u00e0 /etc/apt/sources.list: (avec un \u00e9diteur de votre choix) deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main Et lancer les commandes suivantes: $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 $ sudo apt update $ sudo apt install ansible Lancez la commande suivante pour tester votre installation: eric@aldebaran:/mnt/Raid/eric/Devs/Travail/Installation serveur/Tutorial/Tuto-Buster$ ansible --version ansible 2.9.16 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/eric/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible executable location = /usr/bin/ansible python version = 3.9.1+ (default, Jan 10 2021, 15:42:50) [GCC 10.2.1 20201224] eric@aldebaran:/mnt/Raid/eric/Devs/Travail/Installation serveur/Tutorial/Tuto-Buster$ Cr\u00e9ation de notre structure de r\u00e9pertoires Nous allons cr\u00e9er un r\u00e9pertoire dans notre home qui contiendra nos \"\"playbook\"\". J'ai vu qu'il existait un programme appel\u00e9 ansible-galaxy qui permet de g\u00e9rer la structure de ce r\u00e9pertoire et de charger des roles tout pr\u00eats \u00e0 partir du hub. Entrez la commande suivante: eric@aldebaran:~$ ansible-galaxy init aijan - Role aijan was created successfully eric@aldebaran:~$ La structure de r\u00e9pertoires cr\u00e9e: eric@aldebaran:~$ tree aijan aijan \u251c\u2500\u2500 defaults \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 handlers \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 meta \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 README.md \u251c\u2500\u2500 tasks \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 tests \u2502 \u251c\u2500\u2500 inventory \u2502 \u2514\u2500\u2500 test.yml \u2514\u2500\u2500 vars \u2514\u2500\u2500 main.yml 6 directories, 8 files eric@aldebaran:~$ Pr\u00e9paration de notre serveur Nous allons commencer \u00e0 installer quelques logiciels de base, en fait ceux que j'utilise sur toutes mes machines. Bien s\u00fbr, vous pouvez faire d'autres choix, comme installer emacs comme \u00e9diteur et un autre navigateur de fichiers en mode texte. Installez simplement les outils qui vous conviennent. La m\u00e9thode \u00e0 suivre sera identique quelque soient les logiciels. M\u00e9thode manuelle Nous allons commencer par ex\u00e9cuter toutes les \u00e9tapes manuellement; il sera plus facile ensuite de les automatiser. Pour mon usage personnel, j'installe syst\u00e9matiquement mc , un 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. et vim comme \u00e9diteur de fichiers de configuration Notez l'utilisation de sudo : les taches d'administration seront faite sous l'utilisateur ericadmin avec l'aide de sudo pour l'\u00e9l\u00e9vation des privil\u00e8ges. sudo apt install mc J'installe aussi vim , pour remplacer l'\u00e9diteur vi ou nano install\u00e9 par d\u00e9faut par Debian. sudo apt install vim Dans le tutoriel pr\u00e9c\u00e9dent, j'utilisais netstat comme outillage r\u00e9seau. Il a \u00e9t\u00e9 remplac\u00e9 par ss dont nous verrons le fonctionnement plus tard. Il est disponible automatiquement ap\u00e8rs installation. Ajoute des d\u00e9pots contrib et non-free: sudo vim /etc/apt/sources.list Pour obtenir ceci: deb http://deb.debian.org/debian/ buster main contrib non-free deb-src http://deb.debian.org/debian/ buster main contrib non-free deb http://security.debian.org/debian-security buster/updates main contrib non-free deb-src http://security.debian.org/debian-security buster/updates main contrib non-free # buster-updates, previously known as 'volatile' deb http://deb.debian.org/debian/ buster-updates main contrib non-free deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free # buster-backports deb http://deb.debian.org/debian buster-backports main contrib non-free deb http://deb.debian.org/debian/ buster-proposed-updates contrib non-free main deb-src http://deb.debian.org/debian buster-backports main Mise \u00e0 jour des d\u00e9p\u00f4ts de paquets, et mise \u00e0 jour du syst\u00e8me: sudo apt update && sudo apt upgrade M\u00e9thode avec ansible Nous allons donc r\u00e9aliser exactement la m\u00eame chose, mais avec ansible : Renseignement des variables utilis\u00e9es dans les playbooks. Ces variables seront enregistr\u00e9es dans le fichier ~/aijan/vars/main.yml Playbook de modification de /etc/apt/sources.list et mise \u00e0 jour du catalogue de paquets Pour cela nous utiliserons un playbook \"tout pr\u00eat\". Installation: eric@aldebaran:~/aijan$ ansible-galaxy install oefenweb.apt Starting galaxy role install process - downloading role 'apt', owned by oefenweb - downloading role from https://github.com/Oefenweb/ansible-apt/archive/v2.4.6.tar.gz - extracting oefenweb.apt to /home/eric/.ansible/roles/oefenweb.apt - oefenweb.apt (v2.4.6) was installed successfully eric@aldebaran:~/aijan$ La documentation est contenue dans le fichier README.md situ\u00e9 dans le r\u00e9pertoire ~/.ansible/roles/oefenweb.apt . Le principe sera le m\u00eame pour les autres playbooks que nous installerons et qui seront dans le r\u00e9pertoire roles comme ci-dessus. Le playbook que nous appellerons: mise-a-jour-apt.yml sera enregistr\u00e9 dans le r\u00e9pertoire tasks . test manuel enregistrement et test Playbook d'installation de vim et mc Le playbook sera appel\u00e9: install-vim-mc.yml et sera plac\u00e9 \u00e9galement dans le r\u00e9pertoire tasks . test manuel enregistrement et test Voil\u00e0, nous avons toutes les donn\u00e9es n\u00e9cessaires pour lancer ansible Test de connexion en ligne de commande: J'ai cr\u00e9\u00e9 un r\u00e9pertoire Ansible sur mon poste de travail et dedans j'ai cr\u00e9\u00e9 un fichier inventaire appel\u00e9 hosts dont le contenu est le suivant: eric@aldebaran:~/Ansible$ cat hosts [aijan] 192.168.111.48 Il ne contient que 2 lignes: la premi\u00e8re est \"le petit nom\" de mon serveur, mais vous pouvez lui donner n'importe quel nom de votre choix, et la ligne suivante indique l'adresse IPV4; nous aurions aussi pu mettre le FQDN comme aijan.yojik.net . J'ai utilis\u00e9 l'adresse num\u00e9rique car elle n'est que temporaire: nous allons lui donner une adresse fixe en IPV4 et IPV6 plus tard. Nous pourrons utiliser l'adresse FQDN une fois que l'adresse sera fix\u00e9e et que la r\u00e9solution de noms (DNS) sera active. eric@aldebaran:~/Ansible$ eric@aldebaran:~/Ansible$ansible -i ./hosts --ask-pass --ssh-extra-args='-o \"PubkeyAuthentication=no\"' all -m ping -u ericadmin SSH password: 192.168.111.48 | SUCCESS => { \"changed\": false, \"ping\": \"pong\" } eric@aldebaran:~/Ansible$ Nous voyons le succ\u00e8s de notre tentative de connexion: ansible marche ;) Essai d'installation d'un paquet en ligne de commande (commandes \"ad-hoc\"): Nous allons installer mc avec ansible . Voici la copie d'\u00e9cran de la ligne de commande utilis\u00e9e: (j'ai laiss\u00e9 toute la sortie de ansible pour que vous puissiez comparer.) eric@aldebaran:~/Ansible$ ansible -i ./hosts aijan -b --become-method=sudo -m apt -a 'name=mc state=present' -u ericadmin --ask-pass --ssh-extra-args='-o \"PubkeyAuthentication=no\"' --ask-become-pass SSH password: SUDO password[defaults to SSH password]: [DEPRECATION WARNING]: State 'installed' is deprecated. Using state 'present' instead.. This feature will be removed in version 2.9. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. 192.168.111.48 | CHANGED => { \"cache_update_time\": 1592657315, \"cache_updated\": false, \"changed\": true, \"stderr\": \"\", \"stderr_lines\": [], \"stdout\": \"Reading package lists...\\nBuilding dependency tree...\\nReading state information...\\nThe following additional packages will be installed:\\n libglib2.0-0 libglib2.0-data libgpm2 mc-data shared-mime-info unzip\\n xdg-user-dirs\\nSuggested packages:\\n gpm arj catdvi | texlive-binaries dbview djvulibre-bin epub-utils\\n genisoimage gv imagemagick libaspell-dev links | w3m | lynx odt2txt\\n poppler-utils python-boto python-tz xpdf | pdf-viewer zip\\nThe following NEW packages will be installed:\\n libglib2.0-0 libglib2.0-data libgpm2 mc mc-data shared-mime-info unzip\\n xdg-user-dirs\\n0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.\\nNeed to get 5201 kB of archives.\\nAfter this operation, 26.0 MB of additional disk space will be used.\\nGet:1 http://deb.debian.org/debian buster/main amd64 libglib2.0-0 amd64 2.58.3-2+deb10u2 [1258 kB]\\nGet:2 http://deb.debian.org/debian buster/main amd64 libglib2.0-data all 2.58.3-2+deb10u2 [1110 kB]\\nGet:3 http://deb.debian.org/debian buster/main amd64 libgpm2 amd64 1.20.7-5 [35.1 kB]\\nGet:4 http://deb.debian.org/debian buster/main amd64 mc-data all 3:4.8.22-1 [1292 kB]\\nGet:5 http://deb.debian.org/debian buster/main amd64 mc amd64 3:4.8.22-1 [516 kB]\\nGet:6 http://deb.debian.org/debian buster/main amd64 shared-mime-info amd64 1.10-1 [766 kB]\\nGet:7 http://deb.debian.org/debian buster/main amd64 unzip amd64 6.0-23+deb10u1 [172 kB]\\nGet:8 http://deb.debian.org/debian buster/main amd64 xdg-user-dirs amd64 0.17-2 [53.8 kB]\\nFetched 5201 kB in 0s (16.3 MB/s)\\nSelecting previously unselected package libglib2.0-0:amd64.\\r\\n(Reading database ... \\r(Reading database ... 5%\\r(Reading database ... 10%\\r(Reading database ... 15%\\r(Reading database ... 20%\\r(Reading database ... 25%\\r(Reading database ... 30%\\r(Reading database ... 35%\\r(Reading database ... 40%\\r(Reading database ... 45%\\r(Reading database ... 50%\\r(Reading database ... 55%\\r(Reading database ... 60%\\r(Reading database ... 65%\\r(Reading database ... 70%\\r(Reading database ... 75%\\r(Reading database ... 80%\\r(Reading database ... 85%\\r(Reading database ... 90%\\r(Reading database ... 95%\\r(Reading database ... 100%\\r(Reading database ... 28088 files and directories currently installed.)\\r\\nPreparing to unpack .../0-libglib2.0-0_2.58.3-2+deb10u2_amd64.deb ...\\r\\nUnpacking libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\\r\\nSelecting previously unselected package libglib2.0-data.\\r\\nPreparing to unpack .../1-libglib2.0-data_2.58.3-2+deb10u2_all.deb ...\\r\\nUnpacking libglib2.0-data (2.58.3-2+deb10u2) ...\\r\\nSelecting previously unselected package libgpm2:amd64.\\r\\nPreparing to unpack .../2-libgpm2_1.20.7-5_amd64.deb ...\\r\\nUnpacking libgpm2:amd64 (1.20.7-5) ...\\r\\nSelecting previously unselected package mc-data.\\r\\nPreparing to unpack .../3-mc-data_3%3a4.8.22-1_all.deb ...\\r\\nUnpacking mc-data (3:4.8.22-1) ...\\r\\nSelecting previously unselected package mc.\\r\\nPreparing to unpack .../4-mc_3%3a4.8.22-1_amd64.deb ...\\r\\nUnpacking mc (3:4.8.22-1) ...\\r\\nSelecting previously unselected package shared-mime-info.\\r\\nPreparing to unpack .../5-shared-mime-info_1.10-1_amd64.deb ...\\r\\nUnpacking shared-mime-info (1.10-1) ...\\r\\nSelecting previously unselected package unzip.\\r\\nPreparing to unpack .../6-unzip_6.0-23+deb10u1_amd64.deb ...\\r\\nUnpacking unzip (6.0-23+deb10u1) ...\\r\\nSelecting previously unselected package xdg-user-dirs.\\r\\nPreparing to unpack .../7-xdg-user-dirs_0.17-2_amd64.deb ...\\r\\nUnpacking xdg-user-dirs (0.17-2) ...\\r\\nSetting up libgpm2:amd64 (1.20.7-5) ...\\r\\nSetting up xdg-user-dirs (0.17-2) ...\\r\\nSetting up libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\\r\\nNo schema files found: doing nothing.\\r\\nSetting up unzip (6.0-23+deb10u1) ...\\r\\nSetting up libglib2.0-data (2.58.3-2+deb10u2) ...\\r\\nSetting up shared-mime-info (1.10-1) ...\\r\\nSetting up mc-data (3:4.8.22-1) ...\\r\\nSetting up mc (3:4.8.22-1) ...\\r\\nupdate-alternatives: using /usr/bin/mcview to provide /usr/bin/view (view) in auto mode\\r\\nProcessing triggers for man-db (2.8.5-2) ...\\r\\nProcessing triggers for mime-support (3.62) ...\\r\\nProcessing triggers for libc-bin (2.28-10) ...\\r\\n\", \"stdout_lines\": [ \"Reading package lists...\", \"Building dependency tree...\", \"Reading state information...\", \"The following additional packages will be installed:\", \" libglib2.0-0 libglib2.0-data libgpm2 mc-data shared-mime-info unzip\", \" xdg-user-dirs\", \"Suggested packages:\", \" gpm arj catdvi | texlive-binaries dbview djvulibre-bin epub-utils\", \" genisoimage gv imagemagick libaspell-dev links | w3m | lynx odt2txt\", \" poppler-utils python-boto python-tz xpdf | pdf-viewer zip\", \"The following NEW packages will be installed:\", \" libglib2.0-0 libglib2.0-data libgpm2 mc mc-data shared-mime-info unzip\", \" xdg-user-dirs\", \"0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.\", \"Need to get 5201 kB of archives.\", \"After this operation, 26.0 MB of additional disk space will be used.\", \"Get:1 http://deb.debian.org/debian buster/main amd64 libglib2.0-0 amd64 2.58.3-2+deb10u2 [1258 kB]\", \"Get:2 http://deb.debian.org/debian buster/main amd64 libglib2.0-data all 2.58.3-2+deb10u2 [1110 kB]\", \"Get:3 http://deb.debian.org/debian buster/main amd64 libgpm2 amd64 1.20.7-5 [35.1 kB]\", \"Get:4 http://deb.debian.org/debian buster/main amd64 mc-data all 3:4.8.22-1 [1292 kB]\", \"Get:5 http://deb.debian.org/debian buster/main amd64 mc amd64 3:4.8.22-1 [516 kB]\", \"Get:6 http://deb.debian.org/debian buster/main amd64 shared-mime-info amd64 1.10-1 [766 kB]\", \"Get:7 http://deb.debian.org/debian buster/main amd64 unzip amd64 6.0-23+deb10u1 [172 kB]\", \"Get:8 http://deb.debian.org/debian buster/main amd64 xdg-user-dirs amd64 0.17-2 [53.8 kB]\", \"Fetched 5201 kB in 0s (16.3 MB/s)\", \"Selecting previously unselected package libglib2.0-0:amd64.\", \"(Reading database ... \", \"(Reading database ... 5%\", \"(Reading database ... 10%\", \"(Reading database ... 15%\", \"(Reading database ... 20%\", \"(Reading database ... 25%\", \"(Reading database ... 30%\", \"(Reading database ... 35%\", \"(Reading database ... 40%\", \"(Reading database ... 45%\", \"(Reading database ... 50%\", \"(Reading database ... 55%\", \"(Reading database ... 60%\", \"(Reading database ... 65%\", \"(Reading database ... 70%\", \"(Reading database ... 75%\", \"(Reading database ... 80%\", \"(Reading database ... 85%\", \"(Reading database ... 90%\", \"(Reading database ... 95%\", \"(Reading database ... 100%\", \"(Reading database ... 28088 files and directories currently installed.)\", \"Preparing to unpack .../0-libglib2.0-0_2.58.3-2+deb10u2_amd64.deb ...\", \"Unpacking libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\", \"Selecting previously unselected package libglib2.0-data.\", \"Preparing to unpack .../1-libglib2.0-data_2.58.3-2+deb10u2_all.deb ...\", \"Unpacking libglib2.0-data (2.58.3-2+deb10u2) ...\", \"Selecting previously unselected package libgpm2:amd64.\", \"Preparing to unpack .../2-libgpm2_1.20.7-5_amd64.deb ...\", \"Unpacking libgpm2:amd64 (1.20.7-5) ...\", \"Selecting previously unselected package mc-data.\", \"Preparing to unpack .../3-mc-data_3%3a4.8.22-1_all.deb ...\", \"Unpacking mc-data (3:4.8.22-1) ...\", \"Selecting previously unselected package mc.\", \"Preparing to unpack .../4-mc_3%3a4.8.22-1_amd64.deb ...\", \"Unpacking mc (3:4.8.22-1) ...\", \"Selecting previously unselected package shared-mime-info.\", \"Preparing to unpack .../5-shared-mime-info_1.10-1_amd64.deb ...\", \"Unpacking shared-mime-info (1.10-1) ...\", \"Selecting previously unselected package unzip.\", \"Preparing to unpack .../6-unzip_6.0-23+deb10u1_amd64.deb ...\", \"Unpacking unzip (6.0-23+deb10u1) ...\", \"Selecting previously unselected package xdg-user-dirs.\", \"Preparing to unpack .../7-xdg-user-dirs_0.17-2_amd64.deb ...\", \"Unpacking xdg-user-dirs (0.17-2) ...\", \"Setting up libgpm2:amd64 (1.20.7-5) ...\", \"Setting up xdg-user-dirs (0.17-2) ...\", \"Setting up libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\", \"No schema files found: doing nothing.\", \"Setting up unzip (6.0-23+deb10u1) ...\", \"Setting up libglib2.0-data (2.58.3-2+deb10u2) ...\", \"Setting up shared-mime-info (1.10-1) ...\", \"Setting up mc-data (3:4.8.22-1) ...\", \"Setting up mc (3:4.8.22-1) ...\", \"update-alternatives: using /usr/bin/mcview to provide /usr/bin/view (view) in auto mode\", \"Processing triggers for man-db (2.8.5-2) ...\", \"Processing triggers for mime-support (3.62) ...\", \"Processing triggers for libc-bin (2.28-10) ...\" ] } Voici le r\u00e9usltat de la ligne de commande relanc\u00e9e (o\u00f9 l'on voit l'action de **ansible** qui ne relance pas l'installation: il v\u00e9rifie que **mc** est d\u00e9j\u00e0 install\u00e9 (clef \"changed\" -> false).) eric@aldebaran:~/Ansible$ ansible -i ./hosts aijan -b --become-method=sudo -m apt -a 'name=mc state=present' -u ericadmin --ask-pass --ssh-extra-args='-o \"PubkeyAuthentication=no\"' --ask-become-pass SSH password: SUDO password[defaults to SSH password]: 192.168.111.48 | SUCCESS => { \"cache_update_time\": 1592657315, \"cache_updated\": false, \"changed\": false } eric@aldebaran:~/Ansible$ Utilisation des playbooks de ansible : Lancer les commandes en ligne de commandes n'est pas tr\u00e8s pratique: ansible permet l'utilisation de fichiers appel\u00e9s playbooks au format yaml qui d\u00e9crivent toutes les actions \u00e0 effectuer. Il suffit de jouer ces playbooks pour lancer toutes les commandes qui s'y trouvent. Il est \u00e9galement possible d'organiser les playbooks en roles , et donc, de cr\u00e9er des playbooks plus courts et lisibles. Continuons \u00e0 voir les \u00e9tapes suivantes avant de cr\u00e9er les playbooks correspondants. S\u00e9curisation de ssh Voir le lien suivant: Le blog de Guillaume . Nous ajouterons une deuxi\u00e8me \u00e9tape de s\u00e9curisation avec \"OTP\", \"one time password\". Il y aura donc l'authentification par clef de SSH , avec sa phrase de passe, plus un mot de passe \u00e0 usage unique g\u00e9n\u00e9r\u00e9 par l'application OTP install\u00e9e sur un autre poste, smartphone ou tablette. Nous allons aussi appliquer les recommandations de Mozilla concernant les algorithmes \u00e0 utiliser. Voir ici: Mozilla SSH recommandations Op\u00e9rations \u00e0 effectuer sur le poste principal 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. Comme nous g\u00e9rons nous-m\u00eames nos postes et serveurs, nous allons utiliser des algorithmes modernes pour g\u00e9n\u00e9rer les clefs SSH: article sur Tutox . Au lieu d'utiliser la m\u00eame clef SSH sur tous nos serveurs, nous allons g\u00e9n\u00e9rer une clef distincte pour chaque serveur et rajouter la configuration sp\u00e9cifique \u00e0 chaque serveur (adresse, port de connexion,n utilisateur etc ...dans le fichier de configuration du client SSH. J'envisage aussi l'utilisation de certificats SSH qui \u00e9vitent de copier ses clefs publiques SSH sur tous les serveurs. Nous allons impl\u00e9menter tout \u00e7a de mani\u00e8re incr\u00e9mentale, pour savoir ce que nous faisons, et pouvoir rectifier si quelque chose foire :( . Voil\u00e0 donc la structure de notre gestion des clefs SSH: ssh-keygen Il vous faut copier maintenant la clef sur le serveur: ssh-copy-id -i ~/.ssh/id_rsa.pub ericadmin@192.168.111.23 ou ssh-copy-id ericadmin@192.168.111.23 N'oubliez pas de mettre vos identifiants propres, bien s\u00fbr. On teste comme le recommande ssh: eric@aldebaran:~$ ssh 'ericadmin@91.121.72.10' Linux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 Debian GNU/Linux 9 (stretch) Linux adara.yojik.eu 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 GNU/Linux Server : 141519 IPv4 : 91.121.72.10 IPv6 : 2001:41d0:1:7d0a::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 15:08:32 2018 from 82.64.48.5 Et on teste qu'on peut passer super-utilisateur \u00e0 partir de ce compte. ericadmin@adara:~$ su Mot de passe : root@adara:/home/ericadmin# Op\u00e9rations \u00e0 effectuer sur le serveur en mode super-utilisateur. La configuration se fait dans le fichier /etc/ssh/sshd_config , fichier qu'il va falloir \u00e9diter avec vim pas exemple. Nous allons d'abord en faire une copie de sauvegarde: cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig vim /etc/ssh/sshd_config Nous n'allons autoriser que la connexion d'un user d'administration (pas de connexion de root par exemple), activer l' authentification par clefs , et supprimer l'authentification par login/mot de passe (en mode ssh). Vous pourrez toujours vous connecter avec le couple login/mot de passe si vous avez un acc\u00e8s physique \u00e0 votre serveur. Nous garderons le port standard d'\u00e9coute (rien \u00e0 changer dans le fichier), mais j'ai ajout\u00e9 une note sur le changement de port (sugg\u00e9r\u00e9 par Laurent). Je ne suis pas convaincu que le changement de port puisse diminuer la surface d'attaque du serveur, mais pourquoi pas, c'est un changement mineur: Port 22 Nous interdisons la connexion par root : PermitRootLogin no Activation de l'authentification par clef (rien \u00e0 changer dans le fichier): PubkeyAuthentication yes Nous ajoutons une liste d'utilisateurs autoris\u00e9s \u00e0 se connecter. AllowUsers ericadmin A la place de ericadmin mettez bien s\u00fbr le nom de l'utilisateur que vous avez entr\u00e9 pendant la phase d'installation. Nous pouvons limiter le nombre de tentatives de connexion: MaxAuthTries 1 Interdiction de la connexion par couple login/mot de passe: PasswordAuthentication no D\u00e9sactivation de PAM UsePAM no Sauvegarde du fichier de configuration. (commande escape, suivie de ZZ pour vim) Red\u00e9marrage du service ssh systemctl restart sshd Test de connexion 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' Last login: Sun Dec 17 16:37:40 2017 from 192.168.111.150 ericadmin@atom:~$ Voil\u00e0 pour la premi\u00e8re phase. Note : Il est possible de changer le port d'\u00e9coute de SSH en changeant celui-ci dans le fichier de configuration **/etc/ssh/sshd_config: Faites la modification suivante: vim /etc/ssh/sshd_config Port 2222 Et relancez sshd: service sshd restart Pour se connecter, utilsez la commande suivante: ssh -p 2222 ericadmin@192.168.111.23 S\u00e9curisation plus pouss\u00e9 de SSH Les r\u00e9centes attaques sur les m\u00e9thodes de chiffrage imposent l'utilisation de clef de chiffrement plus \u00e9volu\u00e9es. Les anciennes ont des failles. Le site de Mozilla nous permet d'ajuster nos configurations et d'utiliser les meilleures m\u00e9thodes de chiffrement actuelles. Deuxi\u00e8me phase S\u00e9curisation des mots de passe J'utilise un g\u00e9n\u00e9rateur de mots de passe pour le compte root et le compte ericadmin . Il 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 Exemples d'utilisation de ces programmes: 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 oow1Osho teM3chai Aim5shee Sheme1yo aiR6aem1 Vooxeiv0 Iabeenu1 kae7Xie5 oacei4aV Ohb8ceib zo0shu6F Dob2chie Roo5eeLa fee5Nooh Phi0suim OMeigh2w nah2Ool5 Saix6lie EeNaem5u ooVoh3ki IN5aeF9p CuHu8Aib vaim2Jia chah0Ier ShieC6ze Teex4tie mei6ou7I Ath6aiFe uw4quoHa lad8Quee ohQuai9Y Sho5Eem6 aoCaol3W ooGah9th bix6Aic9 thee1Coo lie0ahTe eiz0iiSh cieYu8Ie Ealu3chi vaeYee6c ahje9aeJ Sheenee7 eesh1Iez Odaa6kah aico6Jah aphahP4U aYePh1ev phohNie8 Chuut3ie eeb9ieDa ohp9AhGi efae5ooV Shiere5c ahV8riek Seegohv1 Eetohy1a Lievoh0k jox3uf6K chai3Woo iecoh0Iu ieGh9tuz UMeex2ah Eathaur8 Ood2oeho paeSah0p jaihoo1U eemoi9Ee ile1So4z OongeiN6 aaY9iuch ew3Iemoo Iech0Eey OoMie0ah OhBei1ae Ohsh4aik jah0faiT ioW7oz6t yee1Uphu ies4eeNa pooP8eeg iePoh4ya fooL3uqu ieGiej1X Ein7eifu ool7Olae eub5ooSe eyo8EiNu ach9ohWo Foog9Oev aej9geiH Thahg6Di eegei4Ai eN7quu3b waiK2ieg foThe7zi fu2Phoug iYaeg4if iLu6eeFi Aeshoo0i uxoGh6no id1TeRei diob7Pha vokuuN7h Chokei8J Iemee8ah eingei0E ubieh2Ch daiyu3EB QueiQu6H Jib0uwee wi9Xoodu eeL3osh2 Eo3Ae1ch bieWui2a ro6chiCo engu0ooF Eebeu2jo ee7Eey8t EiSeen5i ohNgai6i Iutaez4a xah1yeeG eGhi5Ouz vaiYu6ee fae0AeP5 jee0Ib2I OS3xuwae Eefohp1u eegiK6ae ohyuom7V Eij8eeNi Ou0ec7ye Eethoh4e eeHi2ugh ichoLae3 UT8oopoo oox6Ohx9 ohbaL2hu oht9kaiR Ieho8Ou1 Ten6saet cae7Iexi daDuas9e ShiexaT7 Lei6etii ea4aoH8y ja8Zai8g phaeG6Hi sheNg8ee Oow5phae aa7gohPi nahS8Eeg ba6Roh9j ooRo6epo pheNoam1 johF7ii9 vuZ4Latu xai5og6H aeS8hu2I eric@aldebaran:~$ Vous pouvez prendre le mot de passe que vous voulez dans le tableau g\u00e9n\u00e9r\u00e9. Pour un seul mot de passe: eric@aldebaran:~$ pwgen -1 Eerai4Sh Pour un mot de passe mieux s\u00e9curis\u00e9: eric@aldebaran:~$ pwgen -1 -s tx2CqGyf Encore plus s\u00e9curis\u00e9 avec l'option -y: eric@aldebaran:~$ pwgen -1 -s -y a+01K!U~ Utilisation de makepasswd : Tapez: makepasswd --help pour de l'aide \u00e0 l'utilisation des param\u00e8tres. makepasswd --count 5 --minchars 10 S\u00e9curisation du mot de passe super-utilisateur (root) 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. S\u00e9curisation du mot de passe administrateur Utilisez un des utilitaires ci-dessus. Attention \u00e0 la longueur minimale! Sous le user \u201croot\u201d, tapez: passwd pour changer le mot de passe root. Test du hostname 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 atom root@atom:/home/ericadmin# root@atom:/home/ericadmin# hostname -f atom.yojik.net root@atom:/home/ericadmin# Le r\u00e9sultat est bon.","title":"Premi\u00e8res \u00e9tapes de s\u00e9curisation du serveur"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#premieres-etapes-de-securisation-du-serveur","text":"","title":"Premi\u00e8res \u00e9tapes de s\u00e9curisation du serveur"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#preambule","text":"Voil\u00e0 la liste des \u00e9tapes que je fais habituellement \u00e0 la main et qu'il est toujours possible de faire \u00e0 la main. J'ai d\u00e9cid\u00e9 dans ce tutoriel d'utiliser ansible pour pouvoir automatiser ensuite la cr\u00e9ation de serveurs, plus rapide en cas de crash de disque dur ou compromission. (et aussi pour apprendre de nouvelles techniques ...)","title":"Pr\u00e9ambule"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#recuperation-de-lip-du-serveur-a-la-maison","text":"Il nous faut conna\u00eetre l'adresse IP de notre serveur qui est allou\u00e9e dynamiquement par le serveur dhcp de notre box (freebox). Sur le poste client \u00e0 partir duquel nous nous connectons par ssh sur le serveur, nous allons lancer une commande qui va scruter notre r\u00e9seau local et faire appara\u00eetre les IPs des machines du r\u00e9seau. Bien s\u00fbr, cela ne fonctionne que si le serveur est \"at home\". Ne lancez pas un scan de tout l'internet! :D root@aldebaran:~# nmap -sP 192.168.111.0/24 | grep \"Nmap scan\" Nmap scan report for 192.168.111.20 Nmap scan report for 192.168.111.49 Nmap scan report for switch.yojik.net (192.168.111.140) Nmap scan report for goulya.yojik.net (192.168.111.151) Nmap scan report for 192.168.111.153 Nmap scan report for atom.yojik.net (192.168.111.160) Nmap scan report for freebox.yojik.net (192.168.111.254) Nmap scan report for aldebaran.yojik.net (192.168.111.150) root@aldebaran:~# Vous voyez l\u00e0 toutes les machines allum\u00e9es sur mon r\u00e9seau local. Celle qui nous int\u00e9resse est la suivante: **192.168.111.49** Vous pouvez utiliser les options suivantes de nmap qui vous donnera des inbformations suppl\u00e9mentaires \u00e0 m\u00eame de vous permettre de trouver votre serveur: eric@aldebaran:/mnt/Raid/eric/Devs/Travail/Installation serveur/Tutorial/Tuto-Buster$ sudo nmap -sn 192.168.111.0/24 Starting Nmap 7.91 ( https://nmap.org ) at 2021-01-15 16:05 CET Nmap scan report for 192.168.111.13 Host is up (0.19s latency). MAC Address: 54:35:30:1D:5A:C4 (Hon Hai Precision Ind.) Nmap scan report for 192.168.111.20 Host is up (0.22s latency). MAC Address: 90:78:B2:A1:31:E7 (Xiaomi Communications) Nmap scan report for 192.168.111.25 Host is up (0.25s latency). MAC Address: D8:12:65:5B:DD:90 (Chongqing Fugui Electronics) Nmap scan report for 192.168.111.34 Host is up (0.27s latency). MAC Address: 00:73:8D:92:7E:B6 (Shenzhen Tinno Mobile Technology) Nmap scan report for 192.168.111.48 Host is up (0.22s latency). MAC Address: 70:EE:50:6B:7B:3A (Netatmo) Nmap scan report for 192.168.111.49 Host is up (0.00025s latency). MAC Address: 38:EA:A7:A6:CF:93 (Hewlett Packard) Nmap scan report for switch.yojik.net (192.168.111.140) Host is up (0.14s latency). MAC Address: 98:DA:C4:37:BF:F9 (Tp-link Technologies) Nmap scan report for goulya.yojik.net (192.168.111.151) Host is up (0.00014s latency). MAC Address: D0:50:99:A5:69:C5 (ASRock Incorporation) Nmap scan report for atom.yojik.net (192.168.111.160) Host is up (0.00030s latency). MAC Address: 00:23:54:C6:0A:07 (Asustek Computer) Nmap scan report for mynas2.yojik.net (192.168.111.211) Host is up (0.00021s latency). MAC Address: 00:11:32:08:D8:E1 (Synology Incorporated) Nmap scan report for freebox.yojik.net (192.168.111.254) Host is up (0.0015s latency). MAC Address: 68:A3:78:65:7B:5C (Freebox SAS) Nmap scan report for aldebaran.yojik.net (192.168.111.150) Host is up. Nmap done: 256 IP addresses (12 hosts up) scanned in 4.87 seconds L\u00e0, on voit la t\u00e9trachi\u00e9e de machines sur le r\u00e9seau, entre t\u00e9l\u00e9phones mobiles, imprimantes wifi, station m\u00e9t\u00e9o, lampes connect\u00e9es etc .. Mon serveur est de marque HP ce qui permet de retrouver son ip dans la liste.","title":"R\u00e9cup\u00e9ration de l'IP du serveur \"\u00e0 la maison\""},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#recuperation-de-lip-de-votre-dedie-ou-vps","text":"Vos serveurs d\u00e9di\u00e9s ou vps utilisent une adresse IP (ou plusieurs) automatiquement attribu\u00e9es et consultables sur la console d'administration du fournisseur (OVH chez moi)","title":"R\u00e9cup\u00e9ration de l'ip de votre \"d\u00e9di\u00e9\" ou \"VPS\""},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#preparation-du-poste-de-travail","text":"Sur notre poste de travail, nous allons pr\u00e9parer la configuration de SSH et de Ansible .","title":"Pr\u00e9paration du poste de travail"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#ssh","text":"Il y a 2 parties \u00e0 configurer sur le poste de travail: /etc/ssh/ (permet de s\u00e9curiser les acc\u00e8s \u00e0 notre poste de travail: facultatif, mais la qualit\u00e9 du serveur ssh de notre poste de travail est \u00e9quivalente \u00e0 celle des serveurs bruts de fonderie) ~/.ssh/ (pr\u00e9paration des r\u00e9pertoires et des clefs) Nous allons utiliser les recommandations de Mozilla: Mozilla recommendations ainsi que des tutoriaux comme ceux-ci: S\u00e9curiser OpenSSH SSH - Comment tester et s\u00e9curiser son serveur ? OpenSSH Config File Examples","title":"SSH"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#ansible","text":"Installation de ansible Nous allons suivre la documentation du site web de ansible: Installation de ansible Ajouter la ligne suivante \u00e0 /etc/apt/sources.list: (avec un \u00e9diteur de votre choix) deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main Et lancer les commandes suivantes: $ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 $ sudo apt update $ sudo apt install ansible Lancez la commande suivante pour tester votre installation: eric@aldebaran:/mnt/Raid/eric/Devs/Travail/Installation serveur/Tutorial/Tuto-Buster$ ansible --version ansible 2.9.16 config file = /etc/ansible/ansible.cfg configured module search path = ['/home/eric/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3/dist-packages/ansible executable location = /usr/bin/ansible python version = 3.9.1+ (default, Jan 10 2021, 15:42:50) [GCC 10.2.1 20201224] eric@aldebaran:/mnt/Raid/eric/Devs/Travail/Installation serveur/Tutorial/Tuto-Buster$ Cr\u00e9ation de notre structure de r\u00e9pertoires Nous allons cr\u00e9er un r\u00e9pertoire dans notre home qui contiendra nos \"\"playbook\"\". J'ai vu qu'il existait un programme appel\u00e9 ansible-galaxy qui permet de g\u00e9rer la structure de ce r\u00e9pertoire et de charger des roles tout pr\u00eats \u00e0 partir du hub. Entrez la commande suivante: eric@aldebaran:~$ ansible-galaxy init aijan - Role aijan was created successfully eric@aldebaran:~$ La structure de r\u00e9pertoires cr\u00e9e: eric@aldebaran:~$ tree aijan aijan \u251c\u2500\u2500 defaults \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 handlers \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 meta \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 README.md \u251c\u2500\u2500 tasks \u2502 \u2514\u2500\u2500 main.yml \u251c\u2500\u2500 tests \u2502 \u251c\u2500\u2500 inventory \u2502 \u2514\u2500\u2500 test.yml \u2514\u2500\u2500 vars \u2514\u2500\u2500 main.yml 6 directories, 8 files eric@aldebaran:~$","title":"Ansible"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#preparation-de-notre-serveur","text":"Nous allons commencer \u00e0 installer quelques logiciels de base, en fait ceux que j'utilise sur toutes mes machines. Bien s\u00fbr, vous pouvez faire d'autres choix, comme installer emacs comme \u00e9diteur et un autre navigateur de fichiers en mode texte. Installez simplement les outils qui vous conviennent. La m\u00e9thode \u00e0 suivre sera identique quelque soient les logiciels.","title":"Pr\u00e9paration de notre serveur"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#methode-manuelle","text":"Nous allons commencer par ex\u00e9cuter toutes les \u00e9tapes manuellement; il sera plus facile ensuite de les automatiser. Pour mon usage personnel, j'installe syst\u00e9matiquement mc , un 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. et vim comme \u00e9diteur de fichiers de configuration Notez l'utilisation de sudo : les taches d'administration seront faite sous l'utilisateur ericadmin avec l'aide de sudo pour l'\u00e9l\u00e9vation des privil\u00e8ges. sudo apt install mc J'installe aussi vim , pour remplacer l'\u00e9diteur vi ou nano install\u00e9 par d\u00e9faut par Debian. sudo apt install vim Dans le tutoriel pr\u00e9c\u00e9dent, j'utilisais netstat comme outillage r\u00e9seau. Il a \u00e9t\u00e9 remplac\u00e9 par ss dont nous verrons le fonctionnement plus tard. Il est disponible automatiquement ap\u00e8rs installation. Ajoute des d\u00e9pots contrib et non-free: sudo vim /etc/apt/sources.list Pour obtenir ceci: deb http://deb.debian.org/debian/ buster main contrib non-free deb-src http://deb.debian.org/debian/ buster main contrib non-free deb http://security.debian.org/debian-security buster/updates main contrib non-free deb-src http://security.debian.org/debian-security buster/updates main contrib non-free # buster-updates, previously known as 'volatile' deb http://deb.debian.org/debian/ buster-updates main contrib non-free deb-src http://deb.debian.org/debian/ buster-updates main contrib non-free # buster-backports deb http://deb.debian.org/debian buster-backports main contrib non-free deb http://deb.debian.org/debian/ buster-proposed-updates contrib non-free main deb-src http://deb.debian.org/debian buster-backports main Mise \u00e0 jour des d\u00e9p\u00f4ts de paquets, et mise \u00e0 jour du syst\u00e8me: sudo apt update && sudo apt upgrade","title":"M\u00e9thode manuelle"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#methode-avec-ansible","text":"Nous allons donc r\u00e9aliser exactement la m\u00eame chose, mais avec ansible : Renseignement des variables utilis\u00e9es dans les playbooks. Ces variables seront enregistr\u00e9es dans le fichier ~/aijan/vars/main.yml Playbook de modification de /etc/apt/sources.list et mise \u00e0 jour du catalogue de paquets Pour cela nous utiliserons un playbook \"tout pr\u00eat\". Installation: eric@aldebaran:~/aijan$ ansible-galaxy install oefenweb.apt Starting galaxy role install process - downloading role 'apt', owned by oefenweb - downloading role from https://github.com/Oefenweb/ansible-apt/archive/v2.4.6.tar.gz - extracting oefenweb.apt to /home/eric/.ansible/roles/oefenweb.apt - oefenweb.apt (v2.4.6) was installed successfully eric@aldebaran:~/aijan$ La documentation est contenue dans le fichier README.md situ\u00e9 dans le r\u00e9pertoire ~/.ansible/roles/oefenweb.apt . Le principe sera le m\u00eame pour les autres playbooks que nous installerons et qui seront dans le r\u00e9pertoire roles comme ci-dessus. Le playbook que nous appellerons: mise-a-jour-apt.yml sera enregistr\u00e9 dans le r\u00e9pertoire tasks . test manuel enregistrement et test Playbook d'installation de vim et mc Le playbook sera appel\u00e9: install-vim-mc.yml et sera plac\u00e9 \u00e9galement dans le r\u00e9pertoire tasks . test manuel enregistrement et test Voil\u00e0, nous avons toutes les donn\u00e9es n\u00e9cessaires pour lancer ansible Test de connexion en ligne de commande: J'ai cr\u00e9\u00e9 un r\u00e9pertoire Ansible sur mon poste de travail et dedans j'ai cr\u00e9\u00e9 un fichier inventaire appel\u00e9 hosts dont le contenu est le suivant: eric@aldebaran:~/Ansible$ cat hosts [aijan] 192.168.111.48 Il ne contient que 2 lignes: la premi\u00e8re est \"le petit nom\" de mon serveur, mais vous pouvez lui donner n'importe quel nom de votre choix, et la ligne suivante indique l'adresse IPV4; nous aurions aussi pu mettre le FQDN comme aijan.yojik.net . J'ai utilis\u00e9 l'adresse num\u00e9rique car elle n'est que temporaire: nous allons lui donner une adresse fixe en IPV4 et IPV6 plus tard. Nous pourrons utiliser l'adresse FQDN une fois que l'adresse sera fix\u00e9e et que la r\u00e9solution de noms (DNS) sera active. eric@aldebaran:~/Ansible$ eric@aldebaran:~/Ansible$ansible -i ./hosts --ask-pass --ssh-extra-args='-o \"PubkeyAuthentication=no\"' all -m ping -u ericadmin SSH password: 192.168.111.48 | SUCCESS => { \"changed\": false, \"ping\": \"pong\" } eric@aldebaran:~/Ansible$ Nous voyons le succ\u00e8s de notre tentative de connexion: ansible marche ;) Essai d'installation d'un paquet en ligne de commande (commandes \"ad-hoc\"): Nous allons installer mc avec ansible . Voici la copie d'\u00e9cran de la ligne de commande utilis\u00e9e: (j'ai laiss\u00e9 toute la sortie de ansible pour que vous puissiez comparer.) eric@aldebaran:~/Ansible$ ansible -i ./hosts aijan -b --become-method=sudo -m apt -a 'name=mc state=present' -u ericadmin --ask-pass --ssh-extra-args='-o \"PubkeyAuthentication=no\"' --ask-become-pass SSH password: SUDO password[defaults to SSH password]: [DEPRECATION WARNING]: State 'installed' is deprecated. Using state 'present' instead.. This feature will be removed in version 2.9. Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg. 192.168.111.48 | CHANGED => { \"cache_update_time\": 1592657315, \"cache_updated\": false, \"changed\": true, \"stderr\": \"\", \"stderr_lines\": [], \"stdout\": \"Reading package lists...\\nBuilding dependency tree...\\nReading state information...\\nThe following additional packages will be installed:\\n libglib2.0-0 libglib2.0-data libgpm2 mc-data shared-mime-info unzip\\n xdg-user-dirs\\nSuggested packages:\\n gpm arj catdvi | texlive-binaries dbview djvulibre-bin epub-utils\\n genisoimage gv imagemagick libaspell-dev links | w3m | lynx odt2txt\\n poppler-utils python-boto python-tz xpdf | pdf-viewer zip\\nThe following NEW packages will be installed:\\n libglib2.0-0 libglib2.0-data libgpm2 mc mc-data shared-mime-info unzip\\n xdg-user-dirs\\n0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.\\nNeed to get 5201 kB of archives.\\nAfter this operation, 26.0 MB of additional disk space will be used.\\nGet:1 http://deb.debian.org/debian buster/main amd64 libglib2.0-0 amd64 2.58.3-2+deb10u2 [1258 kB]\\nGet:2 http://deb.debian.org/debian buster/main amd64 libglib2.0-data all 2.58.3-2+deb10u2 [1110 kB]\\nGet:3 http://deb.debian.org/debian buster/main amd64 libgpm2 amd64 1.20.7-5 [35.1 kB]\\nGet:4 http://deb.debian.org/debian buster/main amd64 mc-data all 3:4.8.22-1 [1292 kB]\\nGet:5 http://deb.debian.org/debian buster/main amd64 mc amd64 3:4.8.22-1 [516 kB]\\nGet:6 http://deb.debian.org/debian buster/main amd64 shared-mime-info amd64 1.10-1 [766 kB]\\nGet:7 http://deb.debian.org/debian buster/main amd64 unzip amd64 6.0-23+deb10u1 [172 kB]\\nGet:8 http://deb.debian.org/debian buster/main amd64 xdg-user-dirs amd64 0.17-2 [53.8 kB]\\nFetched 5201 kB in 0s (16.3 MB/s)\\nSelecting previously unselected package libglib2.0-0:amd64.\\r\\n(Reading database ... \\r(Reading database ... 5%\\r(Reading database ... 10%\\r(Reading database ... 15%\\r(Reading database ... 20%\\r(Reading database ... 25%\\r(Reading database ... 30%\\r(Reading database ... 35%\\r(Reading database ... 40%\\r(Reading database ... 45%\\r(Reading database ... 50%\\r(Reading database ... 55%\\r(Reading database ... 60%\\r(Reading database ... 65%\\r(Reading database ... 70%\\r(Reading database ... 75%\\r(Reading database ... 80%\\r(Reading database ... 85%\\r(Reading database ... 90%\\r(Reading database ... 95%\\r(Reading database ... 100%\\r(Reading database ... 28088 files and directories currently installed.)\\r\\nPreparing to unpack .../0-libglib2.0-0_2.58.3-2+deb10u2_amd64.deb ...\\r\\nUnpacking libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\\r\\nSelecting previously unselected package libglib2.0-data.\\r\\nPreparing to unpack .../1-libglib2.0-data_2.58.3-2+deb10u2_all.deb ...\\r\\nUnpacking libglib2.0-data (2.58.3-2+deb10u2) ...\\r\\nSelecting previously unselected package libgpm2:amd64.\\r\\nPreparing to unpack .../2-libgpm2_1.20.7-5_amd64.deb ...\\r\\nUnpacking libgpm2:amd64 (1.20.7-5) ...\\r\\nSelecting previously unselected package mc-data.\\r\\nPreparing to unpack .../3-mc-data_3%3a4.8.22-1_all.deb ...\\r\\nUnpacking mc-data (3:4.8.22-1) ...\\r\\nSelecting previously unselected package mc.\\r\\nPreparing to unpack .../4-mc_3%3a4.8.22-1_amd64.deb ...\\r\\nUnpacking mc (3:4.8.22-1) ...\\r\\nSelecting previously unselected package shared-mime-info.\\r\\nPreparing to unpack .../5-shared-mime-info_1.10-1_amd64.deb ...\\r\\nUnpacking shared-mime-info (1.10-1) ...\\r\\nSelecting previously unselected package unzip.\\r\\nPreparing to unpack .../6-unzip_6.0-23+deb10u1_amd64.deb ...\\r\\nUnpacking unzip (6.0-23+deb10u1) ...\\r\\nSelecting previously unselected package xdg-user-dirs.\\r\\nPreparing to unpack .../7-xdg-user-dirs_0.17-2_amd64.deb ...\\r\\nUnpacking xdg-user-dirs (0.17-2) ...\\r\\nSetting up libgpm2:amd64 (1.20.7-5) ...\\r\\nSetting up xdg-user-dirs (0.17-2) ...\\r\\nSetting up libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\\r\\nNo schema files found: doing nothing.\\r\\nSetting up unzip (6.0-23+deb10u1) ...\\r\\nSetting up libglib2.0-data (2.58.3-2+deb10u2) ...\\r\\nSetting up shared-mime-info (1.10-1) ...\\r\\nSetting up mc-data (3:4.8.22-1) ...\\r\\nSetting up mc (3:4.8.22-1) ...\\r\\nupdate-alternatives: using /usr/bin/mcview to provide /usr/bin/view (view) in auto mode\\r\\nProcessing triggers for man-db (2.8.5-2) ...\\r\\nProcessing triggers for mime-support (3.62) ...\\r\\nProcessing triggers for libc-bin (2.28-10) ...\\r\\n\", \"stdout_lines\": [ \"Reading package lists...\", \"Building dependency tree...\", \"Reading state information...\", \"The following additional packages will be installed:\", \" libglib2.0-0 libglib2.0-data libgpm2 mc-data shared-mime-info unzip\", \" xdg-user-dirs\", \"Suggested packages:\", \" gpm arj catdvi | texlive-binaries dbview djvulibre-bin epub-utils\", \" genisoimage gv imagemagick libaspell-dev links | w3m | lynx odt2txt\", \" poppler-utils python-boto python-tz xpdf | pdf-viewer zip\", \"The following NEW packages will be installed:\", \" libglib2.0-0 libglib2.0-data libgpm2 mc mc-data shared-mime-info unzip\", \" xdg-user-dirs\", \"0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.\", \"Need to get 5201 kB of archives.\", \"After this operation, 26.0 MB of additional disk space will be used.\", \"Get:1 http://deb.debian.org/debian buster/main amd64 libglib2.0-0 amd64 2.58.3-2+deb10u2 [1258 kB]\", \"Get:2 http://deb.debian.org/debian buster/main amd64 libglib2.0-data all 2.58.3-2+deb10u2 [1110 kB]\", \"Get:3 http://deb.debian.org/debian buster/main amd64 libgpm2 amd64 1.20.7-5 [35.1 kB]\", \"Get:4 http://deb.debian.org/debian buster/main amd64 mc-data all 3:4.8.22-1 [1292 kB]\", \"Get:5 http://deb.debian.org/debian buster/main amd64 mc amd64 3:4.8.22-1 [516 kB]\", \"Get:6 http://deb.debian.org/debian buster/main amd64 shared-mime-info amd64 1.10-1 [766 kB]\", \"Get:7 http://deb.debian.org/debian buster/main amd64 unzip amd64 6.0-23+deb10u1 [172 kB]\", \"Get:8 http://deb.debian.org/debian buster/main amd64 xdg-user-dirs amd64 0.17-2 [53.8 kB]\", \"Fetched 5201 kB in 0s (16.3 MB/s)\", \"Selecting previously unselected package libglib2.0-0:amd64.\", \"(Reading database ... \", \"(Reading database ... 5%\", \"(Reading database ... 10%\", \"(Reading database ... 15%\", \"(Reading database ... 20%\", \"(Reading database ... 25%\", \"(Reading database ... 30%\", \"(Reading database ... 35%\", \"(Reading database ... 40%\", \"(Reading database ... 45%\", \"(Reading database ... 50%\", \"(Reading database ... 55%\", \"(Reading database ... 60%\", \"(Reading database ... 65%\", \"(Reading database ... 70%\", \"(Reading database ... 75%\", \"(Reading database ... 80%\", \"(Reading database ... 85%\", \"(Reading database ... 90%\", \"(Reading database ... 95%\", \"(Reading database ... 100%\", \"(Reading database ... 28088 files and directories currently installed.)\", \"Preparing to unpack .../0-libglib2.0-0_2.58.3-2+deb10u2_amd64.deb ...\", \"Unpacking libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\", \"Selecting previously unselected package libglib2.0-data.\", \"Preparing to unpack .../1-libglib2.0-data_2.58.3-2+deb10u2_all.deb ...\", \"Unpacking libglib2.0-data (2.58.3-2+deb10u2) ...\", \"Selecting previously unselected package libgpm2:amd64.\", \"Preparing to unpack .../2-libgpm2_1.20.7-5_amd64.deb ...\", \"Unpacking libgpm2:amd64 (1.20.7-5) ...\", \"Selecting previously unselected package mc-data.\", \"Preparing to unpack .../3-mc-data_3%3a4.8.22-1_all.deb ...\", \"Unpacking mc-data (3:4.8.22-1) ...\", \"Selecting previously unselected package mc.\", \"Preparing to unpack .../4-mc_3%3a4.8.22-1_amd64.deb ...\", \"Unpacking mc (3:4.8.22-1) ...\", \"Selecting previously unselected package shared-mime-info.\", \"Preparing to unpack .../5-shared-mime-info_1.10-1_amd64.deb ...\", \"Unpacking shared-mime-info (1.10-1) ...\", \"Selecting previously unselected package unzip.\", \"Preparing to unpack .../6-unzip_6.0-23+deb10u1_amd64.deb ...\", \"Unpacking unzip (6.0-23+deb10u1) ...\", \"Selecting previously unselected package xdg-user-dirs.\", \"Preparing to unpack .../7-xdg-user-dirs_0.17-2_amd64.deb ...\", \"Unpacking xdg-user-dirs (0.17-2) ...\", \"Setting up libgpm2:amd64 (1.20.7-5) ...\", \"Setting up xdg-user-dirs (0.17-2) ...\", \"Setting up libglib2.0-0:amd64 (2.58.3-2+deb10u2) ...\", \"No schema files found: doing nothing.\", \"Setting up unzip (6.0-23+deb10u1) ...\", \"Setting up libglib2.0-data (2.58.3-2+deb10u2) ...\", \"Setting up shared-mime-info (1.10-1) ...\", \"Setting up mc-data (3:4.8.22-1) ...\", \"Setting up mc (3:4.8.22-1) ...\", \"update-alternatives: using /usr/bin/mcview to provide /usr/bin/view (view) in auto mode\", \"Processing triggers for man-db (2.8.5-2) ...\", \"Processing triggers for mime-support (3.62) ...\", \"Processing triggers for libc-bin (2.28-10) ...\" ] } Voici le r\u00e9usltat de la ligne de commande relanc\u00e9e (o\u00f9 l'on voit l'action de **ansible** qui ne relance pas l'installation: il v\u00e9rifie que **mc** est d\u00e9j\u00e0 install\u00e9 (clef \"changed\" -> false).) eric@aldebaran:~/Ansible$ ansible -i ./hosts aijan -b --become-method=sudo -m apt -a 'name=mc state=present' -u ericadmin --ask-pass --ssh-extra-args='-o \"PubkeyAuthentication=no\"' --ask-become-pass SSH password: SUDO password[defaults to SSH password]: 192.168.111.48 | SUCCESS => { \"cache_update_time\": 1592657315, \"cache_updated\": false, \"changed\": false } eric@aldebaran:~/Ansible$ Utilisation des playbooks de ansible : Lancer les commandes en ligne de commandes n'est pas tr\u00e8s pratique: ansible permet l'utilisation de fichiers appel\u00e9s playbooks au format yaml qui d\u00e9crivent toutes les actions \u00e0 effectuer. Il suffit de jouer ces playbooks pour lancer toutes les commandes qui s'y trouvent. Il est \u00e9galement possible d'organiser les playbooks en roles , et donc, de cr\u00e9er des playbooks plus courts et lisibles. Continuons \u00e0 voir les \u00e9tapes suivantes avant de cr\u00e9er les playbooks correspondants.","title":"M\u00e9thode avec ansible"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#securisation-de-ssh","text":"Voir le lien suivant: Le blog de Guillaume . Nous ajouterons une deuxi\u00e8me \u00e9tape de s\u00e9curisation avec \"OTP\", \"one time password\". Il y aura donc l'authentification par clef de SSH , avec sa phrase de passe, plus un mot de passe \u00e0 usage unique g\u00e9n\u00e9r\u00e9 par l'application OTP install\u00e9e sur un autre poste, smartphone ou tablette. Nous allons aussi appliquer les recommandations de Mozilla concernant les algorithmes \u00e0 utiliser. Voir ici: Mozilla SSH recommandations","title":"S\u00e9curisation de ssh"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#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. Comme nous g\u00e9rons nous-m\u00eames nos postes et serveurs, nous allons utiliser des algorithmes modernes pour g\u00e9n\u00e9rer les clefs SSH: article sur Tutox . Au lieu d'utiliser la m\u00eame clef SSH sur tous nos serveurs, nous allons g\u00e9n\u00e9rer une clef distincte pour chaque serveur et rajouter la configuration sp\u00e9cifique \u00e0 chaque serveur (adresse, port de connexion,n utilisateur etc ...dans le fichier de configuration du client SSH. J'envisage aussi l'utilisation de certificats SSH qui \u00e9vitent de copier ses clefs publiques SSH sur tous les serveurs. Nous allons impl\u00e9menter tout \u00e7a de mani\u00e8re incr\u00e9mentale, pour savoir ce que nous faisons, et pouvoir rectifier si quelque chose foire :( . Voil\u00e0 donc la structure de notre gestion des clefs SSH: ssh-keygen Il vous faut copier maintenant la clef sur le serveur: ssh-copy-id -i ~/.ssh/id_rsa.pub ericadmin@192.168.111.23 ou ssh-copy-id ericadmin@192.168.111.23 N'oubliez pas de mettre vos identifiants propres, bien s\u00fbr. On teste comme le recommande ssh: eric@aldebaran:~$ ssh 'ericadmin@91.121.72.10' Linux adara 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 Debian GNU/Linux 9 (stretch) Linux adara.yojik.eu 4.9.103-xxxx-std-ipv6-64 #222672 SMP Mon Jun 4 15:16:03 UTC 2018 x86_64 GNU/Linux Server : 141519 IPv4 : 91.121.72.10 IPv6 : 2001:41d0:1:7d0a::1 Hostname : adara.yojik.eu Last login: Sun Jun 24 15:08:32 2018 from 82.64.48.5 Et on teste qu'on peut passer super-utilisateur \u00e0 partir de ce compte. ericadmin@adara:~$ su Mot de passe : root@adara:/home/ericadmin#","title":"Op\u00e9rations \u00e0 effectuer sur le poste principal"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#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), mais j'ai ajout\u00e9 une note sur le changement de port (sugg\u00e9r\u00e9 par Laurent). Je ne suis pas convaincu que le changement de port puisse diminuer la surface d'attaque du serveur, mais pourquoi pas, c'est un changement mineur: Port 22 Nous interdisons la connexion par root : PermitRootLogin no Activation de l'authentification par clef (rien \u00e0 changer dans le fichier): PubkeyAuthentication yes Nous ajoutons une liste d'utilisateurs autoris\u00e9s \u00e0 se connecter. AllowUsers ericadmin A la place de ericadmin mettez bien s\u00fbr le nom de l'utilisateur que vous avez entr\u00e9 pendant la phase d'installation. Nous pouvons limiter le nombre de tentatives de connexion: MaxAuthTries 1 Interdiction de la connexion par couple login/mot de passe: PasswordAuthentication no D\u00e9sactivation de PAM UsePAM no Sauvegarde du fichier de configuration. (commande escape, suivie de ZZ pour vim) Red\u00e9marrage du service ssh systemctl restart sshd","title":"Op\u00e9rations \u00e0 effectuer sur le serveur en mode super-utilisateur."},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#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' Last login: Sun Dec 17 16:37:40 2017 from 192.168.111.150 ericadmin@atom:~$ Voil\u00e0 pour la premi\u00e8re phase. Note : Il est possible de changer le port d'\u00e9coute de SSH en changeant celui-ci dans le fichier de configuration **/etc/ssh/sshd_config: Faites la modification suivante: vim /etc/ssh/sshd_config Port 2222 Et relancez sshd: service sshd restart Pour se connecter, utilsez la commande suivante: ssh -p 2222 ericadmin@192.168.111.23","title":"Test de connexion"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#securisation-plus-pousse-de-ssh","text":"Les r\u00e9centes attaques sur les m\u00e9thodes de chiffrage imposent l'utilisation de clef de chiffrement plus \u00e9volu\u00e9es. Les anciennes ont des failles. Le site de Mozilla nous permet d'ajuster nos configurations et d'utiliser les meilleures m\u00e9thodes de chiffrement actuelles.","title":"S\u00e9curisation plus pouss\u00e9 de SSH"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#deuxieme-phase","text":"","title":"Deuxi\u00e8me phase"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#securisation-des-mots-de-passe","text":"J'utilise un g\u00e9n\u00e9rateur de mots de passe pour le compte root et le compte ericadmin . Il 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":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#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 oow1Osho teM3chai Aim5shee Sheme1yo aiR6aem1 Vooxeiv0 Iabeenu1 kae7Xie5 oacei4aV Ohb8ceib zo0shu6F Dob2chie Roo5eeLa fee5Nooh Phi0suim OMeigh2w nah2Ool5 Saix6lie EeNaem5u ooVoh3ki IN5aeF9p CuHu8Aib vaim2Jia chah0Ier ShieC6ze Teex4tie mei6ou7I Ath6aiFe uw4quoHa lad8Quee ohQuai9Y Sho5Eem6 aoCaol3W ooGah9th bix6Aic9 thee1Coo lie0ahTe eiz0iiSh cieYu8Ie Ealu3chi vaeYee6c ahje9aeJ Sheenee7 eesh1Iez Odaa6kah aico6Jah aphahP4U aYePh1ev phohNie8 Chuut3ie eeb9ieDa ohp9AhGi efae5ooV Shiere5c ahV8riek Seegohv1 Eetohy1a Lievoh0k jox3uf6K chai3Woo iecoh0Iu ieGh9tuz UMeex2ah Eathaur8 Ood2oeho paeSah0p jaihoo1U eemoi9Ee ile1So4z OongeiN6 aaY9iuch ew3Iemoo Iech0Eey OoMie0ah OhBei1ae Ohsh4aik jah0faiT ioW7oz6t yee1Uphu ies4eeNa pooP8eeg iePoh4ya fooL3uqu ieGiej1X Ein7eifu ool7Olae eub5ooSe eyo8EiNu ach9ohWo Foog9Oev aej9geiH Thahg6Di eegei4Ai eN7quu3b waiK2ieg foThe7zi fu2Phoug iYaeg4if iLu6eeFi Aeshoo0i uxoGh6no id1TeRei diob7Pha vokuuN7h Chokei8J Iemee8ah eingei0E ubieh2Ch daiyu3EB QueiQu6H Jib0uwee wi9Xoodu eeL3osh2 Eo3Ae1ch bieWui2a ro6chiCo engu0ooF Eebeu2jo ee7Eey8t EiSeen5i ohNgai6i Iutaez4a xah1yeeG eGhi5Ouz vaiYu6ee fae0AeP5 jee0Ib2I OS3xuwae Eefohp1u eegiK6ae ohyuom7V Eij8eeNi Ou0ec7ye Eethoh4e eeHi2ugh ichoLae3 UT8oopoo oox6Ohx9 ohbaL2hu oht9kaiR Ieho8Ou1 Ten6saet cae7Iexi daDuas9e ShiexaT7 Lei6etii ea4aoH8y ja8Zai8g phaeG6Hi sheNg8ee Oow5phae aa7gohPi nahS8Eeg ba6Roh9j ooRo6epo pheNoam1 johF7ii9 vuZ4Latu xai5og6H aeS8hu2I eric@aldebaran:~$ Vous pouvez prendre le mot de passe que vous voulez dans le tableau g\u00e9n\u00e9r\u00e9. Pour un seul mot de passe: eric@aldebaran:~$ pwgen -1 Eerai4Sh Pour un mot de passe mieux s\u00e9curis\u00e9: eric@aldebaran:~$ pwgen -1 -s tx2CqGyf Encore plus s\u00e9curis\u00e9 avec l'option -y: eric@aldebaran:~$ pwgen -1 -s -y a+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":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#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":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#securisation-du-mot-de-passe-administrateur","text":"Utilisez un des utilitaires ci-dessus. Attention \u00e0 la longueur minimale! Sous le user \u201croot\u201d, tapez: passwd pour changer le mot de passe root.","title":"S\u00e9curisation du mot de passe administrateur"},{"location":"5-Premi%C3%A8re-Etape-S%C3%A9curisation/#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 atom root@atom:/home/ericadmin# root@atom:/home/ericadmin# hostname -f atom.yojik.net root@atom:/home/ericadmin# Le r\u00e9sultat est bon.","title":"Test du hostname"}]}