FreeBSD 14
Sponsored Link

Fail2Ban : 侵入防止システム2024/09/09

 

侵入防止システム (Intrusion Prevention System) Fail2Ban のインストールと設定です。

[1] Fail2Ban をインストールします。
root@dlp:~ #
pkg install -y py311-fail2ban whois
# パケットフィルターを有効にする

root@dlp:~ #
sysrc pf_enable="YES"

root@dlp:~ #
sysrc pflogd_enable="YES"

root@dlp:~ #
sysrc pf_rules="/etc/pf.conf"

root@dlp:~ #
vi /etc/pf.conf
# 新規作成

set skip on lo
scrub in
anchor "f2b/*"
root@dlp:~ #
service pf start
[2] デフォルトの設定は [/usr/local/etc/fail2ban/jail.conf] で定義されています。
デフォルト値はパッケージのアップデートで変更となる可能性があるため、設定を変更したい場合は [jail.local] ファイルを作成して変更します。
root@dlp:~ #
vi /usr/local/etc/fail2ban/jail.conf
# 87行目 : 自身のローカル IP は無視する
#ignoreself = true

# 92行目 : 無視するネットワークを追加可能
#ignoreip = 127.0.0.1/8 ::1

# 103行目 : 対象ホストを禁止する時間
# - 単位は秒
# - 1m ⇒ 1 分
# - 1h ⇒ 1 時間
# - 1d ⇒ 1 日
# - 1mo ⇒ 1 か月
# - 1y ⇒ 1 年
bantime  = 10m

# 107行目 : 設定時間内にしきい値を超えると対象ホストを禁止する
findtime  = 10m

# 110行目 : 失敗回数が設定値を超えると対象ホストを禁止する
maxretry = 5

# 178行目 : メール通知する場合の宛先アドレス
destemail = root@localhost

# 181行目 : メール通知する場合の送信元アドレス
sender = root@<fq-hostname>

# 263行目 : デフォルトのアクション
# - %(action_)s ⇒ 禁止のみ
# - %(action_mw)s ⇒ 禁止とメール通知 (Whois 情報含む)
# - %(action_mwl)s ⇒ 禁止とメール通知 (Whois 情報とログ含む)
action = %(action_)s


root@dlp:~ #
vi /usr/local/etc/fail2ban/jail.local
# 新規作成
# デフォルト値を上書きしたい場合は設定可
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
banaction = pf[actiontype=<multiport>]
banaction_allports = pf[actiontype=<allports>]
bantime  = 1d
findtime  = 5m
maxretry = 5
destemail = root@localhost
sender = root@dlp.srv.world

root@dlp:~ #
service fail2ban enable

fail2ban enabled in /etc/rc.conf
root@dlp:~ #
service fail2ban start

Server ready
[3] 特定のサービスを監視する場合は設定を追加します。(デフォルトは未設定)
例として、SSH サービスを監視対象として設定します。
root@dlp:~ #
fail2ban-client status

Status
|- Number of jail:      0
`- Jail list:

root@dlp:~ #
vi /usr/local/etc/fail2ban/jail.d/sshd.conf
# 新規作成
[sshd]
enabled = true

# サービス毎にデフォルト値を上書き可
bantime  = 600
findtime  = 3m
maxretry = 5
action = %(action_mw)s

root@dlp:~ #
service fail2ban reload

OK
# サービスの状態を表示

root@dlp:~ #
fail2ban-client status sshd

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

# しきい値を超えたホストが禁止された状態

root@dlp:~ #
fail2ban-client status sshd

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     5
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   10.0.0.203

# 実際の禁止アクションは pf で制御

root@dlp:~ #
pfctl -a f2b/sshd -s rules

block drop quick proto tcp from <f2b-sshd> to any port = ssh
root@dlp:~ #
pfctl -a f2b/sshd -t f2b-sshd -T show

   10.0.0.203

# メール通知を有効にしている場合は以下のようなメールが送信される

root@dlp:~ #
s-nail

you have mail
s-nail version v14.9.24.  Type `?' for help
/var/mail/root: 3 messages 3 unread
 U  2 Fail2Ban           2024-09-09 10:45   21/529   [Fail2Ban] sshd: started on dlp.srv.world
 U  3 Fail2Ban           2024-09-09 10:47   40/1045  [Fail2Ban] sshd: banned 10.0.0.203 from dlp.srv.world

& 3
[-- Message  3 -- 40 lines, 1045 bytes --]:
Subject: [Fail2Ban] sshd: banned 10.0.0.203 from dlp.srv.world
Date: Mon, 09 Sep 2024 10:47:59 +0900
From: Fail2Ban <root@dlp.srv.world>
To: root@localhost
Message-Id: <20240909014759.AAB9A200B3@dlp.srv.world>

Hi,

The IP 10.0.0.203 has just been banned by Fail2Ban after
5 attempts against sshd.


Here is more information about 10.0.0.203 :
.....
.....
[4] 禁止ホストを手動で追加/削除したい場合は以下のように実行します。
root@dlp:~ #
fail2ban-client status sshd

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     5
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   10.0.0.203

# [10.0.0.203] の禁止を解除する

root@dlp:~ #
fail2ban-client set sshd unbanip 10.0.0.203

1
root@dlp:~ #
fail2ban-client status sshd

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     5
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 0
   |- Total banned:     1
   `- Banned IP list:

# [10.0.0.192/28] の禁止を追加する

root@dlp:~ #
fail2ban-client set sshd banip 10.0.0.192/28

1
root@dlp:~ #
fail2ban-client status sshd

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     5
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     2
   `- Banned IP list:   10.0.0.192/28

# 禁止ホストを全て解除する場合は以下

root@dlp:~ #
fail2ban-client unban --all

[5] [jail.conf] には SSH 以外のサービスも多数の事前定義があるため、定義名を指定することで監視対象に設定可能です。
root@dlp:~ #
grep '^\[' /usr/local/etc/fail2ban/jail.conf | tail -n +3

[sshd]
[dropbear]
[selinux-ssh]
[apache-auth]
[apache-badbots]
[apache-noscript]
[apache-overflows]
[apache-nohome]
[apache-botsearch]
[apache-fakegooglebot]
[apache-modsecurity]
.....
.....

# 例として Apache2 の Basic 認証を設定

root@dlp:~ #
vi /usr/local/etc/fail2ban/jail.d/apache-auth.conf
# 新規作成

[apache-auth]
enabled = true
bantime  = 600
findtime  = 3m
maxretry = 5
action = %(action_mw)s

# 例として Vsftpd を設定

root@dlp:~ #
vi /usr/local/etc/fail2ban/jail.d/vsftpd.conf
# 新規作成

[vsftpd]
enabled = true
action = %(action_mw)s

# 例として Postfix SASL を設定

root@dlp:~ #
vi /usr/local/etc/fail2ban/jail.d/postfix-sasl.conf
# 新規作成

[postfix-sasl]
enabled = true
action = %(action_mw)s

root@dlp:~ #
service fail2ban reload
root@dlp:~ #
fail2ban-client status

Status
|- Number of jail:      4
`- Jail list:   apache-auth, postfix-sasl, sshd, vsftpd

# 適当に認証失敗して動作確認

root@dlp:~ #
fail2ban-client status apache-auth

Status for the jail: apache-auth
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     10
|  `- File list:        /var/log/httpd/error_log
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   10.0.0.5

root@dlp:~ #
pfctl -a f2b/apache-auth -t f2b-apache-auth -T show

   10.0.0.5

root@dlp:~ #
fail2ban-client status vsftpd

Status for the jail: vsftpd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     5
|  `- File list:        /var/log/vsftpd.log
`- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   10.0.0.203

root@dlp:~ #
pfctl -a f2b/vsftpd -t f2b-vsftpd -T show

   10.0.0.203
関連コンテンツ