(Plesk for Linux) ブルートフォース攻撃からの防御 (Fail2Ban)
概要: Fail2Ban は、サーバとホストされているウェブサイトをブルートフォース攻撃から保護する IP アドレス制限ツールです。高度なツールですが、デフォルトでは無効になっています。Plesk は、ログインに対する基本的なブルートフォース対策を備えており、デフォルトで有効になっています。
このトピックでは、以下の方法を学習します。
- 最小限の労力で最適な保護を確保するために、Fail2Ban を有効にして構成する方法
- 特定の IP アドレスからの接続を手動でブロックする方法、および禁止された IP アドレスからの接続を手動でブロック解除する方法
- 特定の IP アドレスからの接続が Fail2Ban によってブロックされないようにする方法
- Fail2Ban jail を作成、構成、削除、有効化、無効化、および Fail2Ban jail で使用されるフィルターの追加方法
- ログインに対するブルートフォース対策を構成します。
概要
Fail2Ban は、さまざまな Plesk サービスのログファイルをスキャンしてサーバを保護します。特定の IP アドレスからの認証の失敗、既知の攻撃、その他の疑わしいエントリを示すエントリを検索します。特定の IP アドレスと紐付けられたログエントリの数が定義済みの値に達すると、Fail2Ban は通知メールを送信するか、定義済みの期間 (「アクセス制限期間」) にわたってその IP アドレスを「禁止」します (対応するルールをサーバのファイアウォール構成に追加して、その IP アドレスからのそれ以上のアクセスをブロックします)。
たとえば、デフォルトの Fail2Ban 構成が有効になっている場合、IP アドレス 198.51.100.1 から Plesk へのログイン試行が 10 分以内に 5 回失敗してログに記録されると、次のルールがファイアウォール構成に追加されます。
Chain f2b-plesk-login (1 references)
target prot opt source destination
REJECT all -- 198.51.100.1 anywhere reject-with icmp-port-unreachable
10 分間のアクセス制限期間が終了すると、IP アドレスの禁止は自動的に解除され、対応するファイアウォールルールは削除されます。
Fail2Ban のロジックは、「jail」の使用によって制御されます。jail とは、違反を検知するために使用される 1 つ以上の正規表現のセットである「フィルタ」と、特定の IP アドレスからの違反の検知が十分な数に達した場合に実行される処理を制御するディレクティブである「アクション」の組み合わせです。
通常、単一の jail は、ウェブサーバや SSH サーバなどのサーバ上で実行されている単一のサービスに対応します。Plesk には、ほとんどの Plesk サービスをカバーする、多数の事前構成済みの jail が付属しています。また、 カスタム jail を手動で追加 することもできます。
Fail2Ban に加えて、Plesk ではブルートフォース対策がデフォルトで有効になっています。つまり、ログインに 5 回失敗すると、IP アドレスは 300秒間アクセスが制限され、その後再びログインできるようになります。これらの設定は変更可能です。これらの設定の変更方法の詳細については、 ブルートフォース攻撃対策を構成する をご覧ください。
注意と制約事項
Plesk で Fail2Ban を使用する際は、以下の制約事項にご注意ください。
- Fail2Ban は IP アドレスのみに依存します。設定されていない限り、ホスト名の検索は実行しません。
- Fail2Ban は侵入者を IP アドレスで識別するため、分散型ブルートフォース攻撃から保護するには最も厳しい設定を使用する必要があります。このような設定では、誤検知が発生して正規ユーザに問題が発生する可能性があります。
Fail2Ban を有効にする
「推奨」プリセットでインストールされた Plesk サーバでは、Fail2Ban はデフォルトで有効になっており、すべてのデフォルトの jail がアクティブ化されています。サーバ上で Fail2Ban が有効になっていない場合 (たとえば、インストールされていないため)、Fail2Ban をインストールして有効にし、デフォルトの jail をアクティブ化すると、Fail2Ban が提供する保護機能を利用できるようになります。
Fail2Ban をインストールして有効にするには:
- Plesk にログインします。
- [ツールと設定] > [IP アドレスの禁止 (Fail2Ban)] ([セキュリティ] の下) に移動します。 [IP アドレスの禁止 (Fail2Ban)] が見つからない場合は、まず 「Fail2Ban」コンポーネントをインストールする必要があります。
- [侵入検知を有効化] チェックボックスをオンにして [適用] をクリックします。
- [jail] タブに移動し、「非アクティブ」としてマークされているすべての jail を選択して、 [オンにする] をクリックします。
Fail2Ban は現在、デフォルト設定で動作しています。Fail2Ban を無効にするには、[設定] タブにある [侵入検知を有効化] チェックボックスをオフにして [OK] をクリックします。
Fail2Ban を構成する
Fail2Ban のデフォルト設定は、ほとんどのシナリオに適しています。ただし、必要に応じて、Fail2Ban をより厳しくしたり、より緩くしたりするために設定を変更することもできます。
Fail2Ban の設定を変更するには:
-
[ツールと設定] > [IP アドレスによるアクセス制限(Fail2Ban)]/ ([セキュリティ]の下)に進みます。
-
[設定] タブに移動します。
-
(オプション) [IP アドレスのアクセス制限期間] の値を変更して、IP アドレスのアクセスが制限される期間を長くしたり短くしたりします。「-1」に設定すると、すべての禁止が永続的になります。
アクセス制限期間を長くすると、攻撃者をより長く締め出すことができますが、正規ユーザーに誤検知が発生した場合もより長く締め出すことになります。永久にアクセス禁止にすると、その IP アドレスからのさらなる攻撃はすべて停止されますが、正規ユーザーに誤検知が発生した場合も永久に締め出すことになります。いつでも 手動で任意の IP アドレスの禁止を解除 することができます。
-
(オプション) [攻撃を検知する期間] の値を変更して、認証の失敗または潜在的な攻撃を示す個々のログエントリが「有効」なままになる期間を長くしたり短くしたりします。
期間が長くなるほど、間隔をあけて発生する攻撃を検知してブロックできる可能性が高くなりますが、正規ユーザによる認証の失敗もより長く追跡されるため、誤検知の可能性も高くなります。
-
(オプション) [IP アドレスがアクセス制限される失敗回数] の値を変更して、IP アドレスのアクセスを制限するために必要な認証の失敗回数または単一の IP アドレスからの潜在的な攻撃の回数を設定します。
値が小さいほど、より少ない数の認証の失敗または潜在的な攻撃を検知するだけでアクセス制限されるようになります。これにより、セキュリティは向上しますが、誤検知の可能性も高くなります。このパラメータの値を「1」に設定すると、認証の失敗または潜在的な攻撃が検知されるたびに禁止されるため、最大限の保護が提供されますが、誤検知の可能性も最大化します。
-
[OK]をクリックします。
構成された設定が有効になります。これらの設定は個々の jail に対しても変更でき、個々の jail の設定は「設定」タブで構成された設定よりも優先されます。
IP アドレスのアクセス制限/解除を手動で行う
Fail2Ban によって現在アクセス制限されている IP アドレスを確認できます。また、手動で IP アドレスをアクセス制限したり、アクセス制限されている IP アドレスを解除したりすることもできます。
現在アクセス制限されている IP アドレスのリストを表示するには:
- Plesk にログインします。
- [ツールと設定] > [IP アドレスによるアクセス制限(Fail2Ban)]/ ([セキュリティ]の下)に進みます。
- [アクセス制限中の IP アドレス] タブに移動します。
このタブでは、現在 Fail2Ban によってアクセス制限されているすべての IP アドレスと、この制限を課している jail の名前を確認できます。
1 つ以上の IP アドレスを手動でアクセス制限するには:
- Plesk にログインします。
- [ツールと設定] > [IP アドレスによるアクセス制限(Fail2Ban)]/ ([セキュリティ]の下)に進みます。
- [アクセス制限中の IP アドレス] タブに移動し、 [IP をアクセス制限] をクリックします。
- [IP アドレス] の下に、アクセス制限する IP アドレスまたは CIDR サブネットマスクを指定します。
- [IP アドレスをアクセス制限] の下で、必要な制限期間を選択して [OK] をクリックします。
指定された IP アドレスがアクセス制限され、[アクセス制限中の IP アドレス] で確認できます。
IP アドレスのアクセス制限は、自動的に行われたか手動で行ったのかにかかわらず、いつでも手動で解除できます。
1 つ以上の IP アドレスのアクセス制限を手動で解除するには:
- Plesk にログインします。
- [ツールと設定] > [IP アドレスによるアクセス制限(Fail2Ban)]/ ([セキュリティ]の下)に進みます。
- [アクセス制限中の IP アドレス] タブに移動します。
- 現在アクセス制限されている IP アドレスのリストで、アクセス制限を解除する IP アドレスを選択し、 [禁止を解除] をクリックします。
選択した IP アドレスのアクセス制限は解除されました。
特定の IP アドレスまたはホスト名のアクセス制限を防止する
特定の IP アドレス、サブネット、またはホスト名が Fail2Ban によってアクセス制限されないようにすることができます。これは、たとえば、Fail2Ban によってサーバからロックアウトされないようにするために使用できます。
IP アドレス、サブネット、またはホスト名がアクセス制限されるのを防止する:
- Plesk にログインします。
- [ツールと設定] > [IP アドレスによるアクセス制限(Fail2Ban)]/ ([セキュリティ]の下)に進みます。
- [信頼する IP アドレス] タブに移動し、 [信頼できる IP を追加] をクリックします。
- [IP アドレス] の下に、アクセス制限したくない IP アドレス、CIDR サブネットマスク、またはホスト名を指定します。
- (オプション) IP アドレス、CIDR サブネットマスク、またはホスト名をリストに追加する理由を述べるメッセージを [説明] の下に追加します。このメッセージは [信頼する IP アドレス] タブに表示されます。
- [OK]をクリックします。
指定された IP アドレス、CIDR サブネットマスク、またはホスト名は、それらによって 1 つ以上のアクティブな jail がトリガーされた場合でも、Fail2Ban によってアクセス制限されません。Fail2Ban によってアクセス制限できない IP アドレス、CIDR サブネットマスク、およびホスト名のリストは、[信頼する IP アドレス] タブで確認できます。
Fail2Ban ログファイルを表示またはダウンロードする
Fail2Ban は、アクセス制限中または制限が解除中の IP アドレスに関する情報やその他の情報 (作成またはアクティブ化された jail など) をログファイルに書き込みます。Plesk グラフィカルインターフェースから Fail2Ban ログを表示したり、コンピュータにダウンロードしたりすることができます。
Fail2Ban ログファイルを表示またはダウンロードするには:
- Plesk にログインします。
- [ツールと設定] > [IP アドレスによるアクセス制限(Fail2Ban)]/ ([セキュリティ]の下)に進みます。
- [ログ] タブに移動し、ログファイルをクリックして表示します。
- (オプション) ログファイルの横にある
アイコンをクリックして、ログファイルをコンピュータにダウンロードします。
jail をアクティブ化/非アクティブ化する
Fail2Ban が特定の Plesk サービスを保護するためには、対応する jail が存在し、アクティブ化されている必要があります。Plesk には、 ほとんどの Plesk サービスをカバーする多数の jail が用意されています。また、追加の カスタム jail を手動で追加することもできます。
jail をアクティブにするには:
- Plesk にログインします。
- [ツールと設定] > [IP アドレスによるアクセス制限 (Fail2Ban)] ([セキュリティ] の下) に移動し、[jail] タブに移動します。
- jail を 1 つ以上選択し、 [オンにする] ボタンをクリックします。このボタンは、Fail2Ban サービスが実行されている ([設定] タブの [侵入検知を有効化] チェックボックスがオンになっている) 場合にのみ使用できます。
選択した jail がアクティブになります。Fail2Ban は、アクティブ化された jail をトリガーする IP アドレスをアクセス制限するようになります。
注釈: 複数の jail を一度にアクティブ化する場合、いずれかの jail のアクティブ化に失敗すると、選択した jail のいずれもアクティブ化されません。この場合、jail を 1 つずつアクティブ化してください。
jail を非アクティブにするには:
- Plesk にログインします。
- [ツールと設定] > [IP アドレスによるアクセス制限 (Fail2Ban)] ([セキュリティ] の下) に移動し、[jail] タブに移動します。
- 1 つ以上の jail を選択し、 [オフにする] ボタンをクリックします。
選択した jail は非アクティブになります。Fail2Ban は、非アクティブ化された jail をトリガーする IP アドレスをアクセス制限しなくなります。また、非アクティブ化された jail によってアクセス制限されていたすべての IP アドレスの制限が解除されます。
注釈: plesk-one-week-ban および plesk-permanent-ban という jail は非アクティブ化できません。
カスタム jail を追加/削除する
デフォルトの Plesk jail のいずれも特定のサービスに対応していない場合や、特定の攻撃に対する保護を提供しない場合は、カスタム jail を追加することでその問題を修正できます。
注釈: カスタム jail を追加する場合は、まず 新しいフィルタを追加 する必要があります。
カスタム jail を追加するには:
-
[ツールと設定] > [IP アドレスによるアクセス制限 (Fail2Ban)] ([セキュリティ] の下) に移動し、[jail] タブに移動します。
-
[jail を追加]をクリックします。
-
[名前] の下に jail の名前を入力します。
-
[フィルタ] メニューから、この jail で使用するフィルタを選択します。デフォルトのフィルタの 1 つを使用するか、手動で追加したフィルタを使用できます。
-
jail がトリガーされるたびに実行される 1 つ以上の jail アクションを追加します。自由形式で入力するか、[アクション] メニューに事前設定された 4 つのアクションのいずれかを選択して [追加] をクリックしてください。使用できる事前設定済みアクションは次のとおりです。
-
iptables は、単一のポートで jail をトリガーした IP アドレスをアクセス制限します。追加するファイアウォールルールのパラメータを指定します。例:
iptables[chain="INPUT", name="ssh", port="22", protocol="tcp"] -
iptables-multiport は、複数のポートで jail をトリガーした IP アドレスをアクセス制限します。たとえば次のように、加するファイアウォールルールのパラメータを指定します。例:
iptables-multiport[chain="INPUT", name="apache", port="80,443", protocol="tcp"] -
iptables-allports は、すべてのポートで攻撃者をアクセス制限します。名前以外のパラメータを指定する必要はありません。例:
iptables-allports[name=recidive] -
sendmail は、指定されたメールアドレスにメール通知を送信します。送信先のメールアドレスを指定します。例:
sendmail[mailcmd='/usr/sbin/sendmail -f "fail2ban@example.com" "mail@example.com"', dest="root", sender="fail2ban", sendername="Fail2Ban", name="default"]この例では、「fail2ban@example.com」からのメールが「mail@example.com」に送信されます。
-
-
[ログパス] の下で、選択したフィルタを使用して Fail2ban がスキャンする 1 つ以上のログファイルを指定します。
-
[IP アドレスのアクセス制限期間] で、アクセスを制限する期間を秒単位で指定します。
-
[ログイン試行の最大失敗回数] で、アクセス制限を発令するために必要なログイン試行の失敗回数を指定します。
-
[OK]をクリックします。
jail がアクティブになり、[jail] タブで確認できます。
1 つ以上のカスタム jail を削除するには:
- Plesk にログインします。
- [ツールと設定] > [IP アドレスによるアクセス制限 (Fail2Ban)] ([セキュリティ] の下) に移動し、[jail] タブに移動します。
- 1 つ以上のカスタム jail を選択し、 [削除] をクリックしてから、 [はい、削除します] をクリックします。
選択した jail が削除され、[jail] タブに表示されなくなります。また、削除された jail によってアクセス制限されていたすべての IP アドレスの制限が解除されます。
注釈: Plesk のデフォルト jail は削除できません。
jail を編集する
デフォルトの jail とカスタム jail のどちらのプロパティも編集できます。
注釈: jail の [IP アドレスのアクセス制限期間] または [ログイン試行の最大失敗回数] の値を変更すると、[設定] タブで指定されたデフォルトの値がそれらの値によって上書きされます。
既存の jail の設定を変更するには:
- Plesk にログインします。
- [ツールと設定] > [IP アドレスによるアクセス制限 (Fail2Ban)] ([セキュリティ] の下) に移動し、[jail] タブに移動します。
- jail の名前をクリックし、 [設定を変更] をクリックします。
- jail の設定を編集してから [OK] をクリックします。
jail の新しい設定が有効になります。
フィルタを追加および削除する
フィルタとは、ログファイルをスキャンして、攻撃や認証の失敗に関連する特定のパターンに一致するエントリを探すために使用される正規表現の組み合わせです。通常、Fail2Ban で保護するサービスごとに少なくとも 1 つのフィルタが必要です。Apache ログファイルで異常を検知するためのフィルタは Postfix での使用には適しておらず、その逆も同様です。
注釈: フィルタが適切に機能するには、正しい構文にする必要があります。Fail2Ban フィルタの作成方法については こちら をご覧ください。
フィルタを追加するには:
- Plesk にログインします。
- [ツールと設定] > [IP アドレスによるアクセス制限 (Fail2Ban)] ([セキュリティ] の下) に移動し、[jail] タブに移動します。
- [フィルタ管理] をクリックして、 [フィルタを追加] をクリックします。
- ログファイルの行をマッチングするために使用するフィルタ名と正規表現を指定します。
ブルートフォース対策を構成する
ログイン試行回数を制限することで、Plesk サーバでのブルートフォース攻撃に対する保護が強化されます。ログインに対するブルートフォース対策はデフォルトで有効になっており、UI および API ログインだけでなく、パスワードリセット要求にも適用されます。
デフォルトでは、5 回ログインを試みた後で、IP アドレスは 300 秒間制限され、その後再びログインできます。ブルートフォース対策の設定を変更するには、以下のパターンに従った行を panel.ini ファイルに追加してください (panel.ini の構成に関する詳細はこちら)。
[security]
bruteforceProtection.enabled = true
bruteforceProtection.rateLimit = 5
bruteforceProtection.rateLimitPeriod = 300
これらの設定を編集して、ブルートフォース対策を無効にしたり、レート制限やレート制限期間を変更したりします。
| オプション | 説明 |
|---|---|
bruteforceProtection.enabled |
ブルートフォース対策を有効または無効にします。値は true または false です。 |
bruteforceProtection.rateLimit |
IP アドレスで許可されるアクセス試行の失敗回数。任意の正の整数を指定できます。 |
bruteforceProtection.rateLimitPeriod |
レート制限期間 (秒)。任意の正の整数を指定できます。 |
Plesk のデフォルトの Fail2Ban jail
Plesk には、すぐに使用できる事前構成済みの jail が多数付属しています。これらは、すべてのホスティングサービス (ウェブサーバ、メールサーバ、FTP サーバなど) をカバーします。使用できる事前構成済みの jail は次のとおりです。
| 名前 | 機能 |
|---|---|
| plesk-apache | Apache 認証の失敗をスキャンします。 |
| plesk-apache-badbot | Apache のアクセスログをスキャンして、メールグラバーや脆弱性スキャナーを検索します。 |
| plesk-dovecot | Dovecot IMAP、POP3、Sieve 認証の失敗をスキャンします。 |
| plesk-modsecurity | ModSecurity ウェブアプリケーションファイアウォールによって有害だと判断された IP アドレスをアクセス制限します。この jail は、ModSecurity が実行中である場合にのみアクティブ化でき、ModSecurity が「検知のみ」モードで稼働している場合でも攻撃者をアクセス制限します。 |
| plesk-one-week-ban | 手動で 1 週間アクセス制限された IP アドレスをブロックするために使用されます。この jail は非アクティブ化または編集できません。 |
| plesk-panel | Plesk 認証の失敗をスキャンします。 |
| plesk-permanent-ban | 手動で永久にアクセス制限された IP アドレスをブロックするために使用されます。この jail は非アクティブ化または編集できません。 |
| plesk-postfix | Postfix SMTP および SASL 認証の失敗をスキャンします。 |
| plesk-proftpd | ProFTPD 認証の失敗をスキャンします。 |
| plesk-roundcube | Roundcube ウェブメール認証の失敗をスキャンします。 |
| plesk-wordpress | WordPress 認証の失敗をスキャンします。 |
| recidive | Fail2Ban ログをスキャンして、他の jail からのアクセス制限を検索します。短期間に他の jail によって繰り返しアクセス制限された IP アドレスは、1 週間にわたって Plesk やいずれかの Plesk サービスにアクセスできなくなります。 |
| ssh | SSH 認証の失敗をスキャンします。 |
Plesk のデフォルトの Fail2Ban フィルタ
Plesk には、すぐに使用できる事前構成済みのフィルタが多数付属しています。これらは、すべてのホスティングサービス (ウェブサーバ、メールサーバ、FTP サーバなど) をカバーします。これらのフィルタは、Plesk のデフォルト jail で使用され、カスタム jail でも使用できます。使用できる事前構成済みのフィルタは次のとおりです。
| 名前 | 機能 |
|---|---|
| apache-auth | Apache 認証の失敗をスキャンします。 |
| apache-badbots | スパムボットおよび不正なウェブクローラをスキャンします。 |
| plesk-courierlogin | Courier IMAP および POP3 認証の失敗をスキャンします。 |
| plesk-dovecot | Dovecot IMAP、POP3、Sieve 認証の失敗をスキャンします。 |
| plesk-modsecurity | ModSecurity ウェブアプリケーションファイウォール によって検出された、ウェブアプリケーションに対する攻撃をスキャンします。 |
| plesk-panel | Plesk 認証の失敗をスキャンします。 |
| plesk-qmail | qmail SMTP 認証の失敗をスキャンします。 |
| plesk-roundcube | Roundcube ウェブメール認証の失敗をスキャンします。 |
| plesk-wordpress | WordPress 認証の失敗をスキャンします。 |
| postfix | Postfix SMTP および SASL 認証の失敗をスキャンします。 |
| proftpd | ProFTPD 認証の失敗をスキャンします。 |
| recidive | Fail2Ban によって繰り返しアクセス制限された IP アドレスをスキャンします。 |
| sshd | SSH 認証の失敗をスキャンします。 |

