インターネットにさらされているすべてのサーバーは、マルウェア攻撃のリスクにさらされています。たとえば、ソフトウェアがパブリックネットワークに接続されている場合、攻撃者はブルートフォース攻撃を使用してアプリケーションにアクセスする可能性があります。
Fail2banは、サービスログで悪意のあるアクティビティを監視することにより、Linuxマシンをブルートフォース攻撃やその他の自動化された攻撃から保護するのに役立つオープンソースツールです。正規表現を使用してログファイルをスキャンします。パターンに一致するすべてのエントリがカウントされ、それらの数が特定の事前定義されたしきい値に達すると、Fail2banは問題のあるIPを特定の期間禁止します。デフォルトのシステムファイアウォールが禁止アクションとして使用されます。禁止期間が終了すると、IPアドレスは禁止リストから削除されます。
この記事では、CentOS8にFail2banをインストールして構成する方法について説明します。
CentOSへのFail2banのインストール#
Fail2banパッケージは、デフォルトのCentOS8リポジトリに含まれています。これをインストールするには、rootまたはsudo権限を持つユーザーとして次のコマンドを入力します。
sudo dnf install fail2ban
インストールが完了したら、Fail2banサービスを有効にして開始します。
sudo systemctl enable --now fail2ban
Fail2banサーバーが実行されているかどうかを確認するには、次のように入力します。
sudo systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-09-10 12:53:45 UTC; 8s ago
...
それでおしまい。この時点で、CentOSサーバーでFail2Banが実行されています。
Fail2ban構成#
デフォルトのFail2banインストールには、/etc/fail2ban/jail.conf
という2つの構成ファイルが付属しています。 および/etc/fail2ban/jail.d/00-firewalld.conf
。これらのファイルは、パッケージの更新時に上書きされる可能性があるため、変更しないでください。
Fail2banは、構成ファイルを次の順序で読み取ります。
-
/etc/fail2ban/jail.conf
-
/etc/fail2ban/jail.d/*.conf
-
/etc/fail2ban/jail.local
-
/etc/fail2ban/jail.d/*.local
各.local
ファイルは.conf
の設定を上書きします ファイル。
Fail2banを構成する最も簡単な方法は、jail.conf
をコピーすることです。 jail.local
へ .local
を変更します ファイル。上級ユーザーは.local
を作成できます 構成ファイルを最初から作成します。 .local
ファイルには、対応する.conf
のすべての設定を含める必要はありません。 ファイル、上書きしたいものだけ。
.local
を作成します デフォルトのjail.conf
の構成ファイル ファイル:
sudo cp /etc/fail2ban/jail.{conf,local}
Fail2banサーバーの構成を開始するには、jail.local
を開きます。 テキストエディタでファイルする:
sudo nano /etc/fail2ban/jail.local
このファイルには、各構成オプションの機能を説明するコメントが含まれています。この例では、基本設定を変更します。
ホワイトリストIPアドレス#
禁止から除外するIPアドレス、IP範囲、またはホストをignoreip
に追加できます。 指令。ここで、ローカルPCのIPアドレスと、ホワイトリストに登録する他のすべてのマシンを追加する必要があります。
ignoreip
で始まる行のコメントを解除します IPアドレスをスペースで区切って追加します:
ignoreip = 127.0.0.1/8 ::1 123.123.123.123 192.168.1.0/24
禁止設定#
bantime
の値 、findtime
、およびmaxretry
オプションは禁止時間と禁止条件を定義します。
bantime
IPが禁止されている期間です。サフィックスが指定されていない場合、デフォルトで秒になります。デフォルトでは、bantime
値は10分に設定されています。一般的に、ほとんどのユーザーはより長い禁止時間を設定したいと思うでしょう。値を好みに合わせて変更します:
bantime = 1d
IPを恒久的に禁止するには、負の数を使用します。
findtime
禁止が設定されるまでの失敗回数の間の期間です。たとえば、Fail2banが5回の失敗後にIPを禁止するように設定されている場合(maxretry
、以下を参照)、これらの障害はfindtime
内に発生する必要があります 期間。
findtime = 10m
maxretry
IPが禁止されるまでの障害の数です。デフォルト値は5に設定されていますが、これはほとんどのユーザーにとって問題ないはずです。
maxretry = 5
Fail2banは、IPが禁止されたときに電子メールアラートを送信できます。電子メールメッセージを受信するには、サーバーにSMTPをインストールし、デフォルトのアクションを変更する必要があります。これにより、IPのみが%(action_mw)s
に禁止されます。 、以下に示すように:
action = %(action_mw)s
%(action_mw)s
問題のあるIPを禁止し、whoisレポートを記載したメールを送信します。関連するログをメールに含める場合は、アクションを%(action_mwl)s
に設定します 。
送信メールアドレスと受信メールアドレスを調整することもできます:
/etc/fail2ban/jail.localdestemail = [email protected]
sender = [email protected]
Fail2ban刑務所#
Fail2banは刑務所の概念を使用しています。刑務所はサービスを説明し、フィルターとアクションを含みます。検索パターンに一致するログエントリがカウントされ、事前定義された条件が満たされると、対応するアクションが実行されます。
Fail2banには、さまざまなサービス用の多数の刑務所が付属しています。独自の刑務所構成を作成することもできます。
デフォルトでは、CentOS 8では、jailは有効になっていません。刑務所を有効にするには、enabled = true
を追加する必要があります 刑務所のタイトルの後。次の例は、sshd
を有効にする方法を示しています 刑務所:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
前のセクションで説明した設定は、jailごとに設定できます。次に例を示します:
/etc/fail2ban/jail.local
フィルタは/etc/fail2ban/filter.d
にあります jailと同じ名前のファイルに保存されているディレクトリ。カスタムセットアップと正規表現の経験がある場合は、フィルターを微調整できます。
構成ファイルを変更するたびに、変更を有効にするためにFail2banサービスを再起動する必要があります。
sudo systemctl restart fail2ban
Fail2banクライアント#
Fail2banには、fail2ban-client
という名前のコマンドラインツールが付属しています。 これを使用してFail2banサービスを操作できます。
fail2ban-client
で利用可能なすべてのオプションを表示するには コマンド、-h
で呼び出します オプション:
fail2ban-client -h
このツールを使用して、IPアドレスの禁止/禁止解除、設定の変更、サービスの再起動などを行うことができます。次にいくつかの例を示します。
-
刑務所の状況を確認する:
sudo fail2ban-client status sshd
-
IPの禁止を解除する:
sudo fail2ban-client set sshd unbanip 23.34.45.56
-
IPを禁止する:
sudo fail2ban-client set sshd banip 23.34.45.56