Sécurité de votre serveur linux : Comment durcir un serveur sous linux ?

Dans ce guide pratique où nous allons renforcer ensemble la sécurité de votre serveur Linux. De l’installation de votre système à l’application des dernières mesures de sécurité, nous allons passer par toutes les étapes nécessaires pour rendre votre serveur aussi sûr que possible.

Sécurisation de la mémoire partagée

  • /dev/shm peut être utilisé dans une attaque contre un service en cours d’exécution, tel que httpd. Modifiez /etc/fstab pour le rendre plus sécurisé.
  • Ouvrez une fenêtre de terminal et entrez ce qui suit :
sudo vi /etc/fstab

Ajoutez la ligne suivante et sauvegardez. Vous devrez redémarrer pour que ce paramètre prenne effet :

tmpfs     /dev/shm     tmpfs     defaults,noexec,nosuid     0     0

Durcissement de SSH – désactivation de la connexion en tant que root et changement de port

  • Le moyen le plus simple de sécuriser SSH est de désactiver la connexion en tant que root et de changer le port SSH pour quelque chose de différent du port standard 22.
  • Avant de désactiver la connexion root, créez un nouvel utilisateur SSH et assurez-vous que l’utilisateur appartient au groupe admin (voir l’étape 4. ci-dessous concernant le groupe admin).
  • Si vous changez le port SSH, ouvrez également le nouveau port que vous avez choisi sur le pare-feu et fermez le port 22.
  • Ouvrez une fenêtre de terminal et entrez :
sudo vi /etc/ssh/sshd_config
  • Changez ou ajoutez ce qui suit et sauvegardez.
Port <ENTREZ VOTRE PORT>
Protocol 2
PermitRootLogin no
DebianBanner no
  • Redémarrez le serveur SSH, ouvrez une fenêtre de terminal et entrez :
sudo /etc/init.d/ssh restart

Protéger su en limitant l’accès uniquement au groupe admin

  • Pour limiter l’utilisation de su aux utilisateurs admin seulement, nous devons créer un groupe admin, puis ajouter des utilisateurs et limiter l’utilisation de su au groupe admin.
  • Ajoutez un groupe admin au système et ajoutez votre propre nom d’utilisateur admin au groupe en remplaçant <VOTRE NOM D’UTILISATEUR ADMIN> ci-dessous par votre nom d’utilisateur admin.
  • Ouvrez une fenêtre de terminal et entrez :
sudo groupadd admin
sudo usermod -a -G admin <VOTRE NOM D'UTILISATEUR ADMIN>
sudo dpkg-statoverride --update --add root admin 4750 /bin/su

Renforcer le réseau avec les paramètres sysctl

  • Le fichier /etc/sysctl.conf contient tous les paramètres sysctl.
  • Pour empêcher le routage source des paquets entrants et enregistrer les IP mal formées, entrez ce qui suit dans une fenêtre de terminal :
sudo vi /etc/sysctl.conf
  • Modifiez le fichier /etc/sysctl.conf et décommentez ou ajoutez les lignes suivantes :
# Protection contre l'usurpation d'IP
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# Ignorer les demandes de diffusion ICMP
net.ipv4.icmp_echo_ignore_broadcasts = 1

# Désactiver le routage des paquets source
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0

# Ignore send redirects
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# Bloquer les attaques SYN
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5

# Enregistrer les Martiens
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1

# Ignorer les redirections ICMP
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0

# Ignorer les pings dirigés
net.ipv4.icmp_echo_ignore_all = 1
  • Pour recharger sysctl avec les derniers changements, entrez :
sudo sysctl -p

Désactivez la récursion DNS ouverte et supprimez les informations de version – Serveur DNS BIND

  • Ouvrez un terminal et entrez ce qui suit :
sudo vi /etc/bind/named.conf.options
  • Ajoutez ce qui suit à la section Options :
recursion no;
version "Not Disclosed";
  • Redémarrez le serveur DNS BIND. Ouvrez un terminal et entrez ce qui suit :
sudo /etc/init.d/bind9 restart

Prévenir l’usurpation d’IP

  • Ouvrez un terminal et entrez ce qui suit :
sudo vi /etc/host.conf
  • Ajoutez ou modifiez les lignes suivantes :
order bind,hosts
nospoof on

Renforcez PHP pour la sécurité

  • Modifiez le fichier php.ini :
sudo vi /etc/php5/apache2/php.ini
  • Ajoutez ou modifiez les lignes suivantes et sauvegardez :
disable_functions = exec,system,shell_exec,passthru
register_globals = Off
expose_php = Off
display_errors = Off
track_errors = Off
html_errors = Off
magic_quotes_gpc = Off
  • Redémarrez le serveur Apache. Ouvrez un terminal et entrez ce qui suit :
sudo /etc/init.d/apache2 restart

Limitez la fuite d’informations Apache

  • Modifiez le fichier de configuration de sécurité Apache2 :
sudo vi /etc/apache2/conf.d/security
  • Ajoutez ou modifiez les lignes suivantes et sauvegardez :
ServerTokens Prod
ServerSignature Off
TraceEnable Off
Header unset ETag
FileETag None
  • Redémarrez le serveur Apache. Ouvrez un terminal et entrez ce qui suit :
sudo /etc/init.d/apache2 restart

Analysez les journaux et bannissez les hôtes suspects – DenyHosts et Fail2Ban

  • DenyHosts est un programme python qui bloque automatiquement les attaques SSH en ajoutant des entrées à /etc/hosts.deny. DenyHosts informera également les administrateurs Linux sur les hôtes offensants, les utilisateurs attaqués et les connexions suspectes.
  • Ouvrez un terminal et entrez ce qui suit :
sudo apt-get install denyhosts
  • Après l’installation, modifiez le fichier de configuration /etc/denyhosts.conf et changez l’email, et d’autres paramètres selon les besoins.
  • Pour modifier les paramètres de l’email administrateur, ouvrez une fenêtre de terminal et entrez :
sudo vi /etc/denyhosts.conf
  • Changez les valeurs suivantes selon les besoins sur votre serveur :
ADMIN_EMAIL = root@localhost
SMTP_HOST = localhost
SMTP_PORT = 25
#SMTP_USERNAME=foo
#SMTP_PASSWORD=bar
SMTP_FROM = DenyHosts nobody@localhost
#SYSLOG_REPORT=YES
  • Fail2ban est plus avancé que DenyHosts car il étend la surveillance des journaux à d’autres services, dont SSH, Apache, Courier, FTP, et plus encore.
  • Fail2ban scanne les fichiers de journal et bannit les IP qui montrent des signes malveillants – trop d’échecs de mot de passe, recherche d’exploits, etc.
  • En général, Fail2Ban est ensuite utilisé pour mettre à jour les règles du pare-feu pour rejeter les adresses IP pendant une durée spécifiée, bien qu’une autre action arbitraire puisse également être configurée.
  • Par défaut, Fail2Ban est livré avec des filtres pour divers services (apache, courier, ftp, ssh, etc).
  • Ouvrez un terminal et entrez ce qui suit :
sudo apt-get install fail2ban
  • Après l’installation, modifiez le fichier de configuration /etc/fail2ban/jail.local et créez les règles de filtre selon les besoins.
  • Pour modifier les paramètres, ouvrez une fenêtre de terminal et entrez :
sudo vi /etc/fail2ban/jail.conf
  • Activez tous les services que vous aimeriez que fail2ban surveille en changeant enabled = false en enabled = true
  • Par exemple, si vous souhaitez activer la surveillance et le bannissement SSH jail, trouvez la ligne ci-dessous et changez enabled de false à true. C’est tout.
[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3
  • Si vous avez choisi un port SSH non standard à l’étape 3, vous devez alors changer le paramètre de port dans fail2ban de ssh qui par défaut est le port 22, à votre nouveau numéro de port, par exemple si vous avez choisi 1234 alors port = 1234
[ssh]

enabled  = true
port     = <ENTREZ VOTRE NUMÉRO DE PORT SSH ICI>
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3
  • Si vous souhaitez recevoir des emails de Fail2Ban si des hôtes sont bannis, changez la ligne suivante à votre adresse email.
destemail = root@localhost
  • et changez la ligne suivante de :
action = %(action_)s
  • à :
action = %(action_mwl)s
  • Vous pouvez également créer des filtres de règles pour les différents services que vous souhaiteriez que fail2ban surveille qui n’est pas fourni par défaut.
sudo vi /etc/fail2ban/jail.local
  • De bonnes instructions sur la façon de configurer fail2ban et de créer les différents filtres peuvent être trouvées sur HowtoForgecliquez ici pour un exemple
  • Une fois la configuration de Fail2Ban terminée, redémarrez le service avec :
sudo /etc/init.d/fail2ban restart
  • Vous pouvez également vérifier l’état avec.
sudo fail2ban-client status

Conclusion

En conclusion, sécuriser votre serveur Linux est une étape essentielle pour préserver l’intégrité de vos données et services. Bien que cela puisse sembler une tâche complexe, suivre les étapes décrites dans ce guide vous permettra d’améliorer considérablement la sécurité de votre serveur. Il est crucial de comprendre que la sécurité est un processus continu, pas un événement isolé. Par conséquent, il est fondamental de rester informé des dernières menaces et vulnérabilités pour pouvoir y répondre de manière rapide et efficace.

Si vous avez besoin d’aide pour mettre en place un serveur Linux, n’hésitez pas à laisser un commentaire ou à me contacter via la page de contact

FAQ

1. Qu’est-ce que le durcissement d’un serveur sous Linux?

Durcir un serveur Linux signifie renforcer la sécurité en mettant en place des mesures qui minimisent la vulnérabilité aux attaques et assurent la protection des données.

2. Comment sécuriser la mémoire partagée?

Vous pouvez sécuriser la mémoire partagée en modifiant /etc/fstab pour rendre /dev/shm plus sécurisé.

3. Comment puis-je désactiver la connexion SSH en tant que root et modifier le port?

Vous pouvez sécuriser SSH en désactivant la connexion en tant que root et en changeant le port SSH pour quelque chose d’autre que le port standard 22.

4. Comment puis-je limiter l’accès à su uniquement au groupe admin?

Vous pouvez limiter l’utilisation de su aux utilisateurs admin uniquement en créant un groupe admin, puis en ajoutant des utilisateurs et en limitant l’utilisation de su au groupe admin.

5. Qu’est-ce que DenyHosts et Fail2Ban?

DenyHosts et Fail2Ban sont des outils utilisés pour surveiller et analyser les journaux pour identifier et bannir les hôtes suspects qui montrent des signes d’activité malveillante.