LoginSignup
7
6

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