sshguard

又是一篇遲來的文章。
但是還是寫一下免得被人一問再問。
如果成天看到有相同 IP 沒事在那邊一直狂 try ssh login 的,
可以裝個 sshguard 直接搞定。

FreeBSD 的裝法非常簡單,
假設系統用的防火牆是 pf,
就直接去 /usr/ports/security/sshguard-pf 裝。
裝完去 /etc/syslog.conf 把檔頭被註解起來的那行打開就行了。
沒意外的話應該是長這樣:

再來就先做個 /etc/rc.d/syslogd reload,
然後在 /etc/pf.conf 加點東西:

最後做 /etc/rc.d/pf reload 就完成了。

Gentoo 的裝法大同小異。
先 emerge sshguard,
然後裝的 syslog daemon 如果是 syslog-ng 的話,
就去 /etc/syslog-ng/syslog-ng.conf 補這兩行:

然後 /etc/init.d/syslog-ng reload。
防火牆的部分需要用 iptables 來設定:

理論上這樣設定就差不多了。
但是如果是很多人在使用這台機器的話,
建議寫個 /etc/friends 檔來放可以信任的 IP 列表。
因為天底下手殘到把自己密碼連續敲錯 N 次的大有人在,
還是設個保險避免 ban 到自己人的 IP 比較好。
列表的形式可以用 192.168.0.0/16 這種寫法,
也可以直接記單一 IP 來列。

如果決定做這列表的話,
FreeBSD 的 syslog.conf 那行要改成:

Gentoo 的 syslog-ng.conf 那行要改成:

反正就是補個 -w 的參數就是了。

但是很遺憾的一點是...
如果 log 看到的是每 try 完一個帳號就換一次 IP 來,
sshguard 就毫無用武之地。

sshguard 其實不單只是能拿來偵測和封鎖 ssh service,
其實 imap / pop3 之類的也是可以,
但是重點就是 log 要想辦法讓它吃到。
這個我就沒有特別去研究了。
但是建議上防火牆那邊用 sshguard 擋的 ports 最好一次列多點,
畢竟要 try 帳號密碼也能從 imap / pop3 那邊狂 try。