Question:
Mauvaise pratique pour avoir un mot de passe "dieu"?
Abe Miessler
2014-02-07 23:08:51 UTC
view on stackexchange narkive permalink

Est-ce une mauvaise pratique de sécurité d'avoir un mot de passe qui vous permettra d'accéder à n'importe quel compte utilisateur sur un site Web à des fins d'assistance? Le mot de passe serait stocké de manière sécurisée et serait extrêmement complexe. Énorme erreur?

Pourquoi ne pas avoir simplement un compte administrateur qui dispose des privilèges pour modifier les données des autres utilisateurs?
Il semble que cela mettrait une autre couche entre le personnel de support et le compte problématique sans fournir beaucoup plus de sécurité. Pourquoi pensez-vous que ce serait plus sûr?
@Polynomnial Habituellement, un administrateur «voit» un écran différent de celui d'un utilisateur. Parfois, il serait utile pour l'assistance de voir l'écran exact qu'un utilisateur voit lorsqu'il rencontre des problèmes. (Ne pas dire 'god' pw est une bonne idée, mais le compte administrateur ne résout pas ce problème spécifique - * à moins que * l'administrateur ait une certaine capacité à usurper l'identité de comptes.)
Il existe déjà un moyen de le faire. Il s'appelle «sudo» sur n'importe quel système d'exploitation multi-utilisateurs décent.
@Polynomial Ou mieux encore, n'utilisez pas d'administrateur, mais donnez aux personnes de support les autorisations pour le faire. De cette façon, des journaux peuvent être conservés indiquant qui a fait quoi au lieu de "L'administrateur a modifié les enregistrements DNS de X conformément à la [demande télécopiée] (http://www.theguardian.com/technology/2013/oct/15/metasploit-kdms-dns- fax piraté). " Edit: Oh, il semble que cela soit déjà mentionné dans les réponses.
@Shadur [Sudo n'est-il pas une chose Unix?] (Http://en.wikipedia.org/wiki/Sudo)
@Shadur Vous avez tout à fait raison, du point de vue de l'administrateur système. Sudo fonctionne si l'usurpation d'identité devait (et pourrait) se produire au niveau de la console système, mais je ne crois pas que ce soit l'esprit de la question. Quand je vois _ "site Web" _ dans la question d'origine et _ "personnel d'assistance" _ dans la réponse d'Abe au commentaire, cela me fait penser qu'il parle de l'assistance aux utilisateurs finaux ** au ** niveau de l'application, pour les problèmes ** sur * * la couche d'application. Si tel est le cas, la solution doit être de type sudo, mais extraite de la console et de l'application Web. C'est pourquoi j'ai fourni la réponse que j'ai faite.
Lorsque vous posez des questions de ce genre, il est parfois utile d'imaginer que vous parlez à un auditeur interne et que vous essayez d'expliquer pourquoi vous avez mis cette fonctionnalité. Vous: "Donc, nous avons ce mot de passe" dieu "". Auditeur interne: "Mot de passe" Dieu "- un peu comme une porte dérobée, non?" Vous: "Euh, enfin, en quelque sorte, mais ..." Auditeur: "GARDES! OFF AVEC 'EST' EAD !!!!!" Met tout cela en perspective, n'est-ce pas?
Dix réponses:
tylerl
2014-02-08 00:02:42 UTC
view on stackexchange narkive permalink

Cela ressemble beaucoup à un compte "Administrateur", qui a généralement un accès illimité aux éléments dont il est l'administrateur.

Les implications de sécurité d'un compte administrateur sont assez bien comprises, comme sont les meilleures pratiques. Je n'entrerai pas dans tous les détails, mais votre mise en œuvre rompt avec les meilleures pratiques sur une caractéristique clé: la traçabilité.

Vous voulez être en mesure de dire qui a fait quoi, en particulier pour les administrateurs. Si un administrateur peut se connecter à mon compte en utilisant son mot de passe, il n'y a aucun moyen pour un auditeur après coup de déterminer ce qui a été fait par moi par rapport à ce qui a été fait par l'administrateur.

Mais si à la place L'administrateur se connecte à son propre compte avec son mot de passe super-sécurisé, puis grâce à l'accès qu'il a via son propre compte effectue une action que j'aurais pu faire aussi - eh bien maintenant, nous pouvons avoir un journal indiquant qui a fait quoi. C'est assez important lorsque le fumier frappe le ventilateur. Et encore plus lorsqu'un des comptes d'administrateur est compromis (ce qui le fera , malgré tous vos efforts).

De plus, disons que l'entreprise se développe et que vous avez besoin de 2 administrateurs. Partagent-ils le mot de passe génial? NON NON NON. Ils ont tous deux leurs propres comptes d'administrateur, avec un traçage et une journalisation séparés et tout cela. Vous pouvez maintenant dire QUEL administrateur a fait quoi. Et, plus important encore, vous pouvez fermer l'un des comptes lorsque vous renvoyez l'un des administrateurs pour avoir volé les beignets.

Dans le même ordre d'idées, bien qu'il soit souvent nécessaire de disposer d'un moyen pour les administrateurs de modifier les mots de passe des comptes, il ne faut pas, par principe, que les administrateurs définissent les comptes avec des mots de passe directement utilisables, mais les définissent plutôt de sorte qu'un utilisateur doit définir son propre mot de passe avant d'utiliser le compte. De cette façon, tout ce qui est fait avec un compte peut être attribué à la personne la plus récente qui a défini le mot de passe du compte. Si Bob ne veut pas se connecter avec un mot de passe non défini par lui-même, son mot de passe est changé lundi et jeudi, il est connu pour se connecter, ces faits ensemble impliqueraient ...
... que Bob a défini son mot de passe lundi et que toutes les actions avec le compte entre cette date et jeudi ont été effectuées par Bob.
que se passe-t-il si par «à des fins d'assistance» OP signifie non seulement être capable de faire tout ce qu'un utilisateur peut faire mais être capable de voir l'écran exact que l'utilisateur voit (par exemple, pour aider à expliquer à l'utilisateur comment faire quelque chose ou aider à comprendre pourquoi il peut tu fais quelque chose)?
@joshuahedlund Si l'administrateur souhaite accéder au compte d'un utilisateur, il modifie le mot de passe de l'utilisateur. Il peut alors indiquer à l'utilisateur quel est son nouveau mot de passe.
@joshuahedlund C'est à cela que servent les outils de partage d'écran comme VNC, TeamViewer, Remote Assistance, WEbEx, etc. Vous ne vous faites jamais passer pour l'utilisateur. Vous visualisez une copie de son écran comme si vous vous teniez derrière eux en regardant par-dessus leur épaule.
@joshuahedlund Un système backend que j'ai récemment écrit a une fonctionnalité comme celle-ci. Un administrateur clique sur un bouton «se connecter en tant qu'utilisateur», et le système se comporte exactement comme si l'administrateur ÉTAIT cet utilisateur. Cependant, tout est conservé dans les journaux.
Je voudrais ajouter que je recommande fortement de restreindre la connexion aux comptes d'administrateur à des adresses IP sources spécifiques, comme la plage IP de votre entreprise et l'adresse IP personnelle de l'administrateur. En outre, activez l'authentification à deux facteurs pour les comptes d'administrateur et utilisez HTTPS avec la prise en charge de TLS 1.2 côté serveur et côté client.
Ce compte a été résilié pour la raison suivante: accès non autorisé aux beignets.
@Thomas: Non, non. Ce n'est pas l'accès non autorisé, c'est le refus du service de donut aux autres utilisateurs qui l'a mis en conserve.
Selon le type d'application, je peux voir un moment où un utilisateur est suivi en faisant quelque chose qu'il ne devrait pas faire, mais s'il existe un mot de passe "divin" qui permet à un administrateur de se faire passer pour cet utilisateur, alors cette personne a un cas légitime à nier la fiabilité de ces journaux.
@TecBrat qui est _exactement_ pourquoi vous avez besoin qu'ils soient séparés. Si quelqu'un utilise votre application pour, par exemple, distribuer de la pornographie juvénile, vous avez de bien meilleures chances de pouvoir être honnête si vous pouvez prouver que seul cet utilisateur était impliqué.
@AJMansfield. Oui. C'est ce que je voulais dire.
C'est un point intéressant.J'avais l'habitude de travailler dans l'informatique dans une entreprise qui disait que nous n'avions pas de compte administrateur / porte dérobée, donc si quelque chose de mauvais se produit sur une machine, le propriétaire de la machine peut en prendre tout le blâme sans hésitation.Cela n'a donc pas de sens car, comme vous le dites, s'il y avait un compte administrateur, ses actions seraient enregistrées comme telles (et en théorie, seul le personnel informatique connaîtrait le mot de passe).
Daniel Nalbach
2014-02-08 05:19:43 UTC
view on stackexchange narkive permalink

Il y a beaucoup d'informations intéressantes dans les réponses données jusqu'à présent que l'affiche originale devrait lire et prendre à cœur. Cependant, je pense que la plupart des réponses ne reflètent pas l'esprit de la question en ce qui concerne la navigation sur le site Web de leur entreprise "comme si elles étaient l'utilisateur" à des fins d'assistance. Le cœur de la question semble être que cette activité se produit sur le front-end d'un site Web plutôt que sur la console d'un serveur.

Je connais une entreprise qui a ce même besoin dans son application Web et l'a déjà résolu d'une manière qui, je pense, est le genre de solution que l'affiche originale recherchait.

Ils ont créé un système de "mascarade" dans leur application Web qui permet à un employé d'un groupe spécial de saisir un ensemble de pages pouvant rechercher n'importe quel utilisateur dans le système et de sélectionner cet utilisateur comme informations d'identification pour parcourir le système avec. Il suit l'utilisateur sélectionné pour se faire passer pour et l'utilisateur employé réel comme deux entités distinctes et simultanées qui sont toutes deux enregistrées à tout moment et pour chaque action.

Du point de vue de l'application, c'est un "traitez-moi comme cet utilisateur, mais rappelez-vous que je suis en fait cet autre utilisateur". Une sorte de version webapp de sudo, mais intégrée au front-end.

Cette méthode:

  1. Élimine le cauchemar de la piste d'audit, car les deux comptes utilisateurs sont toujours suivis.
  2. Fournit aux employés une «vue utilisateur» exacte des pages.
  3. Conserve les informations d'identification individuelles des employés afin qu'il n'y ait pas de mot de passe partagé ou "maître".
  4. Assure la sécurité des utilisateurs, dont les mots de passe ne sont jamais disponibles pour les employés.
  5. Maintient la solution au niveau de l'application, sur le site Web, afin que tout le monde puisse le faire sans accès ni connaissance au niveau des systèmes.
  6. L'employé peut également «démasquer» à tout moment et vérifier le contenu de la page par rapport à leur propre compte ou à d'autres comptes d'utilisateurs, ce qui est très utile pour déterminer si les bogues sont globaux ou spécifiques à l'utilisateur.
Il me semble que cette réponse est la plus proche du problème OP. Un compte administratif n'est pas la solution car il a une visibilité / un comportement différent de celui de l'utilisateur en cours de dépannage.
Je suis d'accord avec cette réponse. À mon travail, nous avons une fonctionnalité similaire intégrée à nos sites qui permet à un administrateur d '«usurper l'identité» de tout autre utilisateur. Il permet à l'administrateur de voir et d'utiliser le site exactement comme l'utilisateur usurpé tout en permettant une sécurité et une journalisation appropriées.
Le logiciel de forum phpBB a cette fonctionnalité intégrée, pour un bon exemple.
user10211
2014-02-07 23:13:10 UTC
view on stackexchange narkive permalink

Oui, c'est une erreur. Que se passe-t-il si un attaquant parvient à obtenir ce mot de passe, quelle que soit la sécurité que vous pensez qu'il est? Il pourra falsifier les informations du compte utilisateur d'une manière qui est probablement difficile à différencier de l'activité normale.

Si vous contrôlez le site Web, vous disposez déjà de nombreuses méthodes différentes pour l'option d'assistance. Des outils administratifs appropriés peuvent être écrits pour lire et modifier les informations nécessaires. Il ne sert à rien d'avoir un mot de passe «maître».

Les outils administratifs appropriés ne poseraient-ils pas la même menace (ou du moins une menace très similaire)?
@AbeMiessler Non ... Parce que si vous utilisez des comptes d'administrateur individuels, la journalisation montre ce qui s'est passé et qui doit tirer pour avoir mis son mot de passe sur un post-it.
Tom Leek
2014-02-08 00:09:21 UTC
view on stackexchange narkive permalink

Ce mot de passe "god" est l'équivalent d'un accès root / administrateur: peut tout faire. La question est double:

  1. Est-ce une bonne idée d'avoir une sorte d'accès du type «peut tout faire»? En pratique, c'est plus «incontournable» que «bien», mais oui, c'est une chose normale. Assurez-vous cependant d'avoir des procédures d'utilisation appropriées: vous ne voulez pas que les administrateurs effectuent l'administration à partir d'une machine partagée dans un café; et vous voulez savoir "qui dunn'it". En ce sens, lorsqu'il y a deux personnes ou plus dotées de privilèges d'administrateur, il est préférable qu'elles agissent «comme elles-mêmes» en tant que membres d'un groupe administrateur (dans le monde Unix, utilisez sudo pour que les commandes soient consignées).

  2. Est-ce une bonne idée de demander aux administrateurs d'exercer leurs privilèges via l'API utilisateur normale ? Celui-ci est discutable. Autoriser un «mot de passe de Dieu» signifie installer «l'exception de Dieu» dans toute votre application, ce qui risque de faire l'objet d'abus. Cela augmente la complexité du système d'authentification + d'autorisation dans votre site, et la complexité est la seule chose que vous voulez éviter en matière de sécurité. Les bogues prospèrent dans la complexité. Un "mot de passe divin" peut être pratique pendant le développement, mais, de manière générale, il a tendance à augmenter la probabilité d'une faille de sécurité dévastatrice, alors utilisez-le avec une extrême prudence.

Of Bien sûr, le contexte est tout, et les réponses ci-dessus s'appliquent simplement généralement . Cependant, méfiez-vous des portes dérobées administratives, en particulier des portes dérobées qui ne conservent pas une bonne trace de l'origine des demandes administratives.

Votre commentaire sur «inévitable» par opposition à «bon» soulève un point intéressant. Si la conception d'un système est telle qu'une personne ayant un accès physique serait capable de faire n'importe quoi et tout, y compris de modifier de manière indétectable la piste d'audit, alors il peut être raisonnable de permettre à ceux qui ont un accès physique de faire ces choses de manière pratique. Avoir de telles choses gênantes mais pas impossibles présenterait des inconvénients mais n'obtiendrait pas les avantages de traçabilité qui résulteraient de leur impossibilité. Une chose que j'ai parfois pensé serait un produit utile pour quelqu'un ...
... à vendre serait une "boîte de journalisation" conçue de manière à ce que tout enregistrement de journal qui aurait été commis ne puisse être supprimé dans un certain laps de temps sans y pénétrer physiquement. Si l'appareil était limité à accepter des données à un débit de 30 Mo / minute, par exemple, un appareil avec 64 Go de mémoire flash pourrait garantir qu'il faudrait plus d'une journée d'inondation de débit de données maximal constant pour que quelqu'un écrase une entrée de journal. Si la boîte incluait la crypto à clé publique sur ses fonctions de lecture / état, quelqu'un pourrait avoir un accès totalement illimité à une machine avec une telle boîte ...
... mais si la boîte de connexion enregistrait qui a acquis un tel accès, cet enregistrement serait presque indélébile (si une autre machine interrogeait périodiquement la boîte de connexion et criait s'il ne pouvait pas y accéder pendant quelques heures, cela pourrait notifier personnel de sécurité que quelque chose n'allait pas et qu'ils avaient un certain temps pour intervenir avant que les informations d'audit ne soient détruites).
The Spooniest
2014-02-08 03:06:57 UTC
view on stackexchange narkive permalink

Un administrateur ne peut agir qu'en tant que lui-même: quelqu'un avec un mot de passe divin peut se faire passer pour n'importe qui sur le système. On pourrait affirmer que si l'administrateur a suffisamment de puissance, cela ne fait pas grand-chose pour limiter les dégâts réels qu'un attaquant avec ce compte pourrait faire. Mais un attaquant avec le mot de passe divin aurait beaucoup plus de facilité à couvrir ses traces.

broc.seib
2014-02-09 01:28:11 UTC
view on stackexchange narkive permalink

Avoir un mot de passe "dieu" est une solution simple, mais il s'agit simplement d'une "autorisation" par le biais de la connaissance du mot de passe principal, et ne se prête pas à une bonne gestion des accès (c'est-à-dire contrôler qui peut le faire), ni à la responsabilité (qui a vraiment fait quoi).

Au lieu de cela, modifiez la structure de données de vos identifiants pour avoir un champ d'utilisateur effectif:

  {user: alice, effective_user: bob,}  

Le contenu de vos pages Web doit être rendu pour effective_user , sauf s'il s'agit d'une page administrative interne qui a besoin de savoir qui est vraiment navigation. Notez que la plupart des personnes externes qui naviguent sur votre site auront toujours le même identifiant pour les deux champs:

  {user: alice, effective_user: alice,}  

Ceci L'arrangement vous permet de mieux contrôler qui est autorisé à devenir un autre utilisateur, et il vous permet également d'enregistrer / de vérifier qui a fait quoi au nom de qui. (Vous pouvez simplement connecter à la fois l'utilisateur et effective_user sur les choses que vous souhaitez surveiller.) Unix fait ce genre de chose d'utilisateur (et de groupe) efficace en interne si vous regardez les sources pour ce qui définit un processus. Imiter cela sur le Web s'appuie sur un paradigme connu et réussi.

Cette solution vous permet également de choisir les pages que votre personnel peut «regarder par-dessus l'épaule» d'un autre utilisateur. Vous pouvez choisir d'écrire une page qui ne s'affiche pas en fonction de l ' utilisateur_effectif , alors aucune de cette page ne peut être vue par votre personnel même s'ils ont le privilège de modifier leur identifiant d'utilisateur effectif.

BTW, j'ai implémenté le concept d'utilisateur efficace sur le Web, et j'ai également implémenté le mot de passe divin. Ce dernier est facile à mettre en place lorsque toutes les infrastructures sont déjà en place. Mais ce n'est vraiment pas la meilleure solution pour savoir qui a fait quoi et gérer l'accès. Regardez de près à quel point le refactoring est vraiment impliqué pour ajouter le champ utilisateur efficace - il peut être moins que vous ne le pensez.

Tonny
2014-02-08 05:18:44 UTC
view on stackexchange narkive permalink

Vous ne vous faites jamais passer pour l'utilisateur. (Pour diverses raisons de traçabilité / responsabilité, comme d'autres l'ont déjà mentionné.)
À la place, vous visualisez une copie de l'écran des utilisateurs comme si vous vous teniez derrière eux en regardant par-dessus leur épaule.
C'est quel écran / Les outils de partage de bureau comme VNC, TeamViewer, l'assistance à distance, etc. sont pour.

Je ne pense pas que vous ayez réfléchi aux aspects pratiques de cette déclaration. Par exemple, lorsque je suis sur Facebook et que je souhaite voir le résultat de mes autorisations au lieu d'utiliser «voir comme ...», je devrais demander à un de mes amis d'installer vnc et de visiter ma page? Bien qu'un partage d'écran puisse être approprié pour le dépannage, il existe de nombreux cas où voir le comportement du site Web en tant qu'utilisateur donné ne devrait jamais impliquer l'utilisateur lui-même, par exemple. test / validation des paramètres ou correction d'un bug.
AJ Henderson
2014-02-08 01:04:10 UTC
view on stackexchange narkive permalink

Si une seule personne a accès, ce n'est pas nécessairement un problème, mais cela peut tout aussi facilement être fait en ayant un paramètre pour un compte utilisateur qui autorise cet accès.

Avec n'importe quel root Le type de fonctionnalité / superuser / admin, la journalisation et l'audit du comportement sont essentiels, et cela signifie que vous devez savoir qui faisait quoi. Si plusieurs utilisateurs doivent pouvoir apporter des modifications comme celle-ci, il devrait y avoir un indicateur sur leur compte pour les autoriser.

Vous voudrez peut-être toujours avoir un mot de passe supplémentaire, plus compliqué saisis même lorsqu'ils y ont accès, mais vous devez exiger une authentification sécurisée d'une personne qui apporte des modifications avant de faire quoi que ce soit de cette nature.

Timothy Swan
2014-02-09 05:48:12 UTC
view on stackexchange narkive permalink

Vous n'avez peut-être pas d'autre choix que d'avoir un mot de passe «divin». Indépendamment de ce que Tylerl a dit sur le fait d'avoir deux mots de passe d'administrateur différents, comment serait-il même possible d'avoir un journal et un traçage à moins que quelqu'un ne soit également responsable de cela? Vous auriez littéralement à crypter le journal et tout contre vous-même de manière à ce qu'il ne soit lu que par le monde extérieur mais puisse toujours écrire pour lui-même. Comment détermine-t-il si les informations qu'il reçoit sont légitimes ou non? Évidemment, si vous n'y avez pas accès, personne ne le fait, cela ne fonctionnerait pas non plus.

James
2014-02-16 20:12:44 UTC
view on stackexchange narkive permalink

Je pense que vous devez avoir une sécurité basée sur les rôles plutôt qu'un seul compte avec des capacités en mode "Dieu". De cette façon, vous pouvez avoir plusieurs personnes qui ont les mêmes rôles avec des capacités similaires, de sorte que si votre Dieu / administrateur n'est pas disponible, quelqu'un d'autre puisse faire le correctif.

Je sais que c'est particulièrement préféré si vous allez être audité.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...