Fail2banは、コンピュータサーバーを主にブルートフォース攻撃から保護し、悪意のあるユーザーエージェントを禁止し、URLスキャナーを禁止する侵入防止ソフトウェアフレームワークです。 Fail2banは、サーバーまたはWebアプリケーションのアクセス/エラーログを読み取ることでこれを実現します。 Fail2banはPythonプログラミング言語でコーディングされています。
このガイドでは、AlmaLinux 8へのFail2banのインストールの概要と、いくつかの基本的なセットアップとヒントについて説明します。
- 推奨OS: AlmaLinux8。
- ユーザーアカウント: sudo特権を持つユーザーアカウント またはrootアクセス(suコマンド) 。
オペレーティングシステムの更新
AlmaLinuxを更新します 既存のすべてのパッケージが最新であることを確認するためのオペレーティングシステム:
sudo dnf upgrade --refresh -y
チュートリアルでは、sudoコマンドを使用します およびsudoステータスがあると仮定 。アカウントのsudoステータスを確認するには:
sudo whoami
sudoステータスを示す出力例:
[joshua@localhost ~]$ sudo whoami
root
sudoユーザーアカウントをまだ設定しておらず、設定したい場合は、AlmaLinuxでSudoersにユーザーを追加する方法のチュートリアルにアクセスしてください。 。
rootアカウントを使用するには 、rootパスワードを指定して次のコマンドを使用してログインします。
su
EPELリポジトリのインストール
最初のステップは、EPEL (Enterprise Linux用の追加パッケージ)からリポジトリをインポートすることです。 次のように:
sudo dnf install epel-release
出力例:
「Y」と入力します 次に、「ENTERキー」を押します。 インストールを続行します。
リポジトリが正常に追加されたかどうかを確認することは常に良い考えです。これは、dnfrepolistコマンドを使用して実行できます。 以下のように:
sudo dnf repolist
出力例:
ご覧のとおり、EPELリポジトリは正しく追加されています。便利なヒントです。このコマンドを再利用して、将来のリポジトリのインポートを確認できます。
Firewalldの設定
デフォルトでは、AlmaLinuxにはfirewalldがインストールされています。これを確認するには、次のコマンドを使用します。
sudo dnf info firewalld
出力例:
ご覧のとおり、これはデフォルトでAlmaLinux8にインストールされています。また、システムで自動的に有効にする必要があります。
これを確認するには、次のsystemctlコマンドを使用します :
sudo systemctl status firewalld
出力例:
Firewalldのもう1つの便利なトリックは、firewall-cmd –stateコマンドを使用して、実行されているかどうかを確認することです。
sudo firewall-cmd --state
出力例:
running
Firewalldがオフになっている場合は、次を使用して開始します。
sudo systemctl start firewalld
システムの起動時に起動できるように再度有効にするには、次を使用します。
sudo systemctl enable firewalld
成功した場合の出力例:
Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.
ファイアウォールが削除されている場合は、次のコマンドを使用してfirewalldを再インストールできます。
sudo dnf install firewalld
最後に、fail2banによって新しいルールが追加される前に現在のルールを確認するには、firewalldに慣れるために既存のルールをリストします。
sudo firewall-cmd --list-all
出力例:
Fail2banのインストール
EPELリポジトリがインストールされたので、fail2banと追加パッケージfail2ban-firewalldをインストールします。これにより、Fail2banが将来使用するためにfirewalldで動作するように正しく構成されます。
sudo dnf install fail2ban fail2ban-firewalld
出力例:
タイプY、 次に、ENTERキーを押します インストールを続行します。
デフォルトでは、fail2banはアクティブにならないため、次のsystemctlコマンドを使用して手動で開始する必要があります。 :
sudo systemctl start fail2ban
次に、システムの起動時にfail2banを有効にするには、次を使用します。
sudo systemctl enable fail2ban
次のコマンドでステータスを確認します。
sudo systemctl status fail2ban
出力例:
最後に、fail2banのバージョンとビルドを確認します。
fail2ban-client --version
出力例:
Fail2Ban v0.11.2
Fail2banを構成する方法
インストールが完了したら、セットアップと基本構成を行う必要があります。 Fail2banには、 /etc/fail2ban/jail.confにある2つの構成ファイルが付属しています。 およびデフォルトのfail2banjail /etc/fail2ban/jail.d/00-firewalld.conf 。これらのファイルは変更しないでください。元のセットアップファイルは元のファイルであり、将来のFail2banへの更新で置き換えられます。
設定を更新して失うかのように、Fail2banをどのように設定したのか不思議に思うかもしれません。シンプルで、 .localで終わるコピーを作成します .confの代わりに fail2banは常に.localを読み取るため .confをロードする前に最初にファイル 。
これを行うには、次のコマンドを使用します。
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
デフォルトでは、 jail.local IPTABLESを使用するように設定されています 。 00-firewalld.conf / jail を使用する代わりに、物事を単純にするため ルールを最初から作成し、jail.localを開いて、行208に移動して置き換えます :
jail.localを開く:
sudo nano /etc/fail2ban/jail.local
検索Ol dコード(IPTABLES):
anaction = iptables-multiport
banaction_allports = iptables-allports
(FIREWALLD)に置き換えます:
banaction = firewallcmd-rich-rules[actiontype=]
banaction_allports = firewallcmd-rich-rules[actiontype=]
次に、チュートリアルは、使用または好みに合わせて変更できるいくつかの設定に対して実行されます。ほとんどの設定はコメント化されていることに注意してください。チュートリアルでは、問題の行のコメントを解除するか、設定例の既存の行を変更します。
これらはオプションの設定であり、fail2banについて詳しく知っていて自信があれば、好きなように設定できます。
禁止時間の増分
最初に遭遇する設定は、禁止時間の増分です。 。攻撃者が戻るたびにこれを有効にする必要があります。これにより禁止時間が長くなり、禁止時間の長さが短い場合にシステムが同じIPを常に再禁止する必要がなくなります。たとえば、1時間の場合、攻撃者が5回返した場合は、これを長くする必要があります。
また、禁止増加ロジックを機能させるには、乗数または係数を設定する必要があります。これらのいずれかを選択できます。ただし、ガイドでは、以下の例で強調表示されているように、乗数を優先します。これは、カスタムの禁止時間の増加を好みに合わせて設定できるためです。さらなる説明は、その背後にある数学の設定にあります。
以下の例:
Fail2banのIPをホワイトリストに登録
次のリストでは、ホワイトリストのオプションに出くわし、以下のコメントを外して、ホワイトリストに登録したいIPアドレスに対処します。
ignoreip = 127.0.0.1/8 ::1 180.53.31.33 (example IP address)
IPアドレスの間には必ずスペースまたはコンマを入れてください。 IP範囲をホワイトリストに登録することもできます。
以下の例:
デフォルトの禁止時間の設定
禁止時間のデフォルトは、5回の再試行で10分のファインダーでデフォルトの10分です。これの説明は、フィルタリングを使用したFail2ban刑務所は、同じ攻撃を10分(時間を見つける)x 5回(再試行)で再試行した後、攻撃者を10分間禁止することです。ここでいくつかのデフォルトの禁止設定を設定できます。
ただし、刑務所に入るときは、禁止時間を変更することをお勧めします。これは、一部の禁止は自動的に他の禁止よりも長くなるためです。これには、より少ないまたはより多い再試行も含まれます。
以下の例:
Fail2banで設定された電子メール
Fail2banがレポートを送信するための電子メールアドレスを設定できます。デフォルトのaction=%(action_mw)s これにより、問題のあるIPが禁止され、レビュー用のwhoisレポートが記載された電子メールが送信されます。ただし、action.dフォルダーには、自分自身だけでなく、ブラックリストプロバイダーや攻撃者のISPに電子メールを送信して報告するための他の電子メールオプションがあります。
以下の例:
# Destination email address used solely for the interpolations in
# jail.{conf,local,d/*} configuration files.
destemail = [email protected]
# Sender e-mail address used solely for some actions
sender = [email protected]
デフォルトでは、Fail2banは sendmail MTAを使用することに注意してください 電子メール通知用。これをメール機能に変更できます 次のようにします:
変更元:
mta = sendmail
変更先:
mail = sendmail
Fail2ban刑務所
次に、刑務所に行きます。多くの一般的なサーバーアプリケーションをカバーするコミュニティによって作成されたフィルターとアクションを使用して、事前定義されたjailを設定できます。カスタム刑務所を作成したり、さまざまな要点で外部の刑務所を見つけたりすることができます およびコミュニティのWebサイト。ただし、デフォルトのFail2banパッケージjailを設定します。
下の図のように、すべての刑務所のデフォルト設定。何も有効になっていないことに注意してください。
以下の例:
[apache-badbots]
# Ban hosts which agent identifies spammer robots crawling the web
# for email addresses. The mail outputs are buffered.
port = http,https
logpath = %(apache_access_log)s
bantime = 48h
maxretry = 1
したがって、Apache 2 HTTPサーバーがあり、不正なボットをフィルター/禁止するのと同様に、以下の例のように、enabled=trueを追加するだけです。
[apache-badbots]
# Ban hosts which agent identifies spammer robots crawling the web
# for email addresses. The mail outputs are buffered.
enabled = true
port = http,https
logpath = %(apache_access_log)s
bantime = 48h
maxretry = 1
最大再試行回数が1に等しく、禁止時間が48時間であることに注意してください。これは、この刑務所の個別の最大再試行と禁止の長さの設定であり、ガイドで前に設定した禁止乗数とともに自動的に増加します。いずれかのフィルターにこれがない場合は、例として追加できます。
[apache-noscript]
enabled = true
port = http,https
logpath = %(apache_error_log)s
以下の次の例の上に変更してください:
[apache-noscript]
enabled = true
port = http,https
logpath = %(apache_error_log)s
bantime = 1d
maxretry = 3
次に、/ etc / fail2ban / jail.localのデフォルト設定で指定されているものとは異なるアクションが必要です。これは、action.dディレクトリにある追加のアクションです。このディレクトリのさまざまなアクションは、ファイル内のアクション構成行内の指示に従い、最初に名前を .jailに変更することを忘れないで簡単に設定できます。 .conf、 次に、刑務所の設定に以下を追加します。
[apache-botsearch]
enabled = true
port = http,https
logpath = %(apache_error_log)s
banaction = action_mw
cloudflare
bantime = 72h
maxretry = 1
ご覧のとおり、action_mwを追加したため、デフォルトのアクションに従って自動的に禁止され、whoisを含むレポートがメールで送信されます。次に、Cloudflareを使用すると、サービスのIPアドレスもブロックされます。 Cloudflareは使用前にセットアップする必要があることを忘れないでください。 action.dファイルcloudflare.confを読みます 。
セットアップに満足したら、次のコマンドを実行してfail2banを再起動し、新しいjailをロードします。
sudo systemctl restart fail2ban
Fail2ban-clientの使用例
これでFail2banを使用できるようになったので、いくつかの基本的な操作コマンドを知っておく必要があります。これを行うには、fail2ban-clientコマンドを使用します。設定によっては、sudo権限が必要になる場合があります。
IPアドレスを禁止する:
sudo fail2ban-client set apache-botsearch banip <ip address>
IPアドレスの禁止を解除する:
sudo fail2ban-client set apache-botsearch unbanip <ip address>
追加の設定を検索したり、特定の設定に関するヘルプを取得したりする必要がある場合は、ヘルプメニューを表示するコマンド。
sudo fail2ban-client -h
FirewalldとFail2banの確認
デフォルトでは、firewalldは、fail2banアクションが禁止されているIPを自動的に禁止するように構成する必要があります。これが実際に正しく機能しているかどうかを確認するには、次のコマンドを使用します。
簡単なテストは刑務所にあります[SSHD] enabled =trueを配置します 単なるテストであるため、この刑務所を使用していない場合でも、次の禁止コマンドを使用します。
sudo fail2ban-client set sshd banip 192.155.1.7
次に、ファイアウォールリストの豊富なルールを次のようにリストします。
firewall-cmd --list-rich-rules
出力例:
rule family="ipv4" source address="192.155.1.7" port port="ssh" protocol="tcp" reject type="icmp-port-unreachable"
ご覧のとおり、fail2banとfirewalldはライブ環境で正しく機能しています。
Fail2banログの監視
多くのよくある間違いは刑務所に入れられ、彼らがしていることをテストしたり監視したりせずに立ち去ります。ログの確認は不可欠です。これは、fail2banログがデフォルトのパス /var/log/fail2ban.logにあります。 。
適切なトラフィックを受信しているサーバーがある場合、他のサーバーで作業しているときに問題を確認して監視するための優れたコマンドは、tail-fコマンドを使用することです。 以下。
sudo tail -f /var/log/fail2ban.log
このコマンドは、ロギングに飛び込むことなく、スポットチェックに役立ちます。
Fail2banのアンインストール
Fail2banが不要になった場合、システムから削除するには、次のコマンドを使用します。
sudo dnf autoremove fail2ban fail2ban-firewalld
出力例:
タイプY、 次に、ENTERキーを押します アンインストールを続行します。
これにより、Fail2banでインストールされた未使用の依存関係もすべて削除されることに注意してください。