Renforcement des serveurs Linux : pratiques essentielles pour une gestion efficace
Si vous débutez dans le monde de l’administration Linux , nous vous recommandons de lire ce guide complet que nous avons réalisé dans RedesZone. La sécurité des serveurs est l’un des piliers fondamentaux pour garantir un fonctionnement correct et qui, en plus, se distingue par sa disponibilité et ses très bonnes performances. Les astuces que nous partagerons ci-dessous font partie de ce que l’on appelle le Linux Server Hardening .
Meilleures pratiques pour renforcer les serveurs Linux
Un résumé des pratiques qui peuvent être considérées comme essentielles pour une gestion beaucoup plus sécurisée des serveurs. Tous peuvent être mis en œuvre rapidement et ne nécessitent pas trop d’étapes de configuration ou d’installation supplémentaires.
Évitez d’utiliser des services comme FTP ou Telnet
Les serveurs Linux prennent en charge des services et des protocoles tels que FTP, Telnet ou RSH parmi tant d’autres qui ne sont pas sécurisés, et il existe des risques qu’un renifleur de paquets soit capable de capturer tout le trafic de données, y compris les informations d’authentification, car cela se fait sans aucun type de cryptage. Bien entendu, tout fichier ou commande que nous transférons ou exécutons peut être consulté sans aucun problème. Cependant, un renifleur de paquets ne fonctionne pas tout seul, mais utilise plutôt n’importe quel utilisateur au sein d’un certain réseau. Une solution typique qui est souvent utilisée sont des protocoles sécurisés tels que SSH pour exécuter des commandes à distance, ou utilisent SFTP (SSH FTP) pour transférer des fichiers en toute sécurité, et même FTPES (FTP avec TLS) pour faire de même. Si vous comptez utiliser un serveur SSH,tutoriel pour configurer le serveur OpenSSH avec une sécurité maximale .
Nous devons nous assurer que sur notre serveur ou ordinateur avec Linux, aucun de ces serveurs n’est installé, tant que nous ne les utilisons pas pour une certaine tâche. Par exemple, sur les systèmes d’exploitation Linux basés sur Debian ou Ubuntu, vous pouvez utiliser la commande suivante pour désinstaller tous ces services :
sudo apt-get --purge remove xinetd nis yp-tools tftpd atftpd tftpd-hpa telnetd rsh-server rsh-redone-server
Comme nous le voyons un peu plus haut, avec une seule commande, nous pouvons effacer pratiquement tous les serveurs avec des protocoles et des services qui peuvent représenter un grand nombre de menaces de sécurité.
Installez le moins de logiciels possible
Moins nous avons installé de logiciels et/ou de services sur notre serveur, les chances qu’il y ait une vulnérabilité dans le logiciel qui amène un cybercriminel à prendre le contrôle de notre équipement diminue considérablement. Dans les systèmes d’exploitation Linux tels que Debian ou Ubuntu, vous pouvez obtenir une liste complète des packages installés, pour désinstaller ultérieurement ceux qui ne sont pas nécessaires.
Vous pouvez utiliser le package apt-get / dkpg pour supprimer tout service ou application qui n’est pas strictement nécessaire pour votre serveur Linux :
dpkg --list
dpkg --info packageName
apt-get remove packageName
Gardez le noyau Linux et les logiciels à jour
L’une des raisons les plus impérieuses de maintenir à jour tous les logiciels de notre ordinateur, ainsi que les packages fondamentaux du système d’exploitation, est la sécurité. En gardant notre serveur avec les mises à jour les plus récentes, nous garantissons la disponibilité des correctifs de sécurité pour nous protéger des principales menaces. Encore une fois, nous pouvons utiliser le gestionnaire de packages apt-get ou dpkg :
apt-get update && apt-get upgrade
Configurer le vieillissement des mots de passe pour les utilisateurs Linux
Il existe une commande qui vous permet de modifier le nombre de jours entre les changements de mot de passe et la date du dernier changement de mot de passe. Cette commande est le chage . Fondamentalement, cette commande permet de déterminer quand un utilisateur doit changer son mot de passe. C’est-à-dire combien de temps un certain mot de passe établi par l’utilisateur en question est valide :
Cette commande nous permet de désactiver le vieillissement du mot de passe :
chage -M 99999 userName
Si vous avez besoin d’obtenir des informations concernant l’expiration du mot de passe d’un certain utilisateur, tapez ce qui suit :
chage -l userName
La commande suivante permet de modifier divers attributs liés à la gestion des changements de mot de passe :
chage -M 60 -m 7 -W 7 userName
Faisons un petit détail de cette commande et de ses exemples de paramètres :
- -M : fait référence au nombre maximum de jours de validité du mot de passe.
- -m : fait référence au nombre minimum de jours requis pour s’écouler entre les événements de changement de mot de passe.
- -W : le nombre de jours pendant lesquels l’utilisateur est averti à l’avance de la nécessité de changer le mot de passe
- nom d’utilisateur : le nom de l’utilisateur Linux que nous gérons
Verrouillage de l’utilisateur après plusieurs tentatives de connexion infructueuses
La commande faillog vous permet d’afficher l’historique complet des échecs de connexion. De plus, avec quelques paramètres, vous pouvez limiter le nombre d’échecs de démarrage que l’utilisateur peut avoir. Voici quelques cas d’utilisation :
Pour afficher l’historique des échecs de connexion :
faillog
Pour débloquer un utilisateur verrouillé pour des tentatives infructueuses :
faillog -r -u nombreUsuario
Bloquer un utilisateur spécifique :
passwd -l nombreUsuario
Déverrouillez un utilisateur spécifique :
passwd -u nombreUsuario
Désactiver les services d’arrière-plan inutiles
En plus d’augmenter la sécurité, la disponibilité des ressources pour les services qui en ont vraiment besoin est garantie. Ensuite, nous vous montrons la commande qui affiche tous les services qui commencent à s’exécuter depuis le début de la session au niveau 3 d’exécution :
chkconfig --list | grep '3:on'
Si vous devez désactiver un certain service, saisissez la commande suivante :
service serviceName stop
chkconfig serviceName off
- La première ligne ( stop ) est utilisée pour arrêter les services
- La deuxième ligne ( off ) est utilisée pour désactiver les services
- serviceName fait référence au service en question
Identifier tous les ports ouverts
Utilisez la commande suivante pour afficher la liste de tous les ports ouverts, en plus des programmes associés :
netstat -tulpn
Ou bien:
ss -tulpn
Séparer les partitions de disque
Si nous séparons les fichiers liés au système d’exploitation de ceux qui appartiennent aux utilisateurs, nous ajoutons un niveau de sécurité plus élevé en général car nous pouvons faire des copies de sauvegarde de l’intégralité de la partition beaucoup plus facilement. Si, par exemple, on veut uniquement sauvegarder toutes les configurations utilisateur, il suffirait de faire une sauvegarde de /home. Gardez à l’esprit que ce sont les fichiers système qui doivent se trouver sur des partitions de disque distinctes :
- / usr
- /domicile
- /var et /var/tmp
- / tmp
Utiliser un service d’authentification centralisé
Les avantages de la mise en œuvre de l’authentification centralisée incluent un contrôle plus facile de tous les comptes Linux / UNIX associés au serveur, ainsi que les données d’authentification elles-mêmes. Ils vous permettent également de garder les données d’authentification ( auth data ) synchronisées entre les serveurs.
Une suggestion est la mise en œuvre d’OpenLDAP, qui contient toute la documentation nécessaire concernant l’installation et la mise en œuvre. Il est complètement ouvert et bien sûr, il est disponible en téléchargement gratuit .
Sans authentification centralisée, du temps est perdu à contrôler différentes méthodes d’authentification, ce qui peut entraîner des informations d’identification obsolètes et des comptes d’utilisateurs qui auraient dû être supprimés depuis longtemps.
Utilisation d’un pare-feu IDS/IPS (Intrusion Detection/Prevention Systems)
Avoir un pare-feu dans notre équipe est essentiel pour contrôler en détail le trafic entrant et sortant, Linux intègre par défaut iptables, bien que dans les dernières versions de Linux nous disposions de nftables, qui est l’évolution des iptables populaires. Grâce à ce pare-feu, nous pourrons contrôler en détail tout le trafic qui va vers le serveur et qui sort du serveur.
Un système de détection d’intrusion nous aide à détecter les activités malveillantes ou suspectes telles que les attaques DDoS, les analyses de ports ou les tentatives de piratage informatique pour surveiller le trafic réseau qu’elles génèrent. Un mouvement de production de système réussi et sûr nécessite un examen de l’intégrité du logiciel, ce qui est rendu possible grâce aux systèmes IDS.
Dans RedesZone, nous recommandons Snorter , qui est un outil d’assistance pour faciliter l’installation et la gestion de Snort. Il s’agit d’un système de détection d’intrusion, avec en plus un système de prévention d’intrusion (IPS). Ce dernier ajoute une plus grande couche de protection aux serveurs contre les menaces constantes.
Fail2ban ou denyhost peuvent également être considérés comme des options valables et pratiques pour implémenter un système de type IDS. Maintenant, pour installer Fail2ban, tapez les commandes suivantes :
sudo apt-get install fail2ban
Modifiez les fichiers de configuration en fonction de vos besoins :
sudo vi /etc/fail2ban/jail.conf
Une fois que vous avez terminé, redémarrez le service :
sudo systemctl restart fail2ban.service
Désactiver les périphériques USB / Firewire / Thunderbolt
Voici la commande qui vous permettra de désactiver les périphériques USB sur votre serveur Linux :
echo 'install usb-storage /bin/true' >> /etc/modprobe.d/disable-usb-storage.conf
La même méthode peut être appliquée pour désactiver les appareils Thunderbolt :
echo "blacklist thunderbolt" >> /etc/modprobe.d/thunderbolt.conf
Alors aussi, les appareils firewire :
echo "blacklist firewire-core" >> /etc/modprobe.d/firewire.conf
Utilisez VPN pour vous connecter au serveur ou à l’environnement de gestion
De nos jours utiliser des serveurs VPN est indispensable, si nous avons plusieurs serveurs dédiés ou VPS dans le même réseau d’administration, nous pouvons utiliser un serveur VPN pour accéder à l’ensemble de la plateforme en toute sécurité. Deux logiciels très intéressants sont à la fois OpenVPN et WireGuard , nous vous recommandons de visiter nos tutoriels complets pour configurer des serveurs VPN avec une sécurité maximale.
Avec cette mesure de sécurité, la possibilité qu’un utilisateur veuille copier des fichiers du serveur Linux vers un périphérique USB, FireWire ou Thunderbolt sera évitée. Souhaitez-vous plus de tutoriels comme celui-ci? Faites-nous part de vos suggestions dans les commentaires.