2017-06-21 4 views
1

内部管理者IPアドレスを除くすべてのIPアドレスに固有のURLページ(http://www.testdomain.com/login)をブロックしようとしています。 ログインのパターンをブロックすることは問題ありませんが、ローカルのテストで、内部の管理IPが/ login urlのブロックルールから除外されていることを確認します。 IIS |特定の内部IPアドレス以外のページ固有のURLをブロックする

<rewrite> 
      <rules> 
       <rule name="RequestBlockingRule1" enabled="true" patternSyntax="Wildcard" stopProcessing="true"> 
        <match url="*login*" negate="false" /> 
        <conditions logicalGrouping="MatchAny" trackAllCaptures="true"> 
         <add input="{HTTP_X_Forwarded_For}" pattern="92.102.130.65" /> 
        </conditions> 
        <action type="None" /> 
       </rule> 
       <rule name="RequestBlockingRule2" patternSyntax="Wildcard" stopProcessing="true"> 
        <match url="*" /> 
        <conditions> 
         <add input="{URL}" pattern="*login*" /> 
        </conditions> 
        <action type="CustomResponse" statusCode="404" statusReason="File or directory not found." statusDescription="The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable." /> 
       </rule> 

私は何もしたいことは、私はしましたか?CTL =ログイン

   <rule name="RequestBlockingRule3" enabled="true" patternSyntax="Wildcard" stopProcessing="true"> 
        <match url="*ctl=login*" negate="false" /> 
        <conditions logicalGrouping="MatchAny" trackAllCaptures="true"> 
         <add input="{HTTP_X_Forwarded_For}" pattern="93.107.170.85" /> 
        </conditions> 
        <action type="None" /> 
       </rule> 
       <rule name="RequestBlockingRule4" patternSyntax="Wildcard" stopProcessing="true"> 
        <match url="*" /> 
        <conditions> 
         <add input="{QUERY_STRING}" pattern="*ctl=login*" /> 
        </conditions> 
        <action type="CustomResponse" statusCode="404" statusReason="File or directory not found." statusDescription="The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable." /> 
       </rule> 
      </rules> 
     </rewrite> 

同じルールを複製することであるが、http://www.testdomain.com/home.aspxのクエリ文字列のために...私はこれまで持っているものを参照してください。 doneは、特定のパターンの内部IPを除外しようとした後、実際のブロックルールに従います。誰かがa)より良い選択肢かb)私が間違っているかどうかを見てください(本当のIPアドレスを使って実際のサーバで使用する前にこれらのルールをローカルでテストしたいのが理想です)。おかげ

答えて

2

は、私は少し異なる方法を使用することをお勧めしたい:

  • 使用して、あなたのホワイトリストIPアドレスのリスト
  • のみを使用して二つの規則のためのマップを書き換え、および<action type="None" />
を使用していません

設定コード:

<rewrite> 
    <rules> 
     <rule name="Block login page" stopProcessing="true"> 
      <match url="^login$" /> 
      <conditions> 
       <add input="{Authorised Admin IPs:{REMOTE_ADDR}}" pattern="1" negate="true" /> 
      </conditions> 
      <action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" /> 
      </rule> 
      <rule name="Block query string" stopProcessing="true"> 
      <match url=".*" /> 
      <conditions> 
       <add input="{Authorised Admin IPs:{REMOTE_ADDR}}" pattern="1" negate="true" /> 
       <add input="{QUERY_STRING}" pattern="ctl=login" /> 
      </conditions> 
      <action type="CustomResponse" statusCode="403" statusReason="Forbidden" statusDescription="Forbidden" /> 
     </rule> 
    </rules> 
    <rewriteMaps> 
     <!-- This is your list of white-listed IP's--> 
     <rewriteMap name="Authorised Admin IPs"> 
      <add key="92.102.130.65" value="1" /> 
      <add key="93.107.170.85" value="1" /> 
      <!-- local IPs--> 
      <add key="127.0.0.1" value="1" /> 
      <add key="localhost" value="1" /> 
      <add key="::1" value="1" /> 
     </rewriteMap>   
    </rewriteMaps> 
</rewrite> 

このルールは、すべてのユーザーのために、このURLへのすべての要求をブロック

を持っている任意のURLを、非ホワイトリストされたIPアドレスを持っていますさ、私は{REMOTE_ADDR}を使用しています。しかし、{HTTP_X_Forwarded_For}を使用する必要があります。それは

(あなたがプロキシまたはロードバランサを使用している場合)あなたは、これは素晴らしい作品、ローカルIPフォーム書き換えマップ

+0

おかげビクターを、削除/追加することによって、ローカルルールをテストすることができますネットワークインフラストラクチャに依存します!たくさんのクリーナーも。 – denisjoconnor

関連する問題