Afficher/cacher Sommaire
VirtualBox
Debian Buster
- 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)
- SSH :
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’‘
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
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)
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
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
create: 2020-04-01
modif: 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…