技術ノート Linux Fail2ban を使用して Linux サーバーを保護する方法

Fail2ban を使用して Linux サーバーを保護する方法

重要なポイント

  • 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 

Fail2ban を使用して Linux サーバーを保護する方法

フェイル2バンのインストール

この記事の調査に使用したすべてのディストリビューションでは、 fail2ban インストールは簡単です。 Ubuntu 20.04 の場合、コマンドは次のとおりです。

 sudo apt-get インストールfail2ban

Fedora 32 では、次のように入力します。

 sudo dnf インストールfail2ban

Manjaro 20.0.1 では、 pacman 使用しました。

 sudo pacman -Sy failed2ban 

Fail2ban を使用して Linux サーバーを保護する方法

フェイル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 ジェイルの設定を見てみましょう。

Fail2ban を使用して Linux サーバーを保護する方法

刑務所の構成

Jail を使用すると、 fail2ban's 監視の内外に接続タイプを移動できます。デフォルト設定がjailに適用したい設定と一致しない場合は、 bantime findtime 、および maxretry に特定の値を設定できます。

280 行目あたりまで下にスクロールすると、[sshd] セクションが表示されます。

ここで、SSH 接続の刑務所の値を設定できます。この刑務所を監視と禁止に含めるには、次の行を入力する必要があります。

有効 = true

次の行も入力します。

最大リトライ = 3

デフォルト設定は 5 ですが、SSH 接続にはさらに注意が必要です。値を 3 に減らし、ファイルを保存して閉じました。

このjailを fail2ban's 監視に追加し、デフォルト設定の1つをオーバーライドしました。ジェイルでは、デフォルト設定とジェイル固有の設定を組み合わせて使用​​できます。

Fail2ban を使用して Linux サーバーを保護する方法

フェイル2バンの有効化

ここまでで、 fail2ban インストールして構成しました。次に、自動開始サービスとして実行できるようにする必要があります。次に、それが期待どおりに動作することを確認するためにテストする必要があります。

サービスとして fail2ban を有効にするには、 systemctl コマンドを 使用します。

 sudo systemctlenablefail2ban

サービスを開始するためにも使用します。

 sudo systemctl start failed2ban

systemctl を使用してサービスのステータスを確認することもできます。

 sudo systemctlステータスfail2ban.service

すべて順調に見えます。ゴーサインが出たので、すべて順調です。

では、 fail2ban 同意するかどうかを見てみましょう。

 sudofail2ban-クライアントステータス

これは私たちが設定した内容を反映しています。 [sshd] という名前の単一の刑務所を有効にしました。前のコマンドに刑務所の名前を含めると、それをさらに詳しく調べることができます。

 sudofail2ban-クライアントステータスsshd

これには、失敗と禁止された IP アドレスの数がリストされます。もちろん、現時点ではすべての統計はゼロです。

Fail2ban を使用して Linux サーバーを保護する方法

私たちの刑務所をテストする

別のコンピュータで、テスト マシンへの 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 を使用して Linux サーバーを保護する方法

シンプルかつ効果的

通常はシンプルであるほど優れており、 fail2ban 難しい問題に対する洗練されたソリューションです。構成はほとんど必要なく、ユーザーまたはコンピューターに操作上のオーバーヘッドがほとんどかかりません。

Linuxコマンド

ファイル

tar pv cat tac chmod grep diff sed ar man pushd popd fsck testdisk seq fd pandoc cd $PATH awk join jq fold uniq journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · look · strings · type · rename · zip · unzip · mount · umount · install · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · パッチ · 変換 · rclone · シュレッド · srm · scp · gzip · chattr · カット · 検索 · umask · wc · tr

プロセス

エイリアス · スクリーン · トップ · ナイス · renice · 進行状況 · strace · systemd · tmux · chsh · 履歴 · at · バッチ · フリー · what · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · タイムアウト · ウォール · はい · キル · スリープ · sudo · su · タイム · groupadd · usermod · グループ · lshw · シャットダウン · 再起動 · 停止 · パワーオフ · パスワード · lscpu · crontab · 日付 · bg · fg · pidof · nohup · pmap

ネットワーキング

netstat ping ip ss whois fail2ban bmon dig finger nmap ftp curl wget who whoami w iptables ssh-keygen ufw arping firewalld

「 Fail2ban を使用して Linux サーバーを保護する方法」に関するベスト動画選定!

Windows11にTPMとCPUがサポートされていないPCをWin10から11へ無理やりアップグレード! Microsoftのサイトに公開されている方法。 (この方法ではTPM1.2は必要です)
フェイル2バン | Ubuntu 20.04 サーバーをブルート フォース攻撃から保護する