SASLへの辞書攻撃対策としてfail2banを導入
ここしばらくからメールサーバーに対しての辞書攻撃が激しくなってきました。
Apr 21 04:18:52 www11118ui postfix/smtpd[21283]: warning: unknown[103.231.139.127]: SASL LOGIN authentication failed: UGFzc3dvcmQ6
どうしたものかと調べていたら「fail2ban」を皆さん採用されているので、今回導入してみました。
目次
インストール
いつものごとく
#yum install fais2ban
これで下記のファイルが展開されます。
# ls -al /etc/fail2ban/drwxr-xr-x 2 root root 4096 4月 27 00:48 2019 action.d
-rw-r--r-- 1 root root 2313 2月 18 03:17 2017 fail2ban.conf
drwxr-xr-x 2 root root 4096 2月 18 03:17 2017 fail2ban.d
drwxr-xr-x 3 root root 4096 4月 27 00:29 2019 filter.d
-rw-r--r-- 1 root root 21280 2月 18 03:17 2017 jail.conf
drwxr-xr-x 2 root root 4096 4月 27 01:11 2019 jail.d
-rw-r--r-- 1 root root 2375 12月 9 23:36 2016 paths-common.conf
-rw-r--r-- 1 root root 642 12月 9 23:36 2016 paths-debian.conf
-rw-r--r-- 1 root root 769 2月 18 03:17 2017 paths-fedora.conf
-rw-r--r-- 1 root root 1174 12月 9 23:36 2016 paths-freebsd.conf
-rw-r--r-- 1 root root 975 12月 9 23:36 2016 paths-opensuse.conf
-rw-r--r-- 1 root root 290 12月 9 23:36 2016 paths-osx.conf
各設定情報はjail.confに入っていますので、必要な処理を有効にします。
※今回はpostfix-saslを有効にしました。
ただ、jail.confを直接編集するのでなく、下記のファイルを作成し差分の設定を上書きするようにします。
1)jail.localファイルを作成する
2)jail.d/local.confファイルを作成する
今回は2)のlocal.confファイルを作成していくことにしました。
設定を有効にしましょう
jail.d/local.confファイルを作成しました。
[postfix-sasl]
enabled = true # 有効にする
maxretry = 3 # findtime内で3回検出したらBANする
jail.confにBAN時間(bantime:600秒)と検出期間(findtime:600秒)が設定されています。
[recidive]
enabled = true # 有効にする
maxretry = 3 # 3回BANされたら一週間BANする
jail.confにBAN時間(bantime:604800秒)と検出期間(findtime:86400秒)が設定されています。
fail2banの出力ログですが、別にログを出力されてる例を見かけますが、今回はデフォルトのままで、syslog(/var/log/message)に出力しています。
必要でしたら、fail2ban.conにlogtargetを変更してください。
fail2banを起動しましょう
# /etc/rc.d/init.d/fail2ban start
動作状況はこんな感じで確認します。
# fail2ban-client status postfix-sasl
Status for the jail: postfix-sasl
|- Filter
| |- Currently failed: 3
| |- Total failed: 15
|
- File list: /var/log/maillog
- Actions
|- Currently banned: 0
|- Total banned: 6
`- Banned IP list:
またiptableでも確認ができます。
Chain f2b-recidive (1 references)
target prot opt source destination
DROP all -- 103.231.139.146 anywhere
DROP all -- 103.231.139.127 anywhere
DROP all -- 103.231.139.79 anywhere
DROP all -- 185.137.111.37 anywhere
DROP all -- 185.137.111.162 anywhere
DROP all -- 103.231.139.248 anywhere
RETURN all -- anywhere anywhere
注意点
iptableの設定にf2b-recidiveってチェーンを付けて動作しています。
そのため、iptableを再起動、または再読込した場合、fail2banの設定が消えてしまいます。
この場合、fail2banも再起動するようにしてください。