Comment sécuriser Elmah.axd?

Nous utilisons Elmah comme notre système de journalisation des erreurs pour une application qui sera bientôt mise en production. C’est extrêmement utile, mais s’il est mis en production comme cela, n’importe qui dans le monde accède au journal des erreurs car tout ce qu’il a à faire est de visiter ourdomain.com/elmah.axd .

Ce n’est évidemment pas idéal. Au départ, j’avais l’intention de restreindre l’access à cette page uniquement aux adresses IP de notre société, mais maintenant, nos administrateurs système disent que ce n’est pas possible. Donc, je demande ici comment puis-je empêcher l’access à cette ressource?

Nous exécutons une application ASP.NET MVC sur IIS 6.

Le scénario typique de sécurisation d’elmah.axd ne permet à certains utilisateurs authentifiés d’y accéder. Mais si votre site n’utilise aucune authentification, cela pourrait ne pas être applicable.

Voici ce que je vous recommande:

  1. Désactiver complètement le gestionnaire elmah.axd sur votre site principal
  2. Configurez elmah pour qu’il écrive les journaux sur une source de données partagée (comme un fichier partagé, une firebase database SQLite ou même SQL Server)
  3. Configurez un deuxième site dans IIS, probablement sur un autre réseau ou serveur, sur lequel seule elmah est installée et qui pointe vers cette même source de données partagée. Maintenant, vous utiliserez toujours le deuxième site pour lire les journaux. De toute évidence, le deuxième site ne serait accessible qu’à vous.

Si vous décidez d’utiliser SQL Server, vous pouvez même lire les journaux de plusieurs applications exécutées sur plusieurs serveurs Web dans une batterie à partir d’une seule application interne accessible uniquement à vous.

J’ai trouvé que c’est le plus acceptable pour les applications MVC:

http://www.beletsky.net/2011/03/integrating-elmah-to-aspnet-mvc-in.html

Vous pouvez pointer le gestionnaire http elmah vers une autre URL (par exemple “Secure / elmah.axd”) dans web.config. Vous pouvez sécuriser l’URL comme toute autre page asp.net dans la configuration Web.

  ...            

Nous utilisons cette approche avec succès sur IIS7 en utilisant des fournisseurs d’adhésion à des annuaires actifs, et cela fonctionne très bien. Je ne sais pas si cela fonctionne sur IIS6 cependant.

Si vous utilisez l’adhésion à ASP.NET, il est assez facile de restreindre l’access à elmah.axd HttpHandler pour les utilisateurs anonymes et d’autoriser uniquement les utilisateurs connectés dans un groupe “Administrateurs”. Je l’ai fait comme ça:

  ...          

Toute personne connectée ET membre du rôle “Administrateurs” peut accéder à la page maintenant.

Voici quelques liens utiles:

Implémenter ELMAH en toute sécurité pour la journalisation des erreurs Plug and Play
Sécurisation des pages du journal des erreurs

Si vous souhaitez empêcher les utilisateurs distants d’y accéder, remplacez simplement la valeur de par

J’ai utilisé des ressortingctions IP de la configuration IIS 7. Par défaut, vous ne pouvez pas simplement l’appliquer dans car il est verrouillé au niveau de la configuration parente. En tant que tel, j’ai créé un dossier vide "logs" et appliqué des ressortingctions dans IIS à ce dossier, puis modifié le chemin d’access au fichier elmah.axd . C’est tout! Vous avez un access à distance à yourdomain.com/logs/elmah.axd , mais uniquement à partir d’IP spécifiques.