我之前已介绍了fail2ban和logcheck这两款工具可以扫描日志,并且根据你创建/修改的规则,采取相应的操作;你通常可以修改iptables规则,阻止针对你服务器发动的主动攻击,或者要是日志里面发现什么异常,就发警示信息给你。
今天我们来介绍一款类似的工具sshguard,它与上面另外两款工具的不同之处在于,它是用C编写的,所以它在运行时占用的内存和处理器资源比较少,但仍能收到同样的效果。
那么,sshguard又有什么样的本领呢?
简单地说,它可以接收日志消息,可以根据日志消息来检测网络服务何时遭到攻击,并且阻止服务攻击者的地址;一段时间过后,它会解禁。
完整地说,sshguard在机器上作为一个很小的后台驻留程序来运行,能够接收日志消息(可接收来自诸多途径的消息,比如来自系统日志)。如果它确定了X地址对Y服务造成危害,就会启动机器里面防火墙(注:防火墙须得到支持)中的规则,以阻止X地址。
shguard阻止X地址的状态会保持一段时间,但是之后会自动解禁。
请注意:尽管名称很容易让人误解,但是sshguard在默认情况下能够阻止针对许多服务的攻击,不仅仅是针对SSH的攻击,还能针对几种ftpd、Exim和dovecot等服务的攻击。它能够适用于各大防火墙系统,并且提供对IPv6、白名单、悬挂和消息验证等功能的支持。
安装
sshguard采用宽容的BSD许可证来发行:你可以使用、修改和再发行软件,风险自负,可以用于任何环境(包括商业环境),但前提是你得保留在里面发现的原始版权通知。软件在最常用的GNU/Linux发行版的主存储库中发行,面向某个*BSD系统,但是你也可以从下载页面(http://www.sshguard.net/download/)下载源代码。
要把sshguard安装到Debian(或Ubuntu等.deb其他发行版)上,只要从终端运行下列命令:
sudo aptitude install sshguard
#p# 设置和配置
Sshguard与系统相连的点有两个:
•日志系统(sshguard如何接收需要监控的日志消息)
•防火墙(sshguard如何阻止异常的地址)
自版本1.5以后,sshguard就随带Log Sucker(http://www.sshguard.net/docs/setup/getlogs/log-sucker/)。借助Log Sucker,SSHGuard可以积极主动地获取日志条目,并且透明地处理一些事件,比如轮转日志文件以及文件消失和重现。
在官方的说明文档页面(http://www.sshguard.net/docs/setup/),附有针对许多不同防火墙的操作说明,我将遵照netfilter/iptables的操作说明。
sshguard并没有配置文件。需要完成的所有配置就是在iptables的INPUT链中创建一个名为“sshguard”的链,sshguard就会自动插入规则,丢弃来自坏主机的数据包:
# for regular IPv4 support:(针对普通的IPv4支持功能)
iptables -N sshguard
# if you want IPv6 support as well:(如果你还想要获得IPv6支持功能)
ip6tables -N sshguard
现在,更新INPUT链,以便它能将所有流量传送到sshguard,用–dport指定你想用sshguard来保护的服务的所有端口。如果你想阻止攻击者将任何流量发送到主机,只要完全删除这个选项即可:
# block any traffic from abusers(阻止来自攻击者的任何流量)
iptables -A INPUT -j sshguard
ip6tables -A INPUT -j sshguard
-- or --
# block abusers only for SSH, FTP, POP, IMAP services (use "multiport" module)(阻止攻击者,只允许SSH、FTP、POP和IMAP服务,使用“multiport”模块)
iptables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguard
ip6tables -A INPUT -m multiport -p tcp --destination-ports 21,22,110,143 -j sshguard
如果你目前没有使用iptables,只想让sshguard建立并运行起来,又不对你的系统造成任何进一步的影响,下面这些命令就会创建并保存iptables配置,除了允许sshguard运行外,绝不会进行任何操作:
# iptables -F
# iptables -X
# iptables -P INPUT ACCEPT
# iptables -P FORWARD ACCEPT
# iptables -P OUTPUT ACCEPT
# iptables -N sshguard
# iptables -A INPUT -j sshguard
# /etc/rc.d/iptables save
小结
要让基本安装的sshguard建立并运行起来,只要完成上面这几个步骤,它会帮助你让你的ssh、ftp及其他后台驻留程序更安全一点。
原文链接:http://linuxaria.com/recensioni/protect-your-server-with-sshguard?lang=en