ALBへのアクセスを日本国内からに限定したいということがあります。 AWS WAFに以下のルールを設定すれば簡単です。
Web ACLにルールを追加
Web ACLの設定画面で Add my own rules and rule groups を選択します。
Rule builderで設定を入れる
Rule builderの画面になります。 ソースIPアドレスが、JP以外からのアクセスをブロックするルールです。
Rule builder
Rule
設定項目 | 設定値 |
---|---|
Name | 任意の名前 |
Type | Regular rule |
If a request
設定値 |
---|
doesn't match the statement (NOT) |
Statement
設定項目 | 設定値 |
---|---|
Inspect | Originates from a country in |
Country codes | Japan - JP |
IP address to use to determine the country of origin | Source IP address |
Then
Action
設定値 |
---|
Block |
設定の保存
今回は、他には何もルールがない初期状態のWeb ACLなので、そのまま Save します。 もし、他にルールがある場合は、Move up または Move down でWeb ACL内のルール適用の順番も調整します。
Web ACLの設定完了
こんな画面です。
動作テスト
海外からのアクセスを本当にブロックするか確認してみます。 海外の人にアクセスしてもらったり、VPNを使ったりといろいろ方法はありますが、今回はシドニーリージョンのCloud9からcurlでアクセスしてみました。
$ curl -v http://alb-www-428211968.ap-northeast-1.elb.amazonaws.com/test.html * Trying 52.69.205.87... * TCP_NODELAY set * Connected to alb-www-428211968.ap-northeast-1.elb.amazonaws.com (52.69.205.87) port 80 (#0) > GET /test.html HTTP/1.1 > Host: alb-www-428211968.ap-northeast-1.elb.amazonaws.com > User-Agent: curl/7.61.1 > Accept: */* > < HTTP/1.1 403 Forbidden < Server: awselb/2.0 < Date: Tue, 25 Aug 2020 10:02:21 GMT < Content-Type: text/html < Content-Length: 134 < Connection: keep-alive < <html> <head><title>403 Forbidden</title></head> <body bgcolor="white"> <center><h1>403 Forbidden</h1></center> </body> </html> * Connection #0 to host alb-www-428211968.ap-northeast-1.elb.amazonaws.com left intact
期待通り、403 Forbidden になりました。
なお、今回はWeb ACLの中にRuleを1つ作成するという方法を選択しました。別の方法としては、Rule Groupというのを作り、それをWeb ACLに適用もできます。複数Web ACLがある場合はRule Groupの方がいいかもしれません。
渡辺 信秀(記事一覧)
2017年入社 / 地味な内容を丁寧に書きたい