J'ai eu l'intention d'écrire ce pendant un certain temps, mais il avait un poste de passer par l'un des SecurityFocus listes de diffusion qui m'a motivé pour le faire. Le poste demandé: «Comment pouvez-vous limiter sudo afin qu'un utilisateur ne peut pas supprimer tout le disque dur?". La réponse courte est, il est extrêmement difficile.
Sudo est un outil de sécurité utilisé dans le monde UNIX et Linux. Il permet à l'administrateur de restreindre l'accès aux commandes de haut niveau. Elle diffère de la commande su à ce su donne immédiatement l'accès au niveau utilisateur root. Sudo permet à l'administrateur de peaufiner ce qui peut réellement commandes root sont accessibles. En outre, sudo crée une piste d'audit de toutes les commandes exécutées.
Le problème avec sudo est qu'il n'a aucune visibilité quand un outil permet à un shell de commande pour être pondu. Cela signifie qu'un utilisateur peut se conduisent mal sur le système tout en générant une piste de vérification, ce qui fait croire qu'ils ont rien fait de mal.
Essayez vous-même
Je vais vous guider à travers un exemple afin que vous puissiez l'expérience exactement ce que je veux dire. Vous aurez besoin d'un système Linux pour cela. Si vous n'en avez pas à portée de main, Backtrack devrait fonctionner parfaitement. Le système de test que j'utilise est basé sur Fedora , mais elles sont assez semblables.
Étape # 1: Ajoutez-vous au groupe des utilisateurs
Utilisez votre éditeur de texte préféré pour éditer le fichier / etc / groupe. Recherchez le groupe «users» et d'ajouter votre nom de compte. Dans cet exemple, j'ai ajouté le nom du compte "cbrenton".
utilisateurs: x: 100: cbrenton
Étape # 2: Créer une entrée sudousers
Ensuite, nous devons éditer le fichier / etc / sudoers pour définir ce que le groupe d'utilisateurs est autorisé à faire. Nous avons besoin d'utiliser visudo pour ce qui est un éditeur de texte basé sur le éditeur vi . Si vous êtes à l'aise avec vi, tapez la commande "visudo" et ajouter cette ligne à la fin du fichier:
Utilisateurs% ALL = / usr / bin / less
Si vous ne connaissez pas vi, je vais vous donner les commandes exactes. Rappelez-vous que tout est sensible à la casse:
visudo
G
o <- minuscule O
Utilisateurs% ALL = / usr / bin / less
<Echap> <Echap>
: Wq
Étape 3: activité sudo Moniteur
Ouvrez une seconde fenêtre de terminal et utiliser "su -" à assumer les privilèges root. Tapez la commande suivante:
tail-f / var / log / secure
Ceci nous permettra de surveiller toutes les activités de sudo.
Étape 4: Exécuter une commande sudo
Retour dans la fenêtre de terminal d'abord dans la commande:
sudo less / etc / hosts
Vous serez invité à entrer votre mot de passe (votre mot de passe, mot de passe n'est pas root). Une fois que vous tapez votre mot de passe, vous devriez voir le contenu du fichier / etc / hosts. Dans la seconde fenêtre de terminal, vous devriez maintenant avoir une entrée de journal semblable au suivant:
18 août 16:07:58 sudo fubar: cbrenton: ATS = pts / 4; PWD = / home / cbrenton; USER = root; COMMAND = / usr / bin / less / etc / hosts
Ainsi nous pouvons voir la date / heure, qui a exécuté la commande, qui ils étaient en terminale, ce qu'ils étaient dans le répertoire, quel est le niveau d'autorisations qu'ils utilisaient, et ce qu'ils ont exécuté la commande, y compris les commutateurs de ligne de commande (dans ce cas une spécification de fichier) . Jusqu'ici, tout va bien.
Étape 5: Buste une coquille
Dans la fenêtre de premier terminal (course de la commande less) tapez:
! <Entrée>
Vous devriez maintenant voir une invite de commande root. Pour vérifier que vous êtes à la racine de fait, tapez la commande:
whoami
Notez que la commande en tapant "whoami" n'a pas généré une entrée de journal de sécurité. En d'autres termes, une fois que nous a engendré un shell de commande avec la commande less, nous pouvons faire quelque chose que nous voulons et sudo ne le journal.
Étape 6: vérification supplémentaires
Dans la fenêtre de premier terminal où les «moins» est dans le fond, tapez la commande suivante:
Top
Ce sera d'imprimer des statistiques sur le fonctionnement du système.
Dans la seconde fenêtre de terminal noter le terminal utilisé. Dans l'entrée du journal par exemple au-dessus du terminal est «ATS = pts / 4" mais le vôtre peut être différent. Prenez note de la borne. Maintenant, dans cette seconde fenêtre de presse:
<CTRL>-C
pour tuer la commande tail. Maintenant, exécutez la commande suivante:
ps ax | grep 'pts / 4 "
Remplacer «pts / 4» avec le nom du terminal quoi vous avez noté. Vous devriez recevoir une sortie similaire à ce qui suit:
17330 pts / 4 SS 0:00 bash
18392 pts / 4 S 0:00 less / etc / hosts
18410 pts / 4 S 0:00 / bin / bash
18432 pts / 4 S + 00:00 Haut
Cela nous indique que nous avons deux obus fonctionnant sur ce terminal. Le premier se penche sur le fichier hosts tandis que le second exécute la commande top. Ainsi, le système ne fait voir que nous jouons dans la coquille autour de seconde, c'est juste que sudo ne pouvez pas vous connecter.
Quelques autres commandes de niveau root, vous pouvez essayer cela ne nuira pas à quoi que ce soit:
iptables-L
ifconfig
lsof-i
Lorsque vous êtes convaincu que vous avez un accès root complet, revenir en arrière et consulter le journal pour vérifier que sudo ne s'est pas connecté n'importe quoi:
tail / var / log / secure
Lorsque vous avez terminé avec le shell dans la fenêtre de premier terminal, tapez:
la sortie
q
Qu'avons-nous appris?
Nous avons appris que nous ne pouvons pas permettre aux utilisateurs d'avoir accès sudo complet au système et en fait de maintenir une piste de vérification de ce qu'ils font. L'accès doit être limité à des outils qui ne supportent pas d'invoquer un shell. Si nous ne savons pas, c'est une simple question de vérifier les pages de manuel. Essayez ceci:
moins l'homme
/
coquille
La commande "moins homme" fait apparaître le manuel d'utilisation de la "moins" de commande. En appuyant sur la touche antislash évoque la fonction de recherche. Quand nous taper le mot "coquille" et appuyez sur la touche Entrée sauts homme, à la première instance de la chaîne "shell" et met en évidence tous les cas. Notez l'homme a bondi à la section décrit comment moins peut invoquer un shell. Maintenant nous savons que nous ne pouvons pas permettre l'accès à la commande sudo "moins". Une meilleure option pourrait être la commande "cat", qui ne supporte pas d'invoquer un shell.
Une autre possibilité est de simplement utiliser un outil différent. Par exemple l'outil op a été spécialement conçu pour répondre à certaines des lacunes de sécurité dans sudo, y compris la capacité de contrôler l'accès au shell.
Résumé Exec
Sudo est un outil de sécurité d'excellente qualité fournie vous l'utilisez à bon escient. Une des erreurs les plus communes faites avec sudo est de l'utiliser pour permettre l'accès à tous les outils de niveau racine. Sudo peut générer une piste de vérification efficace, mais seulement si elle est limitée à des outils qui n'ont pas la capacité du shell.
No related posts.

