初めに
サーバーのログを見たことがある方は、何度も繰り返し行われる不正なログイン試行やその他の攻撃的ログを目にしたことがあるかもしれません。
グローバルに公開されているサーバーに対して上記の様な悪意のある試みが行われる事はもはや日常と言って良いのではないでしょうか?
エンジニアにとって日々の脆弱性の確認や対応、セキュリティの強化は必須となっております。
侵入防止を導入する事でセキュリティリスクを低める事が可能となっております。
そこで今回はAlmaLinuxにFail2banを導入する方法についてご紹介致します。
Fail2banとは?
Fail2banは「侵入防止ソフトウエア」となります。
具体的な機能は一定期間内にログイン失敗した接続元をブロックするソフトウエアです。
Fail2banを導入する事でパスワード解読などを狙った総当たり攻撃のリスクを低める事が出来ます。
Fail2banを導入する
それではAlmaLinuxにFail2banを導入していきます。
今回使用するOSは「AlmaLinux9」となります。
AlmaLinux9ではdnfを使用してインストールする事が出来ます。
下記コマンドを実行しインストールを行います。
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の設定を行います。
ail2banの設定ファイルは以下のパス内に格納されております。
/etc/fail2ban/
デフォルトの「jail.conf」を書き換える事は推奨されていない為、「jail.local」を作成し設定してきます。
vi /etc/fail2ban/jail.local
今回は「sshd」「vsftpd」「postfix」「dovecot」「apache」「mysql」の項目を有効化します。
下記の様に記述する事で設定可能です。
[DEFAULT]
maxretry = 5
findtime = 600
bantime = 1h
[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
上記では10分間に5回ログインに失敗した場合、1時間ブロックする設定としました。
基本的には「DEFAULT」を使用しルールの適応をおこなっております。
検知回数やブロック期間等は各項目内でも設定可能です。
またログのパスやポート等の指定はデフォルト設定まま使用しています。
自動起動設定
次に自動起動設定を行います。
下記を実行し自動起動を有効化します。
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」に表示されていれば正常に監視されております。
最後に動作確認を行い完了となります。