Fail2ban は、悪意のあるログインやブルートフォース攻撃からサーバーを保護するためのシステムデーモンです。 Fail2banは、Pythonで記述されたオープンソースのIPS(侵入防止ソフトウェア)フレームワークであり、非常に構成可能です。 SystemDジャーナルとログファイルを監視し、失敗した認証の試行を探すデーモンサービスとして機能します。失敗した認証が最大X数に達すると、fail2banはファイアウォールソフトウェアを使用してIPアドレスを自動的にブロックします。
VPS(仮想プライベートサーバー)または専用サーバーの所有者である場合は、すべてのサーバーにfail2banをインストールすることを検討する必要があります。 SSHやFTPなどの基本的なサービスを悪意のあるブルートフォース攻撃から保護するのに役立ちます。また、fail2banは非常に便利で、構成が簡単で、柔軟性があります。
このガイドでは、Rocky Linuxにfail2banをインストールする方法、firewalldを使用してfail2banを構成する方法、ブルートフォース攻撃からSSHサービスを保護する方法を学習します。
- sudoroot権限を持つユーザー。
Firewalldは、RockyLinuxのデフォルトのファイアウォールソフトウェアです。 Rocky Linuxのインストール中に自動的にインストールされますが、デフォルトではアクティブ化されていません。
1.次のコマンドを実行して、firewalldパッケージがシステムで使用可能であることを確認します。
sudo dnf info firewalld
以下のような出力が得られます。
スクリーンショットに示されているように、firewalldパッケージは「インストール済みパッケージ」としてリストされています。 "。
2.次に、次のコマンドを使用してfirewalldサービスを開始します。
sudo systemctl start firewalld
3.ここで、firewalldサービスがシステムの起動ごとに自動的に実行されるようにします。
sudo systemctl enable firewalld
そして、次の出力が得られます。
Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.
4.その後、以下のコマンドを使用してfirewalldサービスのステータスを確認します。
sudo systemctl status firewalld
そして、次の出力が得られます。
ご覧のとおり、firewalldサービスはアクティブで実行中です。
5.オプションで、firewall-cmdコマンドを使用してfirewalldサービスのステータスを確認できます。 Firewall-cmdは、firewalldと対話するためのメインインターフェイスです。 Firewall-cmdコマンドは、firewalldルールを管理するためのユーティリティであり、ルールの追加、ルールの削除、ステータスの確認などを行うことができます。
以下のfirewall-cmdコマンドを実行して、firewalldサービスのステータスを確認します。
sudo firewall-cmd --state
Firewalldがアクティブな場合、「実行中」として出力が表示されます "。それ以外の場合は、「実行されていません」という出力が表示されます。 "。
次に、次のfirewall-cmdコマンドを実行して、現在適用されているすべてのファイアウォールルールを確認します。
sudo firewall-cmd --list-all
以下のような出力が得られます。
RockyLinuxへのEPELリポジトリの追加
fail2banをインストールする前に、EPEL( EnterpriseLinux用の追加パッケージ)を追加する必要があります )システムへのリポジトリ。
1.次のコマンドを実行して、EPELリポジトリをインストールします。
sudo dnf install epel-release
"y"と入力します インストールして続行します。
2.インストールが完了したら、次のコマンドを使用して、システムで使用可能なすべてのリポジトリを確認します。
sudo dnf repolist
これで、次のような出力が表示されます。
ご覧のとおり、EPELリポジトリは利用可能であり、システム上でアクティブです。それでは、fail2banのインストールを続けましょう。
RockyLinuxへのFail2banのインストール
1. fail2banをインストールするには、以下のコマンドを実行します。
sudo dnf install fail2ban fail2ban-firewalld
"y"と入力します インストールを確認して「Enter」を押します 「続行します。
コマンドラインと同様に、追加パッケージ「fail2ban-firewalld」もインストールします。これにより、fail2banがfirewalldルールを操作できるようになります。
2.インストールが完了したら、以下のコマンドを使用してfail2banサービスを開始します。
sudo systemctl start fail2ban
3.その後、次のコマンドを実行して、システムの起動ごとにfail2banサービスが自動的に開始されるようにします。
sudo systemctl enable fail2ban
4.次に、次のコマンドを実行して、fail2banステータスサービスを確認します。
sudo systemctl status fail2ban
そして、fail2banサービスがアクティブになり、以下のデフォルト構成で実行されます。
次に、fail2banを構成し、fail2banがfirewalldと連携できるようにします。
1.デフォルトのfail2ban構成を"jail.conf"からコピーします 「jail.local "次のコマンドを使用します。
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
2.次に、以下のnanoeditorコマンドを使用してfail2ban構成を編集します。
sudo nano /etc/fail2ban/jail.local
[ [DEFAULT] "セクション、以下の構成を確認してください。
[DEFAULT]
....
bantime = 1h
findtime = 1h
maxretry = 5
知っておくべきオプション。
- [DEFAULT] =このセクションのすべての構成は、グローバルなデフォルト構成として適用されます。
- bantime=回数xIPアドレスが禁止されます。日、分、または時間としてのフォーマットをサポートします。この例では、ホストまたはIPアドレスは、最大認証の試行が失敗した後、「1時間」禁止されます。
- findtime =最後の「findtime」中に最大認証に失敗した場合、IPアドレスは禁止されます。
- maxretry =IPアドレスにX個のmaxrtryログイン失敗がある場合、IPは禁止されます。この例では、5回の認証が失敗した後、IPアドレスは禁止されます。
必要に応じてbantime、findtime、maxretyを調整し、「Ctrl + x」を押して「y」と入力し、「Enter」を押して構成を保存します。
3.デフォルトのfail2ban構成は、ブロッキングにiptablesを使用しています。 fail2banがfirewalldをブロックに使用できるようにするには、構成「 00-firewalld.conf」をコピーします "から"00-firewalld.local 「以下のコマンドを使用してください。
sudo mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
この構成"00-firewalld.conf "は"fail2ban-firewalldの一部です 「パッケージ。
4.次に、fail2banサービスを再起動して、以下のコマンドを使用して新しい構成を適用します。
sudo systemctl restart fail2ban
デフォルトでは、保護するすべてのサービスに対してjail構成を有効にするまで、fail2banはIPアドレスをブロックしません。また、jail構成は、「jail.local」のデフォルト構成をオーバーライドします。 jail構成は、「/ etc / fail2ban/jail.d」ディレクトリで利用できます。
1.次のコマンドを使用して、サービスSSHの新しいjail構成を作成します。
sudo nano /etc/fail2ban/jail.d/sshd.local
次の構成を貼り付けます。
[sshd]
enabled = true
# Override the default global configuration
# for specific jail sshd
bantime = 1d
maxretry = 3
ご覧のとおり、構成は「禁止時間」を上書きします "と"maxretry "刑務所のオプション"sshd "。
「Ctrl+x」を押します 「Y」と入力します 「」を押してから「Enter」を押します "新しい刑務所の構成を保存します。
2.新しい構成を適用するには、次のコマンドを使用してfail2banサービスを再起動します。
sudo systemctl restart fail2ban
3.その後、コマンドfail2ban-clientを使用してfail2banステータスを確認します。 fail2ban-client fail2banコントロールサーバーを管理するためのコマンドラインです。
次に、以下のfail2ban-clientコマンドを実行して、jailの構成を確認します。
sudo fail2ban-client status
そして、以下と同様の出力が得られます。
fail2banは、1つのjailアクティブ名「 sshd」で実行されています "。
特定の刑務所の構成を確認するには、「 get」を使用できます "刑務所名の後に続くオプション、次にチェックしたいオプション。
以下のコマンドを使用して、jail「sshd」の「maxretry」構成を確認してください。
sudo fail2ban-client get sshd maxretry
そして、出力は「 3」であることがわかります。 "、構成"sshd.local"の値と一致します。
次に、以下のコマンドを使用して、jail"sshd"のデフォルトの禁止アクションを確認します。
sudo fail2ban-client get sshd actions
そして、出力は「 firewallcmd-rich-rules」であることがわかります。 "、"00-firewalld.local"のfail2banグローバル設定と一致します。
Fail2banとFirewalldのインストールを確認する
fail2banのインストールを確認するには、jailの完全なステータス(このガイドはsshd jail)を確認し、fail2banによって生成されたfirewalldルールを確認します。
テスト目的で、以下は間違ったパスワードでSSHサーバーに接続しようとした後のスクリーンショットです。マックスレトリーに到達した後「3 「何度も、接続はサーバーによってドロップされます。
1.次のコマンドを実行して、特定のjail(この例ではsshd jail)のステータスを確認します。
sudo fail2ban-client status sshd
そして、次のような同様の出力が得られます。
ご覧のとおり、sshdjailには1つの禁止IPアドレスがあります。ライブVPSまたは専用サーバーを使用している場合は、はるかに多くのIPアドレスが表示されます。
2. fail2banは、IPアドレスをブロックするためのfirewalldリッチルールを生成します。 Firewalldのリッチルールは、firewalldの高度なフィルタリング機能です。
次のコマンドを実行して、fail2banによって生成されたfirewalldリッチルールを表示します。
firewall-cmd --list-rich-rules
そして、以下のような出力が得られます。
fail2banからIPアドレスの禁止を解除するには、fail2ban-clientコマンドを使用できます。
1.以下のfail2ban-clientコマンドを実行して、IPアドレス「 192.168.1.10」の禁止を解除します。 "。
sudo fail2ban-client unban 192.168.1.10
また、IPアドレスはfail2banの禁止リストから削除されます。
次に、次のコマンドを実行して、IPアドレスがfail2banデータベース(この例ではjail sshd)から削除されていることを確認します。
sudo fail2ban-client status sshd
そして、IPアドレスが「禁止されたIPリスト」から削除されます。 "セクション。
おめでとうございます!これで、fail2banIPSフレームワークがRockyLinux8.4に正常にインストールされました。次のステップでは、別のjail構成を調べて、FTPサーバー、phpMyAdmin、WordPressなどの他のサービスを保護できます。