個人レンタルしているVPSに対してrootでのログイン試行が鬱陶しいのでFail2Banを入れてみることにしました。
Fail2Banを早速入れてみる
dnf(yum)で入れる事もできるようですが、最新版はgitから入れるらしいです
https://github.com/fail2ban/fail2ban
以下のコマンドで導入します(rootユーザーで実行しました)
cd /opt
git clone https://github.com/fail2ban/fail2ban.git
cd fail2ban
python setup.py install
以上でインストールは完了。以下のコマンドでヘルプが表示されます。
fail2ban-client -h
以下のコマンドでサービスを起動します
ディストリビューションごとにスクリプトが別れているため、適切なものをコピーする必要があります
自分の場合、「CentOS Linux release 7.9.2009 (Core)」なので、redhat用をコピーしました
cp files/redhat-initd /etc/init.d/fail2ban
service fail2ban start
サービス起動後、バージョン確認コマンドが発行できます
fail2ban-client version
Fail2Banでsshdログインをブロックする
導入が完了したので、実際にFail2Banを利用してsshdアクセスをブロックします
以下のブログを参考にさせていただきました
https://www.mechatronahibi.com/ssh-fail2ban/
vi /etc/fail2ban/jail.local
記入内容
[sshd]
enabled = true
bantime = 3600
findtime = 20
maxretry = 3
クライアントをリスタートして有効化します
fail2ban-client restart
エラー発生
2022-11-17 07:50:49,518 fail2ban [21167]: ERROR Failed during configuration: Have not found any log file for sshd jail
残念ながら上記エラーが表示されてしまいました。エラーメッセージに従ってエラーを修正します。
StackExchangeによると、単純にsshdのログへのパスが間違っているようなので、今回は直接confを修正することにしました
# 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
port = ssh
# logpath = %(sshd_log)s
logpath = /var/log/secure
backend = %(sshd_backend)s
修正後、起動してみます
fail2ban-client start
warningが出ましたが、今回は無視で・・・
2022-11-17 07:59:32,949 fail2ban.configreader [24029]: WARNING 'allowipv6' not defined in 'Definition'. Using default one: 'auto'
Server ready
ほんとにブロックできているか確認してみる
fail2banを確認してみます
tail -F /var/log/fail2ban.log
2022-11-17 07:59:37,236 fail2ban.filter [24032]: INFO [sshd] Found 159.223.103.26 - 2022-11-17 07:59:37
2022-11-17 07:59:46,050 fail2ban.filter [24032]: INFO [sshd] Found 191.55.54.77 - 2022-11-17 07:59:46
2022-11-17 07:59:56,674 fail2ban.filter [24032]: INFO [sshd] Found 197.50.231.196 - 2022-11-17 07:59:56
2022-11-17 08:00:22,511 fail2ban.filter [24032]: INFO [sshd] Found 20.102.27.117 - 2022-11-17 08:00:21
検知はできているようです。ただ、毎回IPが変わっているため、現時点ではブロックするに至っていないようですね
以上です
今回はFail2Banを導入してみたというお話でした
業務でFail2Banを利用するかという話が出てきて、そこで初めて存在を知ったので使ってみました。(結局、仕事では要件が合わずに採用はお流れになりました)
導入、設定も思ったよりも簡単に行えました。自分がブロックされなように注意が必要ですね!