Il est important de sécuriser votre serveur Linux pour protéger vos données, votre propriété intellectuelle et votre temps des mains des crackers (pirates informatiques). L'administrateur système est responsable de la sécurité de la boîte Linux. Dans cette première partie d'une série sur la sécurité des serveurs Linux, je fournirai 40 conseils de renforcement des serveurs Linux pour l'installation par défaut du système Linux.
Conseils et liste de contrôle pour le renforcement de la sécurité des serveurs Linux
Les instructions suivantes supposent que vous utilisez une distribution Linux basée sur CentOS/RHEL ou Ubuntu/Debian.
1. Crypter la communication des données pour le serveur Linux
Toutes les données transmises sur un réseau peuvent être surveillées. Crypter les données transmises chaque fois que possible avec un mot de passe ou en utilisant des clés / certificats.
- Utilisez scp, ssh rsync, ou sftp pour le transfert de fichiers. Vous pouvez également monter le système de fichiers d'un serveur distant ou votre propre répertoire personnel à l'aide d'outils spéciaux sshfs et fuse.
- GnuPG permet de crypter et de signer vos données et vos communications. Il dispose d'un système polyvalent de gestion des clés ainsi que de modules d'accès à toutes sortes de répertoires de clés publiques.
- OpenVPN est un VPN SSL léger et économique. Une autre option consiste à essayer tinc qui utilise la tunnellisation et le cryptage pour créer un réseau privé sécurisé entre des hôtes sur Internet ou un réseau local privé non sécurisé.
- Lighttpd SSL (Secure Server Layer) Https Configuration et installation
- Configuration et installation d'Apache SSL (Secure Server Layer) Https (mod_ssl)
- Comment configurer Nginx avec un certificat SSL gratuit Let's Encrypt sur Debian ou Ubuntu Linux
2. Éviter d'utiliser les services FTP, Telnet, et Rlogin / Rsh sous Linux
Dans la plupart des configurations réseau, les noms d'utilisateur, les mots de passe, les commandes FTP / telnet / rsh et les fichiers transférés peuvent être capturés par n'importe qui sur le même réseau à l'aide d'un renifleur de paquets. La solution courante à ce problème consiste à utiliser OpenSSH , SFTP ou FTPS (FTP over SSL), qui ajoute le cryptage SSL ou TLS au FTP. Tapez la commande yum suivante pour supprimer NIS, rsh et d'autres services obsolètes :
# yum erase xinetd ypserv tftp-server telnet-server rsh-server
Si vous utilisez un serveur basé sur Debian/Ubuntu Linux, essayez la commande apt-get/apt pour supprimer les services non sécurisés :
$ sudo apt-get --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server
3. Minimiser les logiciels pour minimiser la vulnérabilité de Linux
Avez-vous vraiment besoin d'installer toutes sortes de services Web ? Évitez d'installer des logiciels inutiles pour éviter les vulnérabilités des logiciels. Utilisez le gestionnaire de paquets RPM tel que yum ou apt-get et/ou dpkg pour passer en revue tous les paquets logiciels installés sur un système. Supprimez tous les paquets non désirés.
# yum list installed
OU
# dpkg --list
4. Un service réseau par système ou instance de VM
Exécutez différents services réseau sur des serveurs ou des instances VM distincts. Cela limite le nombre d'autres services qui peuvent être compromis. Par exemple, si un attaquant parvient à exploiter un logiciel tel que le flux Apache, il aura accès à l'ensemble du serveur, y compris à d'autres services tels que MySQL/MariaDB/PGSql, le serveur de messagerie, etc. Voir comment installer un logiciel de virtualisation pour plus d'informations :
- Installer et configurer le logiciel de virtualisation XEN sur CentOS Linux 5
- Comment configurer OpenVZ sous RHEL / CentOS Linux
5. Maintenir le noyau et les logiciels Linux à jour
L'application de correctifs de sécurité est une partie importante de la maintenance d'un serveur Linux. Linux fournit tous les outils nécessaires pour maintenir votre système à jour, et permet également des mises à niveau faciles entre les versions. Toutes les mises à jour de sécurité doivent être examinées et appliquées dès que possible. Encore une fois, utilisez le gestionnaire de paquets RPM tel que yum et/ou apt-get et/ou dpkg pour appliquer toutes les mises à jour de sécurité.
# yum update
OU
# apt-get update && apt-get upgrade
Vous pouvez configurer Red hat / CentOS / Fedora Linux pour envoyer une notification de mise à jour des paquets yum par courrier électronique. Une autre option consiste à appliquer toutes les mises à jour de sécurité via une tâche cron. Sous Debian / Ubuntu Linux, vous pouvez utiliser apticron pour envoyer des notifications de sécurité. Il est également possible de configurer des mises à jour sans surveillance pour votre serveur Linux Debian / Ubuntu en utilisant la commande apt-get / la commandeapt :
$ sudo apt-get install unattended-upgrades apt-listchanges bsd-mailx
6. Utiliser les extensions de sécurité de Linux
Linux est livré avec divers correctifs de sécurité qui peuvent être utilisés pour se prémunir contre les programmes mal configurés ou compromis. Si possible, utilisez SELinux et d'autres extensions de sécurité de Linux pour imposer des limites au réseau et aux autres programmes. Par exemple, SELinux fournit une variété de politiques de sécurité pour le noyau Linux.
7. SELinux
Je recommande vivement l'utilisation de SELinux qui fournit un contrôle d'accès obligatoire (MAC) flexible. Sous le contrôle d'accès discrétionnaire (DAC) standard de Linux, une application ou un processus s'exécutant en tant qu'utilisateur (UID ou SUID) dispose des autorisations de l'utilisateur pour des objets tels que les fichiers, les sockets et les autres processus. L'exécution d'un noyau MAC protège le système contre les applications malveillantes ou défectueuses qui peuvent endommager ou détruire le système. Voir le document officiel Redhat qui explique la configuration de SELinux.
8. Comptes utilisateurs Linux et politique de mot de passe fort
Utilisez les commandes useradd / usermod pour créer et maintenir les comptes utilisateurs. Assurez-vous d'avoir une bonne politique de mots de passe forts. Par exemple, un bon mot de passe comprend au moins 8 caractères et un mélange d'alphabets, de chiffres, de caractères spéciaux, de majuscules et de minuscules.
9. Configurer le vieillissement des mots de passe pour les utilisateurs de Linux pour une meilleure sécurité
La commande chage permet de modifier le nombre de jours entre les changements de mot de passe et la date du dernier changement de mot de passe. Ces informations sont utilisées par le système pour déterminer quand un utilisateur doit changer son mot de passe. Le fichier /etc/login.defs définit la configuration spécifique au site pour la suite de mots de passe fantômes, y compris la configuration du vieillissement des mots de passe. Pour désactiver le vieillissement du mot de passe, entrez :
# chage -M 99999 userName
Pour obtenir l'information sur l'expiration du mot de passe, entrez :
# chage -l userName
Enfin, vous pouvez également modifier le fichier /etc/shadow dans les champs suivants :
{userName}:{password}:{lastpasswdchanged}:{Minimum_days}:{Maximum_days}:{Warn}:{Inactive}:{Expire}:
Où,
- Jours minimums: Le nombre minimum de jours requis entre les changements de mot de passe, c'est-à-dire le nombre de jours restants avant que l'utilisateur soit autorisé à changer son mot de passe.
- Maximum_jours: Le nombre maximum de jours pendant lesquels le mot de passe est valide (après quoi l'utilisateur est obligé de changer son mot de passe).
- Avertissez : Le nombre de jours avant l'expiration du mot de passe pour que l'utilisateur soit averti que son mot de passe doit être changé.
- Expiration : Jours depuis le 1er janvier 1970 que le compte est désactivé, c'est-à-dire une date absolue spécifiant quand le login ne peut plus être utilisé.
Je recommande la commande chage au lieu de modifier le fichier /etc/shadow à la main :
# chage -M 60 -m 7 -W 7 userName
Lectures recommandées :
- Linux : Forcer les utilisateurs à changer leur mot de passe à la première connexion
- Linux active/désactive l'expiration/le vieillissement du mot de passe
- Verrouiller le mot de passe de l'utilisateur
- Recherchez tous les comptes sans mot de passe et verrouillez-les
- Utiliser les groupes Linux pour renforcer la sécurité
10. Restreindre l'utilisation des mots de passe précédents sous Linux
Vous pouvez empêcher tous les utilisateurs d'utiliser ou de réutiliser les mêmes anciens mots de passe sous Linux. Le paramètre remember du module pam_unix peut être utilisé pour configurer le nombre de mots de passe précédents qui ne peuvent pas être réutilisés.
11. Verrouillage des comptes utilisateurs après des échecs de connexion
Sous Linux, vous pouvez utiliser la commande faillog pour afficher les enregistrements faillog ou pour définir des limites d'échec de connexion. faillog met en forme le contenu du journal des échecs de la base de données /var/log/faillog / fichier journal. Il peut également être utilisé pour maintenir les compteurs et les limites d'échec.Pour voir les tentatives de connexion échouées, entrez :
faillog
Pour déverrouiller un compte après des échecs de connexion, exécutez :
faillog -r -u userName
Notez que vous pouvez utiliser la commande passwd pour verrouiller et déverrouiller les comptes :
# lock Linux account
passwd -l userName
passwd -u userName
12. Comment puis-je vérifier qu'aucun compte n'a de mots de passe vides ?
Tapez la commande suivante
# awk -F: ($2 == ) {print} /etc/shadow
Verrouillez tous les comptes à mot de passe vide :
# passwd -l accountName
13. Assurez-vous qu'aucun compte non-root n'a son UID à 0.
Seul le compte root a l'UID 0 avec des permissions complètes pour accéder au système. Tapez la commande suivante pour afficher tous les comptes dont l'UID est égal à 0 :
# awk -F: ($3 == 0) {print} /etc/passwd
Vous ne devriez voir qu'une seule ligne comme suit :
root:x:0:0:root:/root:/bin/bash
Si vous voyez d'autres lignes, supprimez-les ou assurez-vous que d'autres comptes sont autorisés par vous à utiliser l'UID 0.
14. Désactiver la connexion root
Ne vous connectez jamais en tant qu'utilisateur root. Vous devriez utiliser sudo pour exécuter des commandes de niveau racine lorsque cela est nécessaire. sudo améliore considérablement la sécurité du système sans partager le mot de passe de l'utilisateur racine avec d'autres utilisateurs et administrateurs. sudo fournit également des fonctions simples d'audit et de suivi.
15. Sécurité des serveurs physiques
Vous devez protéger l'accès à la console physique des serveurs Linux. Configurez le BIOS et désactivez le démarrage à partir de périphériques externes tels que les DVD / CD / stylo USB. Définissez un mot de passe pour le BIOS et le chargeur de démarrage grub afin de protéger ces paramètres. Toutes les boîtes de production doivent être verrouillées dans des IDC (Internet Data Centers) et toutes les personnes doivent passer une sorte de contrôle de sécurité avant d'accéder à votre serveur. Voir aussi :
- 9 conseils pour protéger les serveurs Linux Accès physique aux consoles.
16. Désactiver les services Linux non désirés
Désactivez tous les services et démons inutiles (services qui fonctionnent en arrière-plan). Vous devez supprimer tous les services indésirables du démarrage du système. Tapez la commande suivante pour répertorier tous les services qui sont lancés au démarrage au niveau d'exécution # 3 :
# chkconfig --list | grep 3:on
Pour désactiver le service, entrez :
# service serviceName stop
Une note sur les distros et services Linux basés sur systemd
Les distributions Linux modernes avec systemd utilisent la commande systemctl dans le même but.
Imprimer une liste de services qui indique les niveaux d'exécution sur lesquels chacun est configuré ou non.
# systemctl list-unit-files --type=service
Désactiver le service au démarrage
# systemctl disable service
Démarrer/arrêter/redémarrer le service
# systemctl disable service
Obtenir l'état du service
# systemctl status service
Visualisation des messages du journal
# journalctl
17. Trouver les ports réseau d'écoute
Utilisez la commande suivante pour répertorier tous les ports ouverts et les programmes associés :
netstat -tulpn
OU utilisez la commande ss comme suit :
$ ss -tulpn
OU
nmap -sT -O localhost
- Top 32 Nmap Command Examples For Sys/Network Admins pour plus d'informations. Utilisez iptables pour fermer les ports ouverts ou arrêter tous les services réseau indésirables en utilisant les commandes service et chkconfig ci-dessus.
- update-rc.d comme commande sur Redhat Enterprise / CentOS Linux.
- Ubuntu / Debian Linux : Outil de configuration des services pour démarrer / arrêter les services système.
- Obtenir des informations détaillées sur des connexions d'adresses IP particulières en utilisant la commande netstat.
18. Supprimer les systèmes X Window (X11)
Les systèmes X Window sur le serveur ne sont pas nécessaires. Il n'y a aucune raison d'exécuter X11 sur votre serveur de messagerie dédié basé sur Linux et votre serveur web Apache/Nginx. Vous pouvez désactiver et supprimer X Window pour améliorer la sécurité et les performances du serveur. Modifiez /etc/inittab et définissez le niveau d'exécution à 3. Enfin, supprimez le système X Windows, entrez :
# yum groupremove X Window System
Sur le serveur CentOS 7/RHEL 7, utilisez les commandes suivantes :
# yum group remove GNOME Desktop
19. Configurer un pare-feu basé sur Iptables et TCPWrappers sous Linux
Iptables est un programme d'application en espace utilisateur qui vous permet de configurer le pare-feu (Netfilter) fourni par le noyau Linux. Utilisez le pare-feu pour filtrer le trafic et n'autoriser que le trafic nécessaire. Utilisez également TCPWrappers, un système ACL de réseau basé sur l'hôte, pour filtrer l'accès du réseau à Internet. Vous pouvez prévenir de nombreuses attaques par déni de service à l'aide d'Iptables :
- Comment configurer un pare-feu UFW sur un serveur Ubuntu 16.04 LTS ?
- Comment configurer un pare-feu à l'aide de FirewallD sur RHEL 8
- Linux : 20 exemples d'Iptables pour les nouveaux SysAdmins
- Tutoriel de configuration des pare-feu Iptables CentOS / Redhat
- Lighttpd Traffic Shaping : Limitation des connexions par IP unique (limite de débit)
- Comment faire : Les Iptables de Linux bloquent les attaques courantes.
- psad : Linux Détecter et bloquer les attaques par balayage de port en temps réel.
- Utilisez shorewall sur un serveur basé sur CentOS/RHEL ou Ubuntu/Debian Linux pour sécuriser votre système.
Lisez toutes nos pages d'aide sur la commande iptables et la commande ufw.
20 : Durcissement du noyau Linux /etc/sysctl.conf
Le fichier /etc/sysctl.conf est utilisé pour configurer les paramètres du noyau au moment de l'exécution. Linux lit et applique les paramètres de /etc/sysctl.conf au moment du démarrage. Exemple de /etc/sysctl.conf :
# Turn on execshield kernel.exec-shield=1 kernel.randomize_va_space=1 # Enable IP spoofing protection net.ipv4.conf.all.rp_filter=1 # Disable IP source routing net.ipv4.conf.all.accept_source_route=0 # Ignoring broadcasts request net.ipv4.icmp_echo_ignore_broadcasts=1 net.ipv4.icmp_ignore_bogus_error_messages=1 # Make sure spoofed packets get logged net.ipv4.conf.all.log_martians = 1
21. Partitions de disque séparées pour le système Linux
La séparation des fichiers du système d'exploitation et des fichiers de l'utilisateur peut permettre d'améliorer et de sécuriser le système. Assurez-vous que les systèmes de fichiers suivants sont montés sur des partitions séparées :
- /usr
- /home
- /var et /var/tmp
- /tmp
Créez des partitions séparées pour les racines d'Apache et du serveur FTP. Editez le fichier /etc/fstab et assurez-vous d'ajouter les options de configuration suivantes :
- noexec - Ne pas autoriser l'exécution de binaires sur cette partition (empêche l'exécution de binaires mais autorise les scripts).
- nodev - Ne pas autoriser de caractères ou de périphériques spéciaux sur cette partition (empêche l'utilisation de fichiers de périphériques tels que zero, sda etc).
- nosuid - Ne pas définir l'accès SUID/SGID sur cette partition (empêcher le bit setuid).
Exemple d'entrée /etc/fstab pour limiter l'accès des utilisateurs sur /dev/sda5 (répertoire racine du serveur ftp) :
/dev/sda5 /ftpdata ext3 defaults,nosuid,nodev,noexec 1 2
22. Quotas de disques
Assurez-vous que le quota de disque est activé pour tous les utilisateurs. Pour mettre en place des quotas de disque, procédez comme suit :
- Activez les quotas par système de fichiers en modifiant le fichier /etc/fstab.
- Remonter le(s) système(s) de fichiers.
- Créez les fichiers de la base de données des quotas et générez la table d'utilisation du disque.
- Attribuer des politiques de quotas.
- Voir mise en œuvre des quotas de disques pour plus de détails.
23. Désactivez IPv6 uniquement si vous ne l'utilisez PAS sous Linux.
Le protocole Internet version 6 (IPv6) est une nouvelle couche Internet de la suite de protocoles TCP/IP qui remplace le protocole Internet version 4 (IPv4) et offre de nombreux avantages. Si vous n'utilisez PAS IPv6, désactivez-le :
- RedHat / Centos Désactiver la mise en réseau IPv6.
- Debian / Ubuntu et autres distributions Linux désactivent le réseau IPv6.
- Guide pratique Linux IPv6 - Chapitre 19. Sécurité .
- La configuration et les scripts du pare-feu Linux IPv6 sont disponibles ici.
24. Désactiver les binaires SUID et SGID non désirés
Tous les fichiers activés par les bits SUID/SGID peuvent être utilisés à mauvais escient lorsque l'exécutable SUID/SGID présente un problème de sécurité ou un bug. Tout utilisateur local ou distant peut utiliser un tel fichier. C'est une bonne idée de trouver tous ces fichiers. Utilisez la commande find comme suit :
#See all set user id files:
Vous devez examiner chaque fichier rapporté. Voir la page de manuel des fichiers signalés pour plus de détails.
25 : Fichiers inscriptibles dans le monde entier sur un serveur Linux
N'importe qui peut modifier le fichier world-writable, ce qui pose un problème de sécurité. Utilisez la commande suivante pour trouver tous les fichiers accessibles en écriture dans le monde et les fichiers de bits collants :
find /dir -xdev -type d ( -perm -0002 -a ! -perm -1000 ) -print
Vous devez examiner chaque fichier signalé et soit définir les autorisations correctes pour l'utilisateur et le groupe, soit le supprimer.
26. Fichiers de non-propriétaires
Les fichiers qui n'appartiennent à aucun utilisateur ou groupe peuvent poser un problème de sécurité. Il suffit de trouver avec la commande suivante ceux qui n'appartiennent pas à un utilisateur et à un groupe valides
find /dir -xdev ( -nouser -o -nogroup ) -print
Vous devez examiner chaque fichier signalé et soit l'attribuer à un utilisateur et un groupe appropriés, soit le supprimer.
27. Utiliser un service d'authentification centralisé
Sans un système d'authentification centralisé, les données d'authentification des utilisateurs deviennent incohérentes, ce qui peut conduire à des informations d'identification obsolètes et à des comptes oubliés qui auraient dû être supprimés en premier lieu. Un service d'authentification centralisé vous permet de maintenir un contrôle central sur les comptes Linux / UNIX et les données d'authentification. Vous pouvez garder les données d'authentification synchronisées entre les serveurs. N'utilisez pas le service NIS pour l'authentification centralisée. Utilisez OpenLDAP pour les clients et les serveurs.
28. Kerberos
Kerberos effectue l'authentification en tant que service d'authentification de tiers de confiance en utilisant un secret partagé cryptographique en partant du principe que les paquets voyageant sur le réseau non sécurisé peuvent être lus, modifiés et insérés. Kerberos s'appuie sur la cryptographie à clé symétrique et nécessite un centre de distribution de clés. Grâce à Kerberos, vous pouvez rendre plus sûres et plus contrôlables l'ouverture de session à distance, la copie à distance, la copie sécurisée de fichiers entre systèmes et d'autres tâches à haut risque. Ainsi, lorsque les utilisateurs s'authentifient auprès des services réseau à l'aide de Kerberos, les utilisateurs non autorisés qui tentent de récupérer des mots de passe en surveillant le trafic réseau sont efficacement contrecarrés. Découvrez comment configurer et utiliser Kerberos .
29. Journalisation et audit
Vous devez configurer la journalisation et l'audit pour recueillir toutes les tentatives de piratage et de craquage. Par défaut, syslog stocke les données dans le répertoire /var/log/. Ceci est également utile pour découvrir les erreurs de configuration des logiciels qui peuvent ouvrir votre système à diverses attaques. Consultez les articles suivants sur la journalisation :
- Emplacements des fichiers journaux de Linux.
- Comment envoyer les journaux à un serveur de journaux distant.
- Comment faire tourner les fichiers journaux ?
- pages de manuel syslogd, syslog.conf et logrotate.
30. Surveiller les messages de journal suspects avec Logwatch / Logcheck
Lisez vos journaux en utilisant la commande logwatch (vérification du journal ). Ces outils vous facilitent la lecture des journaux. Vous obtenez des rapports détaillés sur articles inhabituels dans syslog par e-mail. Un exemple de rapport syslog :
################### Logwatch 7.3 (03/24/06) #################### Processing Initiated: Fri Oct 30 04:02:03 2009 Date Range Processed: yesterday ( 2009-Oct-29 ) Period is day. Detail Level of Output: 0 Type of Output: unformatted Logfiles for Host: www-52.nixcraft.net.in ################################################################## --------------------- Named Begin ------------------------ **Unmatched Entries** general: info: zone XXXXXX.com/IN: Transfer started.: 3 Time(s) general: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 3 Time(s) general: info: zone XXXXXX.com/IN: Transfer started.: 4 Time(s) general: info: zone XXXXXX.com/IN: refresh: retry limit for master ttttttttttttttttttt#53 exceeded (source ::#0): 4 Time(s) ---------------------- Named End ------------------------- --------------------- iptables firewall Begin ------------------------ Logged 87 packets on interface eth0 From 58.y.xxx.ww - 1 packet to tcp(8080) From 59.www.zzz.yyy - 1 packet to tcp(22) From 60.32.nnn.yyy - 2 packets to tcp(45633) From 222.xxx.ttt.zz - 5 packets to tcp(8000,8080,8800) ---------------------- iptables firewall End ------------------------- --------------------- SSHD Begin ------------------------ Users logging in through sshd: root: 123.xxx.ttt.zzz: 6 times ---------------------- SSHD End ------------------------- --------------------- Disk Space Begin ------------------------ Filesystem Size Used Avail Use% Mounted on /dev/sda3 450G 185G 241G 44% / /dev/sda1 99M 35M 60M 37% /boot ---------------------- Disk Space End ------------------------- ###################### Logwatch End #########################
Voir Noms et utilisation des fichiers journaux communs de Linux pour plus d'informations.
31. Comptabilité du système avec auditd
auditd est fourni pour l'audit du système. Il est responsable de l'écriture des enregistrements d'audit sur le disque. Au démarrage, les règles du fichier /etc/audit.rules sont lues par ce démon. Vous pouvez ouvrir le fichier /etc/audit.rules et effectuer des modifications telles que la configuration de l'emplacement du journal du fichier d'audit et d'autres options. Avec auditd, vous pouvez répondre aux questions suivantes :
- Événements de démarrage et d'arrêt du système (redémarrage/arrêt).
- Date et heure de l'événement.
- Utilisateur responsable de l'événement (par exemple, tentative d'accès au fichier /path/to/topsecret.dat).
- Type d'événement (modification, accès, suppression, écriture, mise à jour du fichier)
- Succès ou échec de l'événement.
- Enregistre les événements qui modifient la date et l'heure.
- Découvrez qui a modifié les paramètres réseau du système.
- Enregistrer les événements qui modifient les informations sur les utilisateurs/groupes.
- Voir qui a modifié un fichier, etc.
Consultez notre tutoriel rapide qui explique comment activer et utiliser le service auditd.
32. Serveur OpenSSH sécurisé
Le protocole SSH est recommandé pour la connexion à distance et le transfert de fichiers à distance. Cependant, ssh est ouvert à de nombreuses attaques. Voir comment sécuriser le serveur OpenSSH :
- Les 20 meilleures pratiques de sécurité du serveur OpenSSH.
- Sécurisez votre bureau Linux et votre connexion SSH à l'aide de l'authentificateur Google à deux facteurs.
33. Installer et utiliser un système de détection d'intrusion
Un système de détection des intrusions dans le réseau (NIDS) est un système de détection des intrusions qui tente de détecter les activités malveillantes telles que les attaques par déni de service, les scans de ports ou même les tentatives d'intrusion dans les ordinateurs en surveillant le trafic réseau.
Une bonne pratique consiste à déployer tout logiciel de contrôle d'intégrité avant la mise en ligne du système dans un environnement de production. Si possible, installez le logiciel AIDE avant que le système ne soit connecté à un réseau. AIDE est un système de détection d'intrusion basé sur l'hôte (HIDS) qui peut surveiller et analyser les éléments internes d'un système informatique. Je vous recommande d'installer et d'utiliser également le logiciel de détection de root kit rkhunter.
34. Désactiver les périphériques USB/firewire/thunderbolt
Tapez la commande suivante pour désactiver les périphériques USB sur le système Linux :
# echo install usb-storage /bin/true >> /etc/modprobe.d/disable-usb-storage.conf
Vous pouvez utiliser la même méthode pour désactiver les modules firewire et thunderbolt :
# echo blacklist firewire-core >> /etc/modprobe.d/firewire.conf
Une fois que c'est fait, les utilisateurs ne peuvent pas copier rapidement des données sensibles sur des périphériques USB ou installer des logiciels malveillants/virus ou des portes dérobées sur votre système basé sur Linux.
35. Désactiver les services non utilisés
Vous pouvez désactiver les services non utilisés à l'aide de la commande service/systemctl :
$ sudo systemctl stop service
Par exemple, si vous n'avez pas l'intention d'utiliser le service Nginx pendant un certain temps, désactivez-le :
$ sudo systemctl stop nginx
36. Utiliser fail2ban/denyhost comme IDS (Installer un système de détection d'intrusion)
Fail2ban ou denyhost analyse les fichiers journaux pour détecter un trop grand nombre de tentatives de connexion échouées et bloque l'adresse IP qui présente des signes de malveillance. Voir comment installer et utiliser denyhost pour Linux. On peut installer fail2ban facilement :
$ sudo apt-get install fail2ban
OU
$ sudo yum install fail2ban
Modifiez le fichier de configuration en fonction de vos besoins :
$ sudo vi /etc/fail2ban/jail.conf
Redémarrez le service :
$ sudo systemctl restart fail2ban.service
- Debian / Ubuntu Linux Installer le logiciel Advanced Intrusion Detection Environment (AIDE)
- psad : Linux détecte et bloque les attaques par balayage de port en temps réel
37. Sécurisation du serveur Apache/PHP/Nginx
Modifiez le fichier httpd.conf et ajoutez ce qui suit :
ServerTokens Prod ServerSignature Off TraceEnable Off Options all -Indexes Header always unset X-Powered-By
Redémarrez le serveur httpd/apache2 sur Linux, exécutez :
$ sudo systemctl restart apache2.service
OU
$ sudo systemctl restart httpd.service
Vous devez installer et activer mod_security sur le serveur RHEL/CentOS. Il est recommandé de modifier le fichier php.ini et de le sécuriser également.
- Les 25 meilleures pratiques de sécurité du serveur Web Nginx
- Comment analyser les fichiers de configuration de Nginx pour détecter les erreurs de sécurité sous Linux ou Unix ?
38. Protection des fichiers, des répertoires et du courrier électronique
Linux offre d'excellentes protections contre l'accès non autorisé aux données. Les permissions de fichiers et le MAC empêchent l'accès non autorisé aux données. Cependant, les permissions définies par Linux ne sont pas pertinentes si un attaquant a un accès physique à un ordinateur et peut simplement déplacer le disque dur de l'ordinateur vers un autre système pour copier et analyser les données sensibles. Vous pouvez facilement protéger les fichiers, et les partitons sous Linux en utilisant les outils suivants :
- Pour crypter et décrypter des fichiers avec un mot de passe, utilisez la commande gpg.
- Linux ou UNIX : protection des fichiers par mot de passe avec openssl et d'autres outils.
- Le chiffrement complet du disque est indispensable pour sécuriser les données, et il est pris en charge par la plupart des distributions Linux. Voir comment crypter un disque dur en utilisant LUKS sous Linux. Assurez-vous que le swap est également crypté. Exigez un mot de passe pour modifier le chargeur de démarrage.
- Assurez-vous que le courrier des racines est transféré vers un compte que vous vérifiez.
- Comment faire : Cryptage des disques et des partitions sous Linux pour les appareils mobiles.
- Linux Securing Dovecot IMAPS / POP3S Server with SSL Configuration.
- Linux Postfix SMTP (Mail Server) Installations et configuration de certificats SSL.
- Installation et configuration du certificat du serveur SSL de Courier IMAP.
- Configurer le cryptage SSL de Sendmail pour l'envoi et la réception d'e-mails.
39. Sauvegardes
On ne dira jamais assez combien il est important de faire une sauvegarde de votre système Linux. Une bonne sauvegarde hors site vous permet de récupérer un serveur fissuré, c'est-à-dire une intrusion. Les programmes traditionnels de sauvegarde UNIX sont dump et restore sont également recommandés. Vous devez mettre en place des sauvegardes cryptées sur un stockage externe comme un serveur NAS ou un serveur FreeNAS ou utiliser un service de cloud computing comme AWS :
- Debian / Ubuntu Linux Installer et configurer un instantané de système de fichiers distant avec l'utilitaire de sauvegarde incrémentielle rsnapshot
- Comment configurer le serveur de sauvegarde à distance / Snapshot de Red hat / CentOS Linux
- Comment sauvegarder un serveur Web
- Comment utiliser la commande rsync pour sauvegarder un répertoire sous Linux ?
40. Autre recommandation et conlcusion
Cette page explique les conseils de sécurité pour le durcissement des serveurs Linux. Veuillez consulter les pages suivantes pour plus d'informations :
- Comment rechercher les Rootkits sur un serveur basé sur Linux.
- Comment activer la protection contre les dépassements de tampon d'ExecShield sur un serveur basé sur Linux.
- Guide de sécurité de l'EUD : Ubuntu 16.04 LTS
- Un guide pour sécuriser RHEL 7
- Configuration de base et avancée de SELINUX
- S'abonner à Redhat ou Debian Liste de diffusion sur la sécurité de Linux ou flux RSS.