Audit des accès aux fichiers Linux. Les meilleurs outils d'audit de sécurité Linux. Ce service comprend

Sécurité Serveurs Linux est très important de protéger vos données, votre propriété intellectuelle et votre temps des mains des pirates. L'administrateur système est responsable de la sécurité du système d'exploitation Linux. Dans cet article, nous examinerons vingt choses que vous devez faire avec votre système d'exploitation Linux pour le garder sûr et sécurisé à tout moment. Si ce ordinateur de famille, alors il ne sert peut-être à rien de s'inquiéter autant de la sécurité : des mots de passe forts et le blocage de l'accès aux ports depuis Internet suffiront. Mais dans le cas d'un serveur public, il convient de veiller à assurer sa protection.

Ces instructions conviennent à n'importe quelle distribution, que vous utilisiez CentOS, Red Hat ou Ubuntu, Debian.

1. Cryptage des communications

Toutes les données transmises sur le réseau sont ouvertes à la surveillance. Il est donc nécessaire de crypter les données transmises, lorsque cela est possible, à l'aide de mots de passe, de clés ou de certificats.

Utilisez scp, ssh, rsync ou sftp pour transférer des fichiers. Il est également possible de monter le système de fichiers distant dans votre répertoire personnel à l'aide d'outils tels que shhfs.

GnuPG vous permet de chiffrer et de signer vos données à l'aide d'un Clé privée. Il existe également des fonctions de gestion des clés et d'accès aux clés publiques.

Fugu est un outil graphique de transfert de fichiers via le protocole SFTP. SFTP est très similaire à FTP, mais toute la session est cryptée. Cela signifie qu'aucun mot de passe ou commande n'est envoyé à formulaire ouvert. Ces transferts sont donc moins vulnérables aux tiers. Vous pouvez également utiliser FileZilla, c'est multiplateforme Client FTP avec prise en charge de FTS sur SSH/TLS et SSH Transfert de fichier Protocole (SFTP).

OpenVPN est un client VPN efficace et léger prenant en charge le cryptage SSH.

2. Essayez de ne pas utiliser FTP, Telnet, Rlogin et RSH

Sur la plupart des réseaux, les noms d'utilisateur et les mots de passe des commandes FTP, Telnet et RSH peuvent être interceptés par toute personne se trouvant sur le même réseau à l'aide d'un renifleur de paquets. Décision commune Ce problème utilise OpenSSH, SFTP ou SFTP, qui ajoute SSL ou TLS au FTP standard. Exécutez cette commande pour supprimer NIS, RSH et autres services hérités :

miam effacer inetd xinetd ypserv serveur tftp serveur telnet rsh-serve

3. Réduisez la quantité de logiciels

Avez-vous vraiment besoin d’installer tous les services Web ? N'installez pas de choses inutiles logiciel pour éviter les vulnérabilités de ces programmes. Utilisez votre gestionnaire de paquets pour voir programmes installés et supprimez tous ceux qui sont inutiles :

miam la liste est installée
paquet de liste $ miam
$ miam supprimer le paquet

dpkg --liste
$ dpkg --info paquet
$ apt-get supprimer le paquet

4. Une voiture - un service

Exécutez différents services sur des serveurs distincts ou machines virtuelles. Cela limite le nombre de services pouvant être compromis. Par exemple, si un attaquant parvient à pirater Apache, il aura accès à l'intégralité du serveur. Y compris des services tels que MySQL, un serveur de messagerie, etc. Vous pouvez utiliser des logiciels tels que XEN ou OpenVZ pour la virtualisation.

5. Gardez votre noyau Linux et vos logiciels à jour

L'application de correctifs de sécurité est un élément très important pour assurer la sécurité de votre serveur Linux. Le système d'exploitation fournit tous les outils nécessaires pour maintenir le système à jour et mettre à jour les nouvelles versions. Toutes les mises à jour de sécurité doivent être appliquées dès que possible. Ici aussi, vous devez utiliser votre gestionnaire de packages. Par exemple:

Ou pour les systèmes basés sur Debian :

sudo apt mise à jour && sudo apt mise à niveau

Vous pouvez configurer Red Hat ou Fedora pour vous avertir par e-mail lorsque de nouvelles mises à jour de sécurité sont disponibles. Vous pouvez également configurer mise à jour automatique via cron, ou vous pouvez utiliser l'aptcron de Debian pour vous avertir lorsque le système doit être mis à jour.

6. Utilisez des extensions de sécurité sous Linux

Le système d'exploitation Linux est livré avec divers correctifs de sécurité qui peuvent être utilisés pour se protéger contre les erreurs de configuration ou les logiciels malveillants. Mais vous pouvez également utiliser des systèmes de contrôle d'accès aux applications supplémentaires tels que SELinux ou AppArrmor.

SELinux fournit diverses politiques de sécurité pour le noyau Linux. Ici, vous pouvez contrôler l'accès à toutes les ressources système à l'aide de rôles. Seul un programme dont le rôle le permet peut accéder à une ressource particulière, et même les droits de superutilisateur n'ont pas d'importance. SELinux augmente considérablement la sécurité d'un système Linux, puisque même root est considéré utilisateur régulier. Plus de détails sont décrits dans un article séparé.

7. Comptes d'utilisateurs et mots de passe forts

Utilisez les commandes useradd et usermod pour créer et gérer des comptes utilisateur. Assurez-vous d'avoir un mot de passe bon et fort, il doit contenir au moins huit caractères, de préférence dans une casse différente, parmi lesquels il doit y avoir Symboles spéciaux ou des chiffres. Par exemple, 8 caractères, dont sept sont des lettres et un est un symbole ou un chiffre. Utilisez des outils comme John l'éventreur pour trouver les mots de passe utilisateur faibles sur le serveur et configurez pam_cracklib.so pour appliquer la politique de mot de passe.

8. Changez les mots de passe de temps en temps

La commande change permet de préciser le nombre de jours avant la date d'un changement forcé de mot de passe. Ces informations sont utilisées par le système pour déterminer quand l'utilisateur doit les modifier. Ces paramètres se trouvent dans /etc/login.defs. Pour désactiver le vieillissement du mot de passe, entrez la commande suivante :

changer -l nom d'utilisateur

Pour obtenir des informations sur la chaîne d'expiration du mot de passe, entrez la commande :

Vous pouvez également tout configurer manuellement dans le fichier /etc/shadow :

(mot de passe de l'utilisateur): (dernier changement):(maximum_jours) : (minimum_jours) : (Avertissement):(désactiver):(expiration_line) :

  • Jours minimum- l'intervalle minimum entre les changements de mot de passe, c'est-à-dire la fréquence à laquelle l'utilisateur peut changer le mot de passe.
  • Jours maximum- combien de jours le mot de passe sera valide, après cette période l'utilisateur sera obligé de changer le mot de passe.
  • Avertissement- le nombre de jours au bout desquels l'utilisateur sera averti qu'il doit changer son mot de passe.
  • Ligne_expiration- le nombre de jours à compter du 1er janvier 1970 pendant lesquels le compte sera totalement désactivé.

chage -M 60 -m 7 -W 7 nom d'utilisateur

Il est également conseillé d'empêcher les utilisateurs d'utiliser d'anciens mots de passe, sinon tous les efforts visant à les forcer à changer leur mot de passe seront annulés.

9. Bloquer les comptes après des tentatives de connexion infructueuses

Sur le système d'exploitation Linux, vous pouvez utiliser la commande faillog pour afficher les tentatives de connexion échouées des utilisateurs. Vous pouvez également définir une limite en l'utilisant tentatives infructueuses entrée. Toutes les informations sur les tentatives de connexion échouées sont stockées dans le fichier /var/log/faillog. Pour le visualiser, tapez :

Et pour définir une limite aux tentatives de connexion pour un compte spécifique, utilisez :

faillog -r -u utilisateur

Vous pouvez également bloquer ou débloquer manuellement des comptes à l'aide de la commande passwd. Pour bloquer l'utilisation :

mot de passe -l utilisateur

Et pour débloquer :

mot de passe -u utilisateur

Il est également conseillé de vérifier s'il existe des comptes dans le système avec des mots de passe vides. Pour ce faire, exécutez :

awk -F : "($2 == "") (imprimer)" /etc/shadow

Vérifiez également s'il existe des utilisateurs avec un groupe ou un ID 0. Il ne devrait y avoir qu'un seul utilisateur de ce type, à savoir root. Vous pouvez vérifier en utilisant cette commande :

awk -F : "($3 == "0") (imprimer)" /etc/passwd

Il ne devrait y avoir qu'une seule ligne :

racine:x:0:0:root:/root:/bin/bash

S'il y en a d'autres, supprimez-les. Les utilisateurs, et en particulier leurs mots de passe faibles, sont l'un des éléments les plus vulnérables pouvant briser la sécurité sous Linux.

10. Désactivez la connexion root

Pour maintenir la sécurité de votre système Linux, ne vous connectez jamais en tant qu'utilisateur root. Vous pouvez utiliser sudo pour obtenir les autorisations nécessaires et exécuter la bonne commande au nom du superutilisateur. Cette commande vous permet de ne pas divulguer le mot de passe du superutilisateur à d'autres administrateurs et contient également des outils de surveillance, de restriction et de suivi des activités.

11. Sécurité physique du serveur

La sécurité du serveur Linux doit inclure la sécurité physique. Vous devez limiter l'accès physique à la console du serveur. Configurez le BIOS de manière à ce que le démarrage à partir d'un support externe tel qu'un DVD, un CD ou une clé USB ne soit pas pris en charge. Définissez également un mot de passe sur le BIOS et le chargeur de démarrage GRUB pour protéger leurs paramètres.

12. Désactivez les services inutiles

Désactivez tous les services et démons inutilisés. N'oubliez pas non plus de supprimer ces services du démarrage. Vous pouvez afficher une liste de tous les services actifs sur les systèmes Red Hat avec la commande :

chkconfig --liste | grep "3: activé"

Pour désactiver le service, utilisez :

service arrêt de service
$ service chkconfig désactivé

Trouvez tous les ports ouverts par les programmes :

La même chose peut être faite en utilisant le scanner nmap :

nmap -sT -O hôte local

Utilisez iptables pour fermer tous les ports qui ne doivent pas être accessibles depuis le réseau. Ou arrêtez les services inutiles comme décrit ci-dessus.

13. Supprimer le serveur X

Un serveur X sur un ordinateur serveur est totalement facultatif. Vous n'avez pas besoin d'exécuter l'environnement graphique sur un serveur Apache ou Email dédié. Supprimez ce logiciel pour améliorer la sécurité et les performances.

14. Configurer Iptables

iptables est un programme en espace utilisateur permettant de configurer le pare-feu Netfilter intégré au noyau. Il vous permet de filtrer tout le trafic et d'autoriser uniquement certains types de trafic. Utilisez également TCPWrappers - un système ACL pour filtrer l'accès à Internet. Vous pouvez empêcher de nombreux types d'attaques DOS en utilisant iptables. La sécurité du réseau sous Linux est un aspect très important de la sécurité globale du système.

15. Configurez le noyau

Le fichier /etc/sysctl.conf stocke les paramètres du noyau qui sont chargés et appliqués lors du démarrage du système.

Activer la protection contre le débordement de tampon execshield :

noyau.exec-shield=1
kernel.randomize_va_space=1

Activer la protection contre l'usurpation d'adresse IP :

net.ipv4.conf.all.rp_filter=1

Désactivez la redirection d'adresse IP :

net.ipv4.conf.all.accept_source_route=0

Ignorer les demandes de diffusion :

net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.icmp_ignore_bogus_error_messages=1

Enregistrez tous les paquets falsifiés :

net.ipv4.conf.all.log_martians = 1

16. Partitionnez votre disque dur

Diviser le disque dur en partitions en fonction de l'objectif des fichiers améliore la sécurité des systèmes d'exploitation Linux. Il est recommandé de créer des sections distinctes pour les répertoires suivants :

  • /maison
  • /var et /var/tmp

Créez des partitions séparées pour les répertoires racine Apache et Serveurs FTP. Ouvrez le fichier /etc/fstab et définissez des options spéciales pour les partitions requises :

  • noexec- n'exécutez aucun programme ou fichier exécutable sur cette partition, seuls les scripts sont autorisés
  • nœudv- n'autorisez pas les périphériques symboliques ou spéciaux sur cette partition.
  • nosuide- n'autorisez pas l'accès SUID/SGID aux programmes de cette section.

17. Utiliser les limites d'espace disque

Limitez l'espace disque disponible pour les utilisateurs. Pour ce faire, créez un quota de disque dans /etc/fstab, remontez les systèmes de fichiers et créez une base de données de quotas de disque. Cela améliorera la sécurité sous Linux.

18. Désactivez IPv6

Le protocole Internet de nouvelle génération IPv6 remplacera à l'avenir l'IPv4 déjà utilisé. Mais sur ce moment Il n'existe aucun outil pour vérifier la sécurité d'un réseau basé sur IPv6. Beaucoup Distribution Linux Autoriser l'utilisation d'IPv6 par défaut. Les pirates peuvent envoyer du trafic indésirable sans que les administrateurs puissent le suivre. Donc si vous n'avez pas besoin de ce service, désactivez-le.

19. Désactivez les binaires SUID et SGID inutilisés

Tous les fichiers exécutables pour lesquels l'indicateur SUID ou SGID est activé sont potentiellement dangereux. Cet indicateur signifie que le programme sera exécuté avec les droits de superutilisateur. Cela signifie que s'il y a une vulnérabilité ou un bug dans le programme, alors local ou utilisateur distant pourra utiliser ce fichier. Recherchez tous ces fichiers à l'aide de la commande suivante :

trouver / -perm +4000

Recherchez les fichiers avec l'indicateur SGID défini :

trouver / -perm +2000

Ou combinons tout cela en une seule commande :

trouver / \(-perm -4000 -o -perm -2000 \) -print
$ find / -path -prune -o -type f -perm +6000 -ls

Vous devrez étudier chaque fichier trouvé en détail pour comprendre à quel point un fichier particulier est nécessaire.

20. Dossiers publics

Il est également conseillé de rechercher des fichiers modifiables par tous les utilisateurs du système. Pour ce faire, utilisez la commande suivante :

find /dir -xdev -type d \(-perm -0002 -a ! -perm -1000 \) -print

Vous devez maintenant vérifier si les droits du groupe et du propriétaire de chaque fichier sont correctement définis et si cela présente un risque pour la sécurité.

Il est également conseillé de retrouver tous les fichiers qui n'appartiennent à personne :

find /dir -xdev \(-nouser -o -nogroup \) -print

21. Utilisez un système d'authentification centralisé

Sans système d'authentification centralisé, les données des utilisateurs deviennent incohérentes, ce qui peut entraîner l'obsolescence des informations d'identification et l'oubli de comptes qui auraient dû être supprimés depuis longtemps. Un service centralisé vous permettra de garder le contrôle sur les comptes d'utilisateurs et les données d'authentification sur différents Systèmes Linux et Unix. Vous pouvez synchroniser les données d'authentification entre les serveurs. Mais n'utilisez pas le service NIS, mieux vaut vous tourner vers Open DAP.

L’une des implémentations intéressantes d’un tel système est Kerberos. Il permet aux utilisateurs de s'authentifier à l'aide d'une clé privée dans des réseaux où les paquets peuvent être interceptés et modifiés. Kerberos utilise une clé symétrique pour chiffrer les données et nécessite un centre de gestion des clés pour fonctionner. Vous pouvez configurer la connexion à distance, la copie à distance, la copie sécurisée de fichiers entre systèmes et d'autres tâches avec un niveau de sécurité élevé.

22. Journalisation et audit

Configurez la journalisation et l’audit pour collecter et enregistrer toutes les connexions échouées et les tentatives de piratage. Par défaut, tous les journaux, ou du moins la plupart d'entre eux, se trouvent dans le dossier /var/log/. Nous avons parlé plus en détail des responsabilités de certaines personnes dans un article séparé.

Vous pouvez consulter les journaux à l'aide d'utilitaires tels que logwatch ou logcheck. Ils rendent la lecture des journaux très facile. Vous pouvez consulter non pas l'intégralité du dossier, mais uniquement les événements qui vous intéressent, et également vous envoyer une notification par email.

Surveillez le système à l’aide du service auditd. Le programme écrit sur le disque tous les événements d'audit qui vous intéressent. Tous les paramètres d'audit sont stockés dans le fichier /etc/audit.rules. Lorsque le système démarre, le service lit toutes les règles de ce fichier. Vous pouvez l'ouvrir et tout configurer selon vos besoins, ou utiliser un utilitaire séparé- auditctl. Vous pouvez configurer les éléments suivants :

  • Événements de démarrage et d’arrêt du système
  • Date et heure de l'événement
  • Événements utilisateur (par exemple accès à un fichier spécifique)
  • Type d'événement (modification, accès, suppression, écriture, mise à jour, etc.)
  • Succès ou échec lors de l'exécution d'un événement
  • Enregistrement des événements de modification des paramètres réseau
  • Enregistrer les modifications apportées aux utilisateurs et aux groupes
  • Surveillance des modifications des fichiers

23. Sécurisez votre serveur OpenSSH

Autoriser uniquement l'utilisation du protocole 2 :

Désactivez la connexion en tant que superutilisateur :

24. Installer l'ID

Un système IDS ou de détection d'intrusion tente de détecter les activités suspectes et malveillantes telles que Attaque DOS, l'analyse des ports ou même la tentative de pirater un ordinateur en surveillant le trafic réseau.

Il est recommandé de déployer un tel logiciel avant que le système ne soit exposé à Internet. Vous pouvez installer AIDE, qui est un HIDS (Host based IDS) capable de surveiller tous les aspects des composants internes de votre système.

Snort est un logiciel de détection des tentatives d'intrusion sur le réseau. Il est capable d'analyser et d'enregistrer des paquets et d'analyser trafic réseau en temps réel.

25. Protégez vos fichiers et répertoires

Linux offre une excellente protection contre l'accès non autorisé aux fichiers. Cependant, les autorisations définies par Linux et le système de fichiers ne signifient rien lorsqu'un attaquant a un accès physique à l'ordinateur et peut simplement se connecter. Disque dur ordinateur vers un autre système pour copier vos données. Mais vous pouvez facilement protéger vos fichiers avec le cryptage :

  • Pour crypter et déchiffrer un fichier à l'aide d'un mot de passe, utilisez GPG
  • Vous pouvez également protéger les fichiers en utilisant OpenSSL
  • Le cryptage du répertoire est effectué à l'aide d'ecryptfs
  • TrueCrypt est un outil de chiffrement de disque gratuit pour Windows et Linux

conclusions

Désormais, la sécurité du système d'exploitation Linux sur votre ordinateur sera considérablement augmentée. N'oubliez pas de définir des mots de passe complexes de temps en temps. Écrivez votre outil de sécurité système préféré dans les commentaires.

La protection des informations est une question prioritaire pour toute entreprise opérant sur Internet. Infections virales et les attaques externes, ainsi que l'accès non autorisé à l'information - tout cela entraîne d'importants risques financiers et de réputation. Par conséquent, lors du choix d'une plate-forme de serveur, les propriétaires d'entreprise sont toujours intéressés par le degré de sécurité des ressources.
Et afin de vérifier le bon fonctionnement du système de sécurité et s'il présente des vulnérabilités ou des failles, il est recommandé d'effectuer un audit de sécurité du serveur au moins une fois par mois.

Ce qui est inclus dans un audit de sécurité du serveur

Même un facteur apparemment insignifiant, comme des paramètres incorrects du serveur lui-même ou un logiciel obsolète, peut constituer une menace pour la sécurité. Un audit permet d'identifier les faiblesses de sécurité et de prendre des mesures en temps opportun pour les éliminer avant qu'une infection ou un vol de données ne se produise.
L'administrateur du serveur vérifie les logiciels installés et leur conformité dernières mises à jour, évalue les paramètres de sécurité du serveur et élimine les erreurs éventuelles, et analyse également la conformité des paramètres de droits d'accès des employés à certaines ressources.

Comment auditer vous-même un serveur dédié virtuel

Chaque utilisateur peut vérifier la sécurité des serveurs sur les plateformes Windows ou Linux ; pour ce faire, il n'est pas nécessaire d'avoir des connaissances particulières en programmation.
Le contrôle de sécurité peut être divisé en plusieurs étapes :

Accès physique

Dans le cas d'un serveur dédié, l'accès physique au serveur de tiers est limité par défaut ; celui-ci est assuré par le centre de données. Mais l'utilisateur peut en outre définir un mot de passe pour accéder au BIOS.

Pare-feu

Pour une surveillance continue des logiciels et des ports, il doit être correctement configuré et activé. Fenêtre pare-feu. Pour Linux, vous pouvez utiliser le système SELinux pour le contrôle d'accès. Vous pouvez également louer chez nous un pare-feu matériel Cisco ASA ou Fortinet FortiGate 60D.

Système de fichiers

Vérifier les mises à jour

Configurez le serveur pour recevoir et installer automatiquement les mises à jour.

Politique de mot de passe

Installer en utilisant politiques locales Sécurité Windows Il est obligatoire d'exiger des mots de passe complexes, leur durée de validité, ainsi que de bloquer le compte après plusieurs autorisations infructueuses ou la saisie d'un mot de passe vide.

Contrôle des journaux

Activez la journalisation des segments d’infrastructure critiques et vérifiez-les régulièrement.

Sécurité Internet

Il est recommandé d'utiliser VPN et VLAN pour la segmentation des hôtes et la sécurité des liens.
Vous devez également modifier les paramètres par défaut et transférer les ports de service de l'équipement réseau.
Vous pouvez utiliser le service IPsec pour chiffrer le trafic. Et pour afficher les ports ouverts, utilisez l'utilitaire Netstat.

Contrôle d'accès

Limitez les droits d'accès des utilisateurs aux fichiers critiques, désactivez l'accès des invités et les utilisateurs avec des mots de passe vides. Désactivez les rôles et applications inutilisés sur le serveur.

Sauvegarde

Utilisez le service de sauvegarde de fichiers, c'est rentable et fiable. Ne stockez pas de sauvegardes non cryptées. Si vous louez un serveur chez nous, vous pouvez choisir un emplacement pour les sauvegardes.

Accès à la base de données

Les bases de données critiques doivent être stockées sur différents serveurs SQL. Vous devez configurer le lancement en tant qu'utilisateur avec des droits minimaux ou à partir d'une liste blanche d'adresses IP préconfigurée.

Protection antivirus

Pour exécuter le serveur sur Installation de Windows Un logiciel antivirus mis à jour automatiquement est recommandé lorsque les utilisateurs travaillent avec un stockage réseau. Pour Installer Linux aucun antivirus n'est requis à condition que la sécurité du serveur soit régulièrement surveillée et que les accès non autorisés soient contrôlés. L'utilitaire Tiger peut être utile pour cela.

Un tel audit une fois par mois permettra de vérifier le bon fonctionnement du serveur, d'éliminer les vulnérabilités et de surveiller la sécurité de l'infrastructure réseau.

La plupart des systèmes d'entreprise et multi-composants tels que SÈVE , Base de données Oracle utilisé dans leur plateforme système opérateur basé sur Linux . C’est pour cette raison qu’ils font l’objet d’une grande attention de la part des auditeurs informatiques. Aujourd'hui dans cet article nous allons présenter à votre attention plusieurs outils gratuits présentés sous forme de scripts et utilisant les mécanismes standards du système d'exploitation pour fournir un audit express de la configuration de sécurité.

Les commandes système et les scripts décrits ci-dessous qui sont utilisés pour l'audit express des options de sécurité des systèmes d'exploitation Linux sont basés sur les recommandations de vérification de sécurité publiées par la communauté ISACA dans le manuel du programme d'audit/assurance de sécurité du système d'exploitation UNIX/LINUX.

1.Vérification du compte

1.1 Liste de tous les utilisateurs
La liste des utilisateurs est stockée dans le fichier /etc/passwdfile. Pour obtenir une liste d'utilisateurs, vous pouvez utiliser le script suivant :

  1. poubelle/bash
  2. # liste d'utilisateurs dans le système.sh
  3. # compte et répertorie les « vrais » utilisateurs existants dans le système.
  4. echo "[*] Utilisateurs existants (triés par ordre alphabétique) :"
  5. grep '/bin/bash' /etc/passwd | grep -v 'racine' | couper -f1
  6. -d' : ' | trier
  7. echo -n « [*] Nombre d'utilisateurs réels trouvés : »
  8. grep '/bin/bash' /etc/passwd | grep -v 'racine' | toilettes -l
1.2 Liste des comptes bloqués
Lors de l'audit, il est nécessaire de vérifier la liste des utilisateurs bloqués et débloqués ( nom du compte ). La commande suivante fonctionnera pour cela :
  1. #!/bin/bash
  2. # mot de passe –s nom du compte

1.3 Afficher les statistiques de tous les utilisateurs

  • L'auditeur doit s'assurer que l'équipe ca inclus dans le système pour examiner les activités des utilisateurs :
    1. #!/bin/bash
    Pour afficher l'activité de la session de connexion de l'utilisateur avec les totaux pour chaque jour, utilisez la commande :
    1. #!/bin/bash
    2. # ac -d
    Pour afficher des informations sur l'activité de session (en heures) de la connexion utilisateur "utilisateur" :
    1. #!/bin/bash
    2. # utilisateur ac
    1.4 Affichage de l'activité des utilisateurs
    Les applications système psacct ou acct s'exécutent dans arrière-plan et surveiller l'activité de chaque utilisateur dans le système, ainsi que les ressources consommées par lui. Pour vérifier l'activité des utilisateurs dans le système, exécutez le script suivant :
    1. #!/usr/bin/envksh
    2. dernier -Fa|awk '
    3. /wtmp commence/ (suivant;)
    4. /toujours connecté/ (suivant; )
    5. $0 == redémarrer (suivant;)
    6. NF > 0 (
    7. si(NR > 1)
    8. printf("
      ”);
    9. printf("Utilisateur :t%s
      ", 1 $); #utilisateur
    10. printf (« Démarrer :t%s %s %s %s
      ”, $3, $4, $5, $6);
    11. si ($9 == « en bas »)
    12. printf("Fin:tshutdown
      ”);
    13. printf (« Fin :t%s %s %s %s
      ”, $9, $10, $11, $12);
    14. if(substr ($NF, 1, 1) == « ( »)
    15. t = $NF;
    16. h = « hôte local » ;
    17. t = $(NF-1);
    18. h = $NF;
    19. gsub("[()]", "", t);
    20. printf("Heure : t%s
      ", t);
    21. printf("Hôte distant :t%s
      ", h);
  • 2. Vérification de la politique de mot de passe

    2.1 Comptes avec un mot de passe vide
    Lors de l'audit, il est nécessaire de s'assurer qu'il n'y a pas de comptes bloqués dans le système qui vous permettent de vous connecter au système sans saisir de mot de passe. Cette règle peut être vérifiée avec la commande :

    # chat /etc/shadow | awk -F : ($2=="")(imprimer $1)'

    2.2 Vérification de la complexité du mot de passe
    Lors de l'audit, il est nécessaire de vérifier les paramètres de complexité du mot de passe pour réduire les risques de force brute (force brute) ou d'attaques par dictionnaire sur le mot de passe. Pour définir cette règle sur votre système, vous devez utiliser des modules d'authentification de plug-in (PAM).
    L'auditeur peut vérifier le paramètre correspondant dans le fichier de configuration :

    # vi /etc/pam.d/system-auth

    2.3 Vérification de la date d'expiration du mot de passe

    Pendant l'audit, vous devez vérifier le paramètre d'expiration du mot de passe. Pour vérifier la date d'expiration du mot de passe, vous devez utiliser la commande changement. Cette commande affiche des informations détaillées sur la date d'expiration du mot de passe, ainsi que la date de sa dernière modification.
    La commande suivante est utilisée pour afficher des informations sur « l'âge » des mots de passe :

    #chage -l nom d'utilisateur

    Pour modifier la période d'expiration du mot de passe pour un utilisateur spécifique, vous pouvez utiliser les commandes ci-dessous :

    #chage -M 60 nom d'utilisateur
    #chage -M 60 -m 7 -W 7 nom d'utilisateur

    Options (pour définir la date d'expiration du mot de passe) :
    -M – durée de validité maximale en jours.
    -m – période de validité minimale en jours.
    -W – paramètre d'avertissement en jours.

    2.4 Utilisation de mots de passe en double
    Les paramètres d'autorisation du système doivent être conformes à la politique de mot de passe. Le fichier contenant l'historique des mots de passe se trouve dans /etc/security/opaswd. Pour vérifier, vous devez suivre les étapes suivantes :

    pour RHEL : ouvrez le fichier '/etc/pam.d/system-auth' :

    # vi /etc/pam.d/system-auth

    pour Ubuntu/Debian/Linux Mint : ouvrez le fichier '/etc/pam.d/common-password' :

    # vi /etc/pam.d/common-password

    Ajoutez la ligne suivante à la section « auth » :

    auth suffisant pam_unix.so likeauthnullok

    Pour empêcher l'utilisation des six derniers mots de passe, ajoutez la ligne suivante :

    Mot de passe suffisant pam_unix.so nullokuse_authtok md5 shadow Remember=6

    Après avoir exécuté la commande, le système stockera un historique des six mots de passe précédents, et si un utilisateur tente de mettre à jour le mot de passe en utilisant l'un des six derniers, il recevra un message d'erreur.

    3. Paramètres de connexion sécurisés
    Protocoles connexion à distance au système Telnet et Rlogin sont très anciens et vulnérables, en raison de la transmission du mot de passe sur le réseau sous forme non cryptée. Pour une connexion à distance et sécurisée, un protocole sécurisé doit être utilisé Shell sécurisé (SSH). L'auditeur doit également s'assurer que l'option connexion root désactivé, port SSH par défaut modifié, accès à distance limité à des utilisateurs autorisés spécifiques uniquement. Les paramètres en cours de vérification se trouvent dans le fichier de configuration SSH :

    1. # vi /etc/ssh/sshd_config

    3.1 Connectez-vous en tant que superutilisateur (connexion root)

    Lors de l'audit, l'auditeur doit vérifier l'interdiction connexion à distance dans le système avec les droits de superutilisateur root.

    # PermitRootLogin = oui
    3.2 Vérification du compte du service de connexion SSH

    Pendant l'audit, l'auditeur doit vérifier le compte de service avec une valeur de connexion SSH sans mot de passe. Généralement, administrateurs système utilisez cette fonction pour programmer copies de sauvegarde, transférer des fichiers et exécuter des scripts en mode contrôle à distance.

    Vérifiez une dernière fois que vos paramètres sshd_config (/etc/ssh/sshd_config) sont corrects.

    # PermitRootLogin sans mot de passe

    # RSAAthentification = oui

    # PubkeyAuthentication = oui

    3.3 Vérification des listes d'accès dans DenyHosts et Fail2ban
    Pendant l'audit, vous devez vérifier les paramètres de la liste d'accès Refuser les hôtes Et Échec2ban . Il s'agit de scripts utilisés pour surveiller et analyser les journaux d'accès SSH et se protéger contre les attaques par force brute de mot de passe.

    Caractéristiques de DenyHosts :

    • enregistre et suit les journaux à partir d'un fichier /var/log/secure , notant toutes les tentatives de connexion réussies et infructueuses, et les filtre.
    • surveille les tentatives de connexion infructueuses
    • envoie par e-mail notification des hôtes bloqués et tentatives suspectes entrée
    Caractéristiques de Fail2ban :
    • Enregistre et suit les journaux des fichiers /var/log/secure Et /var/log/auth.log , /var/log/pwdfail
    • hautement personnalisable et multithread
    • surveille régulièrement les fichiers journaux

    4. Vérification des journaux système
    Pendant l'audit, vous devez vous assurer que le démon SysLog est en cours d'exécution et que tous les événements importants survenant dans le système sont enregistrés dans les journaux d'événements. Lors de l'audit, il faut également s'assurer que la politique de stockage des journaux d'événements prend en compte les exigences de la législation en vigueur et des politiques de sécurité.

    4.1 Journaux d'événements sous Linux :

    /var/log/auth.log – journal du système d'autorisation (connexions et mécanisme d'authentification).
    /var/log/dpkg.log – journal d'installation/suppression des packages utilisant dpkg.
    /var/log/yum.log – journal d'installation/suppression des packages utilisant yum.
    /var/log/faillog – journal des tentatives de connexion ayant échoué et leur nombre maximum pour chaque compte.
    /var/log/kern.log – journal du noyau (journal détaillé des messages du noyau Linux).
    /var/log/maillog ou /var/log/mail.log – journal du serveur de messagerie.
    /var/log/wtmp – journal de connexion (heure d'enregistrement et durée de travail de tous les utilisateurs du système).
    /var/run/utmp – informations sur les utilisateurs actuellement enregistrés dans le système.
    /var/log/lastlog – enregistrements des connexions précédentes.
    /var/log/boot – informations enregistrées lors du démarrage du système

    5. Protéger les fichiers système

    5.1 Protection du chargeur de démarrage GRUB

    Pour protéger le chargeur de démarrage GRUB, l'administrateur doit utiliser le cryptage par mot de passe dans Format MD5 :

    # grub-md5-crypt

    Après avoir exécuté la commande, l'administrateur doit ouvrir le fichier /boot/grub/menu.lst ou /boot/grub/grub.conf et ajoutez le mot de passe MD5 :

    # vi /boot/grub/menu.lst

    # vi /boot/grub/grub.conf

    Le mot de passe MD5 nouvellement créé peut être ajouté à fichier de configuration VER.

    5.2 Protection du répertoire de démarrage /BOOT

    Lors de l'audit, il est nécessaire de vérifier l'état de l'annuaire /botte puisque le noyau du système et les fichiers associés se trouvent dans le répertoire /botte. Vous devez vous assurer que ce répertoire dispose d'un accès en lecture seule pour empêcher toute modification non autorisée. fichiers importants dans le système. Pour vérifier, ouvrez le fichier /etc/fstab et vérifiez la configuration :

    Le fichier doit contenir la ligne :

    LABEL=/boot /boot ext2 valeurs par défaut,ro 1 2

    5.3 Vérification des ports ouverts et des connexions actives

    Le script suivant peut être utilisé pour vérifier les services exécutés sur le système :

    #!/bin/bash
    si (($(ps -ef | grep -v grep | grep $service | wc -l) > 0))
    alors
    echo "$service est en cours d'exécution !!!"
    autre
    /etc/init.d/$service start
    Fi

    Voir les connexions de réseau

    # netstat -anop
    ou
    # lsof -i(lsof -ni)
    ou
    #iptraf

    Ports d'écoute
    À l'aide de la commande Netstat, vous pouvez afficher tous les ports ouverts et leurs commandes associées. Exemple de script :

    #netstat–tulpn
    Un script pour l'analyse des ports est :
    analyse() (
    si [[ -z $1 || -z $2 ]]; alors
    echo « Utilisation : 0 $
    retour
    Fi
    hôte local = 1 $
    ports locaux =()
    cas 2 $ dans
    *-*)
    IFS=- lire début fin<<< “$2”
    pour ((port=début; port<= end; port++)); do
    ports+=($port)
    fait
    ;;
    *,*)
    IFS=, lire les ports -ra<<< “$2”
    ;; *)
    ports+=($2) ;;
    esac
    pour le port dans « $(ports[@]) » ; faire
    alarme 1 « echo >/dev/tcp/$host/$port » &&
    echo "port $port est ouvert" ||
    echo "port $port est fermé"
    fait
    }

    Pare-feu iptables

    Lors de l'audit, vous devez vérifier la configuration du pare-feu Linux pour empêcher tout accès non autorisé. Pour contrôler le trafic, des règles doivent être créées dans iptables qui filtreront les paquets entrants, sortants et transférés en fonction de l'adresse IP et du numéro de port TCP/UDP.

    # iptables -n -L -v --numéros de ligne

    Demandes ICMP/diffusion

    Lors de l'audit, il est nécessaire de vérifier que les systèmes sont configurés pour ignorer les requêtes ping et de diffusion. Pour ce faire, assurez-vous que dans le fichier "/etc/sysctl.conf" les lignes suivantes ont été ajoutées :

    # ignorer les requêtes ICMP :
    net.ipv4.icmp_echo_ignore_all = 1
    # ignorer les requêtes de diffusion :
    net.ipv4.icmp_echo_ignore_broadcasts = 1

    5.4 Vérification des mises à jour installées

    Les dernières mises à jour doivent être installées sur le système :

    # miam mises à jour
    # miam, vérifiez la mise à jour

    6. Vérification des tâches CRON exécutées automatiquement

    L'auditeur doit vérifier qui est autorisé et non autorisé à effectuer des tâches cron. L'accès à cron est contrôlé à l'aide de fichiers /etc/cron.allow Et /etc/cron.deny.

    # echo TOUS >>/etc/cron.deny

    7. Test du mode de sécurité forcé SELINUX

    Lors de l'audit, il est important de vérifier l'état SELinux . Ce mécanisme doit être activé dans le système.
    Il existe trois modes SELinux :

    • Application : la politique SELinux est forcée. SELinux refuse l'accès en fonction des règles de politique SELinux.
    • Permissive : la politique SELinux n'est pas appliquée. SELinux ne refuse pas l'accès, mais les refus sont enregistrés comme des actions qui seraient refusées si la politique était passée en mode d'application.
    • Désactivé : SELinux est désactivé. Seules les règles DAC discrètes sont utilisées.

    Lors d'un audit, vous pouvez utiliser le script suivant pour vérifier l'état de SELinux ou utiliser les commandes system-configselinux, getenforce ou sestatus :

    ENABLED=`cat /selinux/enforce`
    si [ "$ENABLED" == 1 ]; alors
    echo « SELinux est activé, désactivé ? (Oui Non):"
    lecture désactivée
    if [ $disable == "oui" ]; alors
    echo "désactivation de Selinux"
    définirforce 0
    Fi
    Fi

    Script LBSA pour vérifier les options de sécurité de base

    LBSA (script d'audit de sécurité de base Linux) est un script de base pour auditer la configuration de sécurité des systèmes Linux. Le script doit être exécuté depuis la ligne de commande avec les privilèges racine ou idéalement, exécutez-le selon un calendrier régulier à l'aide d'un planificateur cron pour vérifier systématiquement les modifications de configuration.

    Le but de ce script est d'auditer expressément les paramètres de sécurité et de télécharger un rapport décrivant les paramètres possibles qui peuvent être modifiés pour fournir un degré de sécurité plus élevé. S'il n'y a aucune recommandation pour une option, le script affiche simplement une ligne avec le traitement du contrôle, et la décision finale appartient toujours à l'administrateur. Avant d'exécuter l'analyse, les développeurs vous recommandent fortement de lire le manuel et d'étudier les sections recommandées pour plus d'informations.

    Dans l'édition actuelle (version 1.0.49), le script analyse les options suivantes :

    • vulnérabilités dans les paramètres du compte
    • vulnérabilités dans les paramètres SSH
    • vulnérabilités dans les répertoires temporaires et les répertoires du système de fichiers chargés dans la RAM (par exemple, dans /tmp, /var/tmp /dev/)
    • autorisations de fichiers, état des répertoires système
    • rconfiguration des services DRBD et Heartbeat

    Le script est assez volumineux, nous ne l'avons donc pas mis sur la page.

    Dans ce document, nous nous familiariserons avec les principaux utilitaires de renforcement de Linux. En russe, cela s'appelle "vérifier le niveau de sécurité des systèmes Linux et évaluer l'exactitude des configurations du point de vue de la sécurité des informations". Bien entendu, nous passerons non seulement en revue les programmes, mais donnerons également des exemples de leur utilisation.

    Votre propre auditeur, ou votre propre sécurité

    Les administrateurs, et plus encore les auditeurs en sécurité de l'information, sont souvent confrontés à la tâche de vérifier la sécurité d'un grand nombre d'hôtes en très peu de temps. Et bien sûr, pour résoudre ces problèmes dans le segment Entreprise, il existe des outils spécialisés, tels que les scanners de sécurité réseau. Je suis sûr que tous - du moteur open source OpenVAS aux produits commerciaux comme Nessus ou Nexpose - sont connus de nos lecteurs. Cependant, ce logiciel est généralement utilisé pour rechercher des logiciels obsolètes et donc vulnérables, puis exécuter une gestion des correctifs. De plus, tous les scanners ne prennent pas en compte certaines fonctionnalités spécifiques des mécanismes de protection intégrés de Linux et d'autres produits open source. Enfin, le prix de l'émission est important, car les produits commerciaux ne peuvent être proposés que par les entreprises qui allouent des budgets à cette activité.

    C'est pourquoi nous parlerons aujourd'hui d'un ensemble spécialisé d'utilitaires distribués gratuitement qui peuvent diagnostiquer le niveau actuel de sécurité du système, évaluer les risques potentiels, par exemple des « services supplémentaires » qui apparaissent sur Internet, ou une configuration par défaut non sécurisée, et même proposer des options pour corriger les défauts trouvés. Un autre avantage de l'utilisation de ces outils est la possibilité de répliquer des scénarios de tests de batterie de serveurs standard à partir d'un nombre illimité de systèmes Linux et de créer une base de tests documentée sous forme de journaux et de rapports individuels.

    Aspects pratiques de l'audit de sécurité

    Si vous regardez à travers les yeux d’un auditeur, l’approche de test peut être divisée en deux types.

    D'abord- il s'agit du respect des exigences dites de conformité, ici la présence d'éléments de sécurité obligatoires prescrits dans toute norme internationale ou « meilleure pratique » est vérifiée. Un exemple classique est celui des exigences PCI DSS pour les systèmes informatiques de paiement, séries SOX404, NIST-800.

    Deuxième- Il s'agit d'une approche purement rationnelle basée sur la question « Que peut-on faire d'autre pour renforcer la sécurité ? Il n'y a pas d'exigences obligatoires - seulement vos connaissances, une tête claire et des mains habiles. Par exemple, il s'agit de mettre à jour la version du noyau et/ou des packages d'application, d'activer, de forcer, de configurer un pare-feu.

    Tout ce qui concerne la deuxième approche est généralement appelé terme spécial Durcissement, qui peut également être défini comme « des actions visant à améliorer le niveau de sécurité initial du système d'exploitation (ou du programme) principalement à l'aide de moyens standards ».

    La conformité aux exigences de conformité est généralement vérifiée en vue de se soumettre à un audit obligatoire tel que PCI DSS ou un autre audit de certification. Nous accorderons plus d’attention au composant Durcissement. Tous les grands développeurs proposent pour leurs produits Directives de durcissement- des guides contenant des conseils et des recommandations pour renforcer la sécurité, en tenant compte des mécanismes de sécurité standards et des spécificités du logiciel. Ainsi, Red Hat, Debian, Oracle, Cisco ont des guides similaires.

    INFO

    Le durcissement est un terme issu du monde de la sécurité de l'information qui fait référence au processus consistant à assurer la sécurité d'un système (programme) en réduisant sa vulnérabilité et, en règle générale, en utilisant uniquement des utilitaires ou des mécanismes de protection standard.

    Sudo apt-get update sudo apt-get install lynis

    Et pour les distributions orientées RPM (après avoir ajouté les dépôts appropriés) :

    Miam, installez Linus -y

    Installation sur macOS :

    $ Brew recherche Lynis $ Brew install Lynis

    Pour démarrer Lynis, il vous suffit de spécifier au moins une clé. Par exemple, pour exécuter tous les tests disponibles, vous devez spécifier le commutateur -c (tout cocher) :

    # Ensemble typique de tests sudo lynis audit system # Ensemble complet de tests sudo lynis audit system -c # Analyse d'un système d'audit hôte distant à distance







    Avant un audit, il est toujours judicieux de vérifier si une nouvelle version de Lynis est disponible :

    Informations de mise à jour de Lynis et vérification de la mise à jour de Lynis

    L'utilitaire Lynis, en plus de l'utilitaire standard, dispose d'un mode supplémentaire - lancement sans privilège:

    Audit Lynis --pentest

    Si vous souhaitez mettre le nom de l'auditeur qui a commencé les tests, ajoutez simplement le paramètre -auditor :

    Système d'audit Sudo lynis -c -auditor Papa

    À n'importe quelle étape de l'audit, le processus de vérification peut être poursuivi (Entrée) ou interrompu de force (Ctrl+C). Les résultats des tests effectués seront écrits dans le journal Lynis dans /var/log/lynis.log . Veuillez noter que le journal sera écrasé à chaque lancement de l'utilitaire.

    Pour tester de manière systématique en mode automatique, vous pouvez attribuer la tâche appropriée au planificateur Cron à l'aide du commutateur -cronjob. Dans ce cas, l'utilitaire sera lancé selon le modèle spécifié (config) et n'affichera aucun message interactif, question ou avertissement. Tous les résultats seront enregistrés dans le journal. Par exemple, voici un script pour lancer l'utilitaire avec la configuration par défaut une fois par mois :

    #!/bin/sh AUDITOR="automated" DATE=$(date +%Y%m%d) HOST=$(nom d'hôte) LOG_DIR="/var/log/lynis" REPORT="$LOG_DIR/report-$( HOST).$(DATE)" DATA="$LOG_DIR/report-data-$(HOST).$(DATE).txt" cd /usr/local/lynis ./lynis -c –auditor "$(AUDITOR)" –cronjob > $(REPORT) mv /var/log/lynis-report.dat $(DATA) # Fin

    Enregistrez ce script dans le répertoire /etc/cron.monthly/lynis. Et n'oubliez pas d'ajouter des chemins pour enregistrer les journaux (/usr/local/lynis et /var/log/lynis), sinon cela risque de ne pas fonctionner correctement.

    Vous pouvez voir une liste de toutes les commandes disponibles pour l'appel :

    Lynis affiche les commandes

    Ceux qui sont particulièrement curieux peuvent consulter les paramètres de la configuration par défaut :

    Paramètres d'affichage de Lynis

    Brèves instructions sur la façon d'utiliser l'utilitaire :

    Homme Lynis

    Les options pour les statuts possibles en fonction des résultats du contrôle sont limitées à la liste suivante : AUCUN, FAIBLE, TERMINÉ, TROUVÉ, NOT_FOUND, OK, AVERTISSEMENT.


    Exécution de tests individuels dans Lynis

    En pratique, il peut être nécessaire de réaliser seulement quelques tests. Par exemple, si votre serveur exécute uniquement les fonctions Mail Server ou Apache. Pour cela, nous pouvons utiliser le paramètre -tests. La syntaxe de la commande est la suivante :

    Lynis -teste les "Test-ID"

    Si vous avez du mal à comprendre en raison du grand nombre d'identifiants de test, vous pouvez utiliser le paramètre de groupe -test-category . Avec cette option, Lynis exécute uniquement les ID de test appartenant à une catégorie spécifique. Par exemple, nous prévoyons d'exécuter des tests de pare-feu et de noyau :

    ./lynis -tests-category "noyau de pare-feu"

    De plus, les fonctionnalités de Lynis sont étendues par divers plugins que vous pouvez ajouter vous-même ou en ajouter de nouveaux au répertoire existant.

    Suggestions de correction

    Tous les avertissements seront répertoriés après les résultats. Chacun commence par un texte d'avertissement, puis le test qui l'a généré est indiqué à côté entre parenthèses. La ligne suivante suggère une solution au problème, s'il en existe une. En fait, la dernière ligne est une URL où vous pouvez afficher les détails et trouver des recommandations supplémentaires sur la façon de résoudre le problème.

    Profils

    Les profils qui gèrent l'audit sont définis dans des fichiers avec l'extension .prf, situé dans le répertoire /etc/lynis. Le profil par défaut est nommé de manière prévisible : default.prf . Les développeurs ne recommandent pas de le modifier directement : il est préférable d'ajouter toutes les modifications que vous souhaitez apporter à l'audit dans le fichier custom.prf, situé dans le même répertoire.

    La suite est disponible uniquement pour les membres

    Option 1. Rejoignez la communauté « site » pour lire tous les documents sur le site

    L'adhésion à la communauté dans la période spécifiée vous donnera accès à TOUS les documents Hacker, augmentera votre remise cumulée personnelle et vous permettra d'accumuler une note professionnelle Xakep Score !