重要なポイント
- failed2ban は、接続失敗が多すぎる IP アドレスを自動的にブロックする、Linux 用の自己制御セキュリティ ユーティリティです。
- Linux ファイアウォール (iptables) と統合されており、通常のファイアウォール機能はそのままにしながら、ファイアウォールにルールを追加することで禁止を強制します。
- デフォルトの構成ファイルをjail.localという新しいファイルにコピーすることでfail2banを構成でき、アップグレード後も持続するカスタマイズを行うことができます。
fail2ban
使用すると、Linux コンピューターは、接続失敗が多すぎる IP アドレスを自動的にブロックします。それは自主規制セキュリティです!使い方をご紹介します。
この の記事は、 と連携して提供されています 。
フェイル2バンとは何ですか?
Fail2ban は、サーバーへの接続を何度も試みて失敗した場合に、IP アドレスを自動的にブロックするユーティリティです。
誰かがサーバー (SSH サーバー、Web サーバー、電子メール サーバー、または Minecraft サーバー) に接続しようとすると、通常、アクセスを許可される前にユーザー名とパスワードの入力が求められます。通常の人間がアカウントの詳細を入力 (または推測) するのは、最速でも数秒ごとに 1 回以上入力することは物理的に不可能です。資格情報の入力がそれよりも速く、より頻繁に行われる場合は、問題が発生していることを示しています。誰かが別のコンピューターで ブルート フォース攻撃を 実行して侵入を試みている可能性があります。
ブルート フォース攻撃を検出するには、アカウントへのアクセスに失敗した接続リクエストを監視する必要があります。攻撃者が特定されたら、それ以上の試みを禁止する必要があります。
これを実際に達成できる唯一の方法は、プロセス全体を自動化することです。少し簡単な設定を行うだけで、
fail2ban
監視、禁止、禁止解除を
管理します。
fail2ban
、Linux ファイアウォール
iptables
と統合されます。ファイアウォールにルールを追加することで、疑わしい IP アドレスの禁止を強制します。この説明をわかりやすくするために、空のルールセットで
iptables
を使用しています。
もちろん、セキュリティを懸念している場合は、十分に設定されたルールセットを使用してファイアウォールが構成されている可能性があります。
fail2ban
独自のルールを追加および削除する
だけであり、通常のファイアウォール機能はそのまま残ります。
次のコマンドを使用して、空のルールセットを確認できます。
sudo iptables -L
フェイル2バンのインストール
この記事の調査に使用したすべてのディストリビューションでは、
fail2ban
インストールは簡単です。 Ubuntu 20.04 の場合、コマンドは次のとおりです。
sudo apt-get インストールfail2ban
Fedora 32 では、次のように入力します。
sudo dnf インストールfail2ban
Manjaro 20.0.1 では、
pacman
使用しました。
sudo pacman -Sy failed2ban
フェイル2バンの構成
fail2ban
インストールには、jail.conf というデフォルトの構成ファイルが含まれています。このファイルは、
fail2ban
がアップグレードされると上書きされるため、このファイルをカスタマイズすると変更内容が失われます。
代わりに、jail.conf ファイルをjail.local という名前のファイルにコピーします。設定の変更をjail.localに置くことで、アップグレード後も変更が維持されます。どちらのファイルも、
fail2ban
によって自動的に読み取られます。
ファイルをコピーする方法は次のとおりです。
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
次に、お気に入りのエディタでファイルを開きます。
gedit
を使用します。
sudo gedit /etc/fail2ban/jail.local
ファイル内で [DEFAULT] と [sshd] の 2 つのセクションを探します。ただし、実際のセクションを見つけるように注意してください。これらのラベルは、それらを説明するセクションの上部近くにも表示されますが、これは私たちが望んでいることではありません。
[DEFAULT] セクションは 40 行目あたりにあります。これは、多くのコメントと説明が含まれる長いセクションです。
90 行目あたりまで下にスクロールすると、知っておく必要がある次の 4 つの設定が見つかります。
-
ignoreip:
決して禁止されない IP アドレスのホワイトリスト。彼らは無期限の刑務所からの脱出カードを持っています。
localhost IP アドレス
(
127.0.0.1) は、それに相当する IPv6 (::1) とともにリストにデフォルトで含まれています。決して禁止すべきではないことが分かっている IP アドレスが他にもある場合は、それらをこのリストに追加し、それぞれの間にスペースを入れてください。 - bantime: IP アドレスが禁止される期間 (「m」は分を表します)。 「m」または「h」(時間)を含まない値を入力すると、秒として扱われます。値 -1 は、IP アドレスを永久に禁止します。自分自身を永久にロックアウトしないように十分注意してください。
- findtime: 接続試行の失敗が多すぎると、IP アドレスが禁止されるまでの時間。
- maxretry: 「失敗した試行が多すぎます」の値。
同じ IP アドレスからの接続が
findtime
期間内に
maxretry
接続試行に失敗した場合、それらの接続は
bantime
の間禁止されます。唯一の例外は、
ignoreip
リスト内の IP アドレスです。
fail2ban
、IP アドレスを一定期間刑務所に置きます。
fail2ban
多くの異なる Jail をサポートしており、それぞれが単一の接続タイプに適用される設定を保持します。これにより、さまざまな接続タイプに対して異なる設定を行うことができます。または、
fail2ban
選択した接続タイプのセットのみを監視することもできます。
[DEFAULT] セクション名から推測できたかもしれませんが、ここで説明した設定はデフォルトです。次に、SSH ジェイルの設定を見てみましょう。
刑務所の構成
Jail を使用すると、
fail2ban's
監視の内外に接続タイプを移動できます。デフォルト設定がjailに適用したい設定と一致しない場合は、
bantime
、
findtime
、および
maxretry
に特定の値を設定できます。
280 行目あたりまで下にスクロールすると、[sshd] セクションが表示されます。
ここで、SSH 接続の刑務所の値を設定できます。この刑務所を監視と禁止に含めるには、次の行を入力する必要があります。
有効 = true
次の行も入力します。
最大リトライ = 3
デフォルト設定は 5 ですが、SSH 接続にはさらに注意が必要です。値を 3 に減らし、ファイルを保存して閉じました。
このjailを
fail2ban's
監視に追加し、デフォルト設定の1つをオーバーライドしました。ジェイルでは、デフォルト設定とジェイル固有の設定を組み合わせて使用できます。
フェイル2バンの有効化
ここまでで、
fail2ban
インストールして構成しました。次に、自動開始サービスとして実行できるようにする必要があります。次に、それが期待どおりに動作することを確認するためにテストする必要があります。
サービスとして
fail2ban
を有効にするには、
systemctl
コマンドを
使用します。
sudo systemctlenablefail2ban
サービスを開始するためにも使用します。
sudo systemctl start failed2ban
systemctl
を使用してサービスのステータスを確認することもできます。
sudo systemctlステータスfail2ban.service
すべて順調に見えます。ゴーサインが出たので、すべて順調です。
では、
fail2ban
同意するかどうかを見てみましょう。
sudofail2ban-クライアントステータス
これは私たちが設定した内容を反映しています。 [sshd] という名前の単一の刑務所を有効にしました。前のコマンドに刑務所の名前を含めると、それをさらに詳しく調べることができます。
sudofail2ban-クライアントステータスsshd
これには、失敗と禁止された IP アドレスの数がリストされます。もちろん、現時点ではすべての統計はゼロです。
私たちの刑務所をテストする
別のコンピュータで、テスト マシンへの SSH 接続リクエストを作成し、パスワードを意図的に間違えます。接続を試みるたびに、正しいパスワードを取得するために 3 回の試行が行われます。
maxretry
値は、パスワード試行が 3 回失敗した場合ではなく、接続試行が 3 回失敗した後にトリガーされます。したがって、1 回目の接続試行に失敗するには、間違ったパスワードを 3 回入力する必要があります。
次に、もう一度接続を試み、パスワードをさらに 3 回間違えて入力します。 3 回目の接続リクエストで最初に間違ったパスワードを試行すると、
fail2ban.
3 回目の接続要求で最初のパスワードが間違った後、リモート マシンから応答がありません。何も説明がありません。冷遇されるだけです。
コマンド プロンプトに戻るには、Ctrl+C を押す必要があります。もう一度試してみると、別の応答が返されます。
ssh dave@ubuntu20-04.local
以前は、エラー メッセージは「許可が拒否されました」でした。今度は接続を完全に拒否されました。私たちはペルソナ・ノン・グラータです。うちは出入り禁止になってしまった。
[sshd] 刑務所の詳細をもう一度見てみましょう。
sudofail2ban-クライアントステータスsshd
障害が 3 件あり、1 つの IP アドレス (192.168.4.25) が禁止されました。
前述したように、
fail2ban
ファイアウォール ルールセットにルールを追加することで禁止を強制します。ルールセットをもう一度見てみましょう (以前は空でした)。
sudo iptables -L
SSH トラフィックを
f2b-sshd
チェーンに送信するルールが INPUT ポリシーに追加されました。
f2b-sshd
チェーンのルールは、192.168.4.25 からの SSH 接続を拒否します。
bantime
のデフォルト設定は変更していないため、10 分後にはその IP アドレスの禁止が解除され、新たな接続リクエストを行うことができるようになります。
禁止期間を長く設定した (数時間など) ものの、IP アドレスがすぐに別の接続リクエストを行えるようにしたい場合は、早期に仮釈放することができます。
これを行うには次のように入力します。
sudo failed2ban-client set sshd unbanip 192.168.5.25
リモート コンピューターで、別の SSH 接続要求を行って正しいパスワードを入力すると、接続が許可されます。
ssh dave@ubuntu20-04.local
シンプルかつ効果的
通常はシンプルであるほど優れており、
fail2ban
難しい問題に対する洗練されたソリューションです。構成はほとんど必要なく、ユーザーまたはコンピューターに操作上のオーバーヘッドがほとんどかかりません。





