浏览代码

Ajout procédures installation issues de Guide-origin-Linux

lauhub 10 月之前
父节点
当前提交
f19fadd403

+ 224 - 0
gnu-linux/serveurs/installation/RAID5_LUKS_LVM_Configuration.md

@@ -0,0 +1,224 @@
+
+# Mise en place d'un RAID5 avec LUKS et LVM sous Linux
+
+## Le plan
+
+
+- installer un raid5
+- installer les partitions
+  - une partition pour grub de 1Mo
+  - une partition pour le déchiffrement de 511Mo
+  - une seule partition pour Proxmox en ext4 (même si ZFS est recommandé, il a plus d'overhead, voir Annexes)
+- chiffrer avec luks
+  - il semble que le meilleur algo de chiffrement soit aes-cbc (moins bon en écriture que aes-xts mais meilleur en lecture)
+- 
+- Installer Debian
+
+
+
+## Contexte : RAID5 avec 3 disques de 2 To
+Vous souhaitez configurer un RAID5 sur un serveur Linux, avec un chiffrement LUKS, une gestion par LVM et un système de fichiers ext4. Voici les détails et la procédure complète pour atteindre cet objectif.
+
+---
+
+## 1. RAID : Partitionner ou non les disques ?
+### Faut-il partitionner les disques avant de configurer le RAID ?
+
+**Non, il n'est pas nécessaire de partitionner les disques**. Voici pourquoi :
+- **RAID 5** fonctionne mieux avec des disques utilisés dans leur totalité, sans partitionnement, ce qui simplifie la gestion et optimise les performances.
+- **LUKS** et **LVM** offrent toute la flexibilité nécessaire sans qu’il soit nécessaire de partitionner.
+- Ajouter des partitions pourrait compliquer la configuration et n’apporterait aucun avantage significatif en termes de sécurité ou de performances.
+
+### Pourquoi cette approche est optimale ?
+- Simplicité d’administration.
+- Performances maximales.
+- Réduction des risques d’erreurs.
+
+---
+
+## Benchmark
+
+Voir: https://forum.proxmox.com/threads/adding-full-disk-encryption-to-proxmox.137051/
+
+```
+# cryptsetup benchmark
+# Tests are approximate using memory only (no storage IO).
+PBKDF2-sha1      1232169 iterations per second for 256-bit key
+PBKDF2-sha256    1661768 iterations per second for 256-bit key
+PBKDF2-sha512    1209430 iterations per second for 256-bit key
+PBKDF2-ripemd160  742617 iterations per second for 256-bit key
+PBKDF2-whirlpool  469792 iterations per second for 256-bit key
+argon2i       7 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
+argon2id      6 iterations, 1048576 memory, 4 parallel threads (CPUs) for 256-bit key (requested 2000 ms time)
+#     Algorithm |       Key |      Encryption |      Decryption
+        aes-cbc        128b       629.9 MiB/s      2288.7 MiB/s
+    serpent-cbc        128b        90.4 MiB/s       319.0 MiB/s
+    twofish-cbc        128b       199.1 MiB/s       377.3 MiB/s
+        aes-cbc        256b       474.5 MiB/s      1721.4 MiB/s
+    serpent-cbc        256b        91.0 MiB/s       319.8 MiB/s
+    twofish-cbc        256b       200.6 MiB/s       377.0 MiB/s
+        aes-xts        256b      1959.3 MiB/s      1952.9 MiB/s
+    serpent-xts        256b       312.3 MiB/s       301.9 MiB/s
+    twofish-xts        256b       347.3 MiB/s       353.8 MiB/s
+        aes-xts        512b      1538.7 MiB/s      1523.3 MiB/s
+    serpent-xts        512b       317.4 MiB/s       302.0 MiB/s
+    twofish-xts        512b       352.9 MiB/s       354.8 MiB/s
+```
+
+
+### Capacité CPU
+
+Voir : https://www.cyberciti.biz/faq/linux-xen-vmware-kvm-intel-vt-amd-v-support/
+
+```
+less /etc/cpuinfo 
+```
+
+Vérifier si aes est présent (chiffrement)
+
+Vérifier si lm (64 bits)
+
+Vérifier si vmx (Intel) ou svm (AMD) sont activés
+
+Ou
+
+```
+# lscpu | grep VT
+Virtualization:      VT-x
+```
+
+
+## 2. Configuration complète : RAID → LUKS → LVM → ext4
+
+
+### Étape 0: système de boot
+
+1.	Réservez une petite partition (généralement 1 Go) sur chaque disque pour /boot.
+•	Exemple : partitionnez /dev/sd[b-d] en deux :
+•	Une partition de 1 Go pour /boot (ex. /dev/sdb1, /dev/sdc1, /dev/sdd1).
+•	Le reste du disque pour le RAID5.
+2.	Configurez /boot avec RAID1 pour la redondance :
+
+sudo mdadm --create --verbose /dev/md1 --level=1 --raid-devices=3 /dev/sd[b-d]1
+
+   •	RAID1 garantit que même si un disque tombe en panne, le système peut toujours démarrer.
+
+3.	Formatez la partition RAID1 en ext4 :
+
+sudo mkfs.ext4 /dev/md1
+
+
+4.	Montez cette partition comme /boot :
+
+5. Installer le système de démarrage (voir kimsufi.md)
+
+### Étape 1 : Créer le RAID 5
+```bash
+sudo mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sd[b-d]
+```
+- Laissez le RAID se synchroniser après la création.
+
+### Étape 2 : Ajouter le chiffrement LUKS
+1. Initialiser le chiffrement LUKS sur le RAID :
+   ```bash
+   sudo cryptsetup luksFormat /dev/md0
+   ```
+
+2. Ouvrir le conteneur chiffré :
+   ```bash
+   sudo cryptsetup open /dev/md0 raid_crypt
+   ```
+
+### Étape 3 : Configurer LVM
+1. Initialiser LVM sur le conteneur LUKS :
+   ```bash
+   sudo pvcreate /dev/mapper/raid_crypt
+   sudo vgcreate vg_raid /dev/mapper/raid_crypt
+   ```
+
+2. Créer des volumes logiques :
+   ```bash
+   sudo lvcreate -L 1.5T -n lv_root vg_raid
+   sudo lvcreate -L 500G -n lv_home vg_raid
+   ```
+
+### Étape 4 : Formater et monter les volumes
+1. Formater en ext4 :
+   ```bash
+   sudo mkfs.ext4 /dev/vg_raid/lv_root
+   sudo mkfs.ext4 /dev/vg_raid/lv_home
+   ```
+
+2. Monter les volumes :
+   ```bash
+   sudo mount /dev/vg_raid/lv_root /mnt
+   sudo mkdir /mnt/home
+   sudo mount /dev/vg_raid/lv_home /mnt/home
+   ```
+
+3. Ajouter les entrées dans `/etc/fstab` pour un montage automatique au démarrage.
+
+---
+
+## 3. Vérification de la prise en charge AES-NI
+
+Les extensions AES-NI permettent d’accélérer le chiffrement et le déchiffrement des données avec LUKS.
+
+### Méthode 1 : Vérification via `/proc/cpuinfo`
+```bash
+cat /proc/cpuinfo | grep -i aes
+```
+- Si `aes` apparaît dans les `flags`, AES-NI est pris en charge.
+
+### Méthode 2 : Utiliser `lscpu`
+```bash
+lscpu | grep -i aes
+```
+- Une ligne avec `AES : Supported` confirme la prise en charge.
+
+### Méthode 3 : Outil `cpuid`
+1. Installer l’outil :
+   ```bash
+   sudo apt install cpuid  # Pour Debian/Ubuntu
+   sudo dnf install cpuid  # Pour Fedora/CentOS
+   ```
+
+2. Vérifier la prise en charge AES :
+   ```bash
+   cpuid | grep -i aes
+   ```
+
+### Méthode 4 : Vérification avec `dmesg`
+```bash
+dmesg | grep -i aes
+```
+- Si AES-NI est actif, le noyau Linux le mentionnera.
+
+### Importance d’AES-NI
+AES-NI améliore considérablement les performances pour le chiffrement de données, notamment pour **LUKS**, **SSL/TLS**, et les systèmes chiffrés. Si AES-NI n’est pas disponible, le chiffrement sera réalisé en mode logiciel, ce qui est moins performant.
+
+
+## Annexes
+
+
+
+* [Best practices question (Ext4/zfs/raw/qcow2) | Proxmox Support Forum](https://forum.proxmox.com/threads/best-practices-question-ext4-zfs-raw-qcow2.142094/)
+* [ZFS and EXT4 mixed? | Proxmox Support Forum](https://forum.proxmox.com/threads/zfs-and-ext4-mixed.66730/)
+* [ZFS or something else? | Proxmox Support Forum](https://forum.proxmox.com/threads/zfs-or-something-else.73917/)
+
+### Ressources RAID
+
+* [Quel RAID pour protéger efficacement mes données ? Du RAID0 au RAID5](https://www.chronodisk-recuperation-de-donnees.ca/blog/quel-raid-pour-proteger-efficacement-mes-donnees/)
+* [RAID 5 – is it pointless (for large drives)? : r/storage](https://www.reddit.com/r/storage/comments/fascry/raid_5_is_it_pointless_for_large_drives/)
+* [linux - How to increase speed of RAID 5 with mdadm + luks + lvm - Server Fault](https://serverfault.com/questions/1081766/how-to-increase-speed-of-raid-5-with-mdadm-luks-lvm)
+* [linux - Best order of RAID, LVM and LUKS - Super User](https://superuser.com/questions/1193290/best-order-of-raid-lvm-and-luks)
+* [How to install Ubuntu with LUKS Encryption on LVM](https://gist.github.com/superjamie/d56d8bc3c9261ad603194726e3fef50f)
+* [linux - How to add RAID5 to existing crypto-LVM? - Unix & Linux Stack Exchange](https://unix.stackexchange.com/questions/74427/how-to-add-raid5-to-existing-crypto-lvm)
+* [How to Create a RAID 5 System With LVM Tool and Recover Data After Failures / Habr](https://habr.com/en/companies/hetmansoftware/articles/547086/)
+* [Créer un Espace de Stockage Fiable avec RAID 5 et LVM sous Linux | Kevin Deldycke](https://kevin.deldycke.com/2005/creer-un-espace-de-stockage-fiable-avec-raid-5-et-lvm-sous-linux)
+* [Raid 5 configuration Question : r/sysadmin](https://www.reddit.com/r/sysadmin/comments/13sltai/raid_5_configuration_question/)
+* [partitioning - Is it better to partition hard drives for a RAID? - Super User](https://superuser.com/questions/382748/is-it-better-to-partition-hard-drives-for-a-raid)
+* [hard drive - Are different RAID levels on the same physical disks possible? Does it make sense to include RAID 1 and RAID 5 on the same disks? - Super User](https://superuser.com/questions/1579024/are-different-raid-levels-on-the-same-physical-disks-possible-does-it-make-sens)
+* [RAID (informatique) — Wikipédia](https://fr.wikipedia.org/wiki/RAID_(informatique))
+* [Mdadm — Wikipédia](https://fr.wikipedia.org/wiki/Mdadm)
+* [Using mdadm to send e-mail alerts for RAID failures | Support | SUSE](https://www.suse.com/support/kb/doc/?id=000016716)

+ 444 - 0
gnu-linux/serveurs/installation/kimsufi.md

@@ -0,0 +1,444 @@
+% Chiffrement d'un serveur Kimsufi
+
+# Sources
+
+- [Full disk encrypted Ubuntu on Kimsufi sever / opsblog.net](https://opsblog.net/posts/full-disk-encrypted-ubuntu-kimsufi-sever/)
+
+
+# Démarrage du mode Rescue
+
+Éteindre proprement le serveur depuis l'invite de commande
+
+## Sur l'interface de gestion Kimsufi
+
+1. Cliquer sur `NetBoot`
+2. Cliquer sur le bouton `Rescue`
+3. Sélectionner `rescue64-pro` dans l'interface (ou laisser tel quel)
+4. Cliquer sur le bouton `Suivant`
+5. Cliquer sur le bouton `Confirmer`
+
+Il faut maintenant redémarrer le serveur
+
+6. Cliquer sur le bouton `Redémarrer` situé à gauche du bouton `NetBoot`
+
+Attendre la réception du mail indiquant les identifiants de connexion.
+
+## Connexion SSH en mode Rescue
+
+Utiliser les identifiants envoyés pour se connecter via SSH.
+
+```bash
+root@rescue:~#
+```
+
+:::important
+
+Dans ce qui suit, les données seront effacées.
+
+**Penser à faire une sauvegarde de toutes vos données**
+
+:::
+
+# Partitionnement, formatage et chiffrement
+
+## Effacement
+
+:::warning
+
+Vérifier vos sauvegardes
+
+:::
+
+```bash
+wipefs -a /dev/sda
+```
+
+
+## Partitionnement
+
+Création de la partition MBR
+
+```bash
+parted -a optimal /dev/sda mklabel msdos
+```
+
+Création de la partition de démarrage
+
+```bash
+# Create first 512MiB partition
+parted /dev/sda -a optimal mkpart primary 0% 512MiB
+```
+
+Création de la partition principale
+
+```bash
+# Create partition in remaining disk space
+parted /dev/sda -a optimal mkpart primary 512MiB 100%
+```
+
+Définition de la partition bootable (`sda1`)
+
+```bash
+parted /dev/sda set 1 boot on
+```
+
+## Préparation du système d'installation
+
+### Installation des paquets
+
+```bash
+apt update && apt install -y cryptsetup lvm2 debian-keyring
+```
+
+
+### Debootstrap de Debian
+
+On va sur la page correspondant à la distribution à installer:
+
+[Debian -- Package Download Selection -- debootstrap_1.0.123_all.deb](https://packages.debian.org/bullseye/all/debootstrap/download)
+
+Récupération du paquet:
+
+```bash
+wget http://ftp.fr.debian.org/debian/pool/main/d/debootstrap/debootstrap_1.0.123_all.deb
+```
+
+On l'exécute:
+
+```bash
+dpkg -i debootstrap*.deb && rm -f debootstrap*.deb
+```
+
+## Formattage
+
+```bash
+mkfs.ext4 /dev/sda1
+```
+
+## Création du volume chiffré
+
+```bash
+cryptsetup -q -s 512 -c aes-xts-plain64 luksFormat /dev/sda2
+```
+
+
+```bash
+cryptsetup luksDump /dev/sda2 | grep UUID | awk '{print $2}'
+```
+
+:::information
+
+Récupérer l'UUID, il servira plus tard: le noter précieusement
+
+:::
+
+
+```bash
+cryptsetup luksOpen /dev/sda2 root
+mkfs.ext4 /dev/mapper/root
+mount /dev/mapper/root /mnt
+```
+
+## Préparation montage pour boot
+
+```bash
+mkdir /mnt/boot
+mount /dev/sda1 /mnt/boot
+```
+
+```bash
+apt install -y debian-keyring
+debootstrap --arch amd64 stable /mnt https://deb.debian.org/debian/
+```
+
+
+# Chroot et configuration
+
+```bash
+mount -o bind /dev /mnt/dev
+mount -t proc proc /mnt/proc
+mount -t sysfs sys /mnt/sys
+```
+
+
+## Chroot
+
+Execute command:
+
+```bash
+chroot /mnt /bin/bash
+```
+
+### Installation de `ifupdown`
+
+```
+sudo apt install ifupdown
+```
+
+Configuration des interfaces réseau:
+
+```bash
+cat << EOF > /etc/network/interfaces
+auto lo
+iface lo inet loopback
+
+auto eth0
+allow-hotplug eth0
+iface eth0 inet dhcp
+EOF
+
+cat << EOF > /etc/resolv.conf
+nameserver 8.8.8.8
+nameserver 8.8.4.4
+EOF
+
+
+_hostname=caladan
+_domain=aezi.fr
+echo "$_hostname" > /etc/hostname
+
+echo "127.0.1.1 $_hostname.$_domain $_hostname" >> /etc/hosts
+```
+
+
+### Configuration de l'heure
+
+```bash
+echo "Europe/Paris" > /etc/timezone
+dpkg-reconfigure -f noninteractive tzdata
+```
+
+### Configuration du gestionnaire APT
+
+```bash
+cat << EOF > /etc/apt/sources.list
+deb http://deb.debian.org/debian bullseye main contrib non-free
+deb-src http://deb.debian.org/debian bullseye main contrib non-free
+
+deb http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
+deb-src http://deb.debian.org/debian-security/ bullseye-security main contrib non-free
+
+deb http://deb.debian.org/debian bullseye-updates main contrib non-free
+deb-src http://deb.debian.org/debian bullseye-updates main contrib non-free
+
+deb http://deb.debian.org/debian  bullseye-backports main contrib non-free
+deb-src http://deb.debian.org/debian  bullseye-backports main contrib non-free
+EOF
+```
+
+### Désactivation de l'installation des paquest suggérés/recommandés
+
+```bash
+cat << EOF > /etc/apt/apt.conf.d/999aptsettings
+APT::Install-Recommends "0";
+APT::Install-Suggests "0";
+EOF
+```
+
+
+# Installation des paquets nécessaires
+
+```bash
+apt update
+```
+
+
+```bash
+apt install -y busybox console-setup cryptsetup dropbear grub-pc initramfs-tools kbd linux-image-amd64 linux-perf locales ssh dropbear-initramfs cryptsetup-initramfs
+```
+
+```bash
+mkdir /root/.ssh && chmod 600 /root/.ssh
+mkdir /etc/dropbear-initramfs/ && chmod 600 /etc/dropbear-initramfs/
+echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEyzZAymNeWxeDjSUzkyEJLzwGqZt+VvdmidomWL0QLb lauhub@Mac-15-Laurent.local" >> /root/.ssh/authorized_keys
+
+echo "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEyzZAymNeWxeDjSUzkyEJLzwGqZt+VvdmidomWL0QLb lauhub@Mac-15-Laurent.local" >> /etc/dropbear-initramfs/authorized_keys
+
+echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIyit1IimUJbT7ZnVfUiGZb49uZJnTTHVSWFxCiBdiwKm9kVXUiegxbTH+Mks1a0qdYVJgA1yHmfoZTEoDlJbqgZ82xY8ZNh1bBTrHUXqE3tAcIdM1Sn8lm1zoxUOnGlOdDNG5QvteY+BceIZq9dn8e3XYmhDuZ5YpkM1Dp/4hWTkxmpjhMvT7JKyE+r2/TYLOUatm4tl7ythDzMINciWKsNGCYderf1fhRPmgInPJlOS0bdOCxOivVmdq6lnB++hfRdu/fDQIdr1R7GyxunqwVWhCtTHKyuIgcuDCAKQTDGKgwwuVQ2SJOPjNvSPz5I4B2UBBRxhecAjR6o5smzuV laurent.hubert@aezi.fr" >> /etc/dropbear-initramfs/authorized_keys
+echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDIyit1IimUJbT7ZnVfUiGZb49uZJnTTHVSWFxCiBdiwKm9kVXUiegxbTH+Mks1a0qdYVJgA1yHmfoZTEoDlJbqgZ82xY8ZNh1bBTrHUXqE3tAcIdM1Sn8lm1zoxUOnGlOdDNG5QvteY+BceIZq9dn8e3XYmhDuZ5YpkM1Dp/4hWTkxmpjhMvT7JKyE+r2/TYLOUatm4tl7ythDzMINciWKsNGCYderf1fhRPmgInPJlOS0bdOCxOivVmdq6lnB++hfRdu/fDQIdr1R7GyxunqwVWhCtTHKyuIgcuDCAKQTDGKgwwuVQ2SJOPjNvSPz5I4B2UBBRxhecAjR6o5smzuV laurent.hubert@aezi.fr">> /root/.ssh/authorized_keys
+```
+
+```bash
+sed -i.old s/GRUB_CMDLINE_LINUX=\"\"/GRUB_CMDLINE_LINUX=\"net.ifnames=0\ biosdevname=0\ ip=:::::eth0:dhcp\"/g /etc/default/grub
+```
+
+
+# Dropbear configuration
+
+
+[LUKS encryption: Enable remote ssh unlocking - iotechonline](https://iotechonline.com/luks-encryption-enable-remote-ssh-unlocking/)
+
+On va configurer Dropbear en éditant le fichier `/etc/dropbear-initramfs/config`
+
+On y place les options suivantes:
+
+
+```bash
+DROPBEAR_OPTIONS="-p 64357 -s -j -k -I 60"
+```
+
+
+:::information
+
+J'ai essayé cela, mais cela ne boote pas après avoir déverrouillé et on reste bloqué dans l'initramfs:
+
+```
+#GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0 ip=dhcp rd.neednet=1"
+GRUB_CMDLINE_LINUX="break=mount net.ifnames=0 biosdevname=0 ip=dhcp"
+```
+
+[initrd - How can I force a Ubuntu kernel to fail mounting / and drop into the initramfs rescue shell? - Unix & Linux Stack Exchange](https://unix.stackexchange.com/questions/71754/how-can-i-force-a-ubuntu-kernel-to-fail-mounting-and-drop-into-the-initramfs-r)
+
+:::
+
+[Re: IP configuration with dhcp &mdash; Linux Initramfs](https://www.spinics.net/lists/linux-initramfs/msg04115.html)
+
+[11.6. Consistent Network Device Naming Using biosdevname Red Hat Enterprise Linux 7 | Red Hat Customer Portal](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-consistent_network_device_naming_using_biosdevname)
+
+
+Édition:
+
+```bash
+nano /etc/initramfs-tools/initramfs.conf
+```
+
+Changer:
+
+```
+BUSYBOX=auto
+```
+
+En :
+
+```
+BUSYBOX=y
+```
+
+Et ajouter
+
+```
+DROPBEAR=y
+```
+
+Modification du UUID de grub:
+
+```bash
+GRUB_DEVICE_UUID=b0c29427-58a9-4249-ac28-65b5ca5ff454
+```
+
+Éventuellement essayer:
+
+```bash
+#GRUB_DISABLE_LINUX_UUID=true
+```
+
+
+
+```bash
+update-grub && update-initramfs -u -k all
+```
+
+### Réparation de grub ???
+
+```bash
+grub-mkconfig -o /boot/grub/grub.cfg
+grub-install /dev/sda
+```
+
+## Démontage
+
+
+```bash
+exit
+```
+
+Puis :
+
+```bash
+umount /mnt/{boot,dev,proc,sys}
+umount /mnt
+cryptsetup luksClose root
+```
+
+# Dépannage en cas de non démarrage
+
+## Remontage
+
+```bash
+cryptsetup luksOpen /dev/sda2 root
+```
+
+Saisir passphrase
+
+
+```bash
+mount /dev/mapper/root /mnt
+mkdir /mnt/boot
+mount /dev/sda1 /mnt/boot
+mount -o bind /dev /mnt/dev
+mount -t proc proc /mnt/proc
+mount -t sysfs sys /mnt/sys
+chroot /mnt /bin/bash
+```
+
+# Les fingerprints du serveur
+
+```
+256 SHA256:8j3WCkyhX10xNjWC7Yc54ZbhPlr9aoP7lWL7gxo36lM root@rescue.ovh.net (ECDSA)
+root@rescue:/# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
+256 SHA256:qOyLf0akhO3B0OOS/TFzsrOegE7IkQ6uthWSI1nvAIE root@rescue.ovh.net (ED25519)
+root@rescue:/# ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
+3072 SHA256:e+riHM3n7uYYswwwfXFjGflHGugvAxl8jY0NXbZ6CW0 root@rescue.ovh.net (RSA)
+```
+
+# Déverrouillage du serveur caladan
+
+```bash
+ssh kimunlock
+cryptroot-unlock 
+```
+
+---aoff
+
+```
+root@rescue:/# 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: bond0: <BROADCAST,MULTICAST,MASTER> mtu 1500 qdisc noop state DOWN group default qlen 1000
+    link/ether 02:13:99:4b:11:83 brd ff:ff:ff:ff:ff:ff
+3: dummy0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
+    link/ether 0e:15:d8:d1:a7:ab brd ff:ff:ff:ff:ff:ff
+4: ifb0: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 32
+    link/ether 32:4b:d6:0e:a8:a6 brd ff:ff:ff:ff:ff:ff
+5: ifb1: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 32
+    link/ether 6a:1e:f2:cc:2d:de brd ff:ff:ff:ff:ff:ff
+6: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
+    link/ether 00:22:4d:aa:76:1a brd ff:ff:ff:ff:ff:ff
+    inet 37.187.3.102/24 brd 37.187.3.255 scope global eth0
+       valid_lft forever preferred_lft forever
+    inet6 2001:41d0:a:366::1/128 scope global
+       valid_lft forever preferred_lft forever
+    inet6 fe80::222:4dff:feaa:761a/64 scope link
+       valid_lft forever preferred_lft forever
+7: teql0: <NOARP> mtu 1500 qdisc noop state DOWN group default qlen 100
+    link/void
+8: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
+    link/ipip 0.0.0.0 brd 0.0.0.0
+9: gre0@NONE: <NOARP> mtu 1476 qdisc noop state DOWN group default qlen 1000
+    link/gre 0.0.0.0 brd 0.0.0.0
+10: gretap0@NONE: <BROADCAST,MULTICAST> mtu 1476 qdisc noop state DOWN group default qlen 1000
+    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
+11: erspan0@NONE: <BROADCAST,MULTICAST> mtu 1464 qdisc noop state DOWN group default qlen 1000
+    link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
+12: sit0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1000
+    link/sit 0.0.0.0 brd 0.0.0.0
+13: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1000
+    link/tunnel6 :: brd :: permaddr 5ec5:5fd5:2816::
+root@rescue:/# ip r
+default via 37.187.3.254 dev eth0
+37.187.3.0/24 dev eth0 proto kernel scope link src 37.187.3.102
+```

+ 327 - 0
gnu-linux/serveurs/installation/post-configuration.md

@@ -0,0 +1,327 @@
+% Post configuration du serveur chiffré
+
+# Sécurité
+
+## Installation des mises à jour de sécurité automatiques
+
+```bash
+sudo apt-get install unattended-upgrades
+```
+
+## Installation de fail2ban
+
+```bash
+sudo apt install fail2ban
+```
+
+
+# Docker
+
+## Procédure
+
+Voir cette page: [Install Docker Engine on Debian | Docker Documentation](https://docs.docker.com/engine/install/debian/)
+
+
+# Installation Moodle
+
+## Préparation
+
+Voir [Tutorial - Moodle installation on Nginx - Step by step](https://techexpert.tips/moodle/moodle-installation-nginx/)
+
+```bash
+sudo apt-get install nginx graphviz aspell ghostscript clamav git mlocate  mariadb-server mariadb-client php-fpm php-cli php-mysql php-mbstring php-xmlrpc php-zip php-gd php-xml php-bcmath php-ldap php-pspell php-curl php-intl php-soap
+sudo updatedb
+locate php.ini
+sudo nano /etc/php/7.4/fpm/php.ini
+sudo cp /etc/php/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/www.conf.original
+sudo nano /etc/php/7.4/fpm/pool.d/www.conf
+
+```
+
+
+```bash
+```
+
+## Lets Encrypt
+
+```bash
+sudo apt install certbot python3-certbot-nginx
+sudo ufw allow http
+sudo ufw allow https
+sudo certbot certonly --nginx -d moodle.aezi.fr
+```
+
+
+## MariaDB
+
+```bash
+sudo mysql -u root -p
+```
+
+```bash
+CREATE DATABASE moodle DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
+CREATE USER 'moodle'@'localhost' IDENTIFIED BY 'GESTIONNAIRE_MDP';
+GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,CREATE TEMPORARY TABLES,DROP,INDEX,ALTER ON moodle.* TO moodle@localhost;
+quit;
+```
+
+
+## Installation Moodle
+
+Après la dernière phase d'installation ça bloque
+
+```
+Erreur
+
+Ce site est en phase de mise à jour. Veuillez réessayer plus tard
+```
+
+Je lance donc depuis le répertoire /var/www/moodle/moodle la commande suivante (source: [Moodle en français: Ce site est en phase de mise à jour. Veuillez essayer plus tard. ](https://moodle.org/mod/forum/discuss.php?d=210499)):
+
+```bash
+sudo -u www-data php admin/cli/upgrade.php --non-interactive
+```
+
+Fichier /etc/php/7.4/fpm/php.ini
+
+```
+[PHP]
+engine = On
+short_open_tag = Off
+precision = 14
+output_buffering = 4096
+zlib.output_compression = Off
+implicit_flush = Off
+unserialize_callback_func =
+serialize_precision = -1
+disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
+disable_classes =
+zend.enable_gc = On
+zend.exception_ignore_args = On
+expose_php = Off
+max_execution_time = 300
+max_input_time = 300
+max_input_vars = 5000
+memory_limit = 256M
+error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
+display_errors = Off
+display_startup_errors = Off
+log_errors = On
+log_errors_max_len = 1024
+ignore_repeated_errors = Off
+ignore_repeated_source = Off
+report_memleaks = On
+variables_order = "GPCS"
+request_order = "GP"
+register_argc_argv = Off
+auto_globals_jit = On
+post_max_size = 32M
+auto_prepend_file =
+auto_append_file =
+default_mimetype = "text/html"
+default_charset = "UTF-8"
+doc_root =
+user_dir =
+enable_dl = Off
+file_uploads = On
+upload_max_filesize = 2M
+max_file_uploads = 20
+allow_url_fopen = On
+allow_url_include = Off
+default_socket_timeout = 60
+[CLI Server]
+cli_server.color = On
+[Date]
+date.timezone =Europe/Paris
+
+[Pdo_mysql]
+pdo_mysql.default_socket=
+[Phar]
+[mail function]
+SMTP = localhost
+smtp_port = 25
+mail.add_x_header = Off
+[ODBC]
+odbc.allow_persistent = On
+odbc.check_persistent = On
+odbc.max_persistent = -1
+odbc.max_links = -1
+odbc.defaultlrl = 4096
+odbc.defaultbinmode = 1
+[MySQLi]
+mysqli.max_persistent = -1
+mysqli.allow_persistent = On
+mysqli.max_links = -1
+mysqli.default_port = 3306
+mysqli.default_socket =
+mysqli.default_host =
+mysqli.default_user =
+mysqli.default_pw =
+mysqli.reconnect = Off
+[mysqlnd]
+mysqlnd.collect_statistics = On
+mysqlnd.collect_memory_statistics = Off
+[OCI8]
+[PostgreSQL]
+pgsql.allow_persistent = On
+pgsql.auto_reset_persistent = Off
+pgsql.max_persistent = -1
+pgsql.max_links = -1
+pgsql.ignore_notice = 0
+pgsql.log_notice = 0
+[bcmath]
+bcmath.scale = 0
+[Session]
+session.save_handler = files
+session.use_strict_mode = 0
+session.use_cookies = 1
+session.use_only_cookies = 1
+session.name = PHPSESSID
+session.auto_start = 0
+session.cookie_lifetime = 0
+session.cookie_path = /
+session.cookie_domain =
+session.cookie_httponly =
+session.cookie_samesite =
+session.serialize_handler = php
+session.gc_probability = 0
+session.gc_divisor = 1000
+session.gc_maxlifetime = 1440
+session.referer_check =
+session.cache_limiter = nocache
+session.cache_expire = 180
+session.use_trans_sid = 0
+session.sid_length = 26
+session.trans_sid_tags = "a=href,area=href,frame=src,form="
+session.sid_bits_per_character = 5
+[Assertion]
+zend.assertions = -1
+
+[Tidy]
+tidy.clean_output = Off
+[soap]
+soap.wsdl_cache_enabled=1
+soap.wsdl_cache_dir="/tmp"
+soap.wsdl_cache_ttl=86400
+soap.wsdl_cache_limit = 5
+[ldap]
+ldap.max_links = -1
+```
+
+
+---aoff
+
+```bash
+sudo nano /etc/php/7.4/fpm/php.ini
+ sudo cp /etc/php/7.4/fpm/pool.d/www.conf /etc/php/7.4/fpm/pool.d/www.conf.original
+ sudo nano /etc/php/7.4/fpm/pool.d/www.conf
+ less /etc/nginx/sites-enabled/default
+ sudo certbot
+ sudo apt search certbot
+ sudo apt install certbot
+ ping moodle.aezi.fr
+ sudo systemctl status nginx
+ less /etc/nginx/sites-enabled/default
+ sudo nginx -s reload
+ less /etc/nginx/sites-enabled/default
+ ll /var/www/html
+ sudo ufw
+ sudo iptables -L
+ sudo su -
+ sudo ufw allow http
+ sudo ufw allow https
+ sudo ufw status
+ sudo certbot-auto certonly --nginx -d www.aezi.fr
+ sudo certbot certonly --nginx -d www.aezi.fr
+ sudo apt install certbot-nginx
+ sudo apt search certbot
+ sudo apt install python3-certbot-nginx
+ sudo certbot certonly --nginx -d www.aezi.fr
+ sudo certbot certonly --nginx -d moodle.aezi.fr
+ history
+ sudo nano /etc/nginx/sites-available/moodle.aezi.fr
+ sudo mkdir -p /var/www/moodle/ /var/www/moodle/data/
+ cd /var/www/moodle/
+ cd -
+ ll
+ tar xzf moodle-latest-400.tgz -C /var/www/moodle/4.0.4+
+ sudo mkdir /var/www/moodle/4.0.4+
+ sudo tar xzf moodle-latest-400.tgz -C /var/www/moodle/4.0.4+
+ sudo tar xf moodle-latest-400.tgz -C /var/www/moodle/4.0.4+
+ file moodle-latest-400.tgz
+ sudo apt search file
+ sudo apt install file
+ file moodle-latest-400.tgz
+ rm moodle-latest-400.tgz
+ wget https://download.moodle.org/stable400/moodle-latest-400.tgz
+ sudo tar xf moodle-latest-400.tgz -C /var/www/moodle/4.0.4+
+ cd /var/www/moodle/
+ ll
+ sudo ln -s 4.0.4+/ site
+ sudo nano /etc/nginx/sites-available/moodle.aezi.fr
+ ll /etc/letsencrypt/live/aezi.fr/fullchain.pem;
+ sudo ls -ll /etc/letsencrypt/live/aezi.fr/fullchain.pem;
+ sudo ls -ll /etc/letsencrypt/live/
+ ll /etc/letsencrypt/live/moodle.aezi.fr/fullchain.pem;
+ sudo ls -ll /etc/letsencrypt/live/moodle.aezi.fr/fullchain.pem;
+ sudo nano /etc/nginx/sites-available/moodle.aezi.fr
+ sudo nginx -t
+ cd /etc/nginx/sites-enabled/
+ sudo ln -s ../sites-available/moodle.aezi.fr
+ sudo nginx -t
+ cd
+ sudo systemctl status
+ sudo systemctl php-fpm restart
+ sudo systemctl restart php-fpm
+ sudo service php-fpm restart
+ sudo service php7.4-fpm restart
+ sudo nginx -s reload
+ sudo systemctl restart nginx
+ sudo apt install acl
+ sudo setfacl -R -m u:www-data:rwX /var/www/moodle/
+ sudo setfacl -d -R -m u:www-data:rwX /var/www/moodle/
+ getfacl /var/www/moodle
+ sudo chown www-data:www-data -R /var/www/moodle/
+ ll /var/www/moodle/
+ sudo mysql -u root -p
+ sudo nano /etc/nginx/sites-available/moodle.aezi.fr
+ ll /var/www/moodle/site/
+ ll /var/www/moodle/site/moodle
+ sudo nano /etc/nginx/sites-available/moodle.aezi.fr
+ sudo nginx -s reload
+ cd /var/www/moodle/
+ ll
+ rm site
+ sudo rm site
+ sudo mv data moodledata
+ sudo rm site
+ ll
+ sudo mv 4.0.4+/ site
+ sudo mv site/moodle/ .
+ ll
+ ll site
+ rmdir site
+ sudo rmdir site
+ sudo nano /etc/nginx/sites-available/moodle.aezi.fr
+ ll
+ sudo nano /etc/nginx/sites-available/moodle.aezi.fr
+ sudo nginx -s reload
+ sudo nano /etc/php/7.4/fpm/php.ini
+ sudo service php-fpm restart
+ sudo service php7.4-fpm restart
+ top
+ less /var/log/nginx/access.log
+ sudo less /var/log/nginx/access.log
+ sudo less /var/log/nginx/error.log.log
+ sudo less /var/log/nginx/error.log
+ sudo nano /etc/php/7.4/fpm/php.ini
+ top
+ sudo -u www-data php admin/cli/upgrade.php --non-interactive
+ cd moodle
+ ll
+ sudo -u www-data php admin/cli/upgrade.php --non-interactive
+ top
+ sudo -u www-data php admin/cli/upgrade.php --non-interactive
+ top
+ history | awk '{$1=""; print}'
+ ```

+ 108 - 0
gnu-linux/serveurs/installation/swap_chiffre.md

@@ -0,0 +1,108 @@
+
+# Chiffrement non persistant pour un swap sur plusieurs partitions
+
+Il est possible de combiner un chiffrement **non persistant** avec un swap réparti sur plusieurs partitions. Chaque partition sera chiffrée individuellement avec une clé aléatoire générée au démarrage (via `/dev/urandom`), puis ces partitions seront activées comme des espaces de swap indépendants.
+
+---
+
+## Configuration d'un swap chiffré non persistant sur plusieurs partitions
+
+### **1. Désactiver les swaps existants**
+Avant de configurer le nouveau swap, désactivez toutes les partitions swap actuellement actives :
+```bash
+sudo swapoff -a
+```
+
+---
+
+### **2. Chiffrer chaque partition de manière non persistante**
+
+Pour chaque partition de swap (par exemple `/dev/sdb1`, `/dev/sdc1`, `/dev/sdd1`), configurez un chiffrement non persistant avec **dm-crypt**.
+
+#### Exemple pour une partition `/dev/sdb1` :
+
+1. **Créer une couche de chiffrement temporaire :**
+   ```bash
+   sudo cryptsetup open --type plain --cipher aes-xts-plain64 --key-file /dev/urandom /dev/sdb1 cryptswap1
+   ```
+   - **`--type plain`** : Utilise un chiffrement simple (sans métadonnées).
+   - **`--cipher aes-xts-plain64`** : Définit l'algorithme de chiffrement (AES avec XTS, souvent recommandé pour les performances).
+   - **`--key-file /dev/urandom`** : Génère une clé aléatoire à chaque démarrage.
+
+2. **Formater le périphérique mappé en swap :**
+   ```bash
+   sudo mkswap /dev/mapper/cryptswap1
+   ```
+
+3. **Activer le swap :**
+   ```bash
+   sudo swapon /dev/mapper/cryptswap1
+   ```
+
+4. **Répétez les étapes 1 à 3 pour chaque partition** (par exemple `/dev/sdc1`, `/dev/sdd1`), en remplaçant `cryptswap1` par des noms uniques comme `cryptswap2`, `cryptswap3`, etc.
+
+---
+
+### **3. Ajouter une configuration automatique (optionnelle)**
+
+Pour automatiser cette configuration au démarrage, modifiez les fichiers suivants :
+
+#### **Dans `/etc/crypttab` :**
+Ajoutez une ligne pour chaque partition swap chiffrée, comme suit :
+```plaintext
+cryptswap1 /dev/sdb1 /dev/urandom cipher=aes-xts-plain64,size=256
+cryptswap2 /dev/sdc1 /dev/urandom cipher=aes-xts-plain64,size=256
+cryptswap3 /dev/sdd1 /dev/urandom cipher=aes-xts-plain64,size=256
+```
+
+#### **Dans `/etc/fstab` :**
+Ajoutez une ligne pour chaque périphérique mappé :
+```plaintext
+/dev/mapper/cryptswap1 none swap sw 0 0
+/dev/mapper/cryptswap2 none swap sw 0 0
+/dev/mapper/cryptswap3 none swap sw 0 0
+```
+
+---
+
+### **4. Activer et vérifier la configuration**
+
+1. Rechargez les configurations et activez les swaps :
+   ```bash
+   sudo systemctl restart systemd-cryptsetup@cryptswap1.service
+   sudo systemctl restart systemd-cryptsetup@cryptswap2.service
+   sudo systemctl restart systemd-cryptsetup@cryptswap3.service
+   ```
+
+2. Vérifiez l'état des swaps :
+   ```bash
+   swapon --show
+   lsblk -o NAME,TYPE,SIZE,MOUNTPOINT,FSTYPE
+   ```
+
+   Vous devriez voir que chaque partition chiffrée est activée en tant que swap.
+
+---
+
+## Avantages de cette configuration :
+1. **Chiffrement sécurisé** :
+   - Le swap est chiffré avec une clé aléatoire à chaque démarrage, garantissant que les données précédentes ne sont pas récupérables.
+2. **Utilisation simultanée des partitions** :
+   - Linux répartira automatiquement les écritures entre les différentes partitions de swap (en fonction de leur priorité).
+3. **Simplicité d'automatisation** :
+   - Une fois configurée, cette solution fonctionne automatiquement sans intervention de l'utilisateur.
+
+---
+
+## Points à surveiller :
+- **Performances** :
+  - Si les partitions sont sur des disques de vitesses différentes, le disque le plus lent peut devenir un goulot d'étranglement.
+- **Priorités** :
+  - Vous pouvez définir des priorités dans `/etc/fstab` pour influencer la répartition de la charge entre les partitions. Par exemple :
+    ```plaintext
+    /dev/mapper/cryptswap1 none swap sw,pri=10 0 0
+    /dev/mapper/cryptswap2 none swap sw,pri=5 0 0
+    /dev/mapper/cryptswap3 none swap sw,pri=1 0 0
+    ```
+
+Avec cette approche, votre swap sera réparti sur plusieurs partitions, sécurisé par chiffrement non persistant, et configuré pour un usage optimal par le système.