Aller au contenu

Serveur VPS : conseils de sécurité Linux

Découvre comment améliorer la sécurité de ton serveur Linux grâce à ces conseils essentiels, empêcher les accès non autorisés et protéger tes services → En savoir plus

10 novembre 202612 min de lecture0 Vues0 utile

Introduction

Ce guide contient quelques conseils et recommandations pour renforcer la sécurité de ton serveur Linux. Comme les serveurs (virtuels) doivent être accessibles depuis l'extérieur, il est fortement recommandé de mettre en place une protection de base contre les accès indésirables et de ne pas la négliger.

Infos

Note que ces instructions ne sont pas exhaustives et que tu trouveras des informations plus détaillées dans d'autres sections de la documentation ZAP. (par exemple 2FA (SSH))

Conseil

Le moyen le plus simple de protéger ton serveur est toujours le même, quel que soit le serveur : utilise des mots de passe sécurisés, mets régulièrement tes services à jour et fais attention aux services que tu installes ainsi qu'aux guides que tu suis.

Configuration des ports de tes services

ServicePort
SSH22
FTP21
Mail25
DNS53
HTTP80
HTTPS443

Les services comme SSH ou FTP utilisent toujours les mêmes ports par défaut (certains sont indiqués dans le tableau ci-dessus). Si un attaquant externe tente d'attaquer ton service SSH par force brute, il doit d'abord savoir quel port est utilisé pour SSH. Si tu ne configures pas ces ports autrement, les ports 22 et 21 sont généralement les ports ciblés pour exécuter directement des commandes sur le serveur ou accéder à des fichiers par FTP.

Pour éviter cela, nous te recommandons de définir des ports personnalisés pour les services par défaut. Tu découvriras comment procéder dans la section suivante :

Attention

Le port que tu choisis doit être compris entre 1024 et 65535 et ne doit pas déjà être utilisé !

Utilise cat /etc/services pour afficher quelques ports par défaut afin de ne pas en choisir un qui est déjà occupé.

Port SSH

Pour modifier le port SSH, tu dois modifier le fichier de configuration. Il se trouve généralement dans /etc/ssh/sshd_config. Si ce n'est pas le cas, tu peux le rechercher avec la commande suivante :

Code
find / -name "sshd_config" 2>/dev/null

Ouvre maintenant le fichier avec nano (en tant que root ou avec sudo).

Code
sudo nano /etc/ssh/sshd_config

Ajoute le port de ton choix après Port. Si Port est commenté (c'est-à-dire #Port 22), supprime le « # » et remplace le 22 par le port de ton choix. Enregistre le fichier (dans Nano avec Ctrl + o), puis ferme-le (Nano : Ctrl + x).

Tu dois maintenant redémarrer le service SSH pour que les modifications soient prises en compte.

Code
# Unter Ubuntu/Debian/CentOS z.B.
sudo systemctl restart sshd

Port FTP

Si tu as installé un service FTP comme proFTPd, tu peux également modifier facilement son port en éditant le fichier de configuration. La procédure est similaire à celle du service SSH.

Recherche le fichier de configuration proftpd.conf

Code
find / -name "proftpd.conf" 2>/dev/null

Le fichier se trouve généralement dans /etc/proftpd.conf (CentOS) ou /etc/proftpd/proftpd.conf (Ubuntu, Debian). Ouvre le fichier avec nano, supprime le « # » devant port et saisis le port de ton choix après celui-ci. Consulte les remarques ci-dessus pour ne pas saisir un port non valide.

Conseil

Utilise Ctrl + W pour effectuer une recherche dans nano.

Code
nano /etc/proftpd/proftpd.conf

Mesures de protection supplémentaires avec Fail2Ban

Fail2Ban est un service qui bloque les adresses IP tentant de se connecter à ton serveur avec des intentions probablement malveillantes. Fail2Ban surveille les fichiers journaux à la recherche d'activités suspectes et protège ainsi ton système de façon relativement simple et efficace.

Après son installation, Fail2Ban inclut déjà des paramètres préconfigurés pour certains services couramment utilisés, notamment :

  • apache
  • lighttpd
  • sshd
  • qmail
  • postfix
  • Courier Mail Server Tu peux facilement ajouter d'autres services en indiquant une expression régulière (RegEx) et le fichier journal souhaité.
Prenons l'exemple d'une entrée dans /var/log/auth.log. Ce fichier contient toutes les tentatives de connexion SSH, qu'elles aient réussi ou échoué.

Voici l'entrée :

Code
Dec 2 12:59:19 vps-zap515723-2 sshd[364126]: Failed password for root from 92.117.xxx.xxx port 52504 ssh2

Fail2Ban utilise ce fichier journal et surveille les échecs d'authentification. Comme le fichier journal contient directement l'adresse IP de l'attaquant, Fail2Ban peut bloquer cette adresse IP après plusieurs tentatives infructueuses.

Installer Fail2Ban

Connecte-toi d'abord à ton serveur Linux. Si tu as besoin d'aide, suis notre guide Premier accès (SSH). Tu devrais exécuter les commandes en tant que root ou avec sudo.

Code
sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

Après l'installation, tu peux vérifier son état directement avec systemctl : (appuie sur Ctrl+C pour quitter systemctl)

Code
systemctl status fail2ban.service
* fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor pres>
     Active: active (running) since Sat 2023-12-02 13:10:33 UTC; 24s ago
       Docs: man:fail2ban(1)
    Process: 23988 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, statu>
   Main PID: 23989 (fail2ban-server)
        CPU: 409ms
     CGroup: /system.slice/fail2ban.service
             `-23989 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Dec 02 13:10:33 vps-zap515723-1 systemd[1]: Starting Fail2Ban Service...
Dec 02 13:10:33 vps-zap515723-1 systemd[1]: Started Fail2Ban Service.
Dec 02 13:10:34 vps-zap515723-1 fail2ban-server[23989]: Server ready

Configurer Fail2Ban

Fail2Ban est maintenant installé, mais il n'est pas encore actif ni configuré. Consulte /etc/fail2ban, où tu devrais trouver les fichiers suivants :

Code
action.d fail2ban.d jail.conf paths-arch.conf paths-debian.conf
fail2ban.conf filter.d jail.d paths-common.conf paths-opensuse.conf

Pour créer une « jail » active, tu dois créer un fichier nommé jail.local. Il te suffit de copier le contenu de jail.conf dans le nouveau fichier et de l'ouvrir :

Code
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

Tu peux maintenant définir tous les paramètres dans le fichier jail.local, y compris les services à surveiller. Concentre-toi uniquement sur la partie après [Default]. La section par défaut sert à définir les paramètres généraux de base.

Fais défiler un peu vers le bas jusqu'à trouver cette section, puis modifie-la, par exemple, comme suit :

AttributExplicationValeur
ignoreipAdresses IP à ne pas bloquer127.0.0.1/8
ignorecommandNon pertinent.
bantimeDurée pendant laquelle une adresse IP reste bloquée1h
findtimePériode durant laquelle les échecs de connexion sont comptabilisés10m
maxretryNombre d'échecs entraînant un blocage5
Code
# kann mit Leerzeichen (und/oder Komma) getrennt definiert werden.
#ignoreip = 127.0.0.1/8 ::1

# ignorecommand = /path/to/command <ip>
ignorecommand =

# "bantime" ist die Anzahl der Sekunden, die ein Host gesperrt ist.
bantime  = 1h

# Ein Host wird gesperrt, wenn er "maxretry" Fehler innerhalb von "findtime"
# Sekunden erzeugt hat.
findtime  = 10m

# "maxretry" ist die Anzahl der Fehler, bevor ein Host gesperrt wird.
maxretry = 5

Tu as maintenant terminé la configuration de base. Pour surveiller le service SSH, par exemple, fais défiler vers le bas jusqu'à la balise [sshd]. Si tu as modifié ton port, indique-le sous port.

La section [sshd] devrait alors ressembler à ceci :

Code
[sshd]

enabled = true
port = 22
filter = sshd
logpath = /var/log/auth.log
maxretry = 4
Conseil

Comme tu peux le voir, tu peux aussi définir des paramètres spécifiques pour chaque service (ici, par exemple, maxretry, dont la valeur est inférieure au paramètre par défaut). Même si tu as défini des paramètres généraux auparavant, tu peux reconfigurer la plupart des paramètres séparément pour chaque service. Si tu ne le fais pas, les paramètres généraux seront utilisés.

Il ne te reste plus qu'à redémarrer Fail2Ban pour démarrer la surveillance.

Code
sudo systemctl restart fail2ban.service

Vérifier le fonctionnement de Fail2Ban

Si tu as accès à un VPN ou à un deuxième serveur, tu peux essayer de faire bloquer ta propre adresse IP par Fail2Ban pour vérifier que le service fonctionne. Avec un VPN ou un point d'accès mobile, tu devrais obtenir une autre adresse IP que tu pourras utiliser pour tester Fail2Ban.

Attention

Ne fais pas ce test depuis ton réseau habituel, car ta propre adresse IP pourrait être bloquée et tu pourrais perdre l'accès à ton serveur.

Essaie de te connecter en SSH à ton serveur (avec une autre adresse IP !) et saisis un mot de passe incorrect à chaque fois. Le résultat devrait ressembler à ceci :

Code
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
root@185.223.29.xxx: Permission denied (publickey,password).
root@vps-zap515723-2:/var/log# ssh root@185.223.29.179
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
Permission denied, please try again.
root@185.223.29.xxx's password:
^C
root@vps-zap515723-2:/var/log# ssh root@185.223.29.xxx
ssh: connect to host 185.223.29.xxx port 22: Connection refused

Comme tu peux le voir, la connexion à ton serveur protégé par Fail2Ban est maintenant refusée (Connection refused au lieu de Permission denied).

Affiche maintenant l'état de Fail2Ban. Tu peux voir qu'une adresse IP a été bloquée.

Code
fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 4
|  |- Total failed:     8
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   xxx

Si tu veux débloquer l'adresse IP, tu peux utiliser la commande suivante : fail2ban-client set sshd unbanip {deine IP}.

Infos

Si tu constates un nombre inhabituellement élevé d'adresses IP bloquées, il est recommandé d'augmenter la durée de blocage à chaque tentative infructueuse afin de réduire le nombre de tentatives de connexion possibles.

Code
[sshd]

enabled = true
port    = 22
filter  = sshd
logpath = /var/log/auth.log
maxretry = 4

bantime = 1h
# Bantime sollte mit jeder Sperre dieser IP steigen
bantime.increment = true
# Skalierungsfaktor von 24 Stunden (1h,24h,48h,3d,4d....)
bantime.factor = 24
# Maximale Sperrzeit = 5 Wochen
bantime.maxtime = 5w

FAQ

Questions fréquentes

Utilise des mots de passe sécurisés, mets régulièrement tes services à jour et fais attention aux services que tu installes ainsi qu'aux guides que tu suis.
Active l'authentification exclusivement par clés SSH et désactive la connexion par mot de passe. Consulte le guide sur les clés SSH pour en savoir plus.
Le port 22. Les attaquants qui veulent cibler SSH par force brute doivent d'abord savoir quel port est utilisé.

Avis

Cet article t’a-t-il été utile ?

Ton avis nous aide à mieux définir les priorités et à améliorer les contenus.

0 de 0 Les personnes ayant donné leur avis ont trouvé cet article utile.

Aide personnalisée

Le guide ne suffit pas ?

Notre équipe d’assistance ZAP connaît ton produit : décris brièvement ta demande et nous t’aiderons personnellement.