Recherche de site Web

25 conseils de renforcement de la sécurité pour les serveurs Linux


Tout le monde dit que Linux est sécurisé par défaut et est d’accord dans une certaine mesure (ce sont des sujets discutables). Cependant, Linux a mis en place par défaut un modèle de sécurité intégré. Vous devez le régler et le personnaliser selon vos besoins, ce qui peut contribuer à rendre le système plus sécurisé. Linux est plus difficile à gérer mais offre plus de flexibilité et d'options de configuration.

Sécuriser un système dans une production des mains des pirates et des crackers est une tâche difficile pour un administrateur système. Il s'agit de notre premier article relatif à « Comment sécuriser une machine Linux » ou « Renforcer une machine Linux ». Dans cet article, nous expliquerons 25 trucs et astuces utiles pour sécuriser votre système Linux. J'espère que les trucs et astuces ci-dessous vous aideront à sécuriser votre système.

1. Sécurité physique du système

Configurez le BIOS pour désactiver le démarrage à partir d'un CD/DVD, de Périphériques externes, d'un Lecteur de disquette dans le BIOS. Ensuite, activez le mot de passe BIOS et protégez également GRUB avec un mot de passe pour restreindre l'accès physique à votre système.

  1. Définir le mot de passe GRUB pour protéger les serveurs Linux

2. Partitions de disque

Il est important d’avoir différentes partitions pour obtenir une plus grande sécurité des données en cas de sinistre. En créant différentes partitions, les données peuvent être séparées et regroupées. Lorsqu'un accident inattendu se produit, seules les données de cette partition seront endommagées, tandis que les données des autres partitions survivront. Assurez-vous que vous devez disposer des partitions distinctes suivantes et que les applications tierces doivent être installées sur des systèmes de fichiers distincts sous /opt.

/
/boot
/usr
/var
/home
/tmp
/opt

3. Réduire les packages pour minimiser la vulnérabilité

Voulez-vous vraiment que toutes sortes de services soient installés ? Il est recommandé d’éviter d’installer des packages inutiles pour éviter les vulnérabilités des packages. Cela peut minimiser le risque que la compromission d'un service puisse conduire à la compromission d'autres services. Recherchez et supprimez ou désactivez les services indésirables du serveur pour minimiser la vulnérabilité. Utilisez la commande « chkconfig » pour découvrir les services qui s'exécutent sur le niveau d'exécution 3.

/sbin/chkconfig --list |grep '3:on'

Une fois que vous avez découvert qu'un service indésirable est en cours d'exécution, désactivez-le à l'aide de la commande suivante.

chkconfig serviceName off

Utilisez le gestionnaire de packages RPM tel que les outils « yum » ou « apt-get » pour répertorier tous les packages installés sur un système et les supprimer à l'aide de la commande suivante.

yum -y remove package-name
sudo apt-get remove package-name
  1. 5 exemples de commandes chkconfig
  2. 20 exemples pratiques de commandes RPM
  3. 20 commandes Linux YUM pour la gestion des packages Linux
  4. 25 commandes APT-GET et APT-CACHE pour gérer la gestion des packages

4. Vérifiez les ports réseau d'écoute

À l'aide de la commande réseau « netstat », vous pouvez afficher tous les ports ouverts et les programmes associés. Comme je l'ai dit ci-dessus, utilisez la commande « chkconfig » pour désactiver tous les services réseau indésirables du système.

netstat -tulpn
  1. 20 commandes Netstat pour la gestion de réseau sous Linux

5. Utilisez Secure Shell (SSH)

Les protocoles Telnet et rlogin utilisent du texte brut et non un format crypté, ce qui constitue une faille de sécurité. SSH est un protocole sécurisé qui utilise une technologie de cryptage lors de la communication avec le serveur.

Ne vous connectez jamais directement en tant que root sauf si cela est nécessaire. Utilisez « sudo » pour exécuter des commandes. Les sudo sont spécifiés dans le fichier /etc/sudoers et peuvent également être modifiés avec l'utilitaire « visudo » qui s'ouvre dans l'éditeur VI.

Il est également recommandé de remplacer le numéro de port SSH 22 par défaut par un autre numéro de port de niveau supérieur. Ouvrez le fichier de configuration principal SSH et définissez les paramètres suivants pour restreindre l'accès des utilisateurs.

vi /etc/ssh/sshd_config
Désactiver la connexion root
PermitRootLogin no
Autoriser uniquement des utilisateurs spécifiques
AllowUsers username
Utiliser la version 2 du protocole SSH
Protocol 2
  1. 5 bonnes pratiques pour sécuriser et protéger le serveur SSH

6. Gardez le système à jour

Gardez toujours le système à jour avec les derniers correctifs, correctifs de sécurité et noyau lorsqu'ils sont disponibles.

yum updates
yum check-update

7. Verrouillage des tâches Cron

Cron possède sa propre fonctionnalité intégrée, qui permet de spécifier qui peut et qui ne peut pas vouloir exécuter des tâches. Ceci est contrôlé par l'utilisation de fichiers appelés /etc/cron.allow et /etc/cron.deny. Pour verrouiller un utilisateur à l'aide de cron, ajoutez simplement les noms d'utilisateur dans cron.deny et pour permettre à un utilisateur d'exécuter cron, ajoutez-le dans le fichier cron.allow. Si vous souhaitez empêcher tous les utilisateurs d'utiliser cron, ajoutez la ligne « TOUS » au fichier cron.deny.

echo ALL >>/etc/cron.deny
  1. 11 exemples de planification Cron sous Linux

8. Désactivez la clé USB pour détecter

Il arrive souvent que nous souhaitions empêcher les utilisateurs d'utiliser une clé USB dans les systèmes pour protéger et sécuriser les données contre le vol. Créez un fichier « /etc/modprobe.d/no-usb » et l'ajout de la ligne ci-dessous ne détectera pas le stockage USB.

install usb-storage /bin/true

9. Allumez SELinux

Security-Enhanced Linux (SELinux) est un mécanisme de sécurité de contrôle d'accès obligatoire fourni dans le noyau. Désactiver SELinux signifie supprimer le mécanisme de sécurité du système. Réfléchissez bien avant de le supprimer. Si votre système est connecté à Internet et accessible au public, réfléchissez-y davantage.

SELinux propose trois modes de fonctionnement de base et ils le sont.

  1. Application : il s'agit du mode par défaut qui active et applique la politique de sécurité SELinux sur la machine.
  2. Permissif : dans ce mode, SELinux n'appliquera pas la politique de sécurité sur le système, avertira et enregistrera uniquement les actions. Ce mode est très utile en termes de dépannage des problèmes liés à SELinux.
  3. Désactivé : SELinux est désactivé.

Vous pouvez afficher l'état actuel du mode SELinux à partir de la ligne de commande en utilisant 'system-config-selinux', 'getenforce' ou ' commandes sétatus.

sestatus

S'il est désactivé, activez SELinux à l'aide de la commande suivante.

setenforce enforcing

Il peut également être géré à partir du fichier « /etc/selinux/config », où vous pouvez l'activer ou le désactiver.

10. Supprimer les bureaux KDE/GNOME

Il n'est pas nécessaire d'exécuter des bureaux X Window comme KDE ou GNOME sur votre serveur LAMP dédié. Vous pouvez les supprimer ou les désactiver pour augmenter la sécurité du serveur et les performances. Pour désactiver simplement, ouvrez le fichier « /etc/inittab » et définissez le niveau d'exécution sur 3. Si vous souhaitez le supprimer complètement du système, utilisez la commande ci-dessous.

yum groupremove "X Window System"

11. Désactivez IPv6

Si vous n'utilisez pas de protocole IPv6, vous devez le désactiver car la plupart des applications ou des politiques ne nécessitent pas le protocole IPv6 et actuellement, il n'est pas requis sur le serveur. . Accédez au fichier de configuration réseau et ajoutez les lignes suivantes pour le désactiver.

vi /etc/sysconfig/network
NETWORKING_IPV6=no
IPV6INIT=no

12. Interdire aux utilisateurs d'utiliser d'anciens mots de passe

Ceci est très utile si vous souhaitez interdire aux utilisateurs d'utiliser les mêmes anciens mots de passe. L'ancien fichier de mots de passe se trouve dans /etc/security/opasswd. Ceci peut être réalisé en utilisant le module PAM.

Ouvrez le fichier « /etc/pam.d/system-auth » sous RHEL/CentOS/Fedora.

vi /etc/pam.d/system-auth

Ouvrez le fichier '/etc/pam.d/common-password' sous Ubuntu/Debian/Linux Mint.

vi /etc/pam.d/common-password

Ajoutez la ligne suivante à la section « auth ».

auth        sufficient    pam_unix.so likeauth nullok

Ajoutez la ligne suivante à la section « mot de passe » pour interdire à un utilisateur de réutiliser son dernier 5 mot de passe.

password   sufficient    pam_unix.so nullok use_authtok md5 shadow remember=5

Seuls les 5 derniers mots de passe sont mémorisés par le serveur. Si vous avez essayé d'utiliser l'un des 5 derniers mots de passe, vous obtiendrez une erreur du type.

Password has been already used. Choose another.

13. Comment vérifier l'expiration du mot de passe de l'utilisateur

Sous Linux, les mots de passe des utilisateurs sont stockés dans le fichier « /etc/shadow » au format crypté. Pour vérifier l'expiration du mot de passe de l'utilisateur, vous devez utiliser la commande 'chage'. Il affiche des informations sur les détails d'expiration du mot de passe ainsi que la date du dernier changement de mot de passe. Ces informations sont utilisées par le système pour décider quand un utilisateur doit modifier son mot de passe.

Pour afficher les informations sur l'ancienneté d'un utilisateur existant, telles que la date d'expiration et l'heure, utilisez la commande suivante.

#chage -l username

Pour modifier l’ancienneté du mot de passe de n’importe quel utilisateur, utilisez la commande suivante.

#chage -M 60 username
#chage -M 60 -m 7 -W 7 userName
Paramètres
  1. -M Définir le nombre maximum de jours
  2. -m Définir le nombre minimum de jours
  3. -W Définir le nombre de jours d'avertissement

14. Verrouiller et déverrouiller le compte manuellement

Les fonctionnalités de verrouillage et de déverrouillage sont très utiles, au lieu de supprimer un compte du système, vous pouvez le verrouiller pendant une semaine ou un mois. Pour verrouiller un utilisateur spécifique, vous pouvez utiliser la commande suivante.

passwd -l accountName

Remarque : L'utilisateur verrouillé est toujours disponible pour l'utilisateur root uniquement. Le verrouillage est effectué en remplaçant le mot de passe crypté par une chaîne (!). Si quelqu'un essaie d'accéder au système en utilisant ce compte, il obtiendra une erreur similaire à celle ci-dessous.

su - accountName
This account is currently not available.

Pour déverrouiller ou activer l'accès à un compte verrouillé, utilisez la commande as. Cela supprimera la chaîne (!) avec le mot de passe crypté.

passwd -u accountName

15. Appliquer des mots de passe plus forts

Un certain nombre d'utilisateurs utilisent des mots de passe souples ou faibles et leur mot de passe peut être piraté avec des attaques basées sur un dictionnaire ou par force brute. Le module « pam_cracklib » est disponible dans la pile de modules PAM (Pluggable Authentication Modules) qui obligera l'utilisateur à définir des mots de passe forts. Ouvrez le fichier suivant avec un éditeur.

Lire aussi :

vi /etc/pam.d/system-auth

Et ajoutez une ligne en utilisant les paramètres de crédit tels que (lcredit, ucredit, dcredit et/ou ocredit respectivement en minuscules , majuscules, chiffres et autres)

/lib/security/$ISA/pam_cracklib.so retry=3 minlen=8 lcredit=-1 ucredit=-2 dcredit=-2 ocredit=-1

16. Activer Iptables (pare-feu)

Il est fortement recommandé d'activer le pare-feu Linux pour sécuriser les accès non autorisés à vos serveurs. Appliquez des règles dans iptables pour filtrer les paquets entrants, sortants et transférés. Nous pouvons spécifier l'adresse source et l'adresse de destination à autoriser et à refuser dans un numéro de port udp/tcp spécifique.

  1. Guide et astuces IPTables de base

17. Désactivez Ctrl+Alt+Suppr dans Inittab

Dans la plupart des distributions Linux, en appuyant sur « CTRL-ALT-DELETE », votre système redémarrera le processus. Ce n’est donc pas une bonne idée d’activer cette option au moins sur les serveurs de production, si quelqu’un le fait par erreur.

Ceci est défini dans le fichier '/etc/inittab', si vous regardez attentivement ce fichier, vous verrez une ligne similaire à celle ci-dessous. Par défaut, la ligne n'est pas commentée. Nous devons le commenter. Cette signalisation de séquence de touches particulière arrêtera un système.

Trap CTRL-ALT-DELETE
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

18. Vérification des comptes pour les mots de passe vides

Tout compte ayant un mot de passe vide signifie qu'il est ouvert à un accès non autorisé à toute personne sur le Web et fait partie de la sécurité d'un serveur Linux. Vous devez donc vous assurer que tous les comptes ont des mots de passe forts et que personne n’a d’accès autorisé. Les comptes avec mot de passe vides présentent des risques pour la sécurité et peuvent être facilement piratés. Pour vérifier s'il y avait des comptes avec un mot de passe vide, utilisez la commande suivante.

cat /etc/shadow | awk -F: '($2==""){print $1}'

19. Afficher la bannière SSH avant de vous connecter

C'est toujours une meilleure idée d'avoir une bannière légale ou des bannières de sécurité avec quelques avertissements de sécurité avant l'authentification SSH. Pour définir de telles bannières, lisez l'article suivant.

  1. Afficher un message d'avertissement SSH aux utilisateurs

20. Surveiller les activités des utilisateurs

Si vous avez affaire à de nombreux utilisateurs, il est alors important de collecter les informations sur les activités et les processus de chaque utilisateur et de les analyser ultérieurement ou en cas de problèmes de performance ou de sécurité. Mais comment pouvons-nous surveiller et collecter des informations sur les activités des utilisateurs.

Il existe deux outils utiles appelés « psacct » et « acct » qui sont utilisés pour surveiller les activités et les processus des utilisateurs sur un système. Ces outils fonctionnent en arrière-plan du système et suivent en permanence chaque activité utilisateur sur un système et les ressources consommées par des services tels que Apache, MySQL, SSH, FTP, etc. Pour plus d'informations sur l'installation, la configuration et l'utilisation, visitez l'URL ci-dessous.

  1. Surveiller l'activité des utilisateurs avec les commandes psacct ou acct

21. Consultez régulièrement les journaux

Déplacez les journaux dans un serveur de journaux dédié, cela peut empêcher les intrus de modifier facilement les journaux locaux. Vous trouverez ci-dessous le nom des fichiers journaux par défaut de Common Linux et leur utilisation :

  1. /var/log/message – Où les journaux complets du système ou les journaux d'activité actuels sont disponibles.
  2. /var/log/auth.log – Journaux d'authentification.
  3. /var/log/kern.log – Journaux du noyau.
  4. /var/log/cron.log – Journaux Crond (tâche cron).
  5. /var/log/maillog – Journaux du serveur de messagerie.
  6. /var/log/boot.log – Journal de démarrage du système.
  7. /var/log/mysqld.log – Fichier journal du serveur de base de données MySQL.
  8. /var/log/secure – Journal d'authentification.
  9. /var/log/utmp ou /var/log/wtmp : Fichier des enregistrements de connexion.
  10. /var/log/yum.log : fichiers journaux Yum.

22. Sauvegarde de fichiers importants

Dans un système de production, il est nécessaire de sauvegarder les fichiers importants et de les conserver dans un coffre-fort de sécurité, sur un site distant ou hors site en cas de reprise après sinistre.

23. Liaison NIC

Il existe deux types de modes dans la liaison NIC, qu'il faut mentionner dans l'interface de liaison.

  1. mode=0 – Tournoi à la ronde
  2. mode=1 – Actif et sauvegarde

Le NIC Bonding nous aide à éviter un point de défaillance unique. Dans la liaison NIC, nous lions deux ou plusieurs cartes réseau Ethernet ensemble et créons une seule interface virtuelle où nous pouvons attribuer une adresse IP pour parler avec d'autres les serveurs. Notre réseau sera disponible dans le cas où une carte NIC serait en panne ou indisponible pour quelque raison que ce soit.

Lire aussi : Créer une liaison de canal NIC sous Linux

24. Gardez /boot en lecture seule

Le noyau Linux et ses fichiers associés se trouvent dans le répertoire /boot qui est par défaut en lecture-écriture. Le passage en lecture seule réduit le risque de modification non autorisée des fichiers de démarrage critiques. Pour ce faire, ouvrez le fichier « /etc/fstab ».

vi /etc/fstab

Ajoutez la ligne suivante en bas, enregistrez-la et fermez-la.

LABEL=/boot     /boot     ext2     defaults,ro     1 2

Veuillez noter que vous devez réinitialiser la modification en lecture-écriture si vous devez mettre à niveau le noyau à l'avenir.

25. Ignorer ICMP ou la demande de diffusion

Ajoutez la ligne suivante dans le fichier « /etc/sysctl.conf » pour ignorer les requêtes ping ou broadcast.

Ignore ICMP request:
net.ipv4.icmp_echo_ignore_all = 1

Ignore Broadcast request:
net.ipv4.icmp_echo_ignore_broadcasts = 1

Chargez de nouveaux paramètres ou modifications en exécutant la commande suivante

#sysctl -p

Si vous avez manqué un conseil important en matière de sécurité ou de renforcement dans la liste ci-dessus, ou si vous avez un autre conseil qui doit être inclus dans la liste. Veuillez déposer vos commentaires dans notre zone de commentaires. TecMint est toujours intéressé à recevoir des commentaires, des suggestions ainsi que des discussions en vue d'amélioration.