AWS上でIPアドレスを制限する場合、方法はたくさんあり、使用するサービスによって方法が変わってきます。
例えばAmazon S3であればバケットポリシー、AWS WAFであればConditionsやRulesを設定してIPアドレスを制限できますが、今回はWebシステムにアクセスできるIPアドレスを制限することをテーマにご紹介させていただきたいと思います。
セキュリティグループによるIPアドレス制限
AWSにおける代表的なIPアドレス制限の設定方法になるかと思います。
この方法はEC2やRDS、ELB等に許可するIPアドレスを指定する方法になります。
つまり、設定したIPアドレス以外からのアクセスは受け付けませんので、特定のIPアドレスからしか許可しない場合に有効です。
また、様々はプロトコルやポートに対して制限をかけることが可能です。
特徴
- 1つのEC2やRDS、ELBの単位で設定が可能。
- ホワイトリスト方式よる制限。
- 様々なプロトコル、ポートを設定できる。
設定方法
- EC2やVPCから、セキュリティグループのインバウンドのルールを編集し、許可するIPアドレスを設定します。
- IPアドレスを設定したセキュリティグループが、対象のEC2やELB等に適用されていれば制限がかけられている状態になります。
ネットワーク ACLによるIPアドレス制限
この方法は仮想ネットワーク毎に、IPアドレスを指定する方法になります。
許可するIPアドレスと拒否するIPアドレスの両方を指定できますので、セキュリティグループでは出来なかった「特定のIPアドレスを拒否する」ことが可能です。
こちらもセキュリティグループと同様に、様々なプロトコルやポートに対して制限をかけることが可能です。
こちらの設定には優先順位の設定がありますので、注意して設定する必要があります。
(数値が小さいほど優先順位が高いです。)
特徴
- VPC全体での設定になる。
- ホワイトリスト形式、ブラックリスト方式の両方が可能。
- セキュリティグループ同様、様々なプロトコル、ポートを設定できる。
- 優先順位の設定に注意が必要。
設定方法
ロードバランサ(ALB)によるIPアドレス制限
この方法は他とは違い、ロードバランサに限定された方法になります。
ロードバランサのリスナールールを使い、許可するIPアドレスを指定します。
ロードバランサによる制限なので他の方法とは違い、HTTP及びHTTPSによるアクセスしか制限できません。
リスナールールの一例ですが、「特定のホスト名に対して特定のIPアドレスからアクセスがあった場合のみEC2へ転送する。」といった設定が可能です。
特徴
- ロードバランサ特有の設定方法。
- ホワイトリスト方式による制限。
- HTTP及びHTTPSに限定した設定になる。
- ホスト名やパス等と組み合わせて設定ができる。
設定方法
まとめ
冒頭にも書かせていただきましたが、AWSには使用するサービスに応じてIPアドレスを制限する方法がいくつあります。
なので、IPアドレスの制限をどうかけたいかと、その環境にマッチする制限のかけ方をするのが望ましいと思われます。
- 特定のEC2にだけIPアドレスに制限をかけたい場合はセキュリティグループ
- 怪しいIPアドレスからのアクセスを拒否したい場合はVPC
- 特定のドメインやパスにはアクセスさせたくない場合はロードバランサ
etc
今回ご紹介させていただいたサービス以外でも、やり方はあるかもしれませんので、今後も他のサービスついて調べていこうと思います。