当服务器上线一段时间,您能够在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,大功告成,全文完。