先日、TCP Wrapperでsshdへのアクセス制限を実施しました。
実はこの設定の許可IPはISPなどのIPブロックも許可にしてあります。
この許可IPからの不正アクセスが無いとは言えないので、この部分をfail2banでブロックします。
設定は下記の記事を参照して下さい。
- ルールの作成
- jail.local設定
- fail2ban再起動
- 確認
デフォルトで用意されている/etc/fail2ban/filter.d/sshd.confを使用してもいいのですが、フィルタが多いとリソースを消費しそうなので新たに作成(/etc/fail2ban/filter.d/sshd-local.conf)しました。
と言ってもルールを削除しただけですが。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[INCLUDES] before = common.conf [Definition] _daemon = sshd failregex = ^%(__prefix_line)spam_unix\(sshd:auth\):\s+authentication failure;\s*logname=\S*\s*uid=\d*\s*euid=\d*\s*tty=\S*\s*ruser=\S*\s*rhost=<HOST>\s.*$ ignorerege = [Init] journalmatch = _SYSTEMD_UNIT=sshd.service + _COMM=sshd |
/etc/fail2ban/jail.localにルールを追加します。
取り敢えず2分間に2回ログインに失敗すると24時間、そのIPを拒否します。
ただ、私が外出先から繋いだ時に2回失敗すると同様にブロックされます(^^;
1 2 3 4 5 6 7 8 |
[sshd-root] enabled = true port = ssh bantime = 86400 findtime = 120 maxretry = 2 logpath = %(sshd_log)s backend = %(sshd_backend)s |
1 |
# systemctl restart fai2ban |
1 2 3 4 5 6 7 8 9 10 |
# fail2ban-client status sshd-local Status for the jail: sshd-local |- Filter | |- Currently failed: 0 | |- Total failed: 0 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 0 |- Total banned: 0 `- Banned IP list: |