セキュリティの対策としてIP制限などを行っており、AWSのサポートに問い合わせたり調べたりとしているので、少しでも同じ状況の人の参考になれば良いなと思いまとめました。
この記事で具体的にどのように設定していくかというよりも、全体的にどんな選択肢があるのかがわかるようになれば良いなと思います。
その前に
まずは要件を確認し、海外からのアクセスは全て遮断して良いのか、国単位なのか、連携しているシステムで海外IPのものは存在するのかなどを確認すると良いかなと思います。
事前に情報がまとまっている方が、無駄な情報を集めないで済みます。
AWSで海外からのアクセス制限を行う時にできること
セキュリティグループ
インスタンス単位でホワイトリスト型のIP制限ができるので、特定のIPからしかアクセスを許可していないシステムには使用できます。
社内IPのみとか連携しているシステムのみみたいな感じで指定するしかないので、不特定多数のユーザーが使うBtoCのサービスには使えないです。
ネットワークACL
サブネット単位でブラックリスト型のIP制限を設定することができるので、似たようなIPからアタックがきている場合にはこちらで対応が可能です。
申請をしないと20個までしかルールを追加できないです。(最新の情報は下記)
Amazon VPC の制限
サブネットマスクの指定が可能なので、下記のipからアタックがきていた場合には、 5.8.37.0/24
のルールを1つ設定すれば対応が可能です。
5.8.37.1
5.8.37.2
5.8.37.3
5.8.37.4
(省略)
ただ、不正をするユーザーは基本的にはIPを変えてくるので、こちらでは一時的な対応にしかならないと思います。
Route53
個別のIPを指定しての制限はできないが、地理情報に基づいて制限をかけることが可能です。
そのため日本からのアクセスに絞る場合にはこれが一番楽だと思います。精度が100%ではないです。
参考
Amazon Route 53でGeo DNS(Geo Routing)を構成する
セキュリティオートメーション案
CloudFormation を利用したソリューション(これは使ったことがないので詳しくわからないです。。)
詳しくはクラスメソッドさんの記事を参考にしてください。
[レポート]AWS によるセキュリティ・オートメーションの実践 #AWSSummit
WAF
これは一番自由度が高く使いやすいと思います。その代わり有料です。
wafでできそうなことを簡単に書いてみます。
マネージドルールの適用
一部の海外IPからは許可したいみたいな時は、下記のようにルールを作成して、順番を指定すれば実現できます。
このように複数のルールとその適用順番で柔軟に対応ができるのが良いポイントです。
ルール1:日本のIPを許可
ルール2:一部の海外IPを許可
ルール3:それ以外は拒否
IP以外にも指定できる条件が多いです。
AWS WAF、AWS Shield、AWS Firewall Manager の概要
指定した条件を使用した、ウェブ攻撃に対する追加の保護。条件を定義するには、以下のようなウェブリクエストのプロパティを使用します。
リクエストの発生元の IP アドレス.
リクエスト送信元の国。
リクエストヘッダーの値.
リクエストに含まれる文字列 (正規表現パターンと一致する特定の 1 つ以上の文字列)。
リクエストの長さ.
悪意のある可能性がある SQL コード (SQL インジェクション) の有無。
悪意のある可能性があるスクリプト (クロスサイトスクリプティング) の有無。
レートベースルール
条件に一致したリクエストが5分間で任意の数(2000以上)発生した場合に、送信元をブラックリストに登録することなどができます。
レピュテーションの悪いIPをブラックリストに追加する(Lambdaとの組み合わせ)
こちらの記事で紹介されていましたが、Lambdaで定期的に取得して、ブラックリストに追加するということができるそうです。
こちらも検討したことがありますが、実際にアタックに使われていたIPが全く含まれておらず結局使わなかったです。
IP Address Reputationリストを自動更新でAWS WAF IP Blacklistsとして使う方法
参考情報
wafのログは3時間しか残らない
wafに関してはどのリクエストが許可されてどのリクエストが拒否されたかログが残るようになっているが、過去3時間分しか残らないようになっています。
そのためS3に保存する方法はよく記事で見かけます。
AWS WAF Full Log を S3 に出力する
日本から使っているユーザーでも、IPアドレスが海外のものになってしまうこともある
NURO光が海外IPに!?ネット・ゲームに繋がらない時の対処法を紹介!
国内の回線なのにbingでの検索結果が英語になり、設定での地域が 米国 - 英語 になる
リキャプチャなどの対策もある
前に記事を書いたのでこちらも
GoogleのreCAPTCHA v3をPHPで使う