web-dev-qa-db-ja.com

Elmah.axdを保護する方法?

Elmahは、間もなく本番稼働する予定のアプリのエラーログシステムとして使用しています。これは非常に便利ですが、このように運用環境に入ると、世界中の誰もがourdomain.com/elmah.axdにアクセスするだけなので、エラーログにアクセスできます。

これは明らかに理想的ではありません。私は当初、そのページへのアクセスを社内のIPアドレスのみに制限するつもりでしたが、現在のシステム管理者は不可能だと言っています。だから私はここでこのリソースへのアクセスを防ぐにはどうすればいいですか?

IIS 6.でASP.NET MVCアプリを実行しています。

47
DaveDev

Elmah.axdを保護するための一般的なシナリオは、一部の認証されたユーザーのみがそれにアクセスできるようにすることです。ただし、サイトで認証をまったく使用しない場合、これは適用されない可能性があります。

これが私がお勧めするものです:

  1. メインサイトのelmah.axdハンドラーを完全に無効にします
  2. ログをいくつかの共有データソース(共有ファイル、SQLiteデータベース、SQL Serverなど)に書き込むようにelmahを構成します
  3. Elmahのみがインストールされていて、この同じ共有データソースを指しているIISの2番目のサイトを、おそらく別のネットワークまたはサーバーに構成します。これで、常に2番目のサイトを使用してログを読み取ることになります。明らかに、2番目のサイトにはあなただけがアクセスできます。

SQL Serverを使用する場合は、ファーム内の複数のWebサーバーで実行されている複数のアプリケーションのログを、自分だけがアクセスできる単一の内部アプリケーションから読み取ることもできます。

43
Darin Dimitrov

これはMVCアプリケーションに最も適していることがわかりました。

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

21

Elmah httpハンドラーをweb.configの別のURL(たとえば、 "Secure/elmah.axd")にポイントできます。 Web設定で他のasp.netページと同じようにURLを保護できます。

<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>

Active Directoryメンバーシッププロバイダーを使用して、IIS7でこのアプローチをうまく使用しており、うまく機能します。 IIS6で動作するかどうかはわかりません。

16
m0sa

ASP.NETメンバーシップを使用している場合、匿名ユーザーのelmah.axd HttpHandlerへのアクセスを制限し、「管理者」グループのログインユーザーのみを許可することは非常に簡単です。私はこのようにそれをやった:

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

ログインしていて、「管理者」ロールのメンバーであれば誰でもこのページにアクセスできます。

9
Jakob Gade
3
Giorgi

リモートユーザーがアクセスできないようにする場合は、<security allowRemoteAccess="yes" />の値を<security allowRemoteAccess="no" />に変更します。

3
nonexistential

IIS 7構成のIP制限を使用しました。デフォルトでは、親構成レベルでロックされているため、<location path="elmah.axd">に適用することはできません。そのため、空のフォルダー"logs"およびIIS=の制限をこのフォルダーに適用し、次にelmah.axdファイルの場所のパスを変更しました。これで完了です!yourdomain.com/logs/elmah.axdへのリモートアクセスは可能ですが、特定のIPからのみです。

2
Dmitry Gulakov