すべてのIT運用チームのリストのトップは、サーバーが許可されていないユーザーや悪意のあるスクリプトから保護されていることを確認しています。攻撃や侵害を防ぐために適用できるソリューションは多数あります。その中には、Fail2banソフトウェアツールの実装があります。
Fail2banは、SSHやVSFTPDなどのさまざまなサービスを標的とするブルートフォース攻撃を軽減するオープンソースの侵入検知手段です。 SSHを含む一連のフィルターが付属しており、ファイアウォールルールを更新し、不正なSSHログイン試行をブロックするようにカスタマイズできます。
fail2banユーティリティは、サーバーのログファイルを監視して侵入の試みがないかどうかを監視し、指定された期間に事前定義された回数の試みが失敗した後、ユーザーのIPアドレスをブロックします。ユーザーのIPは、/ etc / fail2ban / jail.conf構成ファイルで設定、有効化、または無効化できる「jail」に配置されます。このようにして、Linuxサーバーを不正アクセスから、より具体的にはボットネットや悪意のあるスクリプトから保護するのに役立ちます。
刑務所とは何ですか?刑務所は次の重要な要素で構成されています:
- 分析するログファイル。
- ログファイルに適用されるフィルター。
- フィルターが一致したときに実行するアクション
- 一致のタイプを詳しく説明するための追加のパラメーター。たとえば、maxtry(最大試行回数)やbantime(禁止時間)などです。
このチュートリアルでは、RHEL 8 /CentOS8でのFail2banのインストールと構成について説明します。
ステップ1)EPELリポジトリをインストールする
まず、サーバーにログインし、次のようにEPEL(Extra Package for Enterprise Linux)パッケージをインストールします。
CentOS8の場合
$ sudo dnf install -y epel-release
RHEL8の場合
$ sudo dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y
ステップ2)Fail2banをインストールする
Fail2banをインストールするには、以下の簡単なコマンドを実行します。
$ sudo dnf install -y fail2ban
ステップ3)Fail2banの構成
設計上、fail2banはログファイルを解析し、フィルターで指定されているfailregexとの照合を試みます。フィルタは、特定のサービスで失敗した認証の試行を検出します。たとえば、正規表現(regex)を使用したSSHログインの試行です。ログエントリで「maxtry」回の最大数に達すると、アクションがトリガーされます。
デフォルトでは、これは認証の試行が3回失敗した後に発生し、ユーザーは10分間禁止または「刑務所」に入れられます。これらのパラメーターは、グローバル構成ファイルである/etc/fail2ban/jail.confファイルで簡単に構成できます。
重要な設定ファイルはすべて/etc/fail2ban/ディレクトリにあります。
フィルタは/etc/fail2ban/filter.dディレクトリに保存されます。 SSH、Webmin、postfixなどのさまざまなサービス用のフィルターが数十あります。
/etc/fail2ban/jail.confがメインの設定ファイルです。ただし、このファイルを直接変更することはお勧めしません。ファイルの内容が説明されているため、後のディストリビューションの更新時に構成が上書きまたは改善される可能性があるためです。
回避策は、/ etc / fail2ban / jail.dディレクトリにjail.localファイルを作成し、保護したいサービスのカスタム構成を追加することです。
注:jail.localファイルで定義されたパラメーターは、jail.confファイルをオーバーライドします。そのため、メインの構成ファイルをそのままにしておくことがさらに望ましいです。
デモンストレーションの目的で、SSH接続を保護するjailファイルを作成します。
$ sudo vim /etc/fail2ban/jail.local
これがサンプル構成ファイルです。
[DEFAULT] ignoreip = 192.168.2.105 bantime = 86400 findtime = 300 maxretry = 3 banaction = iptables-multiport backend = systemd [sshd] enabled = true
パラメータを分類して、それらが何を表すかを見てみましょう。
- ignoreip –禁止されないIPアドレスまたはドメイン名のリストを定義します。
- 禁止時間–名前が示すように、これはリモートホストが禁止される期間を秒単位で指定します。
- maxretry –これは、ホストがブロック/禁止されるまでに失敗したログイン試行の数です。
- findtime – maxtryの試行を達成した後、ホストがブロックされる時間(秒単位)。
- 禁止措置–禁止措置。
- バックエンド–ログファイルのフェッチに使用されるシステム
私たちの構成は次のことを意味します:
IPアドレスが過去5分間に3回失敗した認証の試行を記録すると、IP 192.168.2.105のホストを除いて、24時間禁止されます。
構成ファイルを保存して終了します。
ステップ4)Fail2banを開始して有効にします
SSH用のjailファイルの設定が完了したら、起動時にfail2banを起動して有効にします。通常、サービスはインストール時に実行されていません
fail2banを開始して有効にするには、次のコマンドを実行します。
$ sudo systemctl start fail2ban $ sudo systemctl enable fail2ban
fail2banのステータスを明らかにするには、以下のコマンドを呼び出します。
$ sudo systemctl status fail2ban
今回は、fail2banが期待どおりに実行されていることを確認できます。
次に、Fail2banがどのように機能するかを見てみましょう。
ステップ4)実行中のFail2ban
さらに一歩進んで、Fail2banの動作を見てみましょう。禁止されているIPアドレスを監視するには、fail2ban-clientユーティリティが便利です。たとえば、ssh jailのステータスを取得するには、次のコマンドを実行します。
$ sudo fail2ban-client status sshd
現時点では、サーバーにリモートでログインしていないため、禁止されているIPエントリはありません。
jail.local構成ファイルで指定されたものとは異なるIPを使用してWindowsPCからパテSSHクライアントからログインを試みます。
出力から、サーバーにアクセスできないことがはっきりとわかります。ステータスをもう一度確認すると、示されているように1つのIPが禁止されていることがわかります。
禁止リストからIPを削除するには、次のように禁止を解除します。
$ sudo fail2ban-client unban 192.168.2.101
fail2banのルールとポリシーの詳細については、次のようにjail.confのマンページにアクセスしてください
$ man jail.conf
コメントやフィードバックはありますか?お気軽にお問い合わせください。折り返しご連絡いたします。
また読む :Linuxユーザー向けの12のIPコマンドの例