2009/11/29

sshguard - 封鎖可疑攻擊 IP

sshguard 透過監控系統記錄檔,封鎖可疑的 IP 連線。與 SSHBlock 不同之處在於,監控的系統記錄檔不僅限於 ssh,因此雖然名為 sshguard,但實際上也可監控 dovecot, proftpd, ftpd 等服務。此外,sshguard 除了支援 TCP Wrappers 封鎖之外,還支援 unix-like system 常見的防火牆,例如 pf, netfilter/iptables, IPFIREWALL/ipfw, IPFILTER 等等。

sshguard 的 ports 路徑為 security/sshgurad/,若要搭配 pf 使用,則可直接到 security/sshguard-pf/ 目錄下安裝。其他還有 security/sshguard-ipfilter/, security/sshguard-ipfw/,端視欲搭配的防火牆而定。以下以搭配 pf 為例:

在 security/sshguard-pf/ 目錄下執行 make install clean 之後,最後顯示的操作提示:

Sshguard installed successfully.

To activate or configure PF see http://sshguard.sf.net/doc/setup/blockingpf.html

Your /etc/syslog.conf has been added a line for sshguard; uncomment it
and use "/etc/rc.d/syslogd reload" for activating it.

See sshguard(8) and http://sshguard.sourceforge.net for additional info.

因為是使用 pf 進行封鎖,因此需要先建立 sshguard 使用的 table,以便 sshguard 將可疑 IP 加入。pf 的設定方式可參考 sshguard 官方網站中的 Set up PF firewall

安裝完成後,/etc/syslog.conf 內新增的設定如下:

#auth.info;authpriv.info |exec /usr/local/sbin/sshguard

只要將該行的註解取消,輸入 /etc/rc.d/syslogd reload 重新啟動 syslogd 便可啟用 sshguard。

啟動成功之後,在 /var/log/auth.log 裡應可看到以下訊息:

Nov 28 13:25:16 myserver sshguard[86019]: Started successfully [(a,p,s)=(4, 420, 1200)], now ready to scan.


/etc/syslog.conf 設定時的注意事項

  1. 在設定 /etc/syslog.conf 時,原本的 auto.info;authpriv.info 不要註解掉,否則 /var/log/auth.log 會看不到記錄。

  2. 新加入的 sshguard 設定要放在原本的上方。

  3. 新的設定中的 |exec /usr/local/sbin/sshguard,在 |exec 中間不能有空白。


完整的設定如下:

auth.info;authpriv.info |exec /usr/local/sbin/sshguard
auth.info;authpriv.info /var/log/auth.log


由於 sshguard 是透過 syslogd 去執行,而系統開機時會自動啟動 syslogd,因此只要 /etc/syslog.conf 有設定好,系統開機時 sshguard 就會自動執行,不需進行其他的設定。

另外 sshguard 有支援白名單功能,只需以 -w 指定白名單設定即可。可支援的的格式有 IPv4 或 IPv6 位址、主機名稱、網段(以 CIDR 表示)或是將清單放入純文字檔案中亦可。範例如下:

# specify one address straight:
-w 192.168.1.10
# specify several addresses:
-w 192.168.1.10 -w 192.168.1.23 -w 12.13.14.15
# specify one host name straight:
-w friendhost.enterprise.com
# specify several different host names:
-w friendhost.enterprise.com -w friend2.enterprise.com
# whitelist addresses from 192.168.0.1 to 192.168.0.255
-w 192.168.0.0/24
# whitelist addresses 192.168.0.1-255 PLUS 1.2.3.128 to 1.2.3.191
-w 192.168.0.0/24 -w 1.2.3.128/26
# whitelist in file X
-w /full/path/to/X
# put all together
-w /etc/friends -w 192.168.1.0/24 -w mktn.enterprise.com



參考資料

沒有留言:

張貼留言