Post

Serveur Debian Buster carte mère ASRock QC5000M

Serveur Debian Buster carte mère ASRock QC5000M

ASRock QC5000M Quad-Core APU

ASRock QC5000M (pdf)

ASRock QC5000M

  • Platform
    • Micro ATX Form Factor
    • Solid Capacitor design
    • High Density Glass Fabric PCB
  • CPU
    • AMD FT3 Kabini A4-5050/5000 Quad-Core APU
  • Memory
    • 2 x DDR3 DIMM Slots
    • Supports DDR3 1600/1333/1066 non-ECC, un-buffered memory
    • Max. capacity of system memory: 32GB (see CAUTION1)
  • Expansion Slot
    • 1 x PCI Express 2.0 x16 Slot (PCIE2: x4 mode)
    • 2 x PCI Express 2.0 x1 Slot
  • Graphics
    • Integrated AMD RadeonTM HD 8330 Graphics
    • DirectX 11.1, Pixel Shader 5.0
    • Max. shared memory 2GB
    • Dual graphics output: support D-Sub and HDMI ports by independent display controllers (see CAUTION2)
    • Supports HDMI with max. resolution up to 4K × 2K (4096x2160) @ 24Hz or 4K × 2K (3840x2160) @ 30Hz
    • Supports D-Sub with max. resolution up to 2048x1536 @ 60Hz
    • Supports Auto Lip Sync, Deep Color (12bpc), xvYCC and HBR (High Bit Rate Audio) with HDMI Port (Compliant HDMI monitor is required)
    • Supports HDCP with HDMI Port
    • Supports Full HD 1080p Blu-ray (BD) playback with HDMI Port
  • Audio
    • 7.1 CH HD Audio (Realtek ALC887 Audio Codec) * To configure 7.1 CH HD Audio, it is required to use an HD front panel audio module and enable the multi-channel audio feature through the audio driver.
    • Supports Surge Protection (ASRock Full Spike Protection)
    • ELNA Audio Caps
  • LAN
    • PCIE x1 Gigabit LAN 10/100/1000 Mb/s
    • Rea ltek RTL 8111GR
    • S u p p o r t s Wa k e - O n -WA N
    • Suppor t s Wa ke- On-L A N
    • Supports Lightning/ESD Protection (ASRock Full Spike Protection)
    • Supports LAN Cable Detection
    • Supports Energy Efficient Ethernet 802.3az
    • Supports PXE
  • Rear Panel I/O
    • 1 x PS/2 Mouse/Keyboard Port
    • 1 x Serial Port: COM1
    • 1 x D-Sub Port
    • 1 x HDMI Port
    • 4 x USB 2.0 Ports (Supports ESD Protection (ASRock Full Spike Protection))
    • 2 x USB 3.0 Ports (Supports ESD Protection (ASRock Full Spike Protection))
    • 1 x RJ-45 LAN Port with LED (ACT/LINK LED and SPEED LED)
    • HD Audio Jacks: Line in / Front Speaker / Microphone
  • Storage
    • 2 x SATA3 6.0 Gb/s Connectors, support NCQ, AHCI and Hot Plug
  • Connector
    • 1 x TPM Header
    • 1 x CPU Fan Connector (3-pin)
    • 2 x Chassis Fan Connectors (1 x 4-pin, 1 x 3-pin)
    • 1 x 24 pin ATX Power Connector
    • 1 x Front Panel Audio Connector
    • 2 x USB 2.0 Headers (Support 4 USB 2.0 ports) (Supports ESD Protection (ASRock Full Spike Protection))
  • BIOS Feature
    • 32Mb AMI UEFI Legal BIOS with multilingual GUI support
    • Supports “Plug and Play”
    • ACPI 1.1 compliance wake up events
    • SMBIOS 2.3.1 support
    • DRAM Voltage multi-adjustment
  • HardwareMonitor
    • CPU/Chassis temperature sensing
    • CPU/Chassis Fan Tachometer
    • CPU/Chassis Quiet Fan
    • CPU/Chassis Fan multi-speed control
    • Voltage monitoring: +12V, +5V, +3.3V, Vcore
  • OS
    • Microsoft® Windows® 10 64-bit / 8.1 32-bit / 8.1 64-bit / 8 32-bit / 8 64-bit / 7 32-bit / 7 64-bit / XP 32-bit / XP 64-bit*
    • USB 3.0 is not supported by Windows® XP* For the updated Windows® 10 driver, please visit ASRock’s website for details: http://www.asrock.com
  • Certifications
    • FCC, CE, WHQL
    • ErP/EuP ready (ErP/EuP ready power supply is required)

Debian Buster

Partitionnement du disque

Utilisation d’une clé Parted bootable.

  • 2MB, type EF02 (BIOS partition). Utilisé par GRUB2/BIOS-GPT. (/dev/sda1)
  • 512MB, type 8300 (Linux). Pour le boot linux /boot (/dev/sda2)
  • 4GB, type 8200 (swap). Partition swap (en dehors de lvm). (/dev/sda3)
  • Espace restant, type 8E00 (LVM). Pour le root / et /home. (/dev/sda4).

Partitionnement du reste du disque SSD 120G GPT + LVM

1
gdisk /dev/sda

On passe en mode expert : x
On efface tout : z
On relance gdisk

1
gdisk /dev/sda
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
GPT fdisk (gdisk) version 0.8.6
 
Partition table scan:
  MBR: not present
  BSD: not present
  APM: not present
  GPT: not present
 
Creating new GPT entries.
 
Command (? for help): o
This option deletes all partitions and creates a new protective MBR.
Proceed? (Y/N): y

Command (? for help): n
Partition number (1-128, default 1): 1
First sector (34-31457246, default = 2048) or {+-}size{KMGTP}: 
Last sector (2048-31457246, default = 31457246) or {+-}size{KMGTP}: +2M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): ef02
Changed type of partition to 'BIOS boot partition'

Command (? for help): n
Partition number (2-128, default 2): 2
First sector (34-31457246, default = 6144) or {+-}size{KMGTP}: 
Last sector (6144-31457246, default = 31457246) or {+-}size{KMGTP}: +512M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8300
Changed type of partition to 'Linux filesystem'

Command (? for help): n
Partition number (3-128, default 3): 3
First sector (34-31457246, default = 210944) or {+-}size{KMGTP}: 
Last sector (210944-31457246, default = 31457246) or {+-}size{KMGTP}: +2G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux swap'

Command (? for help): n
Partition number (4-128, default 4): 
First sector (34-31457246, default = 4405248) or {+-}size{KMGTP}: 
Last sector (4405248-31457246, default = 31457246) or {+-}size{KMGTP}: 
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8e00
Changed type of partition to 'Linux LVM'
 
Command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
 
Do you want to proceed? (Y/N): y
OK; writing new GUID partition table (GPT) to /dev/sda.
The operation has completed successfully.

Installation debian 10

  • Boot et choix par F11 → USB CBM (NE PAS SELECTIONNER UEFI)
  • Installation effectuée à partir d’une clé USB bootable , fichier ISO : firmware-10.9.0-amd64-netinst.iso
  • Choix “partitionnement manuel”
  • Serveur virtuel 64 bits VirtualBox : Debian Buster
  • machine : asrock
  • domaine :
  • root : ytreu49
  • Utilisateur : asuser
  • Mot de passe : asuser49
  • Adresse IP : 192.168.0.45
  • Accès
    • SSH : ssh bust@192.168.0.45
    • 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)

Partitionnement
Disque SCSI1(0,0,0)(sda) 120.0 GB

Partition Taille _ Type Commentaire _
n°1 2.1 MB K biosgrub Bios boot pa  
n°2 536.9 MB   ext2 boot /boot
n°3 4.3 GB F swap Linux swap swap
n°4 115.2 GB K lvm Linux lvm  

Configurer le gestionnaire de voulumes logiques (LVM)
Ecrire les modifications sur les disques et configurer LVM ? Oui
Créer un groupe de volumes : asr-vg
Choisir le périphériques pour le nouveau groupe : /dev/sda4
Créer un volume logique root de 10GB
Créer un volume logique home de 10GB
Terminer
Partitionnement des volumes logiques

Partition Taille _ Type Commentaire _
n°1 10.0 GB F ext4   /home
n°2 10.0 GB F ext4   /

Sélection des logiciels

  • serveur SSH
  • utilitaires usuels du système

Oter la clé après installation pour le reboot
Se connecter en root
Relever adresse IP : 192.168.0.34
Adresse Mac enp3s0 70:85:c2:53:cb:80

Erreurs

Message erreur

1
[ 1281.828853] ICMPv6: RA: ndisc_router_discovery failed to add default route

Correction, désactiver l’annonce des routes : sudo nano /etc/sysctl.conf
Ajouter net.ipv6.conf.enp3s0.accept_ra=0
Puis sudo sysctl -p pour une validation immédiate
enp3s0 est l’interface réseau concerné

carte graphique
Dans le journal de boot

1
[    5.588159] [drm:radeon_pci_probe [radeon]] *ERROR* radeon kernel modesetting for R600 or later requires firmware-amd-graphics.

Il faut installer un firmware et redémarrer

1
2
3
apt update 
apt install firmware-amd-graphics 
reboot

Adressage ipv6

ipv6

inet6 fe80::7285:c2ff:fe53:cb80/64 scope link Mac Adress : 70:85:c2:53:cb:80

La carte n’est joignable de l’internet que par son adresse IPV6
NextHop Freebox permet d’attribuer une adresse IPV6

Prefixe : 2a01:e0a:2de:2c74::/64
Next Hop: fe80::7285:c2ff:fe53:cb80
Passerelle IPV6 Box : fe80::8e97:eaff:fe39:66d6

Modifier interface réseau debian

1
sudo nano /etc/network/interfaces
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# Configuration static ipv4/ipv6
source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug enp3s0
iface enp3s0 inet static
 address 192.168.0.34
 netmask 255.255.255.0
 network 192.168.0.0
 broadcast 192.168.0.255
 gateway 192.168.0.254
	
# This is an autoconfigured IPv6 interface

iface enp3s0 inet6 static
  address 2a01:e0a:2de:2c74::1
  netmask 64
  post-up ip -6 route add default via fe80::8e97:eaff:fe39:66d6 dev enp3s0

Redémarrer la machine

1
sudo systemctl reboot

Après reboot, connexion SSH
Vérifier adresses IP V4 et V6

1
ip addr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 70:85:c2:53:cb:80 brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.34/24 brd 192.168.0.255 scope global enp3s0
       valid_lft forever preferred_lft forever
    inet6 2a01:e0a:2de:2c74::1/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::7285:c2ff:fe53:cb80/64 scope link 
       valid_lft forever preferred_lft forever

Vérifier avec un autre poste sur le même réseau local

1
ping -6 -c5 2a01:e0a:2de:2c74::1
1
2
3
4
5
6
7
8
9
10
PING 2a01:e0a:2de:2c74::1(2a01:e0a:2de:2c74::1) 56 octets de données
64 octets de 2a01:e0a:2de:2c74::1 : icmp_seq=1 ttl=48 temps=56.8 ms
64 octets de 2a01:e0a:2de:2c74::1 : icmp_seq=2 ttl=48 temps=57.5 ms
64 octets de 2a01:e0a:2de:2c74::1 : icmp_seq=3 ttl=48 temps=55.9 ms
64 octets de 2a01:e0a:2de:2c74::1 : icmp_seq=4 ttl=48 temps=57.1 ms
64 octets de 2a01:e0a:2de:2c74::1 : icmp_seq=5 ttl=48 temps=56.5 ms

--- statistiques ping 2a01:e0a:2de:2c74::1 ---
5 paquets transmis, 5 reçus, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 55.937/56.749/57.471/0.520 ms

Mise à jour

1
apt update && apt upgrade -y

Installer les outils et sudo

1
apt install rsync curl tmux jq figlet git sudo dnsutils net-tools tree imagemagick

OpenSSH + Clés

ssh+clés

Créer un jeu de clé sur PC1 pour se connecter à l’hôte en SSH

1
ssh-keygen -t ed25519 -o -a 100 -f ~/.ssh/asrock

Le déploiement de la clé publique .pub sur l’hôte

1
ssh-copy-id -i .ssh/asrock.pub asuser@192.168.0.34

Vérifier la connexion ssh ssh asuser@192.168.0.34 et modifier le paramètre PasswordAuthentication no ainsi que le n° de port dans le fichier /etc/ssh/sshd_config de l’hôte et relancer le service sshd sudo systemctl restart sshd
Tester la connexion avec clé depuis l’invité

1
ssh -p 55034 -i ~/.ssh/asrock asuser@192.168.0.34

Passer en root

1
su 

Visudo pour les accès root via utilisateur bust

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

Motd

1
sudo rm /etc/motd && sudo nano /etc/motd
1
2
3
4
5
6
7
8
9
10
                  _     ____   ____               _                      
                 / \   / ___| |  _ \  ___    ___ | | __                  
                / _ \  \___ \ | |_) |/ _ \  / __|| |/ /                  
               / ___ \  ___) ||  _ <| (_) || (__ |   <                   
              /_/   \_\|____/ |_| \_\\___/  \___||_|\_\                  
   ___   _   _   ___  ___ | |_  _   _   __ _  _ __     __  __ _   _  ____
  / _ \ | | | | / _ \/ __|| __|| | | | / _` || '_ \    \ \/ /| | | ||_  /
 | (_) || |_| ||  __/\__ \| |_ | |_| || (_| || | | | _  >  < | |_| | / / 
  \___/  \__,_| \___||___/ \__| \__, | \__,_||_| |_|(_)/_/\_\ \__, |/___|
                                |___/                         |___/      

Script ssh_rc_bash

ATTENTION!!! Les scripts sur connexion peuvent poser des problèmes pour des appels externes autres que ssh

1
2
3
wget https://static.xoyaz.xyz/files/ssh_rc_bash
chmod +x ssh_rc_bash # rendre le bash exécutable
./ssh_rc_bash        # exécution

Historique

Historique de la ligne de commande

Ajoutez la recherche d’historique de la ligne de commande au terminal. Tapez un début de commande précédent, puis utilisez shift + up (flèche haut) pour rechercher l’historique filtré avec le début de la commande.

1
2
3
# Global, tout utilisateur
echo '"\e[1;2A": history-search-backward' | sudo tee -a /etc/inputrc
echo '"\e[1;2B": history-search-forward' | sudo tee -a /etc/inputrc

Date et heure

En mode su
Modifier le fichier /etc/systemd/timesyncd.conf

1
2
[Time]
NTP=145.238.203.14 145.238.203.10

Configurer la zone Europe/Paris et le ntp

1
2
timedatectl set-timezone Europe/Paris
timedatectl set-ntp true

Relancer le service

1
2
systemctl daemon-reload
systemctl restart systemd-timesyncd.service

Vérifier la zone et l’heure

1
timedatectl status
1
2
3
4
5
6
7
               Local time: ven. 2021-06-18 11:17:30 CEST
           Universal time: ven. 2021-06-18 09:17:30 UTC
                 RTC time: ven. 2021-06-18 09:17:30
                Time zone: Europe/Paris (CEST, +0200)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Parefeu UFW

ufw ou pare - feu simple , est une interface pour gérer les règles de pare-feu dans Arch Linux, Debian ou Ubuntu. UFW est utilisé via la ligne de commande (bien qu’il dispose d’interfaces graphiques disponibles), et vise à rendre la configuration du pare-feu facile (ou simple).

Installation Debian / Ubuntu

1
sudo apt install ufw

Par défaut, les jeux de règles d’UFW sont vides, de sorte qu’il n’applique aucune règle de pare-feu, même lorsque le démon est en cours d’exécution.

Les règles

1
2
3
4
sudo ufw allow 55034/tcp  # port SSH , 55034
sudo ufw allow http       # port 80
sudo ufw allow https      # port 443
sudo ufw allow DNS        # port 53

Activer le parefeu

1
sudo ufw enable
1
2
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Status

1
 sudo ufw status verbose
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
55034/tcp                  ALLOW IN    Anywhere                  
80/tcp                     ALLOW IN    Anywhere                  
443/tcp                    ALLOW IN    Anywhere                  
53 (DNS)                   ALLOW IN    Anywhere                  
55034/tcp (v6)             ALLOW IN    Anywhere (v6)             
80/tcp (v6)                ALLOW IN    Anywhere (v6)             
443/tcp (v6)               ALLOW IN    Anywhere (v6)             
53 (DNS (v6))              ALLOW IN    Anywhere (v6)             

NFS et partage


(Network File System) est un protocole qui permet d’accéder à des fichiers via le réseau. Il est basé sur le protocole RPC (Remote Procedure Call). Les clients montent la partition de la machine distante comme si c’était un disque local.

En mode su

1
sudo -s

Installation serveur NFS

1
apt install nfs-kernel-server

Vérification de l’installation

Exécuter rpcinfo pour confirmer que le serveur est lancé, et accepte les requêtes sur le port 2049 (UDP et TCP).

1
rpcinfo -p | grep nfs 
1
2
3
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100003    3   udp   2049  nfs

Vérifier que le système supporte effectivement NFS:

1
cat /proc/filesystems | grep nfs
1
nodev	nfsd

Si la commande précédente ne renvoie rien, il se peut que le module NFS ne soit pas chargé, auquel cas, il faut le charger modprobe nfs
Enfin, vérifions que portmap attend les instructions sur le port 111

1
rpcinfo -p | grep portmap
1
2
3
4
5
6
    100000    4   tcp    111  portmapper
    100000    3   tcp    111  portmapper
    100000    2   tcp    111  portmapper
    100000    4   udp    111  portmapper
    100000    3   udp    111  portmapper
    100000    2   udp    111  portmapper

Sécurisation NFS

Le protocole RPC n’a pas la réputation d’être bien sécurisé, mais la version 4 de NFS entend corriger ce problème, elle est donc à privilégier. Il est déconseillé d’effectuer un partage NFS via internet, ou bien dans ce cas, opter pour un tunnel crypté.

  • S’assurer que les partages sont réservés à certaines IP dans /etc/exports
  • S’appuyer sur rpcbind (/etc/hosts.deny et /etc/hosts.allow) pour sécuriser l’accès au serveur NFS
  • Configurer convenablement iptables

hosts.deny , hosts.allow
Tout le monde est interdit, puis le LAN est autorisé:

1
2
echo "rpcbind mountd nfsd statd lockd rquotad : ALL" >> /etc/hosts.deny
echo "rpcbind mountd nfsd statd lockd rquotad: 192.168.0." >> /etc/hosts.allow

Par défaut, les différents services NFS (lockd, statd, mountd, etc.) demandent des assignations de ports aléatoires à partir du portmapper (portmap/rpcbind), ce qui signifie que la plupart des administrateurs doivent ouvrir une gamme de ports dans leur base de règles de pare-feu pour que NFS fonctionne.

Il va donc falloir fixer les ports de ces services afin de créer les règles parefeu.

1
2
3
echo 'STATDOPTS="--port 32765 --outgoing-port 32766"' >> /etc/default/nfs-common
echo 'RPCMOUNTDOPTS="-p 32767"' >> /etc/default/nfs-kernel-server
echo 'RPCRQUOTADOPTS="-p 32769"' >> /etc/default/quota

Relance sysctl

1
sysctl --system
1
2
3
4
5
* Applying /etc/sysctl.d/99-sysctl.conf ...
* Applying /etc/sysctl.d/protect-links.conf ...
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
* Applying /etc/sysctl.conf ...

Relancer le service

1
systemctl restart nfs-kernel-server

NFS - Ajout des règles parefeu UFW

Voici les règles à fixer dans le parefeu

1
2
sudo ufw allow from 192.168.0.0/24 to any port 111,2049,32764:32769 proto tcp
sudo ufw allow from 192.168.0.0/24 to any port 111,2049,32764:32769 proto udp

Vérification

1
sudo ufw status
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Status: active

To                         Action      From
--                         ------      ----
55034/tcp                  ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
DNS                        ALLOW       Anywhere                  
111,2049,32764:32769/tcp   ALLOW       192.168.0.0/24            
111,2049,32764:32769/udp   ALLOW       192.168.0.0/24            
55034/tcp (v6)             ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             
DNS (v6)                   ALLOW       Anywhere (v6)             

Partage

Côté serveur
En mode su
Le disque à partager est paritionné LVM et on va utiliser la partie libre

1
vgs
1
2
  VG     #PV #LV #SN Attr   VSize    VFree 
  asr-vg   1   2   0 wz--n- <116,74g 98,11g

Création du volume logique et formatage fichier ext4

1
2
lvcreate -l 100%FREE -n lv-asrock asr-vg
mkfs -t ext4 /dev/asr-vg/lv-asrock

Ajout d’un second disque de 2To
Créer une partition lvm 8e avec fdisk
Créer un volume physique et logique lvm

1
2
3
4
pvcreate /dev/sdb1                          # Physical volume "/dev/sdb1" successfully created.
vgcreate vg-ext2to /dev/sdb1                # Volume group "vg-ext2to" successfully created
lvcreate -l 100%FREE -n lv-ext2to vg-ext2to # Logical volume "lv-ext2to" created.
mkfs -t ext4 /dev/vg-ext2to/lv-ext2to

Installer acl

1
apt install acl

si la partition concernée par le partage est de type ext4 le support des acl est actif par défaut: l’option de montage “acl” a été remplacée par “noacl”, qui devient donc celle à utiliser si on veut… désactiver le support des acl.

Configurer le partage NFS avec SetGID

Quand un répertoire est «setgidé », le comportement observé change. On ne parle alors plus de droits d’exécution mais d’appartenance. En effet, tous les fichiers ou sous-répertoires qui seraient créés dans un tel répertoire, appartiendraient automatiquement au groupe auquel appartient le dossier. Si plusieurs utilisateurs peuvent et/ou doivent travailler dans un même répertoire par exemple, on peut positionner le droit SETGID sur ce répertoire afin que tous les utilisateurs puissent accéder à son contenu sans restrictions liées au propriétaire qui a créé le fichier ou le sous-répertoire.

Créer les dossiers qui seront partagés sur le réseau local

1
2
mkdir -p /asrockpart
mkdir -p /asrock2to

Montage de la partition volume logique /dev/asr-vg/lv-asrock

1
blkid | grep "/dev/mapper/asr--vg-lv--asrock"   # relever uuid 
1
/dev/mapper/asr--vg-lv--asrock: UUID="f04f2999-cdae-42e2-b11b-af3d43e43580" TYPE="ext4"

Ajout au fichier fstab

1
nano /etc/fstab
1
2
# volume logique /dev/asr-vg/lv-asrock (/dev/mapper/asr--vg-lv--asrock)
UUID=f04f2999-cdae-42e2-b11b-af3d43e43580 /asrockpart         ext4    defaults 0 2

Montage de la partition volume logique /dev/vg-ext2to/lv-ext2to

1
blkid | grep "/dev/mapper/vg--ext2to-lv--ext2to"   # relever uuid 
1
/dev/mapper/vg--ext2to-lv--ext2to: UUID="6dbfde4d-2c48-4269-8998-2a095ceac4b4" TYPE="ext4"

Ajout au fichier fstab

1
nano /etc/fstab
1
2
# volume logique /dev/vg-ext2to/lv-ext2to (/dev/mapper/vg--ext2to-lv--ext2to)
UUID=6dbfde4d-2c48-4269-8998-2a095ceac4b4 /asrock2to         ext4    defaults 0 2

Montage manuel

1
mount -a

Partager /asrockpart/ et /asrock2to/

indiquer au serveur les répertoires qui seront partagés, les machines qui y auront accès et les conditions de ce partage.

1
nano /etc/exports

Ajouter en fin de fichier /etc/exports

1
2
/asrockpart                                   192.168.0.0/24(rw,no_subtree_check,no_root_squash)
/asrock2to                                    192.168.0.0/24(rw,no_subtree_check,no_root_squash)

Exporter

1
exportfs -ar

Pour vérifier que l’export a bien eu lieu, taper sur le serveur NFS la commande :

1
showmount -e 192.168.0.34
1
2
3
Export list for 192.168.0.34:
/asrock2to  192.168.0.0/24
/asrockpart 192.168.0.0/24

Nous devons configurer SetGID dans ce répertoire, comme indiqué ci-dessous.

1
2
chmod 2775 /asrockpart
chmod 2775 /asrock2to

Cela a également défini les autorisations 775 sur le répertoire, de sorte que l’utilisateur racine et le groupe défini disposent d’autorisations complètes. Le 2 permet setgid.

Ensuite, nous créons un groupe appelé ‘local’ et modifions le répertoire /asrockpart afin que le propriétaire du groupe soit ce groupe ‘local’.
Nous spécifions également manuellement le GID qui sera utilisé pour le groupe en tant que 9999; il doit s’agir d’un numéro libre sur votre client et votre serveur.

En mode NON su
Exécuter groupadd sur le client et sur le serveur, et ajouter un (ou plusieurs) utilisateur à ce groupe.

1
2
3
4
5
sudo groupadd -g 9999 local      # sur client et serveur
# ajout utilisateur au groupe
sudo usermod -a -G local $USER   # sur client et serveur
sudo chown $USER.local /asrockpart           # serveur uniquement
sudo chown $USER.local /asrock2to            # serveur uniquement

Droits ACL
Donner les droits ACL en lecture,écriture et exécution à l’utilisateur $USER et au groupe local

1
2
sudo setfacl -Rm u:$USER:rwx,g:local:rwx /asrockpart/
sudo setfacl -Rm u:$USER:rwx,g:local:rwx /asrock2to/

Désormais, tous les fichiers ou répertoires créés dans /asrockpart se verront automatiquement attribuer le propriétaire du groupe ‘local, ce qui permettra essentiellement la collaboration de groupe, car tout utilisateur appartenant au groupe local pourra désormais accéder aux fichiers créés par d’autres utilisateurs du même groupe dans le répertoire /asrockpart

NE PAS OUBLIER DE SE DECONNECTER/CONNECTER

Nous pouvons confirmer que setgid est en place, comme indiqué ci-dessous, où le bit d’exécution pour les autorisations de groupe est une minuscule. Cela passera à une majuscule S si le groupe ne dispose pas de l’autorisation d’exécution et que seul setgid est en place.

1
ls -la /asrockpart/  # signe + pour les acl
1
2
3
[...]
drwxrwsr-x+  3 root local  4096 juin  18 13:40 .
[...]

Côté Client
Partage de disques en réseau avec NFS

Installer nfs-utils avec la commande

1
2
sudo pacman -S nfs-utils    # archlinux
sudo apt install nfs-common # debian

Créer un point de montage NFS

1
2
sudo mkdir -p /mnt/asrock
sudo mkdir -p /mnt/asrock2to

Le partage NFS (/etc/hosts contient la définition du serveur : 192.168.0.46 xoyize.xyz)

1
sudo showmount -e 192.168.0.34
1
2
3
Export list for 192.168.0.34:
/asrock2to  192.168.0.0/24
/asrockpart 192.168.0.0/24

Montage manuel

1
2
sudo mount -t nfs 192.168.0.34:/asrockpart /mnt/asrock
sudo mount -t nfs 192.168.0.34:/asrock2to /mnt/asrock2to

Montage automatique à la demande avec timeout via fstab et x-systemd

1
sudo nano /etc/fstab
1
2
192.168.0.34:/asrockpart/ /mnt/asrock/	nfs	x-systemd.automount,x-systemd.idle-timeout=300,async	0 0
192.168.0.34:/asrock2to/ /mnt/asrock2to/	 nfs	x-systemd.automount,x-systemd.idle-timeout=300,async	0 0

Vérifier

1
sudo mount -a

Domaines et certificats

Domaine ouestyan.xyz

dns
Zone dns OVH

1
2
3
4
5
6
$TTL 3600
@	IN SOA dns106.ovh.net. tech.ovh.net. (2021061802 86400 3600 3600000 60)
                          IN NS     dns106.ovh.net.
                          IN NS     ns106.ovh.net.
                          IN AAAA   2a01:e0a:2de:2c74::1
*                         IN AAAA   2a01:e0a:2de:2c74::1

Certificats Let’s Encrypt

LetsEncrypt.png
Installer acme

1
2
3
4
5
cd ~
sudo apt install socat git -y # prérequis
git clone https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install 

Déconnexion reconnexion

1
2
export OVH_AK="xxxxxxxxxxxxxxxxx"
export OVH_AS="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Domaine ouestyan.xyz

1
acme.sh --dns dns_ovh --server letsencrypt --ocsp --issue --keylength ec-384 -d 'ouestyan.xyz' -d '*.ouestyan.xyz'

Les certificats

1
2
3
4
[vendredi 18 juin 2021, 16:59:18 (UTC+0200)] Your cert is in  /home/asuser/.acme.sh/ouestyan.xyz_ecc/ouestyan.xyz.cer 
[vendredi 18 juin 2021, 16:59:18 (UTC+0200)] Your cert key is in  /home/asuser/.acme.sh/ouestyan.xyz_ecc/ouestyan.xyz.key 
[vendredi 18 juin 2021, 16:59:18 (UTC+0200)] The intermediate CA cert is in  /home/asuser/.acme.sh/ouestyan.xyz_ecc/ca.cer 
[vendredi 18 juin 2021, 16:59:18 (UTC+0200)] And the full chain certs is there:  /home/asuser/.acme.sh/ouestyan.xyz_ecc/fullchain.cer 

Installation des certificats

1
2
3
sudo mkdir -p /etc/ssl/private/
sudo chown $USER -R /etc/ssl/private/
acme.sh --ecc --install-cert -d ouestyan.xyz --key-file /etc/ssl/private/ouestyan.xyz-key.pem --fullchain-file /etc/ssl/private/ouestyan.xyz-fullchain.pem --reloadcmd 'sudo systemctl reload nginx.service'

Vérification et mise à jour automatique
$ crontab -e # edite tous les jobs de l’utilisateur en cours

1
36 0 * * * "/home/asuser/.acme.sh"/acme.sh --cron --home "/home/asuser/.acme.sh" --renew-hook "/home/asuser/.acme.sh/acme.sh --ecc --install-cert -d ouestyan.xyz --key-file /etc/ssl/private/ouestyan.xyz-key.pem --fullchain-file /etc/ssl/private/ouestyan.xyz-fullchain.pem --reloadcmd 'sudo systemctl reload nginx.service'" > /dev/null

nginx

nginx
On installe la version dans le dépôt

Nginx présent dans le dépôt debian buster
En mode su

1
sudo -s

Installer nginx

1
apt install nginx

Oter le commentaire de la ligne server_tokens off; dans la configuration de base /etc/nginx/nginx.conf

  • worker_processes : laisser auto ou pour profiter pleinement de la puissance de votre serveur, il est recommandé de mettre autant de worker_processes que de cœurs disponibles sur votre serveur. Pour connaître le nombre de cœurs sur votre serveur, il suffit de lancer la commande : grep processor /proc/cpuinfo | wc -l
  • server_tokens : pour des raisons de sécurité, il est recommandé de désactiver l’envoi d’informations telles que le numéro de version de votre Nginx. Pour cela, décommentez cette directive dans le bloc http.

Relancer nginx : systemctl restart nginx

Nextcloud Nginx, PHP7-FPM, MariaDB et SSL/TLS

ouestyan.xyz

en mode su

effacer la config par défaut

1
rm /etc/nginx/sites-enabled/default

Créer un dossier et un fichier de configuration avec le nom du domaine et le dossier racine web

1
2
3
mkdir -p /etc/nginx/conf.d/ouestyan.xyz.d
touch /etc/nginx/conf.d/ouestyan.xyz.conf
mkdir -p /var/www/default

Le fichier de configuration web ouestyan.xyz.conf

1
nano /etc/nginx/conf.d/ouestyan.xyz.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
server {
    listen 80;
    listen [::]:80;
    server_name ouestyan.xyz;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name ouestyan.xyz;
    ssl_certificate /etc/ssl/private/ouestyan.xyz-fullchain.pem;
    ssl_certificate_key /etc/ssl/private/ouestyan.xyz-key.pem;

    root /var/www/default;
    index index/;

    # TLS 1.3 only
    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers off;
 
    # HSTS (ngx_http_headers_module is required) (63072000 seconds)
    add_header Strict-Transport-Security "max-age=63072000" always;
 
	# Virtual Host Configs
	include /etc/nginx/conf.d/ouestyan.xyz.d/*.conf;

    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;
 
    # verify chain of trust of OCSP response using Root CA and Intermediate certs
    ssl_trusted_certificate /etc/ssl/private/ouestyan.xyz-fullchain.pem;
 
    # replace with the IP address of your resolver
    resolver 127.0.0.1;

}

Vérification et relance

1
2
nginx -t
systemctl restart nginx

Image sur la page d’accueil (facultatif)
Déposer une image (https://unsplash.com - https://www.elegantwallpapers.com) dans le dossier /var/www/default
Créer un fichier /var/www/default/index/

<!DOCTYPE/>
/>
<head>
 <meta charset="UTF-8"> 
 <title>debsrv</title>
<style type="text/css" media="screen" >
html { 
  margin:0;
  padding:0;
  background: url(wallpaper.jpg) no-repeat center fixed; 
  -webkit-background-size: cover; /* pour anciens Chrome et Safari */
  background-size: cover; /* version standardisée */
}
body { color: white; }
a:link {
  color: grey;
  background-color: transparent;
  text-decoration: none;
}
a:hover {
  color: red;
  background-color: transparent;
  text-decoration: underline;
}

</style>

</head>
<body>

<h1>ouestyan.xyz</h1>
<p>Carte mère ASRock QC5000 - debian buster.</p>


</body>
</>

Lien https://ouestyan.xyz

Nextcloud

Nextcloud Nginx, PHP7-FPM, MariaDB et SSL/TLS

Nexcloud sur le domaine cloud.ouestyan.xyz avec certificats Let’s Encrypt

Le fichier de configuration web cloud.ouestyan.xyz.conf

1
sudo nano /etc/nginx/conf.d/cloud.ouestyan.xyz.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
upstream php-handler {
    server unix:/var/run/php/nextcloud.sock;
}

server {
    listen 80;
    listen [::]:80;
    server_name cloud.ouestyan.xyz;
    # enforce https
    return 301 https://$server_name:443$request_uri;
}

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

    # Use Mozilla's guidelines for SSL/TLS settings
    # https://mozilla.github.io/server-side-tls/ssl-config-generator/
    # NOTE: some settings below might be redundant
    ssl_certificate /etc/ssl/private/ouestyan.xyz-fullchain.pem;
    ssl_certificate_key /etc/ssl/private/ouestyan.xyz-key.pem;

    # TLS 1.3 only
    ssl_protocols TLSv1.3;
    ssl_prefer_server_ciphers off;
 
    # HSTS (ngx_http_headers_module is required) (63072000 seconds)
    add_header Strict-Transport-Security "max-age=63072000" always;
 
	# Virtual Host Configs
	include /etc/nginx/conf.d/ouestyan.xyz.d/*.conf;

    # OCSP stapling
    ssl_stapling on;
    ssl_stapling_verify on;
 
    # verify chain of trust of OCSP response using Root CA and Intermediate certs
    ssl_trusted_certificate /etc/ssl/private/ouestyan.xyz-fullchain.pem;
 
    # replace with the IP address of your resolver
    resolver 127.0.0.1;


    # Add headers to serve security related headers
    # Before enabling Strict-Transport-Security headers please read into this
    # topic first.
    #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
    #
    # WARNING: Only add the preload option once you read about
    # the consequences in https://hstspreload.org/. This option
    # will add the domain to a hardcoded list that is shipped
    # in all major browsers and getting removed from this list
    # could take several months.
    add_header Referrer-Policy "no-referrer" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Download-Options "noopen" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Permitted-Cross-Domain-Policies "none" always;
    add_header X-Robots-Tag "none" always;
    add_header X-XSS-Protection "1; mode=block" always;

    # Remove X-Powered-By, which is an information leak
    fastcgi_hide_header X-Powered-By;

    # Path to the root of your installation
    root /var/www/nextcloud;

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    # The following 2 rules are only needed for the user_webfinger app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
    #rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;

    # The following rule is only needed for the Social app.
    # Uncomment it if you're planning to use this app.
    #rewrite ^/.well-known/webfinger /public.php?service=webfinger last;

    location = /.well-known/carddav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    }
    location = /.well-known/caldav {
      return 301 $scheme://$host:$server_port/remote.php/dav;
    }

    # Anything else is dynamically handled by Nextcloud
    location ^~ /.well-known            { return 301 /index.php$uri; }

    # set max upload size
    client_max_body_size 512M;
    fastcgi_buffers 64 4K;

    # Enable gzip but do not remove ETag headers
    gzip on;
    gzip_vary on;
    gzip_comp_level 4;
    gzip_min_length 256;
    gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application//+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

    # Uncomment if your server is build with the ngx_pagespeed module
    # This module is currently not supported.
    #pagespeed off;

    location / {
        rewrite ^ /index.php;
    }

    location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
        deny all;
    }
    location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny all;
    }

    location ~ ^\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy)\.php(?:$|\/) {
        fastcgi_split_path_info ^(.+?\.php)(\/.*|)$;
        set $path_info $fastcgi_path_info;
        try_files $fastcgi_script_name =404;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $path_info;
        fastcgi_param HTTPS on;
        # Avoid sending the security headers twice
        fastcgi_param modHeadersAvailable true;
        # Enable pretty urls
        fastcgi_param front_controller_active true;
        fastcgi_pass php-handler;
        fastcgi_intercept_errors on;
        fastcgi_request_buffering off;
    }

    location ~ ^\/(?:updater|oc[ms]-provider)(?:$|\/) {
        try_files $uri/ =404;
        index index.php;
    }

    # Adding the cache control header for js, css and map files
    # Make sure it is BELOW the PHP block
    location ~ \.(?:css|js|woff2?|svg|gif|map)$ {
        try_files $uri /index.php$request_uri;
        add_header Cache-Control "public, max-age=15778463";
        # Add headers to serve security related headers (It is intended to
        # have those duplicated to the ones above)
        # Before enabling Strict-Transport-Security headers please read into
        # this topic first.
        #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always;
        #
        # WARNING: Only add the preload option once you read about
        # the consequences in https://hstspreload.org/. This option
        # will add the domain to a hardcoded list that is shipped
        # in all major browsers and getting removed from this list
        # could take several months.
        add_header Referrer-Policy "no-referrer" always;
        add_header X-Content-Type-Options "nosniff" always;
        add_header X-Download-Options "noopen" always;
        add_header X-Frame-Options "SAMEORIGIN" always;
        add_header X-Permitted-Cross-Domain-Policies "none" always;
        add_header X-Robots-Tag "none" always;
        add_header X-XSS-Protection "1; mode=block" always;

        # Optional: Don't log access to assets
        access_log off;
    }

    location ~ \.(?:png/|ttf|ico|jpg|jpeg|bcmap|mp4|webm)$ {
        try_files $uri /index.php$request_uri;
        # Optional: Don't log access to other assets
        access_log off;
    }
}

Relancer php-fpm

1
sudo systemctl restart php7.4-fpm

Vérifier et recharger nginx

1
2
sudo nginx -t
sudo systemctl reload nginx

Lancer https://cloud.ouestyan.xyz

Poursuivre la procédure Nextcloud Nginx, PHP7-FPM, MariaDB et SSL/TLS

Authentification à deux facteurs

Cette activation de la double authentification passe par plusieurs étapes. La première est d’installer une (ou plusieurs applications) permettant d’avoir un deuxième facteur d’authentification. Ces applications sont listées le magasin des applications Nextcloud catégorie Sécurité. Il existe plusieurs applications, chacunes d’elles ayant une fonctionnalité précise.

Installer l’application TOTP two-factor provider

Ensuite se rendre dans las paramètres

Il faut sauver les code de récupération TOTP
Paramétrer les applications TOTP avec le code ou QrCode
Vérifier pour valider le passage en authorisation à deux facteurs TOTP
Se reconnecter à l’application et après saisie login/Mot de passe , un code est exigé

Monitorer un système linux avec Telegraf, InfluxDB et Grafana

Créer une configuration proxy nginx grafana

1
sudo nano /etc/nginx/conf.d/ouestyan.xyz.d/proxy-grafana.conf
1
2
3
    location /grafana {
        proxy_pass http://localhost:3000;
    }

Recharger nginx sudo systemctl reload nginx
Le lien https://ouestyan.xyz/grafana

Cet article est sous licence CC BY 4.0 par l'auteur.