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
一週間くらいは慣れないかな。。。

 

 
連れ合いインスタグラム
拙生のインスタ ⇒ こちら
(要ログイン)

HOME

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)