fail2banは、さまざまな悪意のある攻撃からシステムを保護するために使用するクライアント、サーバー、および構成ファイルのパッケージです。 Linuxサーバーサービスをサービス拒否(DoS)からも保護します。一方、その他の基本的な機能は、ログファイルの監視、事前定義されたパターンの検索、およびIPアドレスの一時的なブロックです。これはGNUGeneralPublic Licenseバージョン2で公開されており、Pythonに基づいています。
フォアグラウンドだけでなく、バックグラウンド(デーモンとして)でも実行できます。このプログラムは、たとえば、ログインの試行回数を制限したいsshサーバーで役立ちます。 fail2banプログラムは、システムのログファイルでログイン試行の失敗を調べてから、攻撃者のインターネットアドレス(IP)を一定期間ブロックします。
ここでは、Debian11BulleyesにFail2banをインストールする手順とその構成プロセスについて学習します。
Debian11へのFail2banのインストール
Fail2banをインストールおよび設定するためのパッケージは、公式のDebian 11リポジトリで入手できるため、インストールにはaptコマンドを使用するだけです。
まず、updateコマンドを実行してリポジトリキャッシュを再構築します-
sudo apt update
そして、このセキュリティツールを入手するためのメインコマンド-
sudo apt install fail2ban
上記のコマンドを実行すると、インストール後に次のプログラムを使用できるようになります。
- fail2ban-server –サーバー
- fail2ban-client –サーバーの構成と評価のためのクライアントプログラム
- fail2ban-regex-正規表現をテストするためのプログラム
サービスを有効にしてステータスを確認する-
sudo systemctl enable fail2ban sudo systemctl status fail2ban
Debian10/11での設定
fail2banは、拡張子が.conf
の構成ファイルタイプを読み取ります および.local
。拡張子が.conf
のファイル インストール中に作成され、パッケージのアップグレード中に上書きされます したがって、すべての変更は、対応する .local
で行う必要があります ファイル。したがって、このファイルのデフォルトまたはグローバル設定とは異なる値のみを追加または変更してください。
Fail2banには、次の3つの構成ファイルタイプがあります。
/etc/fail2ban/action.d/*.conf/*
/etc/fail2ban/filter.d/*.conf/*
/etc/fail2ban/jail.conf /etc/fail2ban/jail.d/*.conf
Actions.d
ディレクトリ内のファイル/etc/fail2ban/action.d/ IPアドレスの(ブロックを解除する)コマンドが含まれています。アクションファイルには、[Definition]
の2つのセクションが含まれています および[Init]
。 [Init]
のエントリ セクションは、jailで定義されたルールを上書きするために使用されます。次の表の例は、 iptables-multiport-confから抜粋したものです。 アクション。すべてのコマンドは、fail2banユーザー権限で実行されます。
オプションの概要 | ||
エントリ | 説明 | 例 |
[Definition] | ||
actionstart | fail2banの開始時に実行されるコマンド。 | actionstart = iptables -N fail2ban-<name> iptables -A fail2ban-<name> -j RETURN iptables -I <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name> |
actionstop | fail2banを終了するときに実行されるコマンド。 | actionstop = iptables -D <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name> iptables -F fail2ban-<name>[[BR]]iptables -X fail2ban-<name> |
actioncheck | 各アクション禁止の前に実行されるコマンド。これらは、現在の環境の機能を確認するために使用されます。 | actioncheck = iptables -n -L <chain> | grep -q 'fail2ban-<name>[ \t]' |
actionban | IPが禁止されたときに実行されるコマンド。条件は常にmaxretry 超過する必要があり、 findtime fall 不足しています。 | actionban = iptables -I fail2ban-<name> 1 -s <ip> -j <blocktype> |
actionunban | 禁止解除に使用するコマンド。 | actionunban = iptables -D fail2ban-<name> -s <ip> -j <blocktype> |
[Init] | ||
name | チェーンのデフォルト名 | name = default |
port | ポート | port = ssh |
protocol | 構成リーダーによって内部的に使用されます。可能な値:tcp 、udp 、icmp 、all 。 | protocol = tcp |
chain | fail2banルールを追加する必要があるiptablesチェーン。標準はINPUT 。 | chain =INPUT |
アクションタグ | アクションタグは、actionban で使用できるプレースホルダーです。 、actionunban およびactioncheck 。 | |
ip | ||
failures | ||
time | 禁止のUnixタイムスタンプ(秒)。 | |
matches | 禁止につながるログファイルの行からの連鎖エントリ。多くのシェル文字がエスケープされています。 |
Filter.d
ディレクトリ内のファイル/etc/fail2ban/filter.d/ ログファイルを分析し、IPアドレスを抽出するため、または使用者が使用されている場合の正規表現が含まれています ホスト名。これらのファイルには、[Definition]
の2つのセクションしかありません。 および[Includes]
。後者は、他の構成ファイルを読み取るために使用できます。
次の表の例は、 iptables-multiport-confから抜粋したものです。 アクション。すべてのコマンドは、fail2banユーザー権限で実行されます。
オプションの概要 | ||
エントリ | 説明 | 例 |
[Definition] | ||
failregex | この正規表現を使用して、ログファイルでヒットが検索されます。タグはHOST です ここで入手できます。正規表現の一部として使用され、ホスト名またはIPアドレスが含まれます。 IPアドレスとホスト名の区別は、fail2banによって自動的に決定されます。 | failregex =^%(__ prefix_line)sFAIL:\S+アドレスfrom= ^%(__ prefix_line)sFAIL:\ S + libwrap from = |
ignoreregex | 例外は、上記のfailregexに対して有効であったとしても、ここで定義できます。 ignoreregexは文字列補間をサポートしているため、 %(variablenname)s で独自の変数を使用できます。 。 | ignoreregex = |
[INCLUDES] | ||
before | 設定したファイルの前にファイルを読み取るために使用します。 例はcommon.confです。 | before =common.conf |
after | 設定したファイルの後にファイルが読み込まれます | after =example_after.local |
例 | common.confを統合した後 _daemon です 利用可能です。/etc/fail2ban/filter.d/common.confを参照 詳細については。 | _daemon =xinetd |
Jail.conf
一方、jail.conf
ファイルはアクションを組み合わせたものです フィルターを作成しました 刑務所に。ユーザーはこのファイルを拡張子.loca
で保存する必要があります l独自のルールの追加またはカスタマイズを開始します。
jail.conf 次の表に、デフォルトで可能な値の概要を示します。
オプションの概要 | ||
エントリ | 説明 | 例 |
[DEFAULT] | ||
ignoreip | 無視するIPまたはネットワークのスペース区切りのリスト。 | ignoreip = 127.0.0.1/8 192.168.1.33 |
bantime | 禁止時間(秒単位)。負の値は永久的な禁止です。 | bantime = 86400 |
findtime | maxretryのカウンターがになるまでの秒数 リセットします。 | findtime = 660 |
maxretry | fail2banがIPを禁止するまでに失敗した試行の最大数。 | maxretry = 2 |
backend | systemdなどのバックエンドはここで設定できます。デフォルトはauto (推奨)。 | backend = systemd |
usedns | fail2banの逆引き参照動作の設定。可能な値はyes です 、no およびwarn 。後者は、ホスト名を含むエントリがログファイルに警告を表示することを意味します。これにより、多数のエントリが発生する可能性があります。 | usedns = warn |
[myJail] | 刑務所の名前はここで割り当てることができます。 | [ssh] |
enabled | (De-)は刑務所をアクティブにします | enabled = true |
port | ポート定義。数値にすることができます。複数の値はカンマで区切られます。 | port = ssh |
filter = sshd | フィルターファイルの名前 | /etc/fail2ban/filter.d/sshd.conf |
logpath | フィルターがチェックされる監視対象のログファイル。 | logpath = /var/log/auth.log |
maxretry, bantime,... | デフォルトオプションのさまざまな値も定義できます。 | maxretry = 3 |
それでは、 jail.confをコピーしましょう。 jail.localを作成するためのファイル fail2banをアップグレードした後もそこに残るカスタム設定を追加するためのファイル。
sudo cp /etc/fail2ban/jail.{conf,local}
さまざまな設定を構成するには、作成したローカルjailファイルを編集します
sudo nano /etc/fail2ban/jail.local
いくつかの例-
一部のIPアドレス、IP範囲、またはホストをホワイトリストに登録する
ここで、ファイルが開いたら、一部のIPアドレス、IP範囲、またはホストがFile2banサービスによってブロックされないようにホワイトリストに登録するとします。そのために、新しく作成された Jail.localでも同じように定義します。 ファイル。
参照 :Linuxコマンド端末でIPアドレスを確認する方法
ファイルで#igonreipを見つけます 行を削除して#を削除します それから。その後、ホワイトリストに登録するIPアドレスまたは範囲を追加します。
Bantime、findtime、およびmaxretry
同様に、ファイルで指定されているbantimeオプションの値を変更することで、禁止されたIPアドレスの時間を増減することもできます。
[Default] bantime = 10m
期間を短縮または延長するには、デフォルトの10分を任意の時間に変更するだけです。 IPアドレスをブロックするには、負の値を永続的に使用します。
maxretry
ブロックされるためにIPアドレスが実行した必要のある最大試行回数はいくつですか? デフォルトでは5であり、maxretry
を使用して宣言されます jail.local
のオプション ファイル。それを減らしたい場合は、たとえば、悪意のある2回の試行の後でのみ、IPがブロッカーを取得し、その数を5から2に変更します。同様に、最大試行回数を増やすこともできます。
maxretry = 5
findtime
これは、Fail2Banが特定のIPアドレスをブロックする前に、システム上の悪意のあるユーザーまたはログインに対して発生する必要がある最大の再試行の間の時間です。 例 、誰かがログインしようとしています。規定の10分間に5回試行すると、IPがブロックされます。ただし、 findtimeは変更できます この期間を増減する値。
findtime = 10m
Fail2banはメールアラートを送信できます
はい、一部のIPが禁止された場合、同じメール通知を受け取ることができます。ただし、通知の受信に使用するメールアドレスを有効にして定義する必要があります。
Sendmailのインストール- オープンソースのメール転送エージェント(MTA)
sudo apt install sendmail
ここで、 jail.localで実行する必要のある2つの重要な設定があります。 メール通知を受け取るためのファイル。
- 宛先メール –通知の取得に使用するメールアドレス。
- 送信者 –fail2banがメールを送信するメールアドレス。
したがって、ファイルで上記の2つの設定を見つけて、メールアドレスを追加します-
次に、以下の行を見つけます
action = %(action_)s
そして、次のいずれかで変更します-
action = %(action_)s
–これは、一部のIPアドレスが禁止されたときに電子メール通知を送信します。
または
action = %(action_mwl)s
–ログ情報を含む禁止されたホストIPの電子メール通知が必要な場合は、このアクションオプションを使用します。
さらに、UbuntuまたはDebianLinuxに最適な電子メールクライアントアプリのリストを確認できます。
Fail2ban刑務所ファイルでサービスを有効にする
先に述べたように、jail.localを作成するのは両方のアクションで構成されます およびフィルター これを使用して、デフォルトで許可されているサービスを無効/有効にしたり、独自のサービスを作成したりできます。
例 –デフォルトでは、SSHはFail2banのJail.localで有効になっています。
実際、Fail2ban Jailファイルには、それに付随する多くのサービスがあることがわかります。ただし、それらを使用できるようにする必要があります。または、独自に作成することもできます。
/etc/fail2ban/filters.dの下 すべての構成を表示できるフォルダフィルタ そこで利用可能な各Fai2ban刑務所サービスのファイル。
それらをオンにする方法を示す前に、有効な刑務所サービスが何であるかを確認しましょう-
sudo fail2ban-client status
出力は次のようになります-
Status |- Number of jail: 1 `- Jail list: sshd
ここで、Jailサービスをオンにする場合は、enabled = true
を追加する必要があります。 jail.conf
内 刑務所サービスのタイトルの後にファイルします。次の例は、 apache-authを有効にする方法を示しています 刑務所:
例-Fail2banApache-authサービスをオンにしましょう
jail.local
を編集します 事前定義されたApache-Authを見つけます 刑務所サービス
保存 Ctrl + Xを使用したファイル 、 Y、 Enterを押すと キー。
Fail2banサーバーを再起動します
sudo systemctl restart fail2ban
今 、もう一度Fail2banクライアントを使用します 有効になっている刑務所サービスの数を確認するには-
sudo fail2ban-client status
今回の出力は-
Status |- Number of jail: 2 `- Jail list: apache-auth, sshd
詳細を知るには サービスについては、上記のコマンドでその名前を使用してください-
sudo fail2ban-client status apache-auth
出力:
Status for the jail: apache-auth |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- File list: /var/log/apache2/error.log `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list:
エラー:
次のエラーが発生した場合は、有効にする特定のサービスがシステムまたはサーバーにまだインストールされていないことを意味します。 たとえば、 Apache Jailを有効にしたが、Apache自体がサーバーで使用できない場合、この種のエラーが表示されます。
fail2ban.service: Main process exited, code=exited, status=255/EXCEPTION [6613]: ERROR Failed to access socket path: /var/run/fail2ban/fail2ban.sock. Is fail2ban running?
Fail2banクライアントの使用
Fail2banのクライアントコマンドツールを使用してさまざまなサービスを処理することもできます。それに関連するすべてのコマンドを表示するには、ヘルプフラグを使用できます-
fail2ban-client -h
例 一部のサービスの一部のIPを禁止または禁止解除するには、次の構文を使用します
禁止する
fail2ban-client set <JAIL-service> banip <IP>
禁止を解除するには
fail2ban-client set <JAIL-service> unbanip <IP>
例-
sudo fail2ban-client set sshd banip 192.168.0.6
エンディングノート-
つまり、これはDebian11Bullseyeまたは10BusterでのFail2banのインストールと設定の概要です。 Fail2banツールのドキュメントは広大ではありませんが、それでも見たい人は、公式Webサイトをチェックしてください。リンクは次のとおりです:プロジェクトページ、ドキュメント、ソースコードのGitHubページ