AWS WAF にて、「ALB」に対して、
国内IPではない、かつ、/admin 以下のパス、でのアクセスの場合に、
アクセス制御(「403 Forbidden」エラー)となるように設定したときの備忘録です。
1.Web ACL 作成前に /admin 判定の設定
AWS WAF の サイドメニュー「Regex pattern sets」を開き「Asia Pacific (Tokyo)」に切り替え、
[ Create regex pattern set ] 押下
Regex pattern set details
・Regex pattern set name:admin
(自由に入力)
・Description - optional:(空で登録可能なので空で登録)
・Region:Asia Pacific (Tokyo)
・Regular expressions:.*/admin*
(/admin 以下)
[ Create regex pattern set ] 押下
2.「Regex pattern sets」登録完了後、Web ACL 作成
AWS WAF の サイドメニュー「Web ACLs」を開き「Asia Pacific (Tokyo)」に切り替え、
[ Create web ACL ] 押下
▼ Step 1 Describe web ACL and associate it to AWS resources
Web ACL details
・Name:myACL
(自由に入力)
・Description - optional:(空で登録可能なので空で登録)
・CloudWatch metric name:(Nameの入力値が自動入力される)
・Resource type:Regional resources(Application Load Balancer, API Gateway, AWS AppSync)
・Region:Asia Pacific (Tokyo)
Associated AWS resources
[ Add AWS Resources ] を押下し「Application Load Balancer」からをALBを選択して「Add」を押下
[ Next ] を押下
▼ Step 2 Add rules and rule groups
Rules
「Add rules」プルダウン「Add my own rules and rule groups」を選択
Rule type
・Rule type:Rule builder
Rule
・Name:block-from-overseas
(自由に入力)
・Type:Regular rule
If a request > プルダウン「matches all the statements (AND)」を選択
Statement 1
・Negate statement (NOT):「Negate statement results」にチェックを入れる
→ チェックを入れると【 Statement 1 】が【 NOT Statement 1 】に切り替わる
・Inspect:Originates from a country in
・Country codes:Japan - JP
(検索の入力エリアに「jp」など入力するとすぐに見つかる)
・IP address to use to determine the country of origin:Source IP address
- AND -
Statement 2
・Negate statement (NOT)「Negate statement results」にチェックを入れない
・Inspect:URI path
・Match type:Matches pattern from regex pattern set
・Regex pattern set:admin
(「Regex pattern sets」で /admin 以下判定を設定した名前)
・Text transformation:None
Action
・Action:Block
[ Add rule ] を押下
Default web ACL action for requests that don't match any rules
・Default action:Allow
[ Next ] を押下
▼ Step 3 Set rule priority
[ Next ] を押下
▼ Step 4 Configure metrics
[ Next ] を押下
▼ Step 5 Review and create web ACL
内容を確認して [ Create web ACL ] を押下( → 完了まで数十秒程かかりました )
動作確認
海外からのアクセスを確認できるツール(サイト)以下2つで検証を行いました。
・「WebPagetest」https://www.webpagetest.org/
・「browserling」https://www.browserling.com/
設定前にアクセス出来ている事を確認し、設定後は「403 Forbidden」になるか確認。
AWS WAF の Web ACLs からも、
Web ACLの詳細画面【 Sampled requests 】にてブロックしたアクセスを確認可能。
プルダウンにて設定したルール名を選択すると、ブロックしたアクセスを絞り込んで確認可能。
最後に
「Regex pattern sets」で /admin 以下判定を設定しなくても、
「URI path」のところをMatch type:Starts with string
にして、
String to match:/admin
にしてもよかったのかもかもしれません←