###fail2banによりBANされているはずなのにSSH接続できる?
Linux初心者です。
自分でWebサーバーを構築してみようと思い立ち、VPSを契約して環境を整えることから始めました。
まずは最低限のセキュリティを・・・ということで諸々の設定の後にfail2banをインストールし、コピーした[/etc/fail2ban/jail.local]に
[sshd] # To use more aggressive sshd modes set filter parameter "mode" in jail.local: # normal (default), ddos, extra or aggressive (combines all). # See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details. #mode = normal enabled = true #この行だけ追記 port = ssh logpath = %(sshd_log)s backend = %(sshd_backend)s
上記だけ追記してreloadしてから、軽く動作確認をしてみることにしました。
SSHクライアントから適当なユーザー名で接続を試みると[/var/log/fail2ban.log]に無事にログが出力されました。
デフォルトの設定のままなので、続けて5回ログインに失敗すると
2020-04-22 20:47:09,503 fail2ban.filter [9563]: INFO [sshd] Found XXX.XXX.XXX.XXX - 2020-04-22 20:47:09 2020-04-22 20:47:21,361 fail2ban.filter [9563]: INFO [sshd] Found XXX.XXX.XXX.XXX - 2020-04-22 20:47:20 2020-04-22 20:47:25,612 fail2ban.filter [9563]: INFO [sshd] Found XXX.XXX.XXX.XXX - 2020-04-22 20:47:25 2020-04-22 20:47:33,361 fail2ban.filter [9563]: INFO [sshd] Found XXX.XXX.XXX.XXX - 2020-04-22 20:47:32 2020-04-22 20:47:38,611 fail2ban.filter [9563]: INFO [sshd] Found XXX.XXX.XXX.XXX - 2020-04-22 20:47:38 2020-04-22 20:47:38,739 fail2ban.actions [9563]: NOTICE [sshd] Ban XXX.XXX.XXX.XXX
このようにしっかりとBANしてくれているようにも見えます。が、BANされていてるはずなのに普通にログインできてしまうのです。
私の認識ではBANされた後に接続しようとすると、接続の拒否等の挙動をしてくれると考えていたのですが・・・
現状のbanactionの記述は以下の通りなのですが
[DEFAULT] banaction = iptables-multiport banaction_allports = iptables-allports
CentOS7より、FW管理ツールが[iptables]から[firewalld]に変更されたということで、この辺りが怪しいと睨んでいるのですが如何でしょうか。
(互換性はあるような記載もどこかで見つけたので見当違いですかね)
学が浅いので原因の追い方もわからず苦労しています。知恵を貸していただきたいです。
補足情報(fail2banインストール前にやったこととか)
■サーバ:ConoHa VPS ■OS:CentOS 8.1.1911 ■クライアント:TeraTerm
systemctl status fail2ban
⇒ Active:active (running)
fail2ban-client status
⇒ Jail list: sshd
fail2ban.logには特にエラーログは無し
- 一般ユーザー追加
- ユーザーにsudo権限付与
- OS日本語化
- パッケージ更新
- SSH鍵認証設定
- rootログイン禁止
- パスワードログイン禁止
- SSHポート番号変更
- EPELインストール
- fail2ban導入
ipsetについて調べてみた結果
回答いただいたヒントを元に、BANされた後にipset list
コマンドを実行しても何も出力されませんでした。
そもそもbanactionとは指定された名前の[/etc/fail2ban/action.d/<banaction名>.conf]の内容を実行する。ということが理解できていませんでした。
[DEFAULT]でbansctionに指定されていた[iptables-multiport.conf]と[iptables-allports.conf]のactionstartの内容を確認してみると
actionstart = <iptables> -N f2b-<name> <iptables> -A f2b-<name> -j <returntype> <iptables> -I <chain> -p <protocol> -j f2b-<name>
BANされた時にこのコマンドが実行されるようですが、これでipsetにBANされたIPが登録されるということがいまいち繋がりませんでした。
感覚的にはfirewallcmd-ipset.conf内の
actionstart = ipset create <ipmset> hash:ip timeout <bantime><familyopt> firewall-cmd --direct --add-rule <family> filter <chain> 0 <actiontype> -m set --match-set <ipmset> src -j <blocktype>
此方の方がipsetに登録してくれるような気がしてbanaction = firewallcmd-ipset
に変更した後にBANさせてipset list
を実行してみましたが、結局何も出力されず。
firewallcmd-ipsetでは<ipmset>という名前のセットを作成してくれるようですが、そもそも<ipmset>とはどこで定義されているのでしょうか・・・
回答1件
あなたの回答
tips
プレビュー