Mercredi 1er avril 2020 (Modifié le Mercredi 1er avril 2020)

VirtualBox

Debian Buster

Debian 10

  • Serveur virtuel 64 bits VirtualBox : Debian Buster
  • machine : vmbust
  • domaine :
  • root : ytreu49
  • Utilisateur : bust
  • Mot de passe : bust49
  • Adresse IP : 192.168.0.49
  • Accès
    • SSH : **ssh bust@192.168.0.49**
    • SSH + clé : ssh -i ~/.ssh/vbox-vmbust-ed25519 bust@192.168.0.49 (facultatif)
    • Transfert de fichier : scp -P 55022 -i ~/.ssh/vbox-vmbust-ed25519 fichiera fichierb bust@192.168.0.49:/home/bust (facultatif)

Image debian Buster avec VirtualBox

Pour info

VBoxManage startvm 'Debian Buster' --type headless  # Lancement VM sans l'application graphique 
VBoxManage controlvm 'Debian Buster' poweroff        # Pour arrêter une VM
VBoxManage controlvm 'Debian Buster' pause           # Pour mettre en pause une VM
VBoxManage controlvm 'Debian Buster' reset           # Pour réinitialiser une VM

Connexion SSH

ssh bust@192.168.0.49

Passer en root

su 

Mise à jour

apt update && apt upgrade -y

Installer sudo

apt install sudo

Visudo pour les accès root via utilisateur bust

echo "bust     ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

Connexion ssh avec clé (facultatif)

Ajouter le contenu de la clé publique vbox-vmbust-ed25519.pub au fichier ~/.ssh/authorized_keys
Droit en lecture utilisateur uniquement, chmod 400 ~/.ssh/authorized_keys
Modification configuration serveur ssh , /etc/ssh/sshd_config -> PasswordAuthentication no
Relancer le service sudo systemctl restart sshd

VBox Additions Invité/Debian

Préalable
Configurer votre machine virtuelle pour un accès au réseau partagé.
'’Configuration’’ –> ‘‘Dossiers partagés’‘
Ajouter le dossier et cocher '’Montage automatique’‘

Texte alternatif

Texte alternatif

Installer les additions client dans un Debian en cours d’exécution dans une machine virtuelle.

  • Installez gcc ,make et kernel headers (installateur a besoin d’eux pour construire le module du noyau):
    • sudo apt install gcc make linux-headers-$(uname -r)
  • Allez dans le menu '’Périphériques’’ –> ‘‘Insérer l’image des additions invité…’‘ de la machine virtuelle en cours d’exécution ,si non présent , la télécharger.
  • Monter le cd dans la machine virtuelle : sudo mount /dev/cdrom /media/cdrom
  • Allez dans le dossier monté : cd /media/cdrom
  • Exécutez : sudo ./VBoxLinuxAdditions.run
    • Pas d’environnement graphique : ne pas tenir compte de l'erreur '’Could not find the X.Org or XFree86 Window System, skipping.’‘
  • Il faut ajouter le group vboxsf à votre utilisateur : sudo usermod -a -G vboxsf $USER
  • Pour la prise en compte, redémarrer la machine virtuelle : sudo reboot

/media/ est le répertoire qui contient le(s) dossier(s) partagé(s) Dans notre cas /media/sf_Partage

OpenSSH, clé et script

OpenSSH

connexion avec clé
sur l'ordinateur de bureau Générer une paire de clé curve25519-sha256 (ECDH avec Curve25519 et SHA2) nommé vbox-vmbust-ed25519 pour une liaison SSH avec le serveur KVM.

ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/vbox-vmbust-ed25519

Envoyer la clé publique sur le serveur KVM

scp ~/.ssh/vbox-vmbust-ed25519.pub bust@192.168.0.49:/home/bust/

sur le serveur KVM On se connecte

ssh bust@192.168.0.49

Copier le contenu de la clé publique dans /home/$USER/.ssh/authorized_keys

cd ~

Sur le KVM ,créer un dossier .ssh

mkdir .ssh
cat $HOME/vbox-vmbust-ed25519.pub >> $HOME/.ssh/authorized_keys

et donner les droits

chmod 600 $HOME/.ssh/authorized_keys

effacer le fichier de la clé

rm $HOME/vbox-vmbust-ed25519.pub

Modifier la configuration serveur SSH

Port = 55045 # changement numéro port , facultatif
PermitRootLogin no # Connexion par root NON autorisée
PasswordAuthentication no # Utilise la clé comme authentification

Exécuter les commande ci-dessous

#sudo sed -i 's/#Port 22/Port 55022/g' /etc/ssh/sshd_config
sudo sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin no/g' /etc/ssh/sshd_config
sudo sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/g' /etc/ssh/sshd_config

session SSH ne se termine pas correctement lors d'un "reboot" à distance
Si vous tentez de redémarrer/éteindre une machine distance par ssh, vous pourriez constater que votre session ne se termine pas correctement, vous laissant avec un terminal inactif jusqu’à l’expiration d’un long délai d’inactivité. Il existe un bogue 751636 à ce sujet. Pour l’instant, la solution de contournement à ce problème est d’installer :

sudo apt-get install libpam-systemd  # Installé par défaut sur debian buster

cela terminera la session ssh avant que le réseau ne tombe.
Veuillez noter qu’il est nécessaire que PAM soit activé dans sshd.

Relancer openSSH

sudo systemctl restart sshd

Accès depuis le poste distant avec la clé privée

ssh -i ~/.ssh/vbox-vmbust-ed25519 bust@192.168.0.49

script ssh_rc

Installer les utilitaires curl jq figlet

sudo apt install jq figlet

Le batch

nano ~/ssh_rc
#!/bin/bash

get_infos() {
    seconds="$(< /proc/uptime)"
    seconds="${seconds/.*}"
    days="$((seconds / 60 / 60 / 24)) jour(s)"
    hours="$((seconds / 60 / 60 % 24)) heure(s)"
    mins="$((seconds / 60 % 60)) minute(s)"
    
    # Remove plural if < 2.
    ((${days/ *} == 1))  && days="${days/s}"
    ((${hours/ *} == 1)) && hours="${hours/s}"
    ((${mins/ *} == 1))  && mins="${mins/s}"
    
    # Hide empty fields.
    ((${days/ *} == 0))  && unset days
    ((${hours/ *} == 0)) && unset hours
    ((${mins/ *} == 0))  && unset mins
    
    uptime="${days:+$days, }${hours:+$hours, }${mins}"
    uptime="${uptime%', '}"
    uptime="${uptime:-${seconds} seconds}"

   if [[ -f "/sys/devices/virtual/dmi/id/board_vendor" ||
                    -f "/sys/devices/virtual/dmi/id/board_name" ]]; then
	model="$(< /sys/devices/virtual/dmi/id/board_vendor)"
	model+=" $(< /sys/devices/virtual/dmi/id/board_name)"
   fi

   if [[ -f "/sys/devices/virtual/dmi/id/bios_vendor" ||
                    -f "/sys/devices/virtual/dmi/id/bios_version" ]]; then
        bios="$(< /sys/devices/virtual/dmi/id/bios_vendor)"
        bios+=" $(< /sys/devices/virtual/dmi/id/bios_version)"
        bios+=" $(< /sys/devices/virtual/dmi/id/bios_date)"
   fi
}

#clear
PROCCOUNT=`ps -Afl | wc -l`  		# nombre de lignes
PROCCOUNT=`expr $PROCCOUNT - 5`		# on ote les non concernées
GROUPZ=`users`
ipinfo=$(curl -s ipinfo.io) 		# info localisation format json
#ipinfo=$(curl -s iplocality.com) 		# info localisation format json
publicip=$(echo $ipinfo | jq -r '.ip')  # extraction des données , installer préalablement "jq"
ville=$(echo $ipinfo | jq -r '.city')
pays=$(echo $ipinfo | jq -r '.country')
cpuname=`cat /proc/cpuinfo |grep 'model name' | cut -d: -f2 | sed -n 1p`
iplink=`ip link show |grep -m 1 "2:" | awk '{print $2}' | cut -d: -f1`

if [[ $GROUPZ == *irc* ]]; then
ENDSESSION=`cat /etc/security/limits.conf | grep "@irc" | grep maxlogins | awk {'print $4'}`
PRIVLAGED="IRC Account"
else
ENDSESSION="Unlimited"
PRIVLAGED="Regular User"
fi
get_infos
logo=$(figlet "`hostname --fqdn`")
meteo=$(curl fr.wttr.in/$ville?0)
lvm_entet="Sys. de fichiers                      Taille Utilisé Dispo Uti% Monté sur"
lvm=$(df -h |grep mapper)
distri=$(lsb_release -sd)
distri+=" $(uname -m)"

echo -e "
\e[1;31m$logo
\e[1;35m   \e[1;37mHostname \e[1;35m= \e[1;32m`hostname`
\e[1;35m \e[1;37mWired IpV4 \e[1;35m= \e[1;32m`ip addr show $iplink | grep 'inet\b' | awk '{print $2}' | cut -d/ -f1`
\e[1;35m \e[1;37mWired IpV6 \e[1;35m= \e[1;32m`ip addr show $iplink | grep -E 'inet6' |grep -E 'scope link' | awk '{print $2}' | cut -d/ -f1`
\e[1;35m     \e[1;37mKernel \e[1;35m= \e[1;32m`uname -r`
\e[1;35m    \e[1;37mDistrib \e[1;35m= \e[1;32m$distri
\e[1;35m     \e[1;37mUptime \e[1;35m= \e[1;32m`echo $uptime`
\e[1;35m       \e[1;37mBios \e[1;35m= \e[1;32m`echo $bios`
\e[1;35m      \e[1;37mBoard \e[1;35m= \e[1;32m`echo $model`
\e[1;35m        \e[1;37mCPU \e[1;35m= \e[1;32m`echo $cpuname`
\e[1;35m \e[1;37mMemory Use \e[1;35m= \e[1;32m`free -m | awk 'NR==2{printf "%s/%sMB (%.2f%%)\n", $3,$2,$3*100/$2 }'`
\e[1;35m   \e[1;37mUsername \e[1;35m= \e[1;32m`whoami`
\e[1;35m   \e[1;37mSessions \e[1;35m= \e[1;32m`who | grep $USER | wc -l`
\e[1;35m\e[1;37mPublic IpV4 \e[1;35m= \e[1;32m`echo $publicip`
\e[1;35m\e[1;37mPublic IpV6 \e[1;35m= \e[1;32m`ip addr show $iplink | grep -m 1 'inet6\b'  | awk '{print $2}' | cut -d/ -f1`
\e[1;35m\e[1;96m$lvm_entet\e[1;35m\e[1;49m
\e[1;35m\e[1;33m$lvm
\e[1;0m
"

Rendre exécutable

chmod +x ~/ssh_rc

Certificats SSL letsencrypt (acme)

SSL Letsencrypt

Prérequis

sudo apt install socat # prérequis

Installation gestionnaire des certificats Let’s Encrypt

cd ~
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install 

Se déconnecter puis se reconnecter pou la prise en compte

Se connecter sur l’api OVH pour les paramètres (clé et secret)

export OVH_AK="votre application key"
export OVH_AS="votre application secret"

Domaine ouestline.xyz

acme.sh --dns dns_ovh --issue --ocsp --keylength ec-384 -d 'ouestline.xyz' -d '*.ouestline.xyz'

Les certificats

[lundi 30 mars 2020, 20:06:43 (UTC+0200)] Your cert is in  /home/bust/.acme.sh/ouestline.xyz_ecc/ouestline.xyz.cer 
[lundi 30 mars 2020, 20:06:43 (UTC+0200)] Your cert key is in  /home/bust/.acme.sh/ouestline.xyz_ecc/ouestline.xyz.key 
[lundi 30 mars 2020, 20:06:43 (UTC+0200)] The intermediate CA cert is in  /home/bust/.acme.sh/ouestline.xyz_ecc/ca.cer 
[lundi 30 mars 2020, 20:06:43 (UTC+0200)] And the full chain certs is there:  /home/bust/.acme.sh/ouestline.xyz_ecc/fullchain.cer 

Les liens pour les certificats

SSL

sudo ln -s/home/bust/.acme.sh/ouestline.xyz_ecc/ouestline.xyz.cer /etc/ssl/private/ouestline.xyz-chain.pem   # cert domain
sudo ln -s /home/bust/.acme.sh/ouestline.xyz_ecc/ouestline.xyz.key /etc/ssl/private/ouestline.xyz-key.pem     # cert key
sudo ln -s /home/bust/.acme.sh/ouestline.xyz_ecc/ca.cer /etc/ssl/private/ouestline.xyz-ca.pem                 # intermediate CA cert
sudo ln -s /home/bust/.acme.sh/ouestline.xyz_ecc/fullchain.cer /etc/ssl/private/ouestline.xyz-fullchain.pem   # full chain certs

Unbound - DNS

Unbound est un résolveur DNS validateur, cache, récursif développé par NLnet Labs, VeriSign Inc., Nominet, et Kirei. Le logiciel est distribué sous licence BSD.Article Résolveur DNS Unbound

Procédure d’installlation

sudo -s 

Désinstaller bind

apt remove --purge bind* -y
rm -r /var/cache/bind/

Installation des outils dns et du paquet Unbound

apt install dnsutils unbound -y

Téléchargement de la liste des serveurs DNS racines

curl -o /var/lib/unbound/root.hints https://www.internic.net/domain/named.cache
chown unbound:unbound /var/lib/unbound/root.hints

Configuration

nano /etc/unbound/unbound.conf.d/dns-yan.conf
server:
 interface: 0.0.0.0                          # 0.0.0.0 unbound sur plusieurs interfaces
 interface: ::0
 access-control: 0.0.0.0/0 allow
 access-control: ::/0 allow
 root-hints: "/var/lib/unbound/root.hints"
 verbosity: 0                                # 0 messages (erreurs uniquement)
 #qname-minimisation: yes

 num-threads: 2
 msg-cache-slabs: 4
 rrset-cache-slabs: 4
 infra-cache-slabs: 4
 key-cache-slabs: 4
 rrset-cache-size: 100m
 msg-cache-size: 50m
 outgoing-range: 465
 so-rcvbuf: 4m
 so-sndbuf: 4m
 port: 53
 do-ip4: yes
 do-ip6: yes
 do-udp: yes
 do-tcp: yes
 do-daemonize: yes
 hide-identity: yes
 hide-version: yes
 harden-glue: yes
 harden-dnssec-stripped: yes
 harden-referral-path: yes
 use-caps-for-id: yes
 prefetch: yes

Relancer

systemctl restart unbound

Vérifier

dig @127.0.0.1 afnic.fr +short +dnssec
192.134.5.37
A 13 2 600 20200421135554 20200322040944 30435 afnic.fr. bbJXO8MqWgRSVUBf9WVlJZnqaPM5cSAtsRNfWQs0KhLjiy7+ve++r6wU STIQX/Y2a1XothyVIY67zx2h54KgvA==
A 13 2 600 20200421135554 20200322040944 31668 afnic.fr. BT6nLfvbtwMtj+rZinpVaf5HVkPFsj84I6IYHeZAEKR29KX7nDBYU4OW NodYr62JRfKxK5PcvzLZHvOE2ITZRQ==

Nginx

Compilation Nginx + OpenSSL (TLS v1.3) + PHP7.4 + MariaDB

Si tout est OK

nginx version: nginx/1.16.1
OpenSSL 1.1.1d  10 Sep 2019
mysql  Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
Mot de passe MySql/MariaDB : /etc/mysql/mdp
PHP 7.4.4 (cli) (built: Mar 20 2020 14:30:40) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.4, Copyright (c), by Zend Technologies

NFS

NFS client

Installation

sudo apt install nfs-server

Les partages sur PC1

sudo showmount -e 192.168.0.28
Export list for 192.168.0.28:
/home/yannick/Partage              192.168.0.0/24
/home/yannick/media/dplus/statique 192.168.0.0/24
/home/yannick/media/devel          192.168.0.0/24

autofs

Montage auto pour la gestion des cartes

sudo apt install autofs

Modifier le fichier /etc/auto.master

sudo nano /etc/auto.master
+auto.master
/var/www/nfs        /etc/auto.nfs --ghost

Créer le fichier /etc/auto.nfs

sudo nano /etc/auto.nfs
devel -fstype=nfs,rw,uid=1000,guid=1000,rsize=8192,wsize=8192  192.168.0.28:/home/yannick/media/devel

Créer dossier et Recharger

sudo mkdir -p /var/www/nfs
sudo systemctl restart autofs

Vérifier

ls /var/www/nfs/devel
#   lamalle  ouestline  topoview  yannick

Docker

“Docker” + “Docker Compose” sur Debian Buster, installation et utilisation
Suivre les procédures énoncées en suivant le lien ci-dessus…

Snapshot

Les versions au 27 mars 2020
Docker version 19.03.8, build afacb8b7f0
docker-compose version 1.22.0, build f46880fe

Gestion machine virtuelle VM “Debian Buster”

en ligne de commande

Démarrer la machine virtuelle VM en ligne de commande sans interface graphique VirtualBox

VBoxManage startvm "Debian Buster" --type headless

Arrêter une VM

VBoxManage controlvm "Debian Buster" poweroff

Mettre en pause une VM

VBoxManage controlvm "Debian Buster" pause

Réinitialiser une VM

VBoxManage controlvm "Debian Buster" reset

En savoir plus sur VBoxHeadless, regardez

VBoxHeadless --help 

Créer un service systemd

Le but est de lancer l’image virtuelle au démarrage de la machine
Création d’un service utilisateur

$ mkdir -p ~/.config/systemd/user
$ nano ~/.config/systemd/user/debian-buster-virtuel.service
[Unit]
Description=debian Buster vm service
After=network.target vboxdrv.service

[Service]
ExecStart=/usr/bin/vboxheadless -s 'Debian Buster'
ExecStop=/usr/bin/vboxmanage controlvm 'Debian Buster' poweroff

[Install]
WantedBy=default.target

Relancer systemd utilisateur

$ systemctl --user daemon-reload

Activer pour un démarrage auto

systemctl enable --user debian-buster-virtuel.service

Sinon lancer le serveur virtuel “Debian Buster”

systemctl start --user debian-buster-virtuel.service

Instantanées (Snapshot)

Création instantanée Base Debian Buster + Partage + Clés SSH
Mise à jour debian buster
Les instantanées

  • Debian 10.1
  • Docker + Docker compose
  • vmbust 2020-03-30

Restaurer Snapshot vmbust 2020-03-30

Démarrage avec le service utilisateur sur PC1

systemctl --user start debian-buster-virtuel

Accès SSH

ssh -i ~/.ssh/vbox-vmbust-ed25519 bust@192.168.0.49

motd

sudo rm /etc/motd && sudo nano /etc/motd
      _  ___  ___     _   __  ___     __    _ _   ___        
     / |/ _ \|_  )   / | / / ( _ )   /  \  | | | / _ \       
     | |\_, / / /  _ | |/ _ \/ _ \ _| () |_|_  _|\_, /       
     |_| /_/ /___|(_)|_|\___/\___/(_)\__/(_) |_|  /_/        
  ___  _  _  ___  ___| |_ | |(_) _ _   ___    __ __ _  _  ___
 / _ \| || |/ -_)(_-<|  _|| || || ' \ / -_) _ \ \ /| || ||_ /
 \___/ \_,_|\___|/__/ \__||_||_||_||_|\___|(_)/_\_\ \_, |/__|
                                                    |__/     

Modifier Adressage ipv6

La carte n’est joignable de l’internet que par son adresse IPV6
NextHop Freebox permet d’attribuer une adresse IPV6
Adresse IPV6 Box fe80::224:d4ff:fea6:aa20
Préfixe 2a01:e34:ee6a:b274::/64
NextHop fe80::a00:27ff:fe96:9d94

sudo nano /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp0s3
iface enp0s3 inet dhcp
# This is an autoconfigured IPv6 interface
# iface enp0s3 inet6 auto
iface enp0s3 inet6 static
  address 2a01:e34:ee6a:b274::1
  netmask 64
  post-up ip -6 route add default via fe80::224:d4ff:fea6:aa20 dev enp0s3

Redémarrer la machine

sudo systemctl reboot

Vérifier l’adresse inet6 : ip addr

Vérifier DNS

Le domaine ouestline.xyz pointe sur l’adresse IPV6 2a01:e34:ee6a:b274::1

depuis un poste distant
ping -6 -c5 2a01:e34:ee6a:b274::1
ping -6 -c5 ouestline.xyz

OVH

$TTL 3600
@	IN SOA dns111.ovh.net. tech.ovh.net. (2018110102 86400 3600 3600000 300)
         3600 IN NS     ns111.ovh.net.
         3600 IN NS     dns111.ovh.net.
         3600 IN AAAA   2a01:e34:ee6a:b274::1
*        3600 IN CNAME  ouestline.xyz.

Regénérer les Certificats SSL letsencrypt (acme)

Domaine ouestline.xyz

acme.sh --dns dns_ovh --issue --ocsp --keylength ec-384 -d 'ouestline.xyz' -d '*.ouestline.xyz'

Les certificats

[mardi 31 mars 2020, 14:58:19 (UTC+0200)] Your cert is in  /home/bust/.acme.sh/ouestline.xyz_ecc/ouestline.xyz.cer 
[mardi 31 mars 2020, 14:58:19 (UTC+0200)] Your cert key is in  /home/bust/.acme.sh/ouestline.xyz_ecc/ouestline.xyz.key 
[mardi 31 mars 2020, 14:58:19 (UTC+0200)] The intermediate CA cert is in  /home/bust/.acme.sh/ouestline.xyz_ecc/ca.cer 
[mardi 31 mars 2020, 14:58:19 (UTC+0200)] And the full chain certs is there:  /home/bust/.acme.sh/ouestline.xyz_ecc/fullchain.cer 

Les liens pour les certificats

Effacer les anciens liens

sudorm /etc/ssl/private/ouestline*

Etablir les nouveaux liens

sudo ln -s /home/bust/.acme.sh/ouestline.xyz_ecc/ouestline.xyz.cer /etc/ssl/private/ouestline.xyz-chain.pem   # cert domain
sudo ln -s /home/bust/.acme.sh/ouestline.xyz_ecc/ouestline.xyz.key /etc/ssl/private/ouestline.xyz-key.pem     # cert key
sudo ln -s /home/bust/.acme.sh/ouestline.xyz_ecc/ca.cer /etc/ssl/private/ouestline.xyz-ca.pem                 # intermediate CA cert
sudo ln -s /home/bust/.acme.sh/ouestline.xyz_ecc/fullchain.cer /etc/ssl/private/ouestline.xyz-fullchain.pem   # full chain certs

Vérifier Unbound - DNS

Vérifier

dig @127.0.0.1 afnic.fr +short +dnssec
192.134.5.37
A 13 2 600 20200421135554 20200322040944 30435 afnic.fr. bbJXO8MqWgRSVUBf9WVlJZnqaPM5cSAtsRNfWQs0KhLjiy7+ve++r6wU STIQX/Y2a1XothyVIY67zx2h54KgvA==
A 13 2 600 20200421135554 20200322040944 31668 afnic.fr. BT6nLfvbtwMtj+rZinpVaf5HVkPFsj84I6IYHeZAEKR29KX7nDBYU4OW NodYr62JRfKxK5PcvzLZHvOE2ITZRQ==

Modifier les dossiers NFS et Web

Modifier le fichier /etc/auto.master

sudo nano /etc/auto.master
+auto.master
/var/www/nfs        /etc/auto.nfs --ghost

Créer dossier et Recharger

sudo mkdir -p /var/www/nfs
sudo systemctl restart autofs

Vérifier

ls /var/www/nfs/devel

SSL + Diffie-Hellmann + Entêtes + OCSP

En mode su

  • ssl (tls1.2 tls1.3) , Headers et OCSP
  • Diffie-Hellman : openssl dhparam -out /etc/ssl/private/dh2048.pem -outform PEM -2 2048
  • Accès par certificats clients (option)

Regroupement dans le fichier /etc/nginx/ssl_dh_header_ocsp

    ##
    # SSL Settings
    ##
    ssl_certificate /etc/ssl/private/ouestline.xyz-fullchain.pem;
    ssl_certificate_key /etc/ssl/private/ouestline.xyz-key.pem;
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions
    ssl_session_tickets off;

    ssl_dhparam /etc/ssl/private/dh2048.pem;

    # intermediate configuration
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_prefer_server_ciphers off;

    # Add headers to serve security related headers
    add_header X-Content-Type-Options nosniff;
    add_header X-XSS-Protection "1; mode=block";
    add_header X-Robots-Tag none;
    add_header X-Download-Options noopen;
    add_header X-Permitted-Cross-Domain-Policies none;
    add_header X-Frame-Options "SAMEORIGIN"; 
    add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains;';
    add_header Referrer-Policy "no-referrer" always;


    # OCSP settings
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /etc/ssl/private/ouestline.xyz-fullchain.pem;
    #ssl_trusted_certificate /etc/ssl/private/ocsp-certs.pem;
    resolver 127.0.0.1;

On change le dossier racine

 mkdir -p /var/www/default-www

Configuration de base avec SSL et sécurité + letsencrypt (renouvellement)

 nano /etc/nginx/conf.d/ouestline.xyz.conf
server {
    listen 80;
    listen [::]:80;

    ## redirect http to https ##
    server_name ouestline.xyz;
    return  301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name ouestline.xyz;

    ####    Locations
    # On cache les fichiers statiques
    location ~* \.(html|css|js|png|jpg|jpeg|gif|ico|svg|eot|woff|ttf)$ { expires max; }
    # On interdit les dotfiles
    location ~ /\. { deny all; }

    include ssl_dh_header_ocsp;

    root /var/www/default-www ;
    index index.php index.html index.htm;
        location ~ \.php$ {
           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           fastcgi_pass unix:/run/php/php7.4-fpm.sock;   # PHP7.4
           fastcgi_index index.php;
           include fastcgi_params;
	   fastcgi_param SCRIPT_FILENAME $request_filename;
        }

    # if folder ouestline.xyz.d , uncomment the following directive
    #include conf.d/ouestline.xyz.d/*.conf;

    access_log /var/log/nginx/ouestline.xyz-access.log;
    error_log /var/log/nginx/ouestline.xyz-error.log;
}

Un fichier index

echo "<html>ouestline.xyz</html>" > /var/www/default-www/index.html

Vérifier

nginx -t

Relancer

systemctl reload nginx

Test redirection http/https avec curl depuis un poste distant

curl -I ouestline.xyz
HTTP/1.1 301 Moved Permanently
Server: nginx/1.16.1
Date: Tue, 31 Mar 2020 13:26:46 GMT
Content-Type: text/html
Content-Length: 169
Connection: keep-alive
Location: https://ouestline.xyz/

Tester le lien https://ouestline.xyz

Vérifier les entêtes depuis un autre poste

curl -I https://ouestline.xyz
HTTP/2 200 
server: nginx/1.16.1
date: Tue, 31 Mar 2020 13:26:13 GMT
last_modified_at: 2020-04-01
content-type: text/html
content-length: 27
last-modified: Tue, 31 Mar 2020 13:23:34 GMT
etag: "5e834456-1b"
expires: Thu, 31 Dec 2037 23:55:55 GMT
cache-control: max-age=315360000
x-content-type-options: nosniff
x-xss-protection: 1; mode=block
x-robots-tag: none
x-download-options: noopen
x-permitted-cross-domain-policies: none
x-frame-options: SAMEORIGIN
strict-transport-security: max-age=31536000; includeSubDomains;
referrer-policy: no-referrer
accept-ranges: bytes

Vhost dev.ouestline.xyz

Effacer les configurations d’un précédent snapshot

sudo rm /etc/nginx/conf.d/*conf

Pour le développement

sudo nano /etc/nginx/conf.d/dev.ouestline.xyz.conf 
server {
    listen 80;
    listen [::]:80;

    ## redirect http to https ##
    server_name dev.ouestline.xyz;
    return  301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name dev.ouestline.xyz;
    
    include ssl_dh_header_ocsp;
    
    root /var/www/nfs/devel/ ;

        location / {
          fancyindex on;              # Enable fancy indexes.
          fancyindex_exact_size off;  # Output human-readable file sizes.
        }

    index index.html index.php;
        location ~ \.php$ {
           fastcgi_split_path_info ^(.+\.php)(/.+)$;
           fastcgi_pass unix:/run/php/php7.4-fpm.sock;   # PHP7.4
           fastcgi_index index.php;
           include fastcgi_params;
           fastcgi_param SCRIPT_FILENAME $request_filename;
        }
}

Vérifier et relancer

sudo nginx -t
sudo systemctl reload nginx

Le développement , dossier /home/yannick/media/devel/
Le lien https://dev.ouestline.xyz

Mise en cache nginx OCSP , pour éviter erreur firefox à la première connexion

Arrêter le serveur virtuel

sudo systemctl poweroff

Effectuer un snapshot VirtualBox nommé vmbust 2020-03-31
Redémarrer avec le service utilisateur

systemctl --user restart debian-buster-virtuel

Snapshot vmbust 2020-03-31

Suite…