このようなエラーログが毎日多い日は100通も届いていました。
[日付] [:error] [pid ~:tid ~] [client 94.182.176.136:42228] [client 94.182.176.136] ModSecurity: Request body no files data length is larger than the configured limit (1048576).. Deny with code (413) [hostname "zbnr-hp.com"] [uri "/"] [unique_id "~"]
ずーっとApacheエラーかと思っていたのですが(「画像サイズが大きいのかな?でもなあ」と悩んでいた)、
ModSecurity:
リクエスト本文ファイルのデータ長が設定された制限(1048576)を超えていません..
コードで拒否(413)
アクセスログと照らし合わせたら、サイトを「HTTP POST Flood攻撃」されていたことが分かりました。
zbnr-hp.com 94.182.176.136 - - [日付] "POST / HTTP/1.1" 413 329 "-" "-"
定期的にPOSTされていたみたい。Botを使っているのか大体15分毎に来ます(2023年も来てる‥‥)
試しに「IP 94.182.176.136」でググってみたら、評判の良くないIPでした。
- ホスト名 94-182-176-136.shatel.ir
- 国 イラン
DoS、DDoS攻撃を防ぐ対策
IPアドレスをアクセス制限
.htaccess に追記して IPアドレスをアクセス制限しました。
deny from 94.182.176.136
エラーログはこのようになりました。
AH01797: client denied by server configuration (クライアントはサーバー構成によって拒否されました)
他
- レンタルサーバーでWAFやセキュリティを設定する
- 常に最新のWordPressにバージョンアップしておく
国ごとにアクセス制限
今後、イランの色々なIPから攻撃されるようであれば、イランに割り振られているIP全て拒否しようかと。
「Create an Access Control List to Block Countries or Continents」にアクセスしたら「Iran」→「Apache .htaccess Deny」にチェックを入れて「Create ACL」をクリックするとIPがずらっと表示されるので、それを.htaccess に追記します。