GNU/Linux >> Tutoriels Linux >  >> Linux

Sécuriser un système Linux hérité

Ils disent que l'achat d'une maison ou d'une voiture d'occasion ne fait qu'acheter les problèmes de quelqu'un d'autre. Quelles réparations de ruban adhésif se cachent à l'intérieur des murs ou sous le capot ? Sans connaître l'historique de maintenance, vous devez enquêter pour éviter les imprévus.

Qu'il y ait un serveur malveillant, des administrateurs qui quittent l'entreprise ou des acquisitions et des fusions, à un moment donné de votre parcours d'administrateur système, vous hériterez d'un serveur que vous n'avez pas construit mais dont vous êtes soudainement responsable. Cet article se concentrera sur quelques domaines pour commencer à sécuriser et à se familiariser avec le nouveau système. Adopter une approche de tri n'est qu'un point de départ :la sécurité fait partie du cycle de vie continu de la gestion d'un système.

N'oubliez pas que ce système héberge une application ou un service qui doit rester disponible. Utilisez tous les processus de gestion du changement requis par votre entreprise. Familiarisez-vous également avec les politiques de sécurité de votre entreprise et où vous pouvez les consulter pour les paramètres appropriés.

Sauvegardes

Ayez toujours un bon plan de sauvegarde… et des sauvegardes récupérables !

Commencez l'examen en vérifiant que le système est sauvegardé régulièrement et que les sauvegardes sont récupérables. N'attendez pas d'avoir besoin de la restauration pour découvrir qu'elle est mauvaise. Les vérifications de sauvegarde doivent inclure la confirmation que tous les systèmes de fichiers distants sont également sauvegardés quelque part.

Certaines applications et bases de données nécessitent un processus ou un agent spécial pour obtenir de bonnes sauvegardes, c'est donc le bon moment pour vérifier que ces sauvegardes supplémentaires sont effectuées correctement. La réalisation de tests de récupération périodiques qui incluent le test de l'application pour la fonctionnalité de post-récupération identifie les lacunes et les problèmes avec les sauvegardes.

Vous pouvez également effectuer une sauvegarde ponctuelle rapide avant de continuer. Une restauration complète du système peut ne pas être nécessaire, mais si les ajustements tournent terriblement mal, cette sauvegarde fournit un état de fonctionnement sur lequel se rabattre. Utilisez le contrôle des modifications et documentez votre travail comme une autre méthode pour faciliter une éventuelle reprise.

Comptes

Vos prochaines étapes incluent un examen de qui a accès au système et comment ils s'authentifient. Tous les privilèges élevés, tels que via sudo , doivent également être vérifiés. Connaître les politiques de sécurité de l'entreprise telles que l'expiration des mots de passe et les règles de complexité pour vérifier qu'elles sont appliquées. Cet article de la base de connaissances explique en détail comment configurer les stratégies de mot de passe.

Remarque : Assurez-vous de vérifier si le système utilise des sources d'identité comme IDM, AD ou LDAP. Inversement, même si le système utilise un compte externe, les comptes locaux doivent toujours être examinés.

Examinons des exemples spécifiques de problèmes que vous devez prendre en compte et comment les gérer.

Le compte de l'administrateur précédent

Étant donné que ce système a été hérité, demandez-vous si l'administrateur précédent a toujours besoin d'un compte. Sinon, évitez de supprimer leur compte. Verrouillez-le plutôt. Cela préserve les informations de compte et aide à empêcher la réutilisation par inadvertance de l'UID. Le usermod La commande peut être utilisée pour verrouiller le compte :

$ sudo user mod -L <username>

Comptes d'accès privilégiés

Passez en revue sudoers pour inclure à la fois les sudoers fichier (/etc/sudoers ) et le répertoire include (/etc/sudoers.d ). Recherchez les affectations en particulier qui incluent ALL . Cette affectation comprend généralement le groupe wheel . Pour supprimer des utilisateurs de groupes, utilisez le groupmems commande comme celle-ci :

$ sudo groupmems -g wheel -d <username>

Vous pouvez également lister toutes les commandes sudo autorisées pour n'importe quel utilisateur comme ceci :

$ sudo -l -U <username>

Autres comptes

S'il existe des comptes partagés par plusieurs utilisateurs, envisagez de forcer un changement de mot de passe dans le cadre de ce transfert. Une meilleure approche des comptes partagés consisterait à tirer parti des groupes et des ACL pour les autorisations de fichiers.

Les comptes de service ne doivent pas avoir d'accès à la connexion en tant que bonne pratique. Ces comptes sont généralement verrouillés ou n'ont pas de mot de passe, et ont un shell comme /usr/sbin/nologin . Si un compte de service a besoin d'un shell interactif, envisagez d'accorder à l'administrateur sudo su <accountname> au lieu d'une connexion directe.

Les autres commandes qui peuvent aider lors de l'examen des comptes sont chage et last . Le chage La commande fournit des options pour afficher et ajuster les paramètres d'expiration du compte. Le last La commande affiche des informations sur les connexions récentes.

Pour afficher les informations d'expiration d'un compte :

$ sudo chage -l <username>

Pour afficher les cinq dernières connexions d'un compte :

$ last <username>  -5

Ports et services

L'examen des services et des ports en cours d'exécution vous aide à identifier ceux qui sont inutiles et peuvent être désactivés. L'arrêt de ces services supplémentaires les supprime également en tant que vecteurs d'attaque.

Un moyen rapide de montrer ce qui écoute est avec le ss commande. Cet exemple utilise des options pour afficher les sockets écoutant TCP et UDP, et inclut également les détails du processus :

$ sudo ss -tulnp 

L'exécution de cette commande sur un exemple de serveur Web donne ce que vous voyez ici :

Ce résultat montre qu'il y a httpd processus écoutant les ports 80 , 443 , 8080 , et 8443 . Les autres processus d'écoute incluent mariadb (mysqld ) sur le port 3306 , xvnc sur le port 5901 , et vsftpd sur le port21 . Ces trois derniers processus pourraient soulever quelques inquiétudes.

Tout ce qui n'est pas nécessaire au fonctionnement de l'application ou du système doit être désactivé. Si vous avez besoin de retracer un PID jusqu'au systemd service, exécutez systemctl status :

$ systemctl status <PID>

Configurations de recherche pour les services restants. Certaines applications peuvent prendre en charge les ACL pour ajouter une autre couche de protection. Sur les systèmes multirésidents, vérifiez si un service n'est nécessaire que sur un segment de réseau. L'Local Address:Port la colonne indique si le service écoute sur une IP spécifique, ou sur tous les réseaux (* , 0.0.0.0 , ou :: ).

Examinons d'autres choses que vous pouvez faire pour sécuriser vos ports et services.

Ports

Scanner les ports avec un outil comme nmap montre quels ports sont accessibles depuis un autre système. Cet outil peut également être utilisé pour valider que les pare-feu fonctionnent comme prévu. Vous avez plusieurs options avec nmap , mais pour une analyse simple et rapide, il vous suffit de fournir le nom d'hôte ou l'adresse IP :

$ nmap <host-to-scan>

Services

Accédez à vos services pour voir ce qui est en cours d'exécution et nécessaire, car tous les services n'ont pas d'écouteur de réseau actif. Vous pouvez obtenir une liste des services en cours d'exécution en utilisant le --state option avec systemctl , comme ceci :

$ systemctl --state=running -t s

L'arrêt et la désactivation des services sont simples avec systemctl :

$ sudo systemctl stop <service name>
$ sudo systemctl disable <service name>

Vérifiez également tous les services qui ont échoué et nécessitent une maintenance :

$ systemctl --state=failed

Ou, si un service n'est pas du tout nécessaire, désactivez-le avec systemctl disable .

SELinux

SELinux doit être activé et configuré pour s'appliquer. Cet état peut être vérifié en utilisant sestatus :

$ sestatus -v

Si nécessaire, vous pouvez modifier SELinux pour l'appliquer avec la commande :

$ sudo setenforce Enforcing

Gardez le changement persistant en allant dans /etc/selinux/config en recherchant soit SELINUX=disable ou SELINUX=permissive , puis remplacez la ligne par :

SELINUX=enforcing

Le dépannage de SELinux va au-delà de ce guide, mais une bonne référence de départ est cet article de la base de connaissances.

Correctif

La maintenance et la sécurisation d'un système incluent des mises à jour. Pour le serveur hérité, commencez par vérifier que le système est abonné et configuré pour recevoir les mises à jour. Sur Red Hat Enterprise Linux (RHEL), utilisez cette commande pour afficher des informations sur le service de gestion des abonnements :

$ sudo subscription-manager config --list 

Le baseurl listé dans le [rhsm ] fournit des informations sur ce à quoi ce système est abonné. Si cdn.redhat.com est répertorié, le système est abonné directement au Red Hat Content Delivery Network.

Cet exemple montre un système abonné directement à Red Hat. Si le baseurl est un serveur satellite, vérifiez les référentiels synchronisés pour vous assurer que le contenu synchronisé est à jour.

Confirmez quels dépôts sont activés pour le système avec cette commande :

$ yum repolist --all

Cette sortie affiche les référentiels configurés et leur état. Si un référentiel est désactivé, il ne sera pas vérifié pour les correctifs lors de la mise à jour du système.

Remarque : À partir de RHEL 8, CentOS 8 et Fedora 22, yum a été remplacé par dnf . Le yum les options sont presque les mêmes que celles de dnf , et yum lui-même n'est qu'un lien symbolique vers dnf .

Exécution de yum check-update répertoriera les packages et les versions disponibles pour la mise à jour. La meilleure pratique applique tous les correctifs disponibles, mais dans certains cas, seuls les correctifs liés à la sécurité sont souhaités. Il est possible de le faire en utilisant le --security option.

Cette option peut être combinée avec le check-update pour renvoyer une liste de correctifs qui soulagent une vulnérabilité de sécurité, mais ignorent tout le reste. Il peut également être inclus avec la update commande.

$ yum check-update 

Ajoutez le --security option pour limiter cette sortie aux mises à jour liées à la sécurité.

Pour les systèmes Red Hat Enterprise Linux, vous pouvez vérifier la criticité de chaque mise à jour à partir de Red Hat Satellite ou du portail client. Chaque errata de sécurité a une note (Critique, Important, Modéré ou Faible) basée sur le risque potentiel. L'évaluation vous aide à déterminer dans quel délai vous devez planifier les mises à jour du système.

Lorsque vous êtes prêt à appliquer le correctif, exécutez la yum update commande :

$ sudo yum update

Vérifiez la sortie et appuyez sur Y lorsque vous y êtes invité.

Remarque : Les mises à jour du noyau nécessitent un redémarrage, et cet article répertorie les autres packages nécessitant un redémarrage pour les systèmes RHEL. Les yum-utils le package comprend également un needs-restarting utilitaire qui vérifie si un redémarrage est nécessaire.

Étapes suivantes

Les analyses de vulnérabilité et les vérifications de conformité doivent être programmées et effectuées dans la mesure du temps disponible. Deux outils pour explorer ce sujet sont OpenVAS et OpenSCAP. Ces outils fournissent une analyse plus approfondie du système, signalant les vulnérabilités existantes et les lacunes en matière de conformité. Si vous n'avez jamais utilisé ces outils auparavant, ils peuvent prendre un certain temps pour s'installer et se familiariser avec, mais ils devraient devenir vos outils de référence pour sécuriser tous les systèmes que vous gérez.

Fermer le tout

Être chargé de gérer un système que quelqu'un d'autre a construit peut certainement être intimidant. Tout au long de cet examen de votre système hérité, vous devriez vous familiariser avec celui-ci et vous aurez amélioré sa sécurité. Poursuivez les examens de sécurité périodiques pour tous vos systèmes dans le cadre du cycle de vie du système.

N'oubliez pas de consulter les prochains articles, car nous approfondirons l'analyse des vulnérabilités et les processus STIG.

[Vous voulez essayer Red Hat Enterprise Linux ? Téléchargez-le maintenant gratuitement.]


Linux
  1. Comment changer le nom d'hôte sous Linux

  2. Exemples de commande "shutdown" sous Linux

  3. Exemples de commandes resize2fs sous Linux

  4. Exemples de commandes localectl sous Linux

  5. Désactivation des vsyscalls sous Linux

Commande Fsck sous Linux

Linux est-il un système d'exploitation ou un noyau ?

Introduction aux cgroups d'un administrateur système Linux

Documenter la disponibilité du système sous Linux

Optimiseur et surveillance du système Stacer Linux

Comment répertorier les services sous Linux