7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ELB + EC2( IIS 8.5 ) でのIP制限

Posted at

#目的
IISでのアクセス制限でホワイトリスト化しようとした時にX-Fowarded-Forを参照できないっぽい挙動があったので調査

  1. ELB経由でのIISへのアクセスが目的
  2. SecurityGroupではなくIIS側でアクセス出来るIPを絞りたかったため

#環境
AWS上のEC2とELBを使用した環境
下記の図のようにELB経由と直アクセスを想定
iis-sample.png

IP直アクセス(xxx.xxx.xxx.xxxには自分のIP)
ELB経由アクセスの2パターンを準備(10.1.0.17や10.1.0.119はELBのPrivateIP) ー>指定したVPC・Subnetの範囲内でIPが振られるはず

OS情報等

Windows 2012 R2
IIS 8.5.9600.163884

#準備

  1. IISをWindowsへ追加
    iis-01.png

  2. IP制限を使用するため IP and Domain Restrictions も合わせて導入
    iis-02.png

  3. 導入後テストアクセス用のページを準備、その後IP直アクセスとELB経由でのアクセスが出来ることを確認
    iis-03.png
    iis-04.png

  4. IP制限を設定する
    iis-05.png

#AllAllow設定
##AllAllowのみ(デフォルト)
当然だがアクセスできる。ログにも直接アクセスした際のIPとELB経由でのIPが表示されている
※以下ログはxxx.xxx.xxx.xxxを直接アクセス、10.1.0.xxをELB経由とする

2016-03-25 06:49:30 10.1.0.236 GET / - 80 - xxx.xxx.xxx.xxx - 304 0 0 20
2016-03-25 06:49:33 10.1.0.236 GET / - 80 - 10.1.0.17 - 304 0 0 15

##AllAllowに指定IPのみDeny設定
iis-06.png

ELB経由でのアクセスが可能、IP直アクセスは当然Denyの為アクセス不能

  1. IP直アクセス
    iis-07.png
  2. ELB経由
    iis-08.png

ログ上でもアクセス拒否が確認出来る

2016-03-25 07:01:31 10.1.0.236 GET / - 80 - xxx.xxx.xxx.xxx - 403 503 5 15
2016-03-25 07:02:18 10.1.0.236 GET / - 80 - 10.1.0.17 - 304 0 0 0

##EnableProxyModeを有効化
画面右側 Edit Feature Settings... から指定
iis-09.png

先ほどはアクセスできたELB経由のアクセスが不能となる(ELB経由の場合はIPが10.1.0.119になっているのにアクセス出来ない)
iis-10.png

X-Forwarded-Forをみて判別している?

2016-03-25 07:06:42 10.1.0.236 GET / - 80 - xxx.xxx.xxx.xxx - 403 503 5 15
2016-03-25 07:07:01 10.1.0.236 GET / - 80 - 10.1.0.119 - 403 503 5 0

##X-Forwarded-Forをログに追加
ログに出力してみてX-Forwarded-Forがあるのかチェック(それを参照していないなら10.1.0.119で入れていたはず)
iis-11.png
※_Logging_から_Select Fields..._で追加

ログにX-Forwarded-Forが付与されたことを確認

2016-03-25 07:13:19 10.1.0.236 GET / - 80 - 10.1.0.119 - 403 503 5 0 xxx.xxx.xxx.xxx

##Deny設定を解除
IP直指定のDenyを削除
ELB経由・IP直アクセス共にアクセスが可能であることを確認

2016-03-25 07:16:03 10.1.0.236 GET / - 80 - xxx.xxx.xxx.xxx - 200 0 0 15 -
2016-03-25 07:16:59 10.1.0.236 GET / - 80 - 10.1.0.17 - 200 0 0 16 xxx.xxx.xxx.xxx

#AllDeny設定
_Edit IP and Domain Restrictions Settings_から_Access for unspecified clients:_でDenyを指定
iis-12.png

##AllDenyのみ
当然ELB経由・IP直アクセス共にアクセス不能

  1. IP直アクセス
    iis-13.png
  2. ELB経由
    iis-14.png

ログ上でもアクセス拒否されていることを確認

2016-03-25 07:18:51 10.1.0.236 GET / - 80 - xxx.xxx.xxx.xxx - 403 503 5 15 -
2016-03-25 07:18:56 10.1.0.236 GET / - 80 - 10.1.0.17 - 403 503 5 0 xxx.xxx.xxx.xxx

##AllDeny状態に指定IPでAllowを設定
最初にDeny設定した時の逆の設定を行う
iis-15.png

  1. IP直アクセス
    iis-16.png
  2. ELB経由
    iis-17.png

IP直はアクセス可能、ELB経由はアクセスできず(Proxyを有効化していないためX-Forwarded-Forを参照していない)

2016-03-25 07:22:47 10.1.0.236 GET / - 80 - xxx.xxx.xxx.xxx - 200 0 0 0 -
2016-03-25 07:23:58 10.1.0.236 GET / - 80 - 10.1.0.119 - 403 503 5 0 xxx.xxx.xxx.xxx

##EnableProxyModeを有効化
再度_EnableProxyMode_を有効化する
iis-18.png

  1. IP直アクセス
    iis-19.png
  2. ELB経由
    iis-20.png

IP直はアクセスが可能、ELB経由はアクセス不能
Proxy有効化してもX-Forwarded-Forを参照していないということになる

2016-03-25 07:26:54 10.1.0.236 GET / - 80 - xxx.xxx.xxx.xxx - 304 0 0 15 -
2016-03-25 07:26:57 10.1.0.236 GET / - 80 - 10.1.0.17 - 403 503 5 0 xxx.xxx.xxx.xxx

まとめ

ブラックリストでのX-Forwarded-Forは参照するがホワイトリスト化した時のX-Forwarded-Forは参照しないっぽい挙動
DenyはできるのにAllowが出来ないのは何らかのバグなのか自分の設定の問題なのか...

7
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?