メインコンテンツへスキップ
  1. ブログ/

【初心者向け】AlmaLinuxにFail2banをインストールする方法

·
セキュリティ Fail2ban
目次

【初心者向け】AlmaLinuxにFail2banをインストールする方法
【初心者向け】AlmaLinuxにFail2banをインストールする方法

初めに
#

サーバーのログを見たことがある方は、何度も繰り返し行われる不正なログイン試行やその他の攻撃的ログを目にしたことがあるかもしれません。

グローバルに公開されているサーバーに対して上記の様な悪意のある試みが行われる事はもはや日常と言って良いのではないでしょうか?

エンジニアにとって日々の脆弱性の確認や対応、セキュリティの強化は必須となっております。

侵入防止を導入する事でセキュリティリスクを低める事が可能となっております。

そこで今回はAlmaLinuxにFail2banを導入する方法についてご紹介致します。

Fail2banとは?
#

Fail2ban(フェイル・トゥー・バン)は、オープンソースとしてPythonで開発されているホスト型の侵入防止ソフトウェアとなります。

Fail2banはシステムのログファイルを監視し、短時間に複数回ログインに失敗したIPアドレスを検出して、iptablesfirewalldなどと連携し遮断処理を行います。

これにより、不正アクセスやパスワード総当たりによるリスクを大幅に軽減できます。

以下は公開リポジトリとなっております。

nunocoracao/blowfish

Personal Website & Blog Theme for Hugo

HTML
1870
491

Fail2banを導入する
#

それではAlmaLinuxにFail2banを導入していきます。

今回使用するOSは「AlmaLinux9」となります。

標準リポジトリ

AlmaLinux9の標準リポジトリではFail2banは提供されていません。

そのため以下のdnfコマンドを実行しEPELリポジトリを有効化します。

dnf install epel-release

次に下記コマンドを実行しインストールを行います。

dnf install fail2ban

下記の様に表示されますので「y」を選択します。

dnf install fail2ban
Last metadata expiration check: 1:38:42 ago on Tue 25 Jun 2024 07:45:23 AM JST.
Dependencies resolved.
============================================================================================================================================
=================================================================================================
 Package                                                            Architecture                                      Version
                                         Repository                                         Size
============================================================================================================================================
=================================================================================================
Installing:
 fail2ban                                                           noarch                                            1.0.2-12.el9
                                         epel                                              8.8 k
Upgrading:
 selinux-policy                                                     noarch                                            38.1.35-2.el9_4.2
                                         baseos                                             49 k
 selinux-policy-targeted                                            noarch                                            38.1.35-2.el9_4.2
                                         baseos                                            6.5 M
Installing dependencies:
 fail2ban-firewalld                                                 noarch                                            1.0.2-12.el9
                                         epel                                              8.9 k
 fail2ban-selinux                                                   noarch                                            1.0.2-12.el9
                                         epel                                               29 k
 fail2ban-sendmail                                                  noarch                                            1.0.2-12.el9
                                         epel                                               12 k
 fail2ban-server                                                    noarch                                            1.0.2-12.el9
                                         epel                                              444 k

Transaction Summary
============================================================================================================================================
=================================================================================================
Install  5 Packages
Upgrade  2 Packages

Total download size: 7.0 M
Is this ok [y/N]:

下記の様に表示されていればインストール完了です。

Complete!

下記コマンドにてインストール確認を行う事ができます。

dnf list fail2ban

Fail2banの設定
#

続いてFail2banの設定を行います。

Fail2banの設定ファイルは以下のパス内に格納されております。

/etc/fail2ban/
├── action.d/         - アクション定義
├── fail2ban.conf     - 基本設定ファイル
├── filter.d/         - ログ解析ルール定義
├── jail.conf         - Jail設定のテンプレート(編集非推奨)
├── jail.d/           - Jail設定の追加・上書き用ディレクトリ
├── paths-common.conf - ログファイルの共通パス設定

デフォルトの「jail.conf」を書き換える事は推奨されていない為、新たに「jail.local」を作成し追加設定を行います。

vi /etc/fail2ban/jail.local

今回は「sshd」「vsftpd」「postfix」「dovecot」「apache」「mysql」の項目を有効化します。

下記の様に記述する事で設定可能です。

# 共通ルール
[DEFAULT]
maxretry = 5        # ログイン失敗を5回検出したら
findtime = 600      # (10分間以内に)
bantime  = 1h       # 1時間IPをブロック

# サービス別の個別ルール
[sshd]
enabled = true
filter = sshd

[vsftpd]
enabled = true
filter = vsftpd

[postfix]
enabled = true
filter = postfix

[dovecot]
enabled = true
filter = dovecot

[apache]
enabled = true
filter = apache-auth

[apache-403]
enabled = true
filter = apache-badbots

[mysql]
enabled = true
filter = mysqld-auth

DEFAULTセクションに記述したルールは、すべてのJailに対して共通で適用されます。

上記では10分間に5回ログインに失敗した場合、1時間ブロックする設定としました。

ログファイルのパスや監視ポートは、Fail2banのフィルター・アクション定義(filter.d/, action.d/)側で設定されております。

特にカスタマイズしない場合はデフォルト設定のままで動作します。

自動起動設定
#

次に自動起動設定を行います。

下記を実行し自動起動を有効化します。

systemctl enable fail2ban

上記によりサーバー再起動時でも利用できるようになります。

Fail2ban起動
#

最後にFail2banの起動を行います。

始めに下記コマンドを使用して現在の起動状況を確認します。

systemctl status fail2ban

初期状態では下記の様に起動していない状況となっておりました。

○ fail2ban.service - Fail2Ban Service
     Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; preset: disabled)
     Active: inactive (dead)
       Docs: man:fail2ban(1)

それでは下記コマンドを使用し起動を行います。 対象のログが無い場合は起動に失敗します。

systemctl start fail2ban

次に「fail2ban-client」コマンドを使用して監視が正常に行われているか確認します。

#コマンド
fail2ban-client status

#結果
fail2ban-client status
Status
|- Number of jail:      7
`- Jail list:   apache, apache-403, dovecot, mysql, postfix, sshd, vsftpd

上記の様に有効化した項目が「Jail list」に表示されていれば正常に監視されております。

関連記事

【初心者向け】AlmaLinux 9にOSSEC(オーエスセック)を導入する方法
セキュリティ OSSEC
総当たり攻撃の最大時間を計算してみた
セキュリティ
【初心者向け解説】SELinuxの状態を確認する方法
Linux SELinux セキュリティ
Linux CLIから「Zed Attack Proxy」でセキュリティテストを実行する方法
セキュリティ
cyrus-sasl(サイラスサスル)とは
Linux セキュリティ
SPFレコードのルール(qualifier )を指定する方法
セキュリティ DNS