share facebook facebook twitter menu hatena pocket slack

ELBのアクセス制限

鈴木 宏康

WRITTEN BY 鈴木 宏康

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

ELBとアクセス制限(Apache)とヘルスチェックのように、 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

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

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

次回は、ELBとApacheのまとめについて記事を書く予定です。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。