Jak zabezpieczyć Elmah.axd?

Używamy Elmah jako naszego systemu rejestrowania błędów dla aplikacji, która wkrótce wejdzie do produkcji. Jest to niezwykle przydatne, ale jeśli wejdzie do produkcji w ten sposób, każdy na świecie ma dostęp do dziennika błędów, ponieważ wszystko, co musi zrobić, to odwiedzić ourdomain.com/elmah.axd.

To oczywiście nie jest idealne. Pierwotnie zamierzałem ograniczyć dostęp do tej strony tylko do adresów IP w naszej firmie, ale teraz nasi administratorzy mówią, że nie jest to możliwe. Więc pytam tutaj, Jak mogę uniemożliwić dostęp do tego zasoby?

We running an ASP.NET aplikacja MVC na IIS 6.

Author: DaveDev, 2010-12-11

7 answers

Typowy scenariusz zabezpieczenia elmah.axd umożliwia dostęp tylko niektórym uwierzytelnionym użytkownikom. Ale jeśli Twoja witryna nie używa żadnego uwierzytelniania, może to nie mieć zastosowania.

Oto co wam polecam:

  1. Wyłącz całkowicie obsługę elmah.axd na głównej stronie
  2. Skonfiguruj elmah, aby zapisywać logi do jakiegoś współdzielonego źródła danych (takiego jak udostępniony plik, baza danych SQLite lub nawet serwer SQL)
  3. Konfiguracja drugiej strony w IIS, prawdopodobnie w innej sieci lub serwerze, który ma zainstalowaną tylko elmah i który wskazuje na to samo wspólne źródło danych. Teraz zawsze używasz drugiej strony do czytania dzienników. Oczywiście druga strona będzie dostępna tylko dla Ciebie.

Jeśli zdecydujesz się użyć SQL Server, możesz nawet odczytać logi wielu aplikacji uruchomionych na wielu serwerach WWW w gospodarstwie z poziomu jednej wewnętrznej aplikacji dostępnej tylko dla Ciebie.

 42
Author: Darin Dimitrov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-11 11:36:43

Stwierdziłem, że jest to najbardziej dopuszczalne dla aplikacji MVC:

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

 21
Author: Alexander Beletsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-05 17:45:26

Możesz skierować obsługę http elmah na inny adres url (na przykład " Secure / elmah.axd") w sieci.config. Możesz zabezpieczyć adres url jak każdy inny asp.net strona w konfiguracji www.

<httpHandlers>
  ...
  <add verb="POST,GET,HEAD" path="/Secure/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
<location path="Secure" > <!-- secure the host.com/Secure path -->
  <system.web>
    <authorization>
      <deny users="?" />
      <!-- Or anything else... -->
    </authorization>
  </system.web>
</location>

Z powodzeniem stosujemy to podejście w IIS7, korzystając z dostawców usług Active directory i działa świetnie. Nie jestem jednak pewien, czy działa na IIS6.

 16
Author: m0sa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-22 12:01:28

Jeśli używasz ASP.NET członkostwo, dość łatwo jest ograniczyć dostęp do elmah.axd HttpHandler dla anonimowych użytkowników i pozwala tylko zalogowanym użytkownikom w grupie "Administratorzy". Zrobiłem tak:

<configuration>
  ...
  <location path="elmah.axd">
    <system.web>
      <authorization>
        <allow roles="Administrators"/>
        <deny users="*"/>
      </authorization>
    </system.web>
  </location>
</configuration>

Każdy, kto jest zalogowany i członek roli "Administratorzy", może teraz uzyskać dostęp do strony.

 9
Author: Jakob Gade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-25 06:02:58
 3
Author: Giorgi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-12-11 10:45:46

Jeśli twoim zamiarem jest uniemożliwienie zdalnym użytkownikom dostępu do niego, po prostu zmień wartość <security allowRemoteAccess="yes" /> na <security allowRemoteAccess="no" />

 3
Author: nonexistential,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-13 16:06:21

Użyłem ograniczeń IP z konfiguracji IIS 7. Domyślnie nie można go po prostu zastosować w <location path="elmah.axd">, ponieważ jest on zablokowany na poziomie konfiguracji nadrzędnej. W związku z tym utworzyłem pusty folder "logs" i zastosowałem ograniczenia w IIS do tego folderu, a następnie zmodyfikowałem ścieżkę lokalizacji dla pliku elmah.axd. To jest to! Masz zdalny dostęp do yourdomain.com/logs/elmah.axd, ale tylko z określonych adresów IP.

 2
Author: Dmitry Gulakov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-03 02:36:48