天天看點

保護SSH的利器

由于伺服器開放着SSH協定,經常在網際網路上會有一些莫名的“駭客”在掃描我伺服器的22端口并試圖登入,這給伺服器安全帶來了很多的隐患。如何保障SSH的安全,自然成為了我們管理者工作的重中之重。 ­

BSD的Ports系統收錄了N多的 SSH保護軟體,其中有denyhosts,sshit,sshguard,file2ban(ports中無此項)等,起初,我用denyhosts來 阻擋SSH的惡意登入,發現它是調用TCP wrapper來實作的,感覺上并不是太好。後來,無意間發現了SSHguard,它可以結合BSD系統内置的防火牆(IPFW、PF、IPFILTER)來過濾SSH登入,非常不錯。實作過程如下: ­

1)安裝SSHguard ­

# cd /usr/ports/security/sshguard-pf 

# make install distclean 

2)删除syslogd裡的注釋,啟動SSHguard ­

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

3)重新加載syslogd ­

# /etc/rc.d/syslogd reload 

如看到以下資訊,證明成功啟動 ­

Nov 20 08:00:01 test sshguard[54247]: Started successfully [(a,p,s)=(4, 420, 1200)], now ready to scan. 

4)在PF裡加入以下規則,即可

# Define Tables for SSH 

table <sshguard> persist 

block in quick on $ext_if proto tcp from <sshguard> to any port 22 label "ssh bruteforce" 

看日志,已經有人試圖登入,被SSHguard阻止了,帥吧

Nov 20 03:56:44 test sshd[52381]: Invalid user globus from 88.191.121.114 

Nov 20 03:56:47 test sshd[52383]: Invalid user condor from 88.191.121.114 

最後,屏蔽所有人對我伺服器外網口的icmp探測 (Default PF rules is block all) ­

pass out inet proto icmp all icmp-type $icmp_types keep state label "allow ping" 

注意哦,是pass out,而非pass in,這樣,内網使用者依然可以檢測與外網的通訊,而外網使用者無法探測我伺服器外網口是否存活。

檢視SSH阻擊清單

#pfctl -tsshguard -Tshow

59.63.157.63

109.123.126.166

116.125.127.120

123.212.43.243

125.250.249.34

174.123.157.66

182.18.29.190

195.49.134.149

202.170.126.6

218.240.1.117

218.241.155.13

221.132.34.138

哇,這麼多IP被block了

本文轉自dongfang_09859 51CTO部落格,原文連結:http://blog.51cto.com/hellosa/540041,如需轉載請自行聯系原作者

繼續閱讀