Fail2banで不正なアクセスをブロック(CentOS8)

vps
Christine SponchiaによるPixabayからの画像

Fail2banとは

Fail2banはログファイル( / var / log / auth.log)をスキャンし、失敗したログイン試行が多すぎるIPアドレスを禁止します。

Fail2ban公式サイト / GitHub
環境
  • CentOS 8.2
  • Apache 2.4.37
  • PHP 7.4

インストール

$ dnf install fail2ban

設定

すべての.confファイルは、.localという名前のファイルで上書きできます。 .confファイルが最初に読み取られ、次に.localが読み取られ、その後の設定が以前の設定を上書きします。 したがって、.localファイルには、対応する.confファイルにすべてを含める必要はなく、オーバーライドしたい設定のみを含める必要があります。

Manual08-Fail2ban
ログレベルの設定

設定ファイルの/etc/fail2ban/fail2ban.confを直接編集せずに、/etc/fail2ban/fail2ban.localを新規作成。

# vi /etc/fail2ban/fail2ban.local

ログレベルを必要最小限にするため追加。

[Definition]
loglevel = NOTICE

初期値の”INFO”を”NOTICE”に変更することで、Ban(ブロック)やUnban(ブロック解除)の処理のみが記録されるようになる。

ルールの編集

設定ファイルの/etc/fail2ban/jail.confを直接編集せずに、/etc/fail2ban/jail.localを新規作成。

# vi /etc/fail2ban/jail.local

新規追加。

[DEFAULT]
# 1日(findtime)に3回失敗アクセスがあったら1日(bantime)BANする設定 
bantime = 1d 
findtime = 1d 
maxretry = 3

#
# ACTIONS
#

backend = systemd
#メール通知時の設定
destemail = info@example.com
sender = fail2ban@example.com

banaction = firewallcmd-ipset
banaction_allports = firewallcmd-allports

#
# JAILS
#

#SSHの設定
[sshd]
enabled = true
port = 2222 # ポートを変えていたら追記する

#Postfixの設定
[postfix-sasl]
enabled = true
action = %(action_mw)s # BANされたIPアドレスのWHOIS情報をメール送信

ver.0.10以降は時間値に秒だけでは無く、1s (1秒), 1m (1分), 1h (1時間), 1d (1日), 1mo (1ヶ月), 1y (1年)のような単位付きの書き方ができるようになった。

action =
BAN を適用する際のアクションを指定出来る。
%(action_)s にするとBAN処理のみ。
%(action_mw)s にすると該当 IPアドレスと whois情報をE-Mail通知とBAN処理。
%(action_mwl)s にすると該当 IPアドレスと whois情報に加えて該当ログも添えて E-Mail 通知とBAN処理。

BANされたパケットをドロップ(破棄)する設定

iptables-common.localを新規作成。

# vi /etc/fail2ban/action.d/iptables-common.local

新規追加。

[Init]
blocktype = DROP

blocktype初期値はREJECT(拒否)で攻撃者側に拒否を返答するため、DROPに変更する。

Fail2ban起動

# systemctl start fail2ban

Fail2banの自動起動をオン。

# systemctl enable fail2ban

確認

# fail2ban-client status postfix-sasl
Status for the jail: postfix-sasl
|- Filter
| |- Currently failed: 2
| |- Total failed: 556
| `- Journal matches: _SYSTEMD_UNIT=postfix.service
`- Actions
|- Currently banned: 15
|- Total banned: 25
`- Banned IP list: 45.95.xxx.xx 94.102.xx.xxx 212.70.xxx.xx 
......

BANの解除

fail2ban-client set ルール名 unbanip IPアドレス

IPアドレス「94.102.xx.xxx」を「sshd」のBANから解除する場合。

# fail2ban-client set sshd unbanip 94.102.xx.xxx

指定IPアドレスを手動でBAN

fail2ban-client set ルール名 banip IPアドレス

バージョン確認

# fail2ban-client version
0.11.1
タイトルとURLをコピーしました