Fail2Ban で SSH を保護する方法: 初心者ガイド
Fail2Ban を使用して SSH を保護し、不正なアクセスやブルート フォース攻撃からサーバーを保護するための初心者向けガイドを詳しく見てください。
比喩から始めます。要塞を想像してみてください。高い壁と強固な門は望ましくない訪問者を締め出すために建てられていますが、壁をよじ登ろうとしたり、門を押し切ろうとする者が常に存在します。
同様に、私たちのデジタル要塞、特にサーバーは持続的な脅威に直面しています。そのようなゲートの 1 つは、安全なリモート アクセスを可能にするプロトコルである Secure Shell (SSH) です。したがって、ゲートに警備員や監視システムが必要なように、SSH にも潜在的な侵入者に対する保護手段が必要です。
Fail2Ban を導入してください。これはサーバーの警戒監視です。これは、不正アクセスの試み、特にブルート フォースに対する最も効果的なシールドの 1 つです。
Fail2Ban とは何ですか?
Fail2Ban は、ブルート フォース サーバー攻撃などの自動化された悪意のあるアクティビティから保護するオープンソース ソフトウェア ツールです。
最も価値のあることの 1 つは、積極的に行動することです。言い換えれば、Fail2Ban は攻撃を待つのではなく、潜在的な脅威をリアルタイムで特定してブロックするアプローチを提供します。
Fail2Ban の美しさは、そのシンプルさと適応性にあります。 SSH を保護するためによく使用されますが、その機能はこのプロトコルに限定されません。 Fail2Ban は、任意のサービスのログ ファイルを監視するように構成でき、FTP、SMTP、Web サーバーなどのサービスに多用途のソリューションを提供します。
さらに、リソースが少ないため、サーバーのパフォーマンスに負担がかかりません。これは、大量のトランザクションや対話を処理するサーバーにとって重要な考慮事項です。
Fail2Ban の仕組み
まず、ブルートフォースとは一体何なのかを簡単に説明しましょう。これは、攻撃者が正しいパスワードまたは暗号化キーが見つかるまで、考えられるすべての組み合わせを系統的に試し、システムまたはサービスへの不正アクセスを試みる一種のサイバー攻撃です。
この点に関して、Fail2Ban は、そのような攻撃を示す特定のパターンがないかサーバー ログを監視します。たとえば、短期間に繰り返されるログイン試行の失敗などです。
Fail2Ban は、「フィルター」と呼ばれる事前定義またはカスタム ルールに基づいて、攻撃を示唆するパターンを特定し、事前定義されたアクションを自動的にトリガーします。最も一般的な方法は、攻撃者の IP アドレスを一時的に禁止し、ファイアウォール ルールを強制し、さらなる悪意のある試みを防ぐことです。
Fail2Ban の重要な機能は、フィルターとアクションを組み合わせたサーバー サービスの特定の監視ポリシーである「jails」の概念です。サービスごとに異なるjailを用意できます(たとえば、SSH用に1つ、FTP用に1つなど)。
各jailは、監視するログファイル、検索するパターン、およびそれらのパターンが検出されたときに実行するアクションを指定します。
一定期間禁止された後、IP アドレスの禁止が自動的に解除され、パスワードを忘れたなどの理由で一時的にブロックされた可能性がある正規ユーザーが再試行できるようになります。
Fail2Ban のインストール
次に、Fail2Ban をインストールしましょう。ご覧のとおり、これは非常に簡単です。使用している Linux ディストリビューションに適したコマンドを使用してください。
Debian/Ubuntu
sudo apt install fail2ban
サービスはインストール後に自動的にアクティブ化されるため、ここで追加のアクションは必要ありません。
RHEL/Rocky Linux/Alma Linux/Fedora
Fail2Ban は EPEL リポジトリに存在するため、まだシステムに追加していない場合は、まず追加する必要があります。
sudo dnf install epel-release
次に、Fail2Ban をインストールし、起動時にサービスが開始できるようにします。
sudo dnf install fail2ban
sudo systemctl enable fail2ban
openSUSE
sudo zypper in fail2ban
SSH 用の Fail2Ban の構成
インストールが完了すると、メインの設定ファイルは「/etc/fail2ban/jail.conf」になります。ただし、ベスト プラクティスでは、これを直接変更することはお勧めしません。代わりに、拡張子「.local」を付けて新しいファイルを作成してコピーします。 " なぜ?これは簡単です。これにより、アップグレード時のマージの問題が回避されます。それでは、やってみましょう。
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Fail2Ban サービスが再起動されると、最初に「jail.conf 」ファイルが読み取られ、次に「jail.local 」ファイルが読み取られ、後の設定が以前の設定をオーバーライドします。
さて、楽しい部分、Fail2Ban の構成に移りましょう。好みの端末のテキスト エディタで「jail.local」ファイルを開きます。
sudo nano /etc/fail2ban/jail.local
以下のような「[sshd] 」部分が見つかるまで下にスクロールします。
「[sshd]」部分の既存の内容を次のように置き換えます。
[sshd]
enabled = true
port = ssh
backend = systemd
maxretry = 3
findtime = 300
bantime = 3600
ignoreip = 127.0.0.1
最終バージョンは以下のようになります。これらのオプションの意味を知りたいですか?心配する必要はありません。それぞれについては後ほど詳しく説明します。
- 有効 – 刑務所がアクティブかどうかを決定します。
- ポート – 監視するポートを指定します。任意のポート番号またはサービス名 (例: 「ssh」、「22」、「2200」など) を受け入れます。
- バックエンド – ファイルの変更を取得するために使用されるバックエンドを指定します。最新の Linux システムはすべて systemd のログ サービスに依存しているため、これをバックエンドとして指定します。
- maxretry – IP からの試行が禁止されるまでに失敗した回数。
- findtime – 「maxretry」のログイン失敗が禁止につながる時間枠 (秒単位)。 300 秒、つまり 5 分を指定しました。
- 禁止時間 – IP が禁止される期間 (秒単位)。この例では 3600 秒を設定しました。これは、次の 1 時間以内に、この IP アドレスからの後続のリクエスト (SSH ポートへのリクエストだけでなく) がブロックされることを意味します。
- ignoreip – 無視する必要がある IP アドレスをホワイトリストに登録できます。これにより、指定された IP アドレスは、「maxretry」で指定された試行失敗回数を超えたとしてもブロックされなくなります。
それでおしまい。ファイルを保存して終了し、Fail2Ban サービスを再起動します。
sudo systemctl restart fail2ban
次に、サービスに問題がないことを確認します。
sudo systemctl status fail2ban
テストとモニタリング
Fail2Ban をインストールして構成したばかりのサーバーに、別のコンピューターから SSH 経由で数回ログインしてみてください。 3 回目の試行が失敗すると、アクセスはブロックされるはずです。
おそらく、内部で何が起こっているかを監視する方法をすでに疑問に思っているでしょう。良いニュースは、Fail2Ban にはこの目的のための優れた統合ツールがあることです。現在ブロックされている IP アドレスを確認するには、次のコマンドを実行します。
sudo fail2ban-client status sshd
さらに進んで iptables ルールを確認すると、Fail2Ban が問題の IP アドレスを挿入したチェーン (「f2b-sshd」) を作成していることがわかります。 「禁止時間」オプションで指定されたタイムアウト期間が経過すると、それらはそこから自動的に削除されます。
sudo iptables -L -n
すべてのjailのすべてのIPアドレスの禁止を手動で解除するには、次のコマンドを実行します。
sudo fail2ban-client unban --all
別のアドレスの場合のみ、コマンドは次のようになります。
sudo fail2ban-client unban <ip-address>
もちろん、fail2ban-client
コマンドには他にも多くのオプションがあり、大きな可能性と柔軟性を提供します。詳しく知りたい場合は、ここをご覧ください。
留意すべき重要事項
Fail2Ban は優れたソフトウェアですが、SSH サーバーが公開キー認証のみに構成されている場合は、パスワードでログインできないため、それほど有益ではありません。 詳細については、こちらをご覧ください。
さらに、VPN がサーバーへのアクセスに提供するセキュリティに代わるものではないことに注意してください。したがって、どうしても必要な場合を除き、サービスをインターネットに公開することは避けてください。
結論
サーバーのセキュリティを確保することは常に最優先事項である必要があります。 SSH は多くの攻撃者にとって共通の侵入ポイントであるため、特に注意が必要です。
このガイドでは、繰り返される悪意のあるログイン試行から SSH を監視し保護するために、Fail2Ban をインストールして構成する簡単な手順を説明しました。
このツールを設定すると、潜在的な侵入を防ぐ重要なセキュリティ層が追加されます。したがって、安全を確保し、常に最新情報を入手し、サーバーの防御戦略に常に積極的に取り組んでください。
お時間をいただきありがとうございました!最後に、Fail2Ban GitHub ページで追加のヘルプや貴重な情報を確認することをお勧めします。