87 votes

Quelles sont les meilleures pratiques pour sécuriser la section admin d'un site web?

J'aimerais savoir ce que les gens considèrent les meilleures pratiques pour la sécurisation de l'Administrateur des sections de sites web, plus précisément à partir d'une authentification d'accès/de point de vue.

Bien sûr il y a des choses évidentes, comme l'utilisation de SSL et de la journalisation de tous les accès, mais je me demandais juste où au-dessus de ces étapes de base des gens considèrent le bar à définir.

Par exemple:

  • Êtes-vous simplement en s'appuyant sur le même mécanisme d'authentification que vous utilisez pour les utilisateurs normaux? Si non, quoi?
  • Exécutez-vous à la section Admin, dans le même domaine d'application'?
  • Quelles mesures prenez-vous pour faire de la section admin inconnues? (ou vous vous faites rejeter l'ensemble de la 'obscurité' chose)

Jusqu'à présent, les suggestions de la answerers comprennent:

  • Introduire une artificielle côté serveur pause dans chaque admin mot de passe cochez cette case pour empêcher les attaques par force brute [Développeur de l'Art]
  • Utiliser des pages d'ouverture de session pour les utilisateurs et l'administrateur en utilisant la même table DB (pour arrêter XSRF et de la session de vol de l'octroi de l'accès à la zone d'admin) [Voleur Master]
  • Considérez également l'ajout de serveur d'authentification native de la zone d'administration (par exemple, via .htaccess) [Voleur Master]
  • Envisager le blocage des IP de l'utilisateur après un certain nombre d'échec de l'admin de tentatives de connexion [Voleur Master]
  • Ajouter un captcha après l'échec des admin de tentatives de connexion [Voleur Master]
  • Fournir également de solides mécanismes (en utilisant les techniques ci-dessus) pour les utilisateurs ainsi que les admins (par exemple, ne pas traiter les admins spécialement) [Lo or est]
  • Envisager d'authentification de Second niveau (par exemple, certificats, cartes à puce, cardspace, etc.) [JoeGeeky]
  • Ne permettre l'accès de confiance IPs/Domaines, ajoutez vérifier à base de pipeline HTTP (par exemple, à HttpModules) si possible. [JoeGeeky]
  • [ASP.NET] Verrouiller IPrincipal & Principal (rendre immuable et non énumérable) [JoeGeeky]
  • Fédérer des Droits de l'Élévation - par exemple, e-mail autres admins quand tout admin droits sont mis à niveau. [JoeGeeky]
  • Envisager fine des droits pour les admins - par exemple, plutôt que sur les rôles, les droits, définir des droits pour l'individu actions par admin [JoeGeeky]
  • Limiter la création des admins - par exemple, les Admins ne peuvent pas les modifier ou en créer d'autres comptes d'administration. Utiliser un lock-down "superadmin" client pour cette. [JoeGeeky]
  • Envisager Côté Client Certificats SSL, ou de type RSA porte-clés électronique (jetons) [Daniel Papasian]
  • Si l'utilisation de cookies à des fins d'Authentification, utiliser des cookies pour l'administration et les pages normales, par exemple en mettant la section admin sur un autre domaine. [Daniel Papasian]
  • Si possible, envisager de garder l'admin du site sur un sous-réseau privé, au large de l'internet public. [Jean Hartsock]
  • Réédition auth/tickets de session lorsque vous vous déplacez entre admin/normal contextes d'utilisation du site [Richard JP Le Guen]

19voto

ThiefMaster Points 135805

Si le site nécessite une connexion pour les activités régulières et les administrateurs, par exemple un forum, j'aimerais utiliser des connexions qui utilisent la même base de données utilisateur. Cela garantit que XSRF et à la session de voler de ne pas permettre à l'attaquant d'accéder à des zones administratives.

En outre, si l'admin est dans un sous-répertoire distinct, de leur garantir un avec le serveur d'authentification (.htaccess d'Apache par exemple) pourrait être une bonne idée - alors quelqu'un a besoin à la fois que le mot de passe et le mot de passe utilisateur.

Obscurcissant le chemin admin donne presque aucun gain de sécurité - si quelqu'un sait valide les données de connexion, il est plus probable également en mesure de trouver le chemin de l'outil d'administration depuis qu'il soit victime d'hameçonnage ou keylogged vous ou obtenu par l'intermédiaire d'ingénierie sociale (qui révélerait sans doute le chemin, trop).

Une force brute de protection comme le blocage de l'IP de l'utilisateur après 3 échecs d'identification ou nécessitant un CAPTCHA après un échec de la connexion (pas pour la première session, comme c'est juste extrêmement gênant pour la pièce de théâtre les utilisateurs) peut également être utile.

17voto

JoeGeeky Points 1436

Ce sont toutes de bonnes réponses... en général, je tiens à ajouter quelques couches supplémentaires pour mes sections administratives. Bien que je l'ai utilisé un peu de variations sur un thème, ils comprennent généralement l'une des opérations suivantes:

  • Deuxième niveau d'authentification: Ce qui pourrait inclure les certificats client (Ex. les certificats x509), cartes à puce, cardspace, etc...
  • Domaine/IP restrictions: Dans ce cas, seuls les clients en provenance de confiance/vérifiables domaines; tels que les sous-réseaux; sont autorisés à entrer dans la zone d'administration. Distance admins passent souvent par le biais de confiance VPN entrypoints afin de leur session, qui devrait être vérifiable et est souvent protégés avec des clés RSA. Si vous êtes en utilisant ASP.NET vous pouvez facilement effectuer ces vérifications dans le Pipeline HTTP via HTTP Modules qui empêche l'application de la réception de toute demande si les contrôles de sécurité ne sont pas remplies.
  • Verrouillé IPrincipal & Principal-l'Autorisation basée sur: la Création des Principes est une pratique courante, même si une erreur courante est de les rendre modifiables et/ou des droits de l'énumérable. Bien que ses pas juste un admin problème, il est plus important puisque c'est là que les utilisateurs sont susceptibles d'avoir des droits élevés. Assurez-vous qu'ils sont immuables et non énumérable. En outre, assurez-vous que toutes les évaluations d'Autorisation sont prises sur la base Principale.
  • Fédérer des Droits de l'Élévation: Quand tout compte reçoit un certain nombre de droits, de tous les admins et le responsable de la sécurité sont immédiatement prévenus par e-mail. Cela permet de s'assurer que si un attaquant élève droits de nous le faire savoir immédiatement. Ces droits sont généralement circonscrits autour de privilégiés, les droits de voir de protéger la vie privée de l'information, et/ou de l'information financière (par exemple, cartes de crédit).
  • Problème de droits avec parcimonie, même pour les Admins: Enfin, et cela peut être un peu plus avancé pour certains magasins. Droits d'autorisation doit être aussi discret que possible et doivent entourer de vrais comportements fonctionnels. Typique de la Sécurité Basée sur les rôles (RBS) approches ont tendance à avoir un Groupe de mentalité. À partir d'un point de vue sécurité, ce n'est pas le meilleur modèle. Au lieu de"Groupes"comme"User Manager", essayez de le décomposer en outre (Ex. Créer un Utilisateur, d'Autoriser l'Utilisateur, d'Élever et/ou de Révoquer les droits d'accès, etc...). Cela peut avoir un peu plus de surcharge en termes d'administration, mais cela vous donne la souplesse nécessaire pour affecter uniquement les droits qui sont effectivement nécessaires par le plus grand groupe d'administration. Si l'accès est compromis, au moins, ils ne peuvent pas obtenir tous les droits. Je tiens à conclure en Sécurité d'Accès du Code (CAS) autorisations pris en charge par .NET et Java, mais c'est au-delà de la portée de cette réponse. Une chose de plus... en une seule application, les admins ne peuvent pas gérer les changements des comptes admin, ou faire un utilisateurs un admin. Cela ne peut être fait par l'intermédiaire d'un verrouillé client qui seulement un couple de personnes peut accéder.

8voto

Lohoris Points 5349
  • Je rejette l'obscurité
  • À l'aide de deux systèmes d'authentification au lieu d'un seul, c'est du matraquage
  • L'artificiel pause entre les essais doivent être effectués pour les utilisateurs de trop
  • Le blocage des IPs de tentatives infructueuses doit être fait pour les utilisateurs de trop
  • Fort de mots de passe doit être utilisé par les utilisateurs
  • Si vous envisagez de captchas ok, devinez quoi, vous pouvez les utiliser pour les utilisateurs de trop

Oui, après l'avoir écrit, je me rends compte que cette réponse pourrait se résumer comme un "rien de spécial pour l'admin, ils sont tous des fonctionnalités de sécurité qui doit être utilisé pour toute ouverture de session".

3voto

Richard JP Le Guen Points 13306

Si vous n'utilisez qu'une seule connexion pour les utilisateurs qui ont à la fois normal de l'utilisateur des privilèges et des privilèges d'administrateur, de se régénérer leur identifiant de session (que ce soit dans un cookie ou d'un paramètre GET ou quoi que...) quand il y a un changement dans le niveau de privilège... à tout le moins.

Donc, si je me connecte, faire un tas d'utilisateur normal choses et ensuite de visiter l'une des admin de la page, de se régénérer mon ID de session. Si je puis accédez à l'écart d'une page admin(s) pour un utilisateur normal de la page, de se régénérer mon ID de nouveau.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X