Fail2banの導入
新しいサーバーの方に大事な大事なFail2banの導入を忘れていました。
Fail2banは、ユーザーID・パスワードなどを総当りで滅多打ちし、運よく当たれば入り込んじゃおうとしている不定の輩を追い払うオマジナイみたいなものです。
特にsasl認証は、リアルマイムでmaillogを流してみると、1秒間に数回、ひどいときは10回以上のアタックがあります。
不定の輩が不正アクセスを試みている動画です。。。
目で追えないほどのスピードで流れて行きます。💦💦
Fail2banとはナニするものぞ?
Fail2banは設定時間内に設定回数の認証エラーを起こしたIPアドレスを設定時間アクセス拒否しちゃいます。
更に、1日に5回以上banされたIPアドレスは、1週間の出禁!などという設定も可能です。
そんな不定の輩は永遠にBANしちゃいたいところなのですが、永久追放したIPアドレスがプロバイダからDHCPで割り振られていた場合、振り直されたときは素通りしてしまいますし、さらに前のIPアドレスが振り直された次のユーザーを永久追放してしまうことになります。。。
Fail2banには多くのjailフィルターが入っており、postfixやdovecot・dns・mysql・apache関連などはもちろんのこと、びっくりしたのは、先日のRoundcubemailとかWebminなんてのもあったりします。
拙生は以前は必要最小限のsaslauthとsshの2つだけを利用していましたが、今回は見つけたRoundcubemailを含めた10個のjailフィルターを稼働対象としてみました。
使用コマンドなど
リアルタイムでメールサーバーへの不正アタックを見る
tail -f /var/log/maillog
最新の10行しか表示しないので20行表示に
taik -f -n 20 /var/log/maillog
fail2banをインストール
dnf install fail2ban systemctl start fail2ban.service systemctl enable fail2ban.service
設定ファイルは
/etc/fail2ban/jail.conf
実際に設定を編集するのはこちら。
/etc/fail2ban/jail.local
最初の頃はjail.confを直接編集をしていましたが、どぉやら一緒においてあるjail.localに書き込むとオーバーライドされる仕組みになっていて、jail.confから必要項目をjail.localにコピーしてから編集することが推奨されているようだと気づきました。💦
ま、オリジナルの設定ファイル必ずバックアップ取るのが基本ですから、グジャグジャにしてしまい、にっちもさっちも行かなくなっても、復帰はできますけどね。笑笑
推奨通り/etc/fail2ban/jail.localでオーバーライドさせて、[sshd] と[postfix-sasl]を編集してみます。
vim /etc/fail2ban/jail.local [sshd] [DEFAULT] ignoreip = 127.0.0.1/8 192.168.0.0/24 bantime = 3600 findtime = 600 maxretry = 5 [sshd] enabled = true port = ssh filter = sshd maxretry = 3 bantime = 60m [postfix-sasl] enabled = true filter = postfix[mode=auth] port = smtp,465,submission,imap,imaps,pop3,pop3s [vsftpd] enabled = true [recidive] enabled = true port = ssh,smtp,465,submission,imap,imaps,pop3,pop3s findtime = 1d maxretry = 3 bantime = 1w
こんな感じです。
個別設定していない項目は、デフォルトが適用され、600秒の間にに5回の不正アクセスがあったIPアドレスを、3600秒BANする設定でになっています。
ローカルのIPアドレスなど、BANの対象から除外するIPアドレスをignoreipに登録しておきます
各jailフィルターは enabled = true と書き加えることで稼働します。
[postfix-sasl]にbantimeやfindtime・maxretryがありませんが、jail.localになければjail.confのものが適用され、そこにもなければディフォルト設定が適用されます。
[vsftpd]はすべてをjail.localやディフォルトの設定のままで稼働させただけです。
で、再犯を繰り返すどぉしようもない輩には、きついお仕置きが待っています。
[recidive]には1日に3回BANしたら、登録してあるポートには1週間の出禁となる設定がされています。
* jail.confやディフォルトにに同じ設定があれば、変更したい部分の記述だけでOKです。
稼働項目の確認
fail2ban-client status Status |- Number of jail: 10 `- Jail list: apache-auth, cyrus-imap, mysqld-auth, named-refused, nsd, postfix, postfix-sasl, roundcube-auth, sshd, vsftpd
10個のjailフィルターが enabled = true になっていました。
不正アクセスやbanしたもの(saslauth)
fail2ban-client status postfix-sasl Status for the jail: postfix-sasl |- Filter | |- Currently failed: 10 | |- Total failed: 106385 | `- Journal matches: _SYSTEMD_UNIT=postfix.service _SYSTEMD_UNIT=postfix@-.service `- Actions |- Currently banned: 5 |- Total banned: 13 `- Banned IP list: 81.30.107.199 81.30.107.92 81.30.107.198 87.106.77.61 85.215.238.158
banしたときの相手への所作など、詳細設定もありますが、とりあえずインストールして、必要なjailフィルターをenabled = trueで稼働させるだけでも大活躍してくれるので、欠かせない重要ツールの一つであります。
実際、sshdとpostfix-sasl以外は enabled = true としているだけです。
最後にBANしたIPアドレスの解除方法です。
fail2ban-client set <jail名> unbanip <IPアドレス> 例 fail2ban-client set postfix-sasl unbanip ***.123.456.789
もも三昧
久方ぶりのトリミングでフタ周り小さくなって帰ってきました。w
一週間くらいは慣れないかな。。。
連れ合いインスタグラム
拙生のインスタ ⇒ こちら
(要ログイン)