sshguard
sshアタック仕掛けてくるIPアドレスを自動でブロックするやつ
sudo iptables -L sshguard でブロックしたの確認できる?
sudo nft list set ip sshguard attackers になったっぽい
tailscaleとLAN内以外塞いでもいい気がするけど
----
ChatGPT.iconにまとめてもらったカスタマイズ
sshguard セグメント(/24など)を恒久ブロックする(nftables set 追加)
sshguard の backend が sshg-fw-nft-sets の場合、攻撃元IPは nftables の set に追加される(基本はIP単位)。
セグメント(/24など)でまとめて恒久ブロックしたい場合は、sshguardとは別に「手動ブロック用 set」を作って blacklist chain で drop する。
現状確認
code:sh
sudo nft list table ip sshguard
例
code:text
table ip sshguard {
set attackers {
type ipv4_addr
flags interval
}
chain blacklist {
type filter hook input priority filter - 10; policy accept;
ip saddr @attackers drop
}
}
手動ブロック用 set を作る(1回だけ)
※ { } はシェル解釈されるのでクォート必須
code:sh
sudo nft add set ip sshguard manual_block '{ type ipv4_addr; flags interval; }'
確認
code:sh
sudo nft list set ip sshguard manual_block
セグメントを追加する(いつでも)
/24 の例
code:sh
sudo nft add element ip sshguard manual_block '{ 45.148.10.0/24 }'
複数まとめて
code:sh
sudo nft add element ip sshguard manual_block '{ 45.148.10.0/24, 80.94.92.0/24, 91.224.92.0/24, 92.118.39.0/24 }'
blacklist chain にルール追加(1回だけ)
sshguard の attackers より先に評価させる
code:sh
sudo nft insert rule ip sshguard blacklist ip saddr @manual_block drop
確認
code:sh
sudo nft -a list chain ip sshguard blacklist
最終構成
code:text
table ip sshguard {
set attackers {
type ipv4_addr
flags interval
}
set manual_block {
type ipv4_addr
flags interval
}
chain blacklist {
type filter hook input priority filter - 10; policy accept;
ip saddr @manual_block drop
ip saddr @attackers drop
}
}
処理順
code:text
packet
↓
manual_block (/24等)
↓
attackers (sshguard自動BAN)
↓
accept
セグメントBAN削除
code:sh
sudo nft delete element ip sshguard manual_block '{ 45.148.10.0/24 }'
補足
sshguardは
ログから攻撃検知
IP単位の一時BAN
のツール
/24 や /16 などの恒久ブロックは nftables の set を別途持つ方が運用しやすい
#linux