2011年6月1日水曜日

ELBのアクセス制限

スズキです。

ELBはセキュリティグループの外側にあるので、
セキュリティグループでHTTP(80番)ポートのアクセスを、
接続元IPアドレスで制御しても、ELB経由でアクセスされてしまうと、
どこからでもアクセスできてしまいます。

※そもそもコチラのようにELBがヘルスチェックファイルに
アクセスできるようにしておかないと、セキュリティグループで制限をかけたと同時に
EC2がELBから切り離されてしまいますが...

ということで、ELB経由のアクセスも制限したい場合はWebサーバ(Apache)などで、
行う必要があります。

例えば、Apacheでアクセス制限する場合は、接続元IPアドレスがすべてELBになってしまい
判別できないので、下記のように"X-Forwarded-For"の値で制限することになります。

SetEnvIf X-Forwarded-For "xxx\.xxx\.xxx\.xxx$" allow_ip
Order deny,allow
Deny  from all
Allow from env=allow_ip

コチラで紹介したとおり、ELBが"X-Forwarded-For"に追加するクライアントのIPアドレスは
一番最後に追加されるので、ヘッダの改ざんのことも考え、
上記は最後のIPアドレスのみをチェックするようにしています。

またApacheなら、昔、紹介した"mod_extract_forwarded"を導入して、
接続元IPアドレスを"X-Forwarded-For"のもに変えてしまうって方法もあります。
(後はいつものアクセス制限で...)

次は、ELBとApacheのまとめっぽい記事を書こう。
--------
http://www.suz-lab.com

0 コメント: