當服務器上線一段時間,您能夠在auth.log中發現大量的ssh掃描記錄,採用密匙登錄後,在ssh安全上已經沒有多大的顧慮,不爽的是這些人在不斷的浪費服務器的資源。有關ssh密匙登錄請看freebsd下的ssh安全防禦這篇文章。在該文的尾部我提到過能夠利用sshguard來鎖定ssh掃描,下面將詳細講解sshguard結合ipfw的安裝及配置。html
在freebsd 7.3(/8) release下,sshguard是根據不一樣的防火牆採用不一樣的包:安全
www[/usr/ports/security]# ls -G | grep sshguard
sshguard
sshguard-ipfilter
sshguard-ipfw
sshguard-pf
請根據您系統中防火牆的規則選擇不一樣的安裝包,本文將主要講解sshguard + ipfw,所以:服務器
# cd /usr/ports/security/sshguard-ipfw
#make install clean;
安裝完以後獲得以下結果:ssh
##########################################################################
Sshguard installed successfully.tcpVerify that IPFW is active with "ipfw show".spa
Your /etc/syslog.conf has been added a line for sshguard; uncomment it
and use "/etc/rc.d/syslogd reload" for activating it..netSee sshguard(8) and http://sshguard.sourceforge.net for additional info.
##########################################################################htm
接下來須要配置sshguard:blog
#touch /var/log/sshguard.fifo
# vi /etc/syslog.conf
在文件中添加以下的兩行(若是已經存在則無需添加,注意前面不要有「#」):進程
auth.info;authpriv.info |exec /usr/local/sbin/sshguard
auth.info;authpriv.info |/var/log/sshguard.fifo
重啓syslogd:
#/etc/rc.d/syslogd reload
或者#killall -HUP syslogd
啓動sshguard:
#cat /var/log/sshguard.fifo | /usr/local/sbin/sshguard &
查看是否啓動成功:
#top
#若是進程中有 sshguard,則說明啓動成功。也能夠查看auth.log記錄:
#cat /var/log/auth.log,若是有下列的信息,則說明啓動成功:
Dec 22 12:35:06 www sshguard[18212]: Started successfully [(a,p,s)=(4, 420, 1200)], now ready to scan.
須要注意的是sshguard的ipfw規則編號是從55000到55050,而ipfw採用第一匹配原則,也就是規則一旦匹配生效後就不會再往下匹配。所以,若是你的ssh放行規則在55000以前,將使得sshguard添加的ipfw規則失效,解決的辦法是把ssh的ipfw規則放到55050後面:
#vi /etc/ipfw.conf
$cmd 60000 allow tcp from any to any dst-port 22 in via $pif setup limit src-addr 2
#我這裏的規則設置爲ipfw add 60001 allow tcp from any to me 22 in
ipfw add 60002 allow tcp from any to me 80 in
ipfw add 60003 allow tcp from me 22 to any out
ipfw add 60004 allow tcp from any to me 9000 in
千萬須要注意的是ipfw的總拒絕規則號必須在ssh放行規則以後,不然您將把本身鎖在外面!
別忘記了從新載入ipfw規則:
#sh /etc/ipfw.conf
重啓看可否用ssh遠程鏈接服務器,OK,大功告成,全文完。