CentOS Stream 9 + firewalld + SSHGuardで不正な攻撃を自動ブロック

FreeBSDでSSHGuardを導入したのをCentOSのサーバーでもやったときの覚書。
Gemini 2.5 Proに教えてもらっている。

環境: CentOS Stream 9, SSHGuard 2.4.2-7.el9


1.firewalldをインストールして設定

このサーバーはサービス提供ホストのファイヤーウォールに頼っていたので、firewalldをインストールするところから。
# dnf install firewalld

firewalldを起動
# systemctl start firewalld
# systemctl status firewalld

firewalldが再起動したときでも有効になっているか確認。
# systemctl list-unit-files -t service

firewalldの登録内容確認、サービスの確認。
# firewall-cmd --list-all
# firewall-cmd --list-services

この段階ではhttpとhttpsが遮断されているはず。
運用しているウェブサイトをブラウザで表示して確認。

firewalldへサービスの削除と登録。
# firewall-cmd --get-services
# firewall-cmd --remove-service=cockpit --permanent
# firewall-cmd --add-service=http --permanent
# firewall-cmd --add-service=https --permanent
# firewall-cmd --reload
# firewall-cmd --list-services

運用しているウェブサイトが表示できるか確認。


2.SSHGuardをインストールして設定

dnfでインストール。
# dnf install sshguard

sshguard-firewalldもインストールされる。
設定を確認。
# less /etc/sshguard.conf

THRESHOLD=20
BLOCK_TIME=1200
DETECTION_TIME=1800

BLACKLIST_FILE=/var/lib/sshguard/blacklist

# Blacklist Threshold: 何回ブロックされたら永久ブロック(ブラックリスト入り)にするかの閾値。
# デフォルトは3。非常に厳しくする場合は2に設定します。
BLACKLIST_THRESHOLD=3

WHITELIST_FILE=/etc/sshguard.whitelist

サンプルが「BLACKLIST_FILE=90:/var/lib/sshguard/blacklist」になっているのは古い形式で、「90:」の部分はブラックリストに登録する閾値らしい。

設定メモ

  • THRESHOLD=20: 2回パスワードを間違えただけでブロックされるようになります。
  • BLOCK_TIME=1200: ブロック時間をデフォルトの2倍に延長します。
  • BLACKLIST_THRESHOLD=3: 3回ブロックされた攻撃元は、永久にアクセスできなくなります。

ホワイトリストの編集。
# vi /etc/sshguard.whitelist

# 1行に1つのIPアドレスまたはCIDR形式のネットワークを記述
127.0.0.0/8
192.168.0.0/24
192.xxx.xx.xxx     # Webrec Office in Kawaguchi

sshguardを起動して再起動後も有効にする。
# systemctl start sshguard
# systemctl enable sshguard
# systemctl status sshguard


3.動作確認

リアルタイムにログを監視
# journalctl -u sshguard -f


GoogleのCloud ShellからSSH接続を試してみると失敗。
telnet xxx.xxx.xx.x 22
が失敗するので、ホストのファイヤウォール設定を見てみたら、事務所のIPアドレスしかSSHを許可してなかった。

確かにこのサーバーは緊急メンテナンスするようなサーバーでない。


だからsshguardとfirewalldは削除する。
# systemctl stop sshguard
# systemctl stop firewalld

# dnf remove sshguard
# dnf remove firewalld



▼ 関連記事