インターネットに公開されているサービスはすべて、マルウェア攻撃のリスクがあります。たとえば、公開されているネットワークでサービスを実行している場合、攻撃者はブルートフォース攻撃を使用してアカウントにサインインする可能性があります。
Fail2banは、サービスログで悪意のあるアクティビティを監視することにより、ブルートフォース攻撃やその他の自動化された攻撃からLinuxマシンを保護するのに役立つツールです。正規表現を使用してログファイルをスキャンします。パターンに一致するすべてのエントリがカウントされ、それらの数が特定の事前定義されたしきい値に達すると、Fail2banはシステムファイアウォールを使用して問題のあるIPを特定の期間禁止します。禁止期間が終了すると、IPアドレスは禁止リストから削除されます。
この記事では、Ubuntu20.04にFail2banをインストールして構成する方法について説明します。
UbuntuへのFail2banのインストール#
Fail2banパッケージは、デフォルトのUbuntu20.04リポジトリに含まれています。これをインストールするには、rootまたはsudo権限を持つユーザーとして次のコマンドを入力します。
sudo apt update
sudo apt install fail2ban
インストールが完了すると、Fail2banサービスが自動的に開始されます。サービスのステータスを確認することで確認できます:
sudo systemctl status fail2ban
出力は次のようになります:
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-08-19 06:16:29 UTC; 27s ago
Docs: man:fail2ban(1)
Main PID: 1251 (f2b/server)
Tasks: 5 (limit: 1079)
Memory: 13.8M
CGroup: /system.slice/fail2ban.service
└─1251 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
それでおしまい。この時点で、UbuntuサーバーでFail2Banが実行されています。
Fail2ban構成#
デフォルトのFail2banインストールには、/etc/fail2ban/jail.conf
という2つの構成ファイルが付属しています。 および/etc/fail2ban/jail.d/defaults-debian.conf
。これらのファイルは、パッケージの更新時に上書きされる可能性があるため、変更することはお勧めしません。
Fail2banは、次の順序で構成ファイルを読み取ります。各.local
ファイルは.conf
の設定を上書きします ファイル:
-
/etc/fail2ban/jail.conf
-
/etc/fail2ban/jail.d/*.conf
-
/etc/fail2ban/jail.local
-
/etc/fail2ban/jail.d/*.local
ほとんどのユーザーにとって、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には、さまざまなサービス用の多数の刑務所が付属しています。独自の刑務所構成を作成することもできます。
デフォルトでは、sshjailのみが有効になっています。刑務所を有効にするには、enabled = true
を追加する必要があります 刑務所のタイトルの後。次の例は、proftpdjailを有効にする方法を示しています。
[proftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
logpath = %(proftpd_log)s
backend = %(proftpd_backend)s
前のセクションで説明した設定は、jailごとに設定できます。次に例を示します:
/etc/fail2ban/jail.local[sshd]
enabled = true
maxretry = 3
findtime = 1d
bantime = 4w
ignoreip = 127.0.0.1/8 23.34.45.56
フィルタは/etc/fail2ban/filter.d
にあります jailと同じ名前のファイルに保存されているディレクトリ。カスタムセットアップと正規表現の経験がある場合は、フィルターを微調整できます。
構成ファイルを編集するたびに、変更を有効にするためにFail2banサービスを再起動する必要があります。
sudo systemctl restart fail2ban
Fail2banクライアント#
Fail2banには、fail2ban-client
という名前のコマンドラインツールが付属しています。 これを使用して、Fail2banサービスと対話できます。
使用可能なすべてのオプションを表示するには、-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