Rocky Linux および AlmaLinux に Fail2ban をインストールする方法
Python で書かれた Fail2ban は、サーバーを保護する無料のオープンソースの侵入防御システム (IPS) です。ブルートフォース攻撃に対する。
間違ったパスワードを指定した回数試行すると、指定した期間、またはシステム管理者がブロックを解除するまで、クライアントの IP アドレスはシステムへのアクセスを禁止されます。このようにして、システムは単一ホストからの繰り返しのブルートフォース攻撃から保護されます。
Fail2ban は高度に構成可能で、SSH、vsftpd、Apache などの無数のサービスを保護するように設定できます。 、 そしてウェブミンです。
このガイドでは、Rocky Linux と AlmaLinux に Fail2ban をインストールして設定する方法に焦点を当てます。
ステップ 1: Firewalld が実行されていることを確認する
デフォルトでは、Rocky には Firewalld が実行されています。ただし、システムでこれが当てはまらない場合は、次のコマンドを実行してファイアウォールを起動します。
sudo systemctl start firewalld
次に、起動時に起動できるようにします。
sudo systemctl enable firewalld
次に、Firewalld のステータスを確認します。
sudo systemctl status firewalld
さらに、次のコマンドを使用して、現在適用されているすべての Firewalld ルールを確認できます。
sudo firewall-cmd --list-all
ステップ 2: Rocky Linux に EPEL をインストールする
fail2ban およびその他の必須パッケージのインストールの要件として、RHEL ベースのディストリビューション用の追加の高品質パッケージを提供するEPEL リポジトリをインストールする必要があります。
sudo dnf install epel-release
ステップ 3: Rocky Linux に Fail2ban をインストールする
EPEL がインストールされたら、fail2ban と fail2ban-firewalld パッケージをインストールします。
sudo dnf install fail2ban fail2ban-firewalld
これにより、fail2ban サーバーと firewalld コンポーネントが他の依存関係とともにインストールされます。
failed2ban のインストールが完了したら、fail2ban サービスを開始します。
sudo systemctl start fail2ban
そして、起動時に起動できるようにします。
sudo systemctl enable fail2ban
次のコマンドを実行して、fail2ban サービスのステータスを確認できます。
sudo systemctl status fail2ban
出力は、Fail2ban が期待どおりに実行されていることを確認します。
ステップ 4: Rocky Linux での Fail2ban の構成
次に、fail2ban が意図したとおりに動作するように構成する必要があります。理想的には、メイン設定ファイル /etc/fail2ban/jail.conf を編集します。ただし、これはお勧めできません。回避策として、jail.conf 設定ファイルの内容をjail.local ファイルにコピーします。
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
次に、好みのエディタを使用してjail.local ファイルを開きます。
sudo vim /etc/fail2ban/jail.local
[デフォルト] セクションで、表示どおりに次の設定が行われていることを確認します。
bantime = 1h
findtime = 1h
maxretry = 5
属性を定義しましょう。
- bantime ディレクティブは、認証試行の失敗後にクライアントが禁止される期間を指定します。
- findtime ディレクティブは、誤ったパスワードの試行が繰り返されることを考慮する際に、fail2ban が考慮する期間または期間です。
- maxretry パラメータは、リモート クライアントがサーバーへのアクセスをブロックされるまでに、間違ったパスワードを試行する最大回数です。ここでは、クライアントは 5 回認証に失敗するとロックアウトされます。
デフォルトでは、fail2ban は iptables で動作します。ただし、これはファイアウォールが推奨されるため非推奨になりました。 iptables ではなく firewalld と並行して動作するように、fail2ban を構成する必要があります。
したがって、次のコマンドを使用して実行します。
sudo mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
変更を適用するには、fail2ban を再起動します。
sudo systemctl restart fail2ban
ステップ 5: Fail2ban を使用して SSH サービスを保護する
デフォルトでは、fail2ban は、セキュリティを確保したいサービスの Jail 構成を有効にするまで、リモート ホストをブロックしません。 jail 設定は /etc/fail2ban/jail.d パスで指定され、jail.local ファイルで指定された設定をオーバーライドします。
この例では、SSH サービスを保護するために、jail 構成ファイルを作成します。したがって、SSH Jail ファイルを作成します。
sudo vim /etc/fail2ban/jail.d/sshd.local
次に、次の行を貼り付けます。
[sshd]
enabled = true
Override the default global configuration
for specific jail sshd
bantime = 1d
maxretry = 3
上記の設定では、SSH ログイン試行が 3 回失敗すると、リモート ホストは 1 日間システムへのアクセスが禁止されます。変更を保存し、fail2ban サービスを再起動します。
sudo systemctl restart fail2ban
次に、fail2ban-client コマンドライン ユーティリティを使用して、jail 構成ステータスを確認します。
sudo fail2ban-client status
出力から、「sshd」というサービス用に 1 つのjail が設定されていることがわかります。
さらに、get オプションを使用すると、sshdjail のmaxretry値を確認できます。
sudo fail2ban-client get sshd maxretry
3
出力される値 3 は、sshd.local ファイルで指定した値と一致する必要があります。
ステップ 6: Fail2ban 構成のテスト
failed2ban を設定し、SSH サービスの Jail 構成ファイルを作成した後、テスト実行を実行し、各パスワード プロンプトに間違ったパスワードを指定して 3 回のログイン失敗をシミュレートします。
そこで、リモート Linux システムにアクセスし、間違ったパスワードを使用してログインを試みます。試行が 3 回失敗すると、接続は切断され、それ以降の再接続の試行は禁止期間が経過するまでブロックされます。
ブロックされたクライアント システムに関する洞察を収集するには、Jail ステータスを確認します。
sudo fail2ban-client status sshd
クライアントの禁止を解除するか、jail からクライアントを削除するには、次のコマンドを実行します。
sudo fail2ban-client unban 192.168.2.102
もう一度、Jail ステータスをチェックして、クライアントが禁止 IP リストに含まれていないことを確認します。
sudo fail2ban-client status sshd
これまで見てきたように、Fail2ban は Linux システムに侵入しようとする侵入者を撃退するのに非常に便利なツールです。 Firewalld と連携して、ログイン試行が一定回数失敗した後、指定された期間クライアント システムを禁止します。そうすることで、Linux サーバーに追加の保護層が提供されます。