Fail2banは、コンピュータサーバーを主にブルートフォース攻撃から保護し、悪意のあるユーザーエージェントを禁止し、URLスキャナーを禁止する侵入防止ソフトウェアフレームワークです。 Fail2banは、サーバーまたはWebアプリケーションのアクセス/エラーログを読み取ることでこれを実現します。 Fail2banはPythonプログラミング言語でコーディングされています。
次のチュートリアルでは、Fail2banをインストールする方法と、Debian11Bullseyeを使い始めるための完全な例と重要なヒントを使用していくつかの構成を行う方法を説明します。
- 推奨OS: Debian11ブルズアイ
- ユーザーアカウント: sudoまたはrootアクセス権を持つユーザーアカウント。
- 必要なパッケージ: wget
オペレーティングシステムの更新
Debianを更新します 既存のすべてのパッケージが最新であることを確認するためのオペレーティングシステム:
sudo apt update && sudo apt upgrade -y
チュートリアルでは、sudoコマンドを使用します およびsudoステータスがあると仮定 。
アカウントのsudoステータスを確認するには:
sudo whoami
sudoステータスを示す出力例:
[joshua@debian~]$ sudo whoami
root
既存または新規のsudoアカウントを設定するには、DebianのSudoersへのユーザーの追加に関するチュートリアルにアクセスしてください。 。
rootアカウントを使用するには 、rootパスワードを指定して次のコマンドを使用してログインします。
su
Fail2banのインストール
デフォルトでは、Fail2banはDebian11Bullseyeリポジトリに含まれています。ソフトウェアをインストールするには、端末で次のコマンドを使用します。
sudo apt install fail2ban
出力例:

タイプY、 次にEnterキーを押します 続行してインストールを完了します。
デフォルトでは、インストール後のfail2banがアクティブで、有効になっている必要があります。これを確認するには、次のsystemctlコマンドを使用します :
sudo systemctl status fail2ban
出力例:

fail2banサービスがアクティブ化されていない場合は、次のコマンドを実行して開始し、必要に応じて、デフォルトでシステム起動時に有効にします。
sudo systemctl start fail2ban
次に、システム起動時にfail2banを有効にするには、次を使用します。
sudo systemctl enable fail2ban
最後に、fail2banのバージョンとビルドを確認します。
fail2ban-client --version
出力例:
Fail2Ban v0.11.2
これは、最新の安定したリリースの1つであるverがあることを示しています。 0.11.2(2020/11/23)–(セキュリティツールで世界を癒す) 。インストールしたビルドがFail2banのリリーススケジュールのどこにあるかを将来知りたい場合は、Fail2banGithubのページのリリースページにアクセスしてください。
Fail2banの構成
インストールが完了したら、セットアップと基本構成を行う必要があります。 Fail2banには、 /etc/fail2ban/jail.confにある2つの構成ファイルが付属しています。 およびデフォルトのFail2ban /etc/fail2ban/jail.d/defaults-debian.conf 。これらのファイルは変更しないでください。元のセットアップファイルは元のファイルであり、将来のFail2banへの更新で置き換えられます。
設定を更新して失うかのように、Fail2banをどのように設定したのか不思議に思うかもしれません。簡単です。.localで終わるコピーを作成します .confの代わりに Fail2banは常に.localを読み取ります .confをロードする前に最初にファイル 見つからない場合。
これを行うには、次のコマンドを使用します。
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
次に、構成ファイルを開いて構成を続行します。
sudo nano /etc/fail2ban/jail.local
次に、チュートリアルは、使用または好みに合わせて変更できるいくつかの設定に対して実行されます。ほとんどの設定はコメント化されていることに注意してください。チュートリアルでは、問題の行のコメントを解除するか、設定例の既存の行を変更します。
これらはオプションの設定であり、fail2banについて詳しく知っていて自信があれば、好きなように設定できます。
禁止時間の増分
最初に遭遇する設定は、禁止時間の増分です。攻撃者が戻るたびにこれを有効にする必要があります。これにより禁止時間が長くなり、禁止時間の長さが短い場合にシステムが同じIPを常に再禁止する必要がなくなります。たとえば、1時間の場合、攻撃者が5回返した場合は、これを長くする必要があります。
また、禁止増加ロジックを機能させるには、乗数または係数を設定する必要があります。これらのいずれかを選択できます。ただし、ガイドでは、以下の例で強調表示されているように、乗数を優先します。これは、カスタムの禁止時間の増加を好みに合わせて設定できるためです。さらなる説明は、その背後にある数学の設定にあります。
以下の例:

Fail2banのIPをホワイトリストに登録
次のリストでは、ホワイトリストのオプションに出くわし、以下のコメントを外して、ホワイトリストに登録したいIPアドレスに対処します。
ignoreip = 127.0.0.1/8 ::1 192.167.5.5 (example IP address)
IPアドレスの間には必ずスペースまたはコンマを入れてください。 IP範囲をホワイトリストに登録することもできます。
以下の例:

デフォルトの禁止時間の設定
禁止時間のデフォルトは、5回の再試行で10分のファインダーでデフォルトの10分です。これの説明は、フィルタリングを使用したFail2ban刑務所は、攻撃者が10分以内に同じ攻撃を再試行した後10分間禁止することです(時間を見つける) x 5回(再試行) 。ここでいくつかのデフォルトの禁止設定を設定できます。
ただし、刑務所に入るときは、禁止時間を変更することをお勧めします。これは、一部の禁止が他の禁止よりも自動的に長くなるためです。これには、より少ないまたはより多い再試行も含まれます。
以下の例:

Fail2banで設定された電子メール
Fail2banがレポートを送信するための電子メールアドレスを設定できます。デフォルトのaction=%(action_mw)s これにより、問題のあるIPが禁止され、レビュー用のwhoisレポートが記載された電子メールが送信されます。
ただし、action.dフォルダーには、自分自身だけでなく、攻撃者のアクティビティについてホスティングプロバイダーに電子メールを送信して何かを実行できるようにするための他の電子メールオプションがあります。一部の攻撃者はこれに親切に対応したり、サーバーのIPアドレスを使用して直接メールを受信したりしないため、メールプロキシを使用する場合にのみこれを行ってください。このアクションは、細心の注意を払って使用するか、まったく使用しないでください。
以下の例:
# Destination email address used solely for the interpolations in
# jail.{conf,local,d/*} configuration files.
destemail = [email protected]
# Sender e-mail address used solely for some actions
sender = [email protected]
例:

デフォルトでは、Fail2banは sendmail MTAを使用することに注意してください 電子メール通知用。これをメール機能に変更できます 次のようにします:
変更元:
mta = sendmail
変更先:
mail = sendmail
Fail2ban刑務所
次に、刑務所に行きます。多くの一般的なサーバーアプリケーションをカバーするコミュニティによって作成されたフィルターとアクションを使用して、事前定義されたjailを設定できます。カスタム刑務所を作成したり、さまざまな要点で外部の刑務所を見つけたりすることができます およびコミュニティのWebサイト。ただし、デフォルトのFail2banパッケージjailを設定します。
下の図のように、すべての刑務所のデフォルト設定。何も有効になっていないことに注意してください。
以下の例:
[apache-badbots]
# Ban hosts which agent identifies spammer robots crawling the web
# for email addresses. The mail outputs are buffered.
port = http,https
logpath = %(apache_access_log)s
bantime = 48h
maxretry = 1
したがって、Apache 2 HTTPサーバーがあり、不正なボットをフィルター/禁止するのと同様に、以下の例のように、enabled=trueを追加するだけです。
[apache-badbots]
# Ban hosts which agent identifies spammer robots crawling the web
# for email addresses. The mail outputs are buffered.
enabled = true
port = http,https
logpath = %(apache_access_log)s
bantime = 48h
maxretry = 1
最大再試行回数が1に等しく、禁止時間が48時間であることに注意してください。これは、この刑務所の個別の最大再試行と禁止の長さの設定であり、ガイドで前に設定した禁止乗数とともに自動的に増加します。いずれかのフィルターにこれがない場合は、例として追加できます。
[apache-noscript]
enabled = true
port = http,https
logpath = %(apache_error_log)s
以下の次の例の上に変更してください:
[apache-noscript]
enabled = true
port = http,https
logpath = %(apache_error_log)s
bantime = 1d
maxretry = 3
次に、/ etc / fail2ban / jail.localのデフォルト設定で指定されているものとは異なるアクションが必要です。これは、action.dディレクトリにある追加のアクションです。このディレクトリのさまざまなアクションは、ファイル内のアクション構成行内の指示に従い、最初に名前を .jailに変更することを忘れないで簡単に設定できます。 .conf、 次に、刑務所の設定に以下を追加します。
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
banaction = action_mw
cloudflare
bantime = 72h
maxretry = 1
ご覧のとおり、action_mwを追加したため、デフォルトのアクションに従って自動的に禁止され、whoisを含むレポートがメールで送信されます。次に、Cloudflareを使用すると、サービスのIPアドレスもブロックされます。 Cloudflareは使用前に設定する必要があることを忘れないでください。 action.dファイルcloudflare.confを読みます 。
セットアップに満足したら、次のコマンドを実行してfail2banを再起動し、新しいjailをロードします。
sudo systemctl restart fail2ban
Fail2ban-clientの使用例
これでFail2banを使用できるようになったので、いくつかの基本的な操作コマンドを知っておく必要があります。これを行うには、fail2ban-clientコマンドを使用します 。設定によっては、sudo権限が必要になる場合があります。
IPアドレスを禁止する:
sudo fail2ban-client set apache-botsearch banip <ip address>
IPアドレスの禁止を解除する:
sudo fail2ban-client set apache-botsearch unbanip <ip address>
追加の設定を検索したり、特定の設定に関するヘルプを取得したりする必要がある場合は、ヘルプメニューを表示するコマンド。
sudo fail2ban-client -h
UFW(Uncomplicated Firewall)をインストールする
デフォルトでは、DebianにはUFWは付属していません。 Fail2banでUFWを使用したいユーザーは、以下の手順に従ってください。
まず、UFWをインストールします:
sudo apt install ufw -y
次に、インストールとビルドを確認します。
sudo ufw version
出力例:
ufw 0.36
Copyright 2008-2015 Canonical Ltd.
次に、システムの起動時に有効にし、ターミナルコマンドを使用してfail2banをアクティブにします。
sudo ufw enable
出力例:
Firewall is active and enabled on system startup
次に、バンアクションにUFWを追加します 代わりに、デフォルトのIPTABLESと指定したものを使用しません:
例:
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
bantime = 72h
maxretry = 1
例:
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
banaction = ufw
bantime = 72h
maxretry = 1
ご覧のとおり、新しい行 banaction =ufw デフォルトの禁止アクションを変更するために追加されました。複数を追加できます。たとえば、UFWでBANを実行し、Cloudflareスクリプトを使用して、ファイアウォールサービスを使用してIPアドレスを禁止し、IPアドレスをAbuseIPDB Fail2ban Integrationに報告することもできます:
例:
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
banaction = ufw
cloudflare
abuseipdb
bantime = 72h
maxretry = 1
事前に作成されたアクションのリストは、/ etc / fail2ban/actions.dにあります。すべてのアクションには、基本的な設定と使用例があります。
禁止されているIPアドレスを表示するには、次のUFWコマンドを使用します。
sudo ufw status verbrose
出力例:
Anywhere REJECT <IP ADDRESS> # by Fail2Ban after 1 attempts against apache-botsearch
ご覧のとおり、UFWがIPアドレスを拒否していることがわかります。 filter apache-botsearchでのFail2banUFWアクションによって禁止された後 1回の試行の後。これは、ライブ環境で動作するFail2banの例にすぎません。予想どおり、ニーズに合わせてフィルターを変更する必要があります。
UFWを使用してIPアドレスの禁止を解除しないでください。 必ずfail2ban-clientunbanアクションを使用してください。そうしないと、UFWがFail2banに通信できないため、サイトに戻るときにIPが再禁止されます。
Fail2banの更新
Fail2banのリリースは頻繁にリリースされないため、毎週、さらに言えば毎月でも大きな変更はありません。ただし、Fail2banを更新するには、Debianシステムの更新を確認するときに同じプロセスが適用されます。
まず、aptアップデートを使用します コマンド:
sudo apt update
次に、アップデートが利用可能な場合は、 aptアップグレードを使用して、アップグレードとその他のアップグレードを開始できます。または、fail2banをアップグレードしたい場合は 以下を使用してください:
sudo apt upgrade fail2ban
Fail2banのアンインストール
Fail2banが不要になった場合、システムから削除するには、次のコマンドを使用します。
sudo apt autoremove fail2ban --purge
出力例:

タイプY、 次に、ENTERキーを押します 削除を続行します。
これにより、完全に削除するために元々Fail2banでインストールされた未使用の依存関係も削除されることに注意してください。
Fail2banログの監視
多くのよくある間違いは刑務所に入れられ、彼らがしていることをテストしたり監視したりせずに立ち去ります。ログの確認は不可欠です。これは、fail2banログがデフォルトのパス /var/log/fail2ban.logにあります。 。
適切なトラフィックを受信しているサーバーがある場合、他のサーバーで作業しているときに問題を確認して監視するための優れたコマンドは、tail-fコマンドを使用することです。 以下。
sudo tail -f /var/log/fail2ban.log
このコマンドは、ロギングに飛び込むことなく、スポットチェックに役立ちます。