Un nouvel hébergement pour le site

Si vous suivez le blog, vous savez que j’aime tester des services et des matériels, tout le temps. Une nouvelle fois, il est temps de (re) donner une chance à OVHcloud, pour héberger J.HOMMET.NET, encore plus près de chez moi qu’actuellement.

Contexte#

Je veux héberger mon site web en France pour des raisons patriotiques et tester de nouveaux services. Mon objectif est de garantir une performance optimale tout en optimisant les dépenses, en plus de découvrir de nouveaux services.

Les nouvelles offres d’OVH pour les VPS offrent un excellent rapport qualité-prix en Europe, notamment en France. Pour moins de dix euros par mois, vous pouvez obtenir un « VPS-2 » avec six cœurs virtuels, 12 Go de RAM et 100 Go de stockage NVMe (informations complémentaires chez OVHcloud ). C’est ce VPS que j’ai choisi et que j’utiliserai pour héberger ce site

Pile technique#

Le choix des outils est assez standard, utilisant ceux déjà fonctionnels avec lesquels j’ai écrit des articles.

  • Systèmes : Debian 12, k3s ;
  • Outils système : Traefik pour le proxy inverse, fail2ban, Backblaze b2 pour le système de sauvegardes externalisé, btop, iftop, lsof, wireguard pour la connexion VPN ;
  • Outils pour k3s : Cilium pour la CNI, Longhorn pour le stockage, VictoriaMetrics pour la supervision.
+-----+     +------------+     +----------+
| Web | →→→ | Cloudflare | →→→ | OVHcloud |
+-----+     +------------+     +----------+
                   |                 |
                   +-----------------+
                        |
            ┌───────────────────────┐
            │          VPS          │
            │  ┌----------+         │
            │  │ Traefik  │         │
            │  │(TCP/443) │         │
            │  └─────┬────┘         │
            │        │              │
            │        ▼              │
            │ ┌───────────────────┐ │
            │ │ K3S mono-nœud     │ │
            │ │ ┌────────────┐    │ │
            │ │ │   Cilium   │    │ │
            │ │ └────┬───┬───┘    │ │
            │ │      │   │        │ │
            │ │      ▼   ▼        │ │
            │ │ ┌─────────────┐   │ │
            │ │ │   Service   │   │ │
            │ │ │   (Pods)    │   │ │
            │ │ └─────────────┘   │ │
            │ └───────────────────┘ │
            └───────────────────────┘

Schéma d’infrastructure

Le trafic d’OVHcloud et Cloudflare est filtré par les pare-feu et systèmes anti-DDoS des prestataires avant d’être acheminé vers le VPS via TCP/443. Traefik gère ensuite le filtrage et la redirection vers K3S, en particulier vers Cilium, pour atteindre les pods. Pour l’administration et l’accès distant aux ressources sensibles, WireGuard est utilisé, avec un filtrage partiel par le pare-feu d’OVHcloud et nftables sur le VPS.

Fail2ban, pour bloquer les tentatives de connexion infructueuses#

J’en ai déjà saisi un article en 2020, que vous pouvez retrouver ici :

Améliorer sa configuration SSH avec fail2ban et SELinuxPour administrer un serveur Linux à distance, rien de mieux que d’utiliser le SSH. Attention toutefois, lorsque votre serveur est exposé sur le net, vous serez assailli de tentative de connexion… Il existe heureusement des logiciels pour filtrer et bloquer ces tentatives. Fail2Ban La procédure ci-dessous vous permettra d’avoir uneJ.HOMMET.NETJulien HOMMETFail2ban est configuré pour bloquer les utilisateurs ou robots qui échouent trop souvent à se connecter. Le web est devenu une immense décharge, en plus d’un monde envahi par trop de robots dont l’utilité est très incertaine. Désormais, chaque accès est filtré, avec un jugement assez dur et paralysant.

Traefik et ses middlewares#

Toujours dans l’optique de protéger les services exposés, Traefik fait office de routeur et de pare-feu filtrant. Grâce à ses middlewares, des limites et autres configurations sont mises en place, comme je le détaillerai dans de prochains articles.

Retrouvez d’ores et déjà plus d’une quinzaine de documents sur ce site, en naviguant vers ce lien :

Traefik - J.HOMMET.NETRetrouvez tous les articles concernant l’outil Traefik, le reverse-proxy pour tous les contrôler !J.HOMMET.NET## Durcissement des options SSH Avoir des outils en plus des services déjà en place est une chose, configurer les services sous-jacents en est une autre. Il est crucial de configurer SSH à minima.

Voici la liste des actions que j’effectue pour la configuration SSH :

  • changer le port d’écoute, écouter sur une seule IPv4 et IPv6
  • changer les mots de passe, autoriser uniquement un utilisateur à se connecter en SSH (sans mots de passe, uniquement par clé), empêcher l’accès à root de se connecter
  • définir un maximum de session et un maximum de tentative
  • désactivation des options X11, du tunneling, cacher la version d’OpenSSH

Ma configuration SSH ressemble à ça :

# JH SSHd configuration example

Port 63312
ListenAddress votre_ipv4
ListenAddress votre_ipv6

# Ciphers and keying
Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
KexAlgorithms curve25519-sha256,diffie-hellman-group-exchange-sha256
MACs hmac-sha2-512-etm@openssh.com,umac-128-etm@openssh.com

# Logging
SyslogFacility AUTH
LogLevel INFO

# Authentication
LoginGraceTime 10m
PermitRootLogin no
StrictModes yes
MaxAuthTries 6
MaxSessions 10

PubkeyAuthentication yes

# Don't read the user's ~/.rhosts and ~/.shosts files
IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
PermitEmptyPasswords no

# Change to yes to enable challenge-response passwords (beware issues with
# some PAM modules and threads)
KbdInteractiveAuthentication no

# Kerberos options
KerberosAuthentication no

# GSSAPI options
GSSAPIAuthentication no

UsePAM yes

AllowAgentForwarding no
AllowTcpForwarding no
GatewayPorts no
X11Forwarding no
PermitTTY yes
PrintMotd no
PrintLastLog yes
TCPKeepAlive yes
PermitUserEnvironment no
Compression delayed
ClientAliveInterval 300
ClientAliveCountMax 3
UseDNS no
PidFile /run/sshd.pid
MaxStartups 10:30:100
PermitTunnel no
#ChrootDirectory none
VersionAddendum none

# Allow client to pass locale environment variables
AcceptEnv LANG LC_*

AllowUsers sshuser

OVHcloud vous donne quelques conseils et bonnes pratiques basiques pour protéger votre VPS :

Sécuriser un VPSDécouvrez comment mettre en place des mesures de sécurité basiques pour protéger votre VPS contre les attaques et les accès non autorisésService clientèle## Kubernetes léger mais costaud Pour installer K3S et Cilium, je me suis basé sur l’article “Installer K3S et déployer Cilium sous Debian 12” à cette adresse .

Installer k3s et déployer cilium sous Debian 12Avec ces quelques lignes, vous aurez tout le nécessaire pour installer un nœud Kubernetes avec Cilium, rapidement.J.HOMMET.NETJulien HOMMETIl y a aussi une partie stockage :

K3S et le stockage avec LonghornPour optimiser l’utilisation d’un cluster Kubernetes avec des services nécessitant du stockage, une préparation adéquate est essentielle. Pré-requis avant installation Kubernetes 1.28+ ; Au moins 2 Go de mémoire vive ; Paquet open-iscsi installé et openiscsid fonctionnel ; Un disque dédié pour Longhorn (si ce n’est pas possible, je vousJ.HOMMET.NETJulien HOMMETEt de la supervision :

K3S et la supervision avec VictoriaMetrics, kube-state-metrics, node-exporter et GrafanaPour faire suite à l’installation d’une instance Kubernetes avec K3S, il est maintenant l’heure de préparer l’observabilité dans l’ensemble du cluster. Dans cet article, j’utiliserai Kubernetes v1.33, VictoriaMetrics v1.124, et Helm 3+. VictoriaMetrics servira de puits de métriques, Grafana sera utilisé pour afficher ces métriques dans des tableauxJ.HOMMET.NETJulien HOMMETEst-ce qu’on peut encore considérer cette machine comme étant du “homelab” lorsque tout est distant ? Je pense que oui.

Affaire à suivre. Il reste désormais des services à instancier dans Kubernetes, à savoir ce site (sous Ghost), Umami (compteur de visites) et tant d’autres.

#blog
Julien HOMMET
6 minutes
1113 mots
blog