【Linux】ブルートフォース攻撃対策とログサイズ制限
こんにちは、フリーランスエンジニアの太田雅昭です。
今回の背景
このブログは、現在GCEで動かしています。容量をできるだけギリギリにしているのですが、なぜか容量が増える増える。ログにしても増えすぎだろうと。何回か調査はしていたのですが、今回根本的に解決できたかもしれないので、残しておきます。
どこで容量を食っているか確認する
下記のコマンドで確認できます。ChatGPT様様です
sudo du -h --max-depth=1 / | sort -rh | head -10
/varや/snapが肥大化していました。/varで確認すると、/var/logが肥大化していました。
$ sudo du -h --max-depth=1 /var/log
1.1G /var/log/journal
116K /var/log/apt
4.0K /var/log/private
4.0K /var/log/landscape
4.0K /var/log/dist-upgrade
6.3M /var/log/sysstat
3.8M /var/log/nginx
4.0K /var/log/chrony
100K /var/log/unattended-upgrades
120K /var/log/letsencrypt
1.2G /var/log
journalは、systemdのjournalログだそうです。これが原因の可能性が高いです。
内容を見てみます。
journalctl -n 50
下記のようなログが目立ちました。
Mar 30 15:35:58 sshd[2283]: Received disconnect from 218.92.0.196 port 18920:11: [preauth]
Mar 30 15:36:03 sshd[2345]: Received disconnect from 222.186.57.226 port 60376:11: Bye Bye [preauth]
Mar 30 15:37:07 sshd[2547]: Received disconnect from 218.92.0.196 port 15459:11: [preauth]
sshに対するブルートフォース攻撃のようです。これが、かなりの量を占めているようです。
ブルートフォース攻撃対策
不正アクセスをブロックするために、Fail2Banを入れます。
sudo apt update && sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
sudo systemctl restart ssh
しばらくしてから、状況を確認してみます。
$ sudo fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 6
| |- Total failed: 21
| `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd
`- Actions
|- Currently banned: 1
|- Total banned: 2
`- Banned IP list: 31.133.205.10
正常にBanできているようです。
ログサイズを制限
まずは設定ファイルを開きます。
sudo nano /etc/systemd/journald.conf
下記を書き換えます。今回、500Mに制限しました。
SystemMaxUse=500M
変更を反映します。
sudo systemctl restart systemd-journald
これで、ひとまず処置が完了しました。またしばらく、様子を見たいと思います。