4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CloudFront と AWS WAF 適用済みの WordPress (AMIMOTO) サイトで、海外からの特定 URL (/wp-login.php & /wp-cron.php) へのアクセスを制限してみる

Last updated at Posted at 2019-05-14

0.はじめに

AWS EC2 AMIMOTO で WordPress サイトを構築して、

CloudFront やら ALB やら AWS WAF を適用していたんですが、

海外からの特定 URL (/wp-login.php & /wp-cron.php) へのアクセスが大量にあり、サーバー負荷が上昇していたので、AWS WAF を使ってアクセス制限してみました。

1.CloudWatch Logs でのアクセスログの確認

  1. CloudWatch Logs にサーバーのアクセスログをエクスポートしているので、Cloudwatch Logs インサイトでログを確認します。
    • fields @timestamp, @message
      

| sort @timestamp desc
| filter (@logStream="i-***") and (@message not like "ELB-HealthChecker")
* FireShot Capture 083 - CloudWatch Management Console - ap-northeast-1.console.aws.amazon.com.jpg
* AWS CloudWatch で、Amazon Linux のパフォーマンスとログの監視をしてみる - Qiita

  1. /wp-login.php や /wp-cron.php への大量のアクセスが確認できます。

  2. アクセス元の IP アドレスをいくつか確認 (dig等) すると、海外からのアクセスであることが確認できました。WordPress においては、一般的な攻撃のようですね。

ということで、
今回は、海外からの /wp-login.php や /wp-cron.php へのアクセスを AWS WAF を使って制限します。

なお、現在 CloudFront と ALB の2箇所に AWS WAF が設定されていますが、CloudFront 側の AWS WAF に設定を追加します。

2.Geo match コンディションの作成

  1. 以下のページの手順を参考に、コンディションを作成します。
  2. 作成後の設定は、こんな感じ。
    • FireShot Capture 085 - AWS WAF & Shield - console.aws.amazon.com.jpg

3.String and regex match コンディションの作成

  1. 以下のページの手順を参考に、コンディションを作成します。
  2. 作成後の設定は、こんな感じ。
    • FireShot Capture 087 - AWS WAF & Shield - console.aws.amazon.com.jpg
  3. Regex pattern sets の設定は、こんな感じ。
    • Regex pattern strings
      • .*/wp-cron.php
      • .*/wp-login.php
    • FireShot Capture 088 - AWS WAF & Shield - console.aws.amazon.com.jpg

4.新しくルールを作成し、作成した各コンディションの設定を追加

  1. 以下のページの手順を参考に、ルールを作成し、作成した各コンディションを設定します。
  2. 作成後の設定は、こんな感じ。
    • FireShot Capture 086 - AWS WAF & Shield - console.aws.amazon.com.jpg

5.Web ACL に作成した新しいルールの設定を追加

  1. 以下のページの手順を参考に、ルールを作成し、作成した各コンディションを設定します。
  2. 作成後の設定は、こんな感じ。
    • FireShot Capture 090 - AWS WAF & Shield - console.aws.amazon.com.jpg

6.AWS WAF の設定を確認

  1. 以下のサイト等を利用して、AWS WAF の設定が効いているか確認します。
  2. URL を入力し、「START TEST」ボタンを押下します。
    • FireShot Capture 092 - WebPageTest - Website Performance and Optimization Test - www.webpagetest.org.jpg
  3. ステータスコード 403 が帰ってきていることを確認します。
    • FireShot Capture 093 - WebPageTest Test Result - Dulles _ www.gen...t.com_wp-login.php - 05__ - www.webpagetest.org.jpg

99.ハマりポイント

  • 今回は、それ程ハマったところは無かったんですが…。


  • String and regex match conditions のところで、Regex pattern sets がうまく設定されなかったりして、ちょっと手間取りました。
  • Regex pattern sets だけを先に作成し、その後に String and regex match conditions を作成出来ればやりやすい気がしますが、String and regex match conditions の作成の手順の中でしか、新しく作成出来ないみたいです。削除や編集は View regex pattern sets から出来るんですが…。

XX.まとめ

今回もクラスメソッドさんの記事に、おんぶにだっこで、助けて頂きました。
本当にありがたいですね。
🙇‍♂️

ご参考になれば♪

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?