GNU/Linux >> Tutoriels Linux >  >> Linux

Comment auditer les autorisations avec la commande find

Avouons-le :le système de fichiers Linux peut être complexe. Ajoutez des systèmes de fichiers distants montés, des supports amovibles et tous les répertoires spécifiques au serveur que vous avez créés, et vous ou vos utilisateurs pouvez avoir du mal à vous rappeler exactement où un fichier donné est stocké. C'est là que le find La commande entre en jeu. Elle vous permet de rechercher des fichiers ou des répertoires en fonction de divers critères. Je vais faire un examen de base de find ci-dessous, mais l'objectif de cet article est un peu différent :rechercher des ressources par autorisations.

Pourquoi dois-je rechercher par autorisations ?

  • Audit de sécurité
  • Résoudre les problèmes d'accès des utilisateurs
  • Résoudre les problèmes d'accès aux applications

Exemple rapide de recherche par nom

Il existe d'autres articles sur Enable Sysadmin qui couvrent le find commander efficacement. Je vais cependant résumer rapidement la commande ici.

Syntaxe :

find (where to search) (what to search for)

Exemple :

# find /etc -name rsyslog
# find /home/user01 -type d

Cependant, cet article se concentre sur l'utilisation de -perm option, qui recherche en fonction des paramètres d'autorisations.

Mode absolu versus mode symbolique

Rappelez-vous que les autorisations sont définies en utilisant le chmod commande. Le chmod La commande reconnaît à la fois le mode absolu et le mode symbolique. Consultez mon article récent Comment gérer les autorisations Linux pour les utilisateurs, les groupes et autres pour un examen de la gestion de l'accès aux ressources, y compris les deux modes. Le find La commande reconnaît également l'un ou l'autre mode, vous pouvez donc utiliser celui qui vous vient le plus naturellement. Pour moi, c'est le mode absolu. Vous devez vous rappeler quelques éléments sur le mode absolu et le mode symbolique pour utiliser efficacement le find -perms commande.

Mode absolu

Le mode absolu utilise des valeurs octales pour représenter les autorisations. Les valeurs sont répertoriées dans l'ordre selon l'autorisation à attribuer à l'utilisateur, au groupe et à tous les autres.

Par exemple :

# chmod 764 file1

Définit l'utilisateur avec 7 (rwx), groupe avec 6 (rw), et d'autres avec 4 (r) pour file1 .

Mode symbolique

Le mode symbolique utilise des symboles pour représenter les niveaux d'accès, et il utilise des opérateurs mathématiques pour donner (+ ) ou supprimer (- ) autorisations.

Par exemple :

# chmod o+rw file1

Donne les autres identité lue et écrire vers file1 .

Rechercher les autorisations de ressources en utilisant le mode absolu

La recherche d'autorisations la plus fondamentale n'utilise aucun paramètre supplémentaire. La déclaration se lit comme "trouver une ressource avec ces autorisations."

Par exemple :

# find /etc -perm 777

La commande est :Rechercher le /etc répertoire de ressources avec le 777 niveau d'accès (rwx pour toutes les identités).

L'exemple ci-dessus ne trouve que les ressources avec exactement l'autorisation spécifiée, ni plus ni moins. Et si vous avez besoin d'un peu plus de flexibilité ? Il y a deux paramètres supplémentaires qui peuvent être très utiles. Le premier est le - caractère (tiret), et le second est le / caractère (barre oblique). Regardons les deux.

Rechercher par -

L'utilisation du - signifie "au moins ce niveau d'autorisation est défini, et toutes les autorisations supérieures."

Exemple :

# find . -perm -644

Cet exemple affiche toutes les ressources du répertoire actuel avec au moins 644 autorisations.

Rechercher par /

L'utilisation du / l'option signifie "l'une des autorisations répertoriées est définie."

Exemple :

# find . -perm /644

Cet exemple affiche les ressources avec 644 ou des autorisations supérieures.

Rechercher les autorisations de ressources en utilisant le mode symbolique

Le mode symbolique utilise le ugo symboles (utilisateur, groupe, autres), rwx symboles (lire, écrire, exécuter) et opérateurs mathématiques (tels que + ou - ) pour définir les autorisations.

Rechercher par -

Le - L'option fonctionne de la même manière en mode symbolique que ci-dessus en mode absolu. Il affiche les ressources avec "au moins ce niveau d'accès".

Exemple :

# find -perm -u+w,g+w

Rechercher par /

Le / fonctionne également de la même manière en mode symbolique. Il affiche les ressources avec "toutes les autorisations répertoriées".

Exemple :

# find -perm /u+w,g+w

Les autorisations standard Linux sont très courantes et vous savez maintenant comment rechercher des ressources avec un niveau d'accès donné configuré. Cependant, Linux profite également des autorisations spéciales . Le find La commande peut également afficher ces autorisations.

Rechercher des ressources avec des autorisations spéciales configurées

Les autorisations spéciales Linux définissent des contrôles d'accès supplémentaires sur les ressources. Il existe trois autorisations spéciales :Définir l'ID utilisateur (SUID), Définir l'ID de groupe (SGID) et Sticky Bit. Les détails de chacun sortent du cadre de cet article, mais permettez-moi de résumer rapidement :

Autorisation spéciale Description
SUID Un fichier est exécuté par un utilisateur avec l'identité du propriétaire, même si cet utilisateur n'est pas le propriétaire
SGID Le contenu d'un répertoire hérite automatiquement de l'association de groupe du dossier parent (idéal pour les répertoires partagés par les équipes de projet)
Bout collant Le fichier se charge automatiquement en mémoire et ne peut être ni supprimé ni modifié par une personne autre que le propriétaire

Consultez cet article pour plus d'informations sur les autorisations spéciales.

Les autorisations spéciales sont configurées à l'aide d'un quatrième bit (le plus à gauche) :

  • SUID =4
  • SGID =2
  • Bloc collant =1

Astuce :La sortie de ls -l la commande affichera un s dans le champ exécutable pour l'utilisateur si SUID est configuré, un s dans le champ exécutable du groupe si SGID est configuré, et un T ou t si le Sticky Bit est défini (selon que l'exécution est également définie).

Le contenu suivant couvre la recherche de fichiers avec des autorisations spéciales spécifiques configurées.

Rechercher des fichiers avec SUID configuré

Pour trouver les fichiers où le niveau d'accès SUID est défini, utilisez le -perm option, mais incluez le quatrième chiffre. SUID a une valeur octale de 4 .

Par exemple, pour rechercher des ressources avec le SUID configuré :

# find /usr/bin -perm 4755

Rechercher des fichiers avec SGID configuré

Vous pouvez utiliser la même syntaxe pour afficher les ressources avec l'autorisation SGID définie en utilisant la valeur octale SGID de 2 .

Par exemple, pour rechercher des ressources avec le SGID configuré :

# find /usr/bin -perm 2755

Rechercher des fichiers avec le Sticky Bit configuré

Enfin, vous pouvez utiliser la valeur octale de 1 pour afficher les ressources avec le Sticky Bit configuré.

Voici un exemple de Sticky Bit :

# find /etc -perm /1444

Remarque :Le - et / les paramètres fonctionnent de la même manière avec les autorisations spéciales qu'avec les autorisations standard.

[ D'autres lecteurs ont apprécié : Linux sysadmin basics :User account management ]

Exemples de bonus

Voici quelques commandes supplémentaires qui pourraient être utiles pour afficher les autorisations. Pendant que j'écrivais l'article, je n'arrêtais pas de penser, Attendez, qu'en est-il de ça ? puis en ajoutant des exemples bonus. Voici donc plusieurs commandes supplémentaires pour l'audit des autorisations.

Bonus 1 :Utilisez -not pour annuler les résultats

Vous pouvez utiliser le -not option avec find pour spécifier tout ce qui ne correspond pas aux critères donnés.

Le premier exemple montre un find normal tentative, et le second affiche find avec -not .

# find /etc/network -perm 777

L'exemple ci-dessus affiche les ressources dans /etc/network que fait avoir 777 autorisations configurées.

# find /etc/network -not -perm 777

Cet exemple affiche les ressources à l'intérieur de /etc/network qui ont des autorisations autres que 777 configuré.

Bonus 2 :Définissez les autorisations en utilisant find et chmod

L'un des avantages de find est qu'il inclut une fonction d'exécution. Vous pouvez combiner cela avec des commandes de suivi, telles que xargs , rm , ou chmod .

# find -perm -111 -exec chmod -R 777 {} \;

Dans cet exemple, le {} les caractères représentent les résultats de la find commande, et le \; les caractères représentent une terminaison du chmod commande.

Avertissement :Faites attention à comprendre exactement quel sera l'effet de votre exécution combinée "recherche + autres commandes". Une faute de frappe pourrait facilement find tous les fichiers dans /etc puis essayez de les supprimer ou de configurer des autorisations qui empêchent les utilisateurs légitimes d'accéder à leurs répertoires personnels.

Bonus 3 :Afficher les autorisations en utilisant ls et grep

Parfois, vous n'avez pas besoin de la fonctionnalité avancée de find commande. Au lieu de cela, vous avez juste besoin d'un affichage rapide et facile des autorisations spécifiques. Dans ce cas, fiez-vous au ls et grep commandes.

Exemple :

# ls -l | grep rwxrw-r--

Cette commande affiche tout le contenu du répertoire avec les autorisations spécifiées.

Bonus 4 :Afficher les autorisations ACL

Le find La commande n'affiche pas facilement les fichiers avec les autorisations de la liste de contrôle d'accès (ACL) appliquées. Dans ce cas, utilisez le getfacl commande à la place.

Exemple :

# getfacl file1

Voir Une introduction aux listes de contrôle d'accès Linux (ACL) pour plus d'informations sur les listes de contrôle d'accès.

Récapitulez

Le find La commande est un utilitaire pratique pour afficher les répertoires ou les fichiers que vous devez localiser. Cependant, la recherche peut également être un excellent outil de sécurité car elle affiche les répertoires et les fichiers avec des autorisations spécifiées. En tant qu'administrateur système, vous pouvez utiliser ces informations pour vous assurer que les ressources du serveur sont définies conformément aux politiques de sécurité de votre entreprise. N'oubliez pas que vous pouvez utiliser le >> redirecteur pour documenter ces autorisations. Un tel document peut être utilisé comme base de référence des autorisations pour les audits futurs.

[ Vous pensez à la sécurité ? Consultez ce guide gratuit pour renforcer la sécurité du cloud hybride et protéger votre entreprise. ] 


Linux
  1. Comment trouver des fichiers en double sous Linux ? L'aide est ici avec la commande fdupes !

  2. Comment trouver le processus avec un maximum de descripteurs de fichiers ?

  3. Comment rechercher des fichiers avec la commande fd sous Linux

  4. Comment trouver le nombre de cœurs dans Ubuntu

  5. Comment combiner la commande 'tar' avec 'find'

Comment utiliser la commande Linux sleep avec des exemples

Comment utiliser la commande who sous Linux avec des exemples

Comment utiliser la commande RPM (avec exemples)

Comment trouver des fichiers sur la ligne de commande Ubuntu

Comment rechercher des fichiers avec la commande fd sous Linux

Comment rechercher des fichiers avec des dizaines de critères avec la commande Bash Find