Aller au contenu

Serveur dédié : conseils de sécurité Linux

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

10 novembre 202612 min de lecture7 Vues0 utile

Introduction

Ce guide te présente quelques conseils et recommandations pour renforcer la sécurité de ton serveur Linux. Comme les serveurs 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. Tu trouveras des informations plus détaillées dans d’autres sections de la documentation ZAP (par ex. 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 (tu en trouveras quelques-uns dans le tableau ci-dessus). Si un attaquant externe tente de pirater ton service SSH par force brute, il doit d’abord savoir quel port est utilisé par SSH. Si tu ne modifies pas ces ports, les ports 22 et 21 sont souvent les premières cibles pour exécuter directement des commandes sur le serveur ou accéder à des fichiers par FTP.

Pour éviter cela, nous te recommandons de configurer des ports personnalisés pour les services standard. La section suivante t’explique comment procéder :

Attention

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

Avec cat /etc/services, tu peux afficher quelques ports par défaut et éviter d’en choisir un qui est déjà occupé.

Modifier le port SSH

Pour modifier le port SSH, tu dois ajuster le fichier de configuration. Il se trouve normalement 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 ensuite 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é (par ex. #Port 22), supprime le « # » et remplace 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

Modifier le port FTP

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

Trouve le fichier de configuration proftpd.conf.

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

Le fichier se trouve normalement dans /etc/proftpd.conf (CentOS) ou /etc/proftpd/proftpd.conf (Ubuntu, Debian). Ouvre le fichier avec nano, supprime le « # » devant port et indique le port de ton choix. Consulte les indications ci-dessus pour éviter de choisir un port invalide.

Conseil

Utilise Ctrl + W pour lancer une recherche dans nano.

Code
nano /etc/proftpd/proftpd.conf

Protection supplémentaire avec Fail2Ban

Fail2Ban est un service qui bloque les adresses IP qui tentent de se connecter au 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 manière relativement simple et efficace.

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

  • apache
  • lighttpd
  • sshd
  • qmail
  • postfix
  • Courier Mail Server Tu peux facilement ajouter d’autres services à l’aide d’une expression régulière (RegEx) et en indiquant le fichier journal souhaité.
Prenons par exemple 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 le statut directement avec systemctl (utilise 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 activé ni configuré. Consulte /etc/fail2ban : tu devrais y 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. Copie simplement le contenu de jail.conf dans le nouveau fichier et ouvre-le :

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. Consulte uniquement la section qui suit [Default]. La section Default contient les paramètres généraux.

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

AttributExplicationValeur
ignoreipAdresses IP qui ne doivent pas être bloquées127.0.0.1/8
ignorecommandSans objet.
bantimeDurée pendant laquelle une adresse IP reste bloquée1h
findtimePériode pendant laquelle les échecs de connexion sont pris en compte10m
maxretryNombre d’échecs qui entraînent 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 der letzten "findtime"
# Sekunden erzeugt hat.
findtime  = 10m

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

Tu as terminé la configuration de base. Pour surveiller le service SSH, par exemple, fais défiler vers le bas jusqu’à la section [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 certains services (par exemple, maxretry, qui est inférieur à la valeur par défaut). Même si tu as déjà défini les paramètres généraux, tu peux remplacer la plupart d’entre eux individuellement pour chaque service. Si tu ne le fais pas, le paramètre général sera utilisé.

Il ne te reste plus qu’à redémarrer Fail2Ban pour lancer 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 tester Fail2Ban en te bloquant toi-même. Avec un VPN ou un point d’accès mobile, tu devrais obtenir une autre adresse IP 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 à ton serveur en SSH (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 constater, ton serveur protégé par Fail2Ban refuse maintenant la connexion (Connection refused au lieu de Permission denied).

Affiche maintenant le statut de Fail2Ban. Tu verras 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’allonger 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.
La connexion SSH par mot de passe, activée par défaut, peut être contournée assez facilement par des attaques par force brute, surtout si tu utilises un mot de passe trop simple. Il est recommandé d’activer uniquement l’authentification par clé SSH et de désactiver la connexion par mot de passe.
SSH utilise le port 22 par défaut. Comme SSH ou FTP utilisent des ports standard, ceux-ci sont des cibles fréquentes pour les attaques automatisées. Il est donc recommandé de prendre des mesures de protection adaptées.

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.

Zappy connaît ce guide et te répond directement dans le chat.