4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

とあるお客様から、「メールやsshで不正アクセスを試みているログが多く、本当に必要なログが見つけにくい。」
というお話があったそうです。
で、「ログを抑制」するのもアリなのですが、もう少し踏み込んで、
不正アクセスを試みた相手のIPアドレスからの通信を一定期間ブロックするためのソフトウェアであるfail2banを導入しましょう。

fail2ban 導入

fail2banのインストール

yum install epel*
yum install fail2ban

fail2banのサービス起動、自動起動有効化

systemctl start fail2ban.service
systemctl enable fail2ban.service

fail2banの設定

設定ファイルのディレクトリはこちらになります。```

cd /etc/fail2ban

設定ファイルはjail.confなのですが、直接編集するのではなく、.localファイルを作成して設定をオーバーライドするのが推奨されていますので、そのようにします。

jail.local(新規作成)

ignoreip = 127.0.0.1/8

# 24時間以内に3回不審なアクセスがあったら24時間BAN
bantime  = 86400
findtime  = 86400
maxretry = 3

#CentOS7なのでsystemd
backend = systemd

# メール通知時の設定(ご自分の環境に合わせて)
destemail = nisitand@host185.net2.localnet
sender = root@host185.net2.localnet
mta = postfix

# SSHのアクセスに対する設定
[sshd]
enabled = true
banaction = firewallcmd-ipset
       sendmail-whois[name=SSH, dest=nisitand@host185.net2.localnet, sender=fail2ban@host185.net2.localnet, sendername="Fail2Ban"]#メール通知(任意)

# Postfixのアクセスに対する設定
[postfix-sasl]
enabled = true
banaction = firewallcmd-ipset
            sendmail-whois[name=SMTP, dest=nisitand@host185.net2.localnet, sender=fail2ban@host185.net2.localnet, sendername="Fail2Ban"]#メール通知(任意)

※メールアドレスはローカル環境のものです。

action.d/firewallcmd-common.conf(修正:54行目付近)

BANしたときの動作(Action)を定義する設定を一部変更します。デフォルトの動作ではBANした相手に拒否(Reject)していることを伝える設定となっていますが、そんなに親切にしてやる必要はないので破棄(DORP)に動作を変更します。

# Option:  blocktype (ipv4/ipv6)
# Notes    See iptables/firewalld man pages for jump targets. Common values are REJECT,
#          REJECT --reject-with icmp-port-unreachable, DROP
# Values:  STRING
#blocktype = REJECT --reject-with <rejecttype>★コメントアウト
blocktype = DROP★追加

fail2banのテスト

SMTPのテスト

自分の端末からtelnetコマンドで25に接続し、エラーになるSMTP認証コマンドをたたきます。

HELO host150.net2.local
AUTH LOGIN
AUTH LOGIN
quit

このような感じで応答が帰ってきます。

220 host185.net2.local ESMTP Postfix
250 host185.net2.local
334 ***********
535 5.7.8 Error: authentication failed: bad protocol / cancel

これを3回繰り返すと、BANされます。

/var/log/maillogにも、このようなログが記録されます。

Sep  8 11:16:34 host185 postfix/smtpd[2123]: warning: unknown[192.168.2.150]: SASL LOGIN authentication failed: bad protocol / cancel

仮に、このログの場合はBANする対象から外したい、などの要望があった場合は、
filter.d/postfix.conf
を修正すれば良さそうです。

SSHのテスト

こちらはTeratermでssh接続(22/TCP)の時に、でたらめなユーザID、パスワードでログイン失敗すればよいですね。(ほかのパターンの失敗も考えられますが、とりあえず)
BANされるログの条件については、
filter.d/sshd.conf
を見ていただければと思います。

BAN対象の確認

もちろん、パケットを捨てられるのでアクセスがすべてタイムアウトになるのですが、BANの対象を確認する方法を記載します。

# fail2ban-client status postfix-sasl
Status for the jail: postfix-sasl
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     16
|  `- Journal matches:  _SYSTEMD_UNIT=postfix.service
`- Actions
   |- Currently banned: 1
   |- Total banned:     2
   `- Banned IP list:   192.168.2.150

この場合はBanned IP list に192.168.2.150(テスト端末のIPアドレス)が入っていることがわかります。

sshの場合も同様です。

# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     11
|  `- Journal matches:  _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
   |- Currently banned: 0
   |- Total banned:     2
   `- Banned IP list:   192.168.2.150

fail2banの運用

banされているIPアドレス確認

上のテストの際にも実行しましたが、このようになります。

fail2ban-client status [Jail名]

Jail名については、今回のsshd(ssh)、postfix-sasl(smtp)が該当します。

banの解除

fail2ban-client set [Jail名] unbanip [IPアドレス]

[Jail名]については、先の項目と同じでbanしてしまったJail名を入れます。
[IPアドレス]はbanされてしまったIPアドレスをxxx.xxx.xxx.xxxのに入れます。

ためしに

先のテストでbanされたテスト端末をBan解除してみましょう。

# fail2ban-client set postfix-sasl unbanip 192.168.2.150
1
# fail2ban-client status postfix-sasl
Status for the jail: postfix-sasl
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     16
|  `- Journal matches:  _SYSTEMD_UNIT=postfix.service
`- Actions
   |- Currently banned: 0
   |- Total banned:     2
   `- Banned IP list:

これで間違ってbanしても大丈夫ですね。では

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?