AWS WAFで日本国外からのアクセスをブロックする

記事タイトルとURLをコピーする

ALBへのアクセスを日本国内からに限定したいということがあります。 AWS WAFに以下のルールを設定すれば簡単です。

Web ACLにルールを追加

Web ACLの設定画面で Add my own rules and rule groups を選択します。

f:id:swx-watanabe:20200825190848p:plain

Rule builderで設定を入れる

Rule builderの画面になります。 ソースIPアドレスが、JP以外からのアクセスをブロックするルールです。

f:id:swx-watanabe:20200825191326p:plain

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内のルール適用の順番も調整します。

f:id:swx-watanabe:20200825192345p:plain

Web ACLの設定完了

こんな画面です。

f:id:swx-watanabe:20200825192713p:plain

動作テスト

海外からのアクセスを本当にブロックするか確認してみます。 海外の人にアクセスしてもらったり、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の方がいいかもしれません。

渡辺 信秀 (記事一覧)