Image

ナレッジベース → パスワード推測から保護するために Fail2Ban を設定する

[仮想サーバー]
公開日: 27.01.2023

Fail2Banサービスは、サイトのパスワードを試行錯誤しているボットのIPアドレスをブロックするのに役立ちます。最近では、大量のPOSTリクエストがWebサーバーに負荷をかける攻撃によく使用されています。この例では、人気のあるCMSであるWordPressやSSHサービスに対するIPアドレスのブロックを解説します。

1. Fail2Banサービスのインストール

1.1 Epelリポジトリを接続する

yum install epel-release 

次に、/etc/yum.repos.d/epel.repoでenabled=1に設定します。

yum install fail2ban

2. 一般設定

Fail2Banの設定ファイルは、/etc/fail2banディレクトリに保存されます。そこにはデフォルト設定が記載されたjail.confというファイルがありますが、このファイルはパッケージの更新によって上書きされる可能性があるため、使用しない方が良いです。代わりに、新しいjail.localファイルを作成します。このファイルで定義された値は、jail.confの値を上書きします。

jail.confには[DEFAULT]セクションがあり、それに続いて個別のサービスのセクションがあります。jail.localはこれらの値を上書きすることができます。また、/etc/fail2ban/jail.d/のファイルも、これらのファイルの設定を上書きするために使用されます。ファイルは以下の順序で適用されます:

    /etc/fail2ban/jail.conf
    /etc/fail2ban/jail.d/*.conf (アルファベット順)
    /etc/fail2ban/jail.local
    /etc/fail2ban/jail.d/*.local (アルファベット順)

デフォルトの設定を確認し、/etc/fail2ban/jail.localファイルに追加します。

[DEFAULT]

# ホストを1時間ブロックする:
bantime = 3600

# /etc/fail2ban/jail.d/00-firewalld.confを上書き:
banaction = iptables-multiport

[sshd]
enabled = true

サービスを再起動します。

service fail2ban restart

次に、状態を以下のコマンドで確認します。

fail2ban-client status

3. WordPressフィルター

WordPressの管理画面(/wp-login.php)に10分間に10回以上アクセスしたIPアドレスをブロックするフィルターとルール(jail)を追加します。

3.1 フィルターの作成

/etc/fail2ban/filter.d/wordpress.conf

[Definition]

failregex = ^.* "POST .*/wp-login.php([/\?#\\].*)? HTTP/.*" 200
ignoreregex =

このフィルターに基づいてIPアドレスを検索します。

3.2 Jailの追加

/etc/fail2ban/jail.d/wordpress.conf

[wordpress]

action = iptables-multiport[name="wordpress", port="http,https"]
filter = admin-wordpress
logpath = /var/www/vhosts/system/*/logs/*access*log
/var/log/httpd/*access_log

別のWebサーバーを使用している場合は、ログの形式に応じてフィルターを変更し、正しいログファイルのパス(access_log)を指定する必要があります。設定を変更した後、サービスを再起動してください。





No Comments Yet