2026年8月11日
2026年8月11日
WordPressのFail2Banでブルートフォースを防ぐ方法
はじめに
WordPressサイトは世界中の多くのユーザーによって使用されており、その人気から攻撃の標的となりやすいです。ブルートフォース攻撃とは、不正なアクセス試行でユーザー名とパスワードを組み合わせてログインしようとする攻撃方法であり、特にSSHやWordPress管理画面へのアクセスが対象となります。Fail2Banは、このような攻撃を検出し、そのIPアドレスからのアクセスを一時的にブロックする強力なセキュリティツールです。
症状・背景
- ログファイルに大量の失敗したログイン試行が記録されている
- サイト管理者としてのログインが頻繁に失敗する
- SSHサーバーへのアクセスが禁止される
- 不明なIPアドレスからの大量のリクエストがある
手順・設定方法
ステップ1: Fail2Banをインストールする
# 更新リストを取得し、パッケージリストを更新
sudo apt-get update
# Fail2Banをインストール
sudo apt-get install fail2ban -y
ステップ2: WordPressのブルートフォース攻撃を監視する設定を作成する
# /etc/fail2ban/jail.d/wordpress.conf ファイルに以下を追加または編集
sudo nano /etc/fail2ban/jail.d/wordpress.conf
[[wordpress]]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/apache2/access.log
maxretry = 10
findtime = 600
bantime = 3600
ステップ3: SSHのブルートフォース攻撃を監視する設定を作成する
# SSH用のフィルターファイルに以下を追加または編集
sudo nano /etc/fail2ban/filter.d/sshd.conf
[Definition]
failregex = ^%(__prefix_line)s(?:(?:[A-za-z0-9.\-]+\@|[A-Za-z0-9.\-]+%\w+%)(?:[A-za-z0-9\-._~%\s]*[:]{1})(?:[\d]{1,3}\.){3}[\d]{1,3})?(\[^ ]*)[\s]?(?:[^:]*:\*[^\:]*|[^ ]* )?\S+ (?:auth(|(ent|fail)(ure)?|loss)|Failed password) for .* from <HOST>(, client| port \d+)?[^(]*\((.*)?\)\s*$
ignoreregex =
ステップ4: Fail2Banの設定を有効化し、サービスを再起動する
# Fail2Banの設定を有効にする
sudo systemctl enable fail2ban
# Fail2Banサービスを再起動
sudo systemctl restart fail2ban
注意事項
- ログファイルのパスや監視対象ポートはサイト環境により異なる場合があるため、正確な値を使用する
bantime(ブロック時間)とmaxretry(最大試行回数)を適切に設定し、誤ったアクセスによる不必要なブロックを防ぐ- セキュリティ上の注意:攻撃の兆候がある場合は、すぐに対応する必要があり、それ以外の場合も定期的にログファイルを確認すること
- パフォーマンス/運用上の注意:過度なアクセス制限はサイトの利用者体験に影響を与える可能性があるため、適切な設定を行う
まとめ
1. Fail2Banインストール: WordPressとSSHのブルートフォース攻撃を防ぐために、まずFail2Banをサーバーにインストールします。
2. WordPress用設定: /etc/fail2ban/jail.d/wordpress.confファイルを作成し、アクセスログファイルのパスや最大試行回数などのパラメータを設定します。
3. SSH用フィルターファイルの編集: SSHサーバーからのブルートフォース攻撃に対応するため、Fail2Ban用のフィルターファイルをカスタマイズします。
4. Fail2Ban設定の有効化と再起動: 最後に、Fail2Banの設定を適用し、サービスを再起動することでセキュリティ機能が有効になります。
関連記事: