Fail2Ban で Raspberry Pi の SSH への攻撃をブロックしたときのメモ

RaspberryPi

概要

リモートからラズパイにアクセスするためにSSH Server のポートを開放していますが、ログを見ているとそれなりに攻撃をされていることがわかりました。パスワードでのログインは無効にしているので、無視すればよいのですが、気持ち悪いので Fail2Banを設定してみました。

$ journalctl _COMM=sshd | grep "Invalid user"
Aug 11 09:23:53 pi4col sshd[1105]: Invalid user blank from 183.67.43.194 port 44130
Aug 11 09:44:30 pi4col sshd[1118]: Invalid user pi from 199.76.38.123 port 36840
Aug 11 09:44:30 pi4col sshd[1119]: Invalid user pi from 199.76.38.123 port 36844
Aug 11 09:45:33 pi4col sshd[1122]: Invalid user Admin from 138.75.192.20 port 52632
Aug 11 10:07:10 pi4col sshd[1197]: Invalid user blank from 61.83.254.100 port 38377
Aug 11 10:26:35 pi4col sshd[1268]: Invalid user nosubject from 152.136.41.3 port 55696
Aug 11 10:28:44 pi4col sshd[1270]: Invalid user admin from 121.7.26.195 port 50064
Aug 11 10:49:04 pi4col sshd[1282]: Invalid user babs from 81.70.27.122 port 45998
Aug 11 10:49:11 pi4col sshd[1284]: Invalid user zookeeper from 46.191.141.152 port 35283
...

Fail2Banとは?

Fail2Banとはアクセスログをチェックして、総当たり攻撃などで何度もログインエラーを出しているアドレスをBANしてくれるツールです。今回はSSHの不正アクセスをBANしてもらいます。

試した環境

Raspberry Pi 5 8GB RAM
Raspberry Pi OS

$ cat /proc/cpuinfo | grep Model
Model		: Raspberry Pi 5 Model B Rev 1.0

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
NAME="Debian GNU/Linux"
VERSION_ID="12"
VERSION="12 (bookworm)"
VERSION_CODENAME=bookworm
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Fail2Banのインストール方法

apt でインストールできます。

$ sudo apt install fail2ban

最初から ssh用の設定が入っているのですが、そのままでは起動しませんでした。
どうやら sshd のログファイルを見つけられていないようです。

~ $ systemctl status fail2ban
× fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Fri 2024-08-30 17:19:18 JST; 5min ago
   Duration: 134ms
       Docs: man:fail2ban(1)
    Process: 856603 ExecStart=/usr/bin/fail2ban-server -xf start (code=exited, status=255/EXCEPTION)
   Main PID: 856603 (code=exited, status=255/EXCEPTION)
        CPU: 123ms

Aug 30 17:19:18 rpi5 systemd[1]: Started fail2ban.service - Fail2Ban Service.
Aug 30 17:19:18 rpi5 fail2ban-server[856603]: 2024-08-30 17:19:18,447 fail2ban.configreader   [856603]: WARNING 'allowipv6' not defined in 'Definition'. Using default one: 'auto'
Aug 30 17:19:18 rpi5 fail2ban-server[856603]: 2024-08-30 17:19:18,459 fail2ban                [856603]: ERROR   Failed during configuration: Have not found any log file for sshd jail
Aug 30 17:19:18 rpi5 fail2ban-server[856603]: 2024-08-30 17:19:18,466 fail2ban                [856603]: ERROR   Async configuration of server failed
Aug 30 17:19:18 rpi5 systemd[1]: fail2ban.service: Main process exited, code=exited, status=255/EXCEPTION
Aug 30 17:19:18 rpi5 systemd[1]: fail2ban.service: Failed with result 'exit-code'.

設定を変更します。sshd 向けの設定があるので、末尾に backend = systemd を追記します。
これで fail2ban が起動するようになりました。

$ sudo vi /etc/fail2ban/jail.d/defaults-debian.conf
[sshd]
enabled = true
backend = systemd

$ sudo systemctl start fail2ban

$ sudo systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
     Active: active (running) since Sat 2024-08-31 22:55:11 JST; 1s ago
       Docs: man:fail2ban(1)
   Main PID: 88859 (fail2ban-server)
      Tasks: 5 (limit: 9252)
        CPU: 345ms
     CGroup: /system.slice/fail2ban.service
             └─88859 /usr/bin/python3 /usr/bin/fail2ban-server -xf start

Aug 31 22:55:11 rpi5 systemd[1]: Started fail2ban.service - Fail2Ban Service.
Aug 31 22:55:11 rpi5 fail2ban-server[88859]: 2024-08-31 22:55:11,842 fail2ban.configreader   [88859]: WARNING 'allowipv6' not defined in 'Definition'. Using default one: 'a>
Aug 31 22:55:12 rpi5 fail2ban-server[88859]: Server ready

Jail が有効になっているか確認します。

 $ sudo fail2ban-client status
Status
|- Number of jail:      1
`- Jail list:   sshd

しばらく放置した後にログを見てみると、Ban されているのがわかります。UnBanまでの時間が10分だとゆるいかもしれませんが、その辺は様子を見て調整しようと思います。

$ cat /var/log/fail2ban.log | grep actions
2024-09-01 01:27:58,207 fail2ban.actions        [1933]: NOTICE  [sshd] Ban 198.144.156.34
2024-09-01 01:37:57,651 fail2ban.actions        [1933]: NOTICE  [sshd] Unban 198.144.156.34
2024-09-01 06:38:21,777 fail2ban.actions        [1933]: NOTICE  [sshd] Ban 45.118.144.54
2024-09-01 06:48:21,934 fail2ban.actions        [1933]: NOTICE  [sshd] Unban 45.118.144.54
2024-09-01 21:14:53,796 fail2ban.actions        [1933]: NOTICE  [sshd] Ban 222.65.9.218
2024-09-01 21:24:53,941 fail2ban.actions        [1933]: NOTICE  [sshd] Unban 222.65.9.218
Yahboom Raspberry Pi 5 アクリルケース 公式 Raspberry Pi 5 アクティブクーラーと互換性があり、Raspberry Pi 5 4GB/8GB に適しており、開発ボードを保護する Raspberry Pi 5 アクリルケース
この 5 層アクリル ケースは Raspberry Pi 5 用に特別に作られており、Raspberry Pi ボード上のすべてのコンポーネントを効果的に保護します。 透明な素材は見た目の美しさを高めるだけでなく、Wi-Fi と Bluet...
ゲーム&ウオッチ スーパーマリオブラザーズ (【Amazon.co.jp限定】ゲーム&ウオッチ オリジナルピンズ 同梱)
ゲーム&ウオッチ スーパーマリオブラザーズ (【Amazon.co.jp限定】ゲーム&ウオッチ オリジナルピンズ 同梱)
UGREEN M.2 SSD 外付けケース-M.2 NVME/PCIE SSD ケース USB C 3.2 Gen 2接続 UASP対応 10Gbps高速転送速度 アルミ制 8TB容量対応 M.2 NVMe to USB 変更 2230 2242 2260 2280(M-Key M&B Key) SSD対応 ssd 外付けケース 【NVME/PCIE専用】
このM.2 SSD 外付けケースはUSB 3.0接続又はUASPも対応しており、10Gbpsの転送規格で快適にデータを転送できます。堅牢性に優れたABSとアルミ合金を採用したボディデザインにより、耐久性が期待できるM.2 SSD 外付けケー...
Geekworm USB-C 電源アダプター PD 27W Type C、Raspberry Pi 5に適用
Geekworm Raspberry Pi 5 電源、 USB C (Type C) PD27W 電源アダプター ;
uxcell ソケットキャップヘッド M2.5 x 20mm メトリック 12.9合金鋼製 六角ネジボルト ブラック 10個
説明: 特徴:M2.5 x 20mm六角穴付きボルト、12 . 9合金鋼材。 固定部品、産業と建設のファスナー。 家の中、オフィスや工場の機器、通信機器、船の組立と他の機械工業で広く使われている。
Geekworm X1002 V1.1 PCIe NVMe M.2 SSD 2280拡張ボード、Raspberry Pi 5に適用
梱包内容: 1*X1002 NVMe M.2 SSD拡張ボード
プリンストン 内蔵 SSD 1TB PCIe Gen 3.0 x4 NVMe 連続読み取り最大2350MB/秒 M.2 2280 3D NAND メーカー保証期間3年 EPHD-ISM2-1T
■容量(※1):1TB ■フォームファクター:M.2 2280 ■インターフェイス:PCIe 3.0x4 NVMe ■コントローラー:Phison PS5013-E13T ■NANDフラッシュ:3D NAND ■連続読み取り/書き込み(最大...
Geekworm Raspberry Pi 5 ケース、アーマーアルミ金属ケース、冷却ファンが付き、ラズベリーパイ5に適用
Geekworm Raspberry Pi 5 ケース、アーマーアルミ金属ケース、冷却ファンが付き、ラズベリーパイ5に適用

コメント