Post

OVH VPS-1 Debian 12 xoyaz.xyz

OVH VPS-1 Debian 12 xoyaz.xyz

vps-1780de45.vps.ovh.net
4 vCPU Cores
8 Go RAM
75 Go SSD NVME
1 Backup auto
Location: Gravelines
IP: 51.38.37.240
IPv6: 2001:41d0:305:2100::c1c
OS: Debian 12

OVH VPS-1

OVH

Première connexion

Après avoir récupére le mot de passe sur sur le site OVH

Se connecter utilisateur debian via SSH

1
ssh debian@51.38.37.240

Modifier le mot de passe root

1
2
3
sudo -s
passwd
exit

Mise à jour

1
sudo apt update && sudo apt upgrade -y

Quelques outils

1
apt install rsync curl tmux jq figlet git tree -y

Date et heure + Synchro

Activer le fuseau Europe/Paris

1
sudo timedatectl set-timezone Europe/Paris

Horloge système synchronisée : timedatectl

1
2
3
4
5
6
7
               Local time: Fri 2025-09-05 08:47:05 CEST
           Universal time: Fri 2025-09-05 06:47:05 UTC
                 RTC time: Fri 2025-09-05 06:47:05
                Time zone: Europe/Paris (CEST, +0200)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no

Reconfigurer locales

Activer uniquement en_US.UTF-8 et fr_FR.UTF-8

1
dpkg-reconfigure locales

Default fr_FR.UTF-8

1
2
3
4
Generating locales (this might take a while)...
  en_US.UTF-8... done
  fr_FR.UTF-8... done
Generation complete.

Motd

Motd

1
rm /etc/motd && nano /etc/motd
1
2
3
4
5
6
7
8
9
10
11
12
  ___ __   __ _  _  __   __ ___  ___       _         
 / _ \\ \ / /| || | \ \ / /| _ \/ __| ___ / |        
| (_) |\ V / | __ |  \ V / |  _/\__ \|___|| |        
 \___/  \_/  |_||_|   \_/  |_|  |___/     |_|        
 ___        _     _               _  ___             
|   \  ___ | |__ (_) __ _  _ _   / ||_  )            
| |) |/ -_)| '_ \| |/ _` || ' \  | | / /             
|___/ \___||_.__/|_|\__,_||_||_| |_|/___|            
 ___  _     ____ ___     ____ ____   ___  _ _    __  
| __|/ |   |__ /( _ )   |__ /|__  | |_  )| | |  /  \ 
|__ \| | _  |_ \/ _ \ _  |_ \  / /_  / / |_  _|| () |
|___/|_|(_)|___/\___/(_)|___/ /_/(_)/___|  |_|  \__/ 

Utilisateur yanic

Pour modifier le nom d’utilisateur “debian”, il faut se connecter en root

On va modifier la configuration du serveur sshd

1
2
3
4
5
6
7
sudo -s
# autoriser la connexion ssh root
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config.d/50-cloud-init.conf
# recharger le serveur sshd
sudo systemctl restart sshd
# sortie
exit

Se déconnecter de la session SSH en cours

Se connecter en root via SSH

Changer nom et groupe de l’utilisateur debian id 1000

1
2
3
4
5
6
# pour changer le nom d'utilisateur debian en yanic
usermod -l yanic debian
# Modification du répertoire de base par défaut
usermod -m -d /home/yanic yanic
# renommer le groupe principal
groupmod -n yanic debian

Modifier les accès sudo en remplaçant debian par yanic

1
2
# autoriser écriture  
chmod 640 /etc/sudoers.d/90-cloud-init-users

Après modification /etc/sudoers.d/90-cloud-init-users

1
2
3
4
# Created by cloud-init v. 22.4.2 on Tue, 01 Apr 2025 12:48:49 +0000
# Modified by yanic 04 Sept 2025 10:15
# User rules for yanic 
yanic ALL=(ALL) NOPASSWD:ALL

Modifier le paramétrage SSH pour interdire la connexion root

Supprimer la ligne PermitRootLogin yes dans le fichier /etc/ssh/sshd_config.d/50-cloud-init.conf
Redémarrer le serveur sshd: systemctl restart sshd

Se déconnecter de la session ssh root

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) pour une liaison SSH avec le serveur.

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

Envoyer les clés publiques sur le serveur KVM

1
ssh-copy-id -i ~/.ssh/vps-ovh-ed25519.pub yanic@51.38.37.240

sur le serveur KVM On se connecte via SSH

1
ssh yanic@51.38.37.240

Modifier la configuration serveur SSH dans le VPS

1
sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf

Contenu

1
2
Port = 55240
PasswordAuthentication no

Relancer le serveur

1
sudo systemctl restart sshd

Test connexion

1
ssh -p 55240 -i ~/.ssh/vps-ovh-ed25519 yanic@51.38.37.240

Historique de la ligne de commande

Ajoutez la recherche d’historique de la ligne de commande au terminal Se connecter en utilisateur debian 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

Hostname

1
2
sudo hostnamectl set-hostname xoyaz.xyz
hostnamectl

Résultat

1
2
3
4
5
6
7
8
9
10
11
12
 Static hostname: xoyaz.xyz
       Icon name: computer-vm
         Chassis: vm 🖴
      Machine ID: e0cdfae1b8884977a07acb4570fd559d
         Boot ID: 004a5cdecb9b42f9b020338899a86413
  Virtualization: kvm
Operating System: Debian GNU/Linux 12 (bookworm)  
          Kernel: Linux 6.1.0-32-cloud-amd64
    Architecture: x86-64
 Hardware Vendor: OpenStack Foundation
  Hardware Model: OpenStack Nova
Firmware Version: 1.16.3-debian-1.16.3-2~bpo12+1

Vérifier : hostname -f –> xoyaz.xyz

Modifier le fichier hosts

1
sudo nano /etc/hosts

Remplacer vps-1780de45.vps.ovh.net par xoyaz.xyz

1
127.0.1.1 xoyaz.xyz	vps-1780de45

Redémarrer le VPS: sudo systemctl reboot

Parefeu

Texte alternatif

Alternative: Configurer le pare-feu sous Linux avec Iptables

Installation UFW sur Debian / Ubuntu

1
sudo apt install ufw

Par défaut, nous allons refuser toutes les connexions entrantes (incoming)

1
sudo ufw default deny incoming

Les règles

1
2
3
# Pour autoriser un port personnalisé et correspondant à votre accès SSH
sudo ufw allow 55240/tcp  # port SSH
sudo ufw allow https      # port 443

Activer le parefeu

1
sudo ufw enable

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

Vérifier : sudo ufw status

1
2
3
4
5
6
7
8
Status: active

To                         Action      From
--                         ------      ----
55240/tcp                  ALLOW       Anywhere                  
443                        ALLOW       Anywhere                  
55240/tcp (v6)             ALLOW       Anywhere (v6)             
443 (v6)                   ALLOW       Anywhere (v6)             

Fail2ban

Fail2ban est un framework de prévention contre les intrusions dont le but est de bloquer les adresses IP depuis lesquelles des bots ou des attaquants tentent de pénétrer dans votre système. Ce paquet est recommandé, voire indispensable dans certains cas, pour protéger votre serveur des attaques de types Brute Force ou Denial of Service.

Installation

1
sudo apt install fail2ban

Vous pouvez personnaliser les fichiers de configuration Fail2ban pour protéger les services exposés à l’Internet public contre les tentatives de connexion répétées.

Comme le recommande Fail2ban, créez un fichier de configuration local de vos services en copiant le fichier “jail”

1
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Ouvrir /etc/fail2ban/jail.local

Les paramètres [DEFAULT] sont globaux et s’appliqueront donc à tous les services définis pour être activés (enabled) dans ce fichier.
Il est important de savoir que les paramètres globaux ne seront pris en compte que s’il n’y a pas de valeurs différentes définies dans les sections services (JAILS) plus bas dans le fichier.

Prenons pour exemple ces lignes sous [DEFAULT]

1
2
3
bantime  = 10m
maxretry = 5
enabled = false

Cela signifie qu’une adresse IP à partir de laquelle un hôte tente de se connecter sera bloquée pendant dix minutes après la cinquième tentative d’ouverture de session infructueuse. De plus, tous les paramètres spécifiés par [DEFAULT] et dans les sections suivantes restent désactivés sauf si la ligne enabled = true est ajoutée pour un service (listée ci-dessous # JAILS).

Modifier la section [sshd] pour activer des restrictions uniquement pour le service OpenSSH :

1
2
3
4
5
6
7
[sshd]
enabled = true
port = 55240
filter = sshd
maxretry = 3
findtime = 5m
bantime  = 30m

Si une tentative de connexion SSH échoue trois fois en cinq minutes, la période d’interdiction des IP sera de 30 minutes.

port = ssh a été remplacé par le numéro de port réel –> port = 55240

Activer Fail2ban uniquement pour les services qui sont exécutés sur le serveur. Chaque paramètre personnalisé ajouté sous # JAILS sera alors prioritaire sur les valeurs par défaut.

Redémarrez le service pour la prise en compte

1
sudo systemctl restart fail2ban

OVH xoyaz.xyz

Zone DNS

Modifier les enregistrements DNS A et AAAA chez le fournisseur de domaine OVH

IP: 51.38.37.240
IPv6: 2001:41d0:305:2100::c1c

Zone DNS domaine xoyaz.xyz

1
2
3
4
5
6
7
8
$TTL 3600
@	IN SOA dns106.ovh.net. tech.ovh.net. (2025090503 86400 3600 3600000 300)
        IN NS     ns106.ovh.net.
        IN NS     dns106.ovh.net.
        IN A     51.38.37.240
        IN AAAA     2001:41d0:305:2100::c1c
*        IN A     51.38.37.240
*        IN AAAA     2001:41d0:305:2100::c1c

joker(*) pour tous les sous-domaines

DNS Reverse

Pour modifier le DNS Reverse du VPS, se connecter sur le manager OVH

Vérifications

Caddy serveur

est un serveur web open source écrit en go proposant la mise en place de certificat SSL automatiquement

Keep Caddy Running

Informations

Si vous utilisez un Caddyfile, vous pouvez modifier votre configuration avec nano, vi ou votre éditeur préféré:

1
sudo nano /etc/caddy/Caddyfile

Vous pouvez placer vos fichiers statiques dans /var/www/html ou /srv. Assurez-vous que l’utilisateur de caddy a la permission de lire les fichiers.

Pour vérifier que le service fonctionne :

1
systemctl status caddy

La commande status affichera également l’emplacement du fichier de service en cours d’exécution.

Avec le fichier de service officiel, la sortie de Caddy sera redirigée vers journalctl. Pour lire tous vos journaux et éviter que les lignes ne soient tronquées :

1
journalctl -u caddy --no-pager | less +G

Si vous utilisez un fichier de configuration, vous pouvez recharger Caddy après avoir apporté des modifications :

1
sudo systemctl reload caddy

Vous pouvez arrêter le service avec:

1
sudo systemctl stop caddy

N’arrêtez pas le service pour changer la configuration de Caddy. Utilisez plutôt la commande recharger.

Le processus Caddy fonctionnera en tant qu’utilisateur Caddy, qui a son $HOME défini à /var/lib/caddy. Cela signifie que:

  • L’emplacement de stockage des données par défaut (pour les certificats et autres informations d’état) sera dans /var/lib/caddy/.local/share/caddy.
  • L’emplacement de stockage par défaut (pour la configuration JSON enregistrée automatiquement, principalement utile pour le service caddy-api) sera dans /var/lib/caddy/.config/caddy.

Installer caddy

1
2
3
4
5
6
7
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https curl
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
chmod o+r /usr/share/keyrings/caddy-stable-archive-keyring.gpg
chmod o+r /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

Afficher version : caddy --version
v2.10.2 h1:g/gTYjGMD0dec+UgMw8SnfmJ3I9+M2TdvoRL/Ovu6U8=

L’installation de ce paquet démarre automatiquement et exécute Caddy comme un service système nommé Caddy.

Créer répertoire avec les droits

1
2
sudo mkdir -p /var/caddy/
sudo chown caddy:caddy /var/caddy/

Dossier xoyaz.xyz

1
sudo -u caddy mkdir -p /var/caddy/xoyaz.xyz

Le fichier /etc/caddy/Caddyfile

1
2
3
4
5
xoyaz.xyz {
    root * /var/caddy/xoyaz.xyz
    #encode gzip
    file_server
}

Le fichier index.html

sudo -u caddy nano /var/caddy/xoyaz.xyz/index.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<!DOCTYPE html>
<html lang="fr">
  <head>
    <meta charset="utf-8">
    <title>xoyaz.xyz</title>
    <!--
    <link rel="stylesheet" href="style.css">
    <script src="script.js"></script>
    -->
  </head>
  <body>
    <!-- page content -->
    <h1>Domaine xoyaz.xyz</h1>
  </body>
</html>

recharger Caddy après les modifications :

1
sudo systemctl reload caddy

Lien https://xoyaz.xyz

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