PortSentry
不幸的是,跟上系统安全的步伐可能是乏味的。管理员必须随时了解软件的更新以及最新的系统入侵技术。由于这项任务的艰巨性,系统安全通常没有得到维护,并且在许多方面都存在不足。系统入侵报告数量的增加就说明了这一点。当我发现 Psionic Software, Inc. 提供的免费软件工具 PortSentry 和 Logcheck 时,这种困境对我来说发生了改变。在几分钟内,就可以安装和配置这些工具,从而显著提高系统安全性。
一旦主机成为攻击者的目标,几乎总是会执行端口扫描。端口扫描的目的是暴露目标主机上所有可用的服务,并为入侵尝试提供起点。PortSentry 通过监视主机上未使用的端口来检测此类扫描。一旦尝试连接到未使用的端口之一,PortSentry 就会收到警报,并能够发出许多命令来响应扫描。发出的命令由管理员在配置文件中配置。尽管可以使用任何命令,但最有帮助的命令是路由命令,该命令通过拒绝来自该地址的所有流量,从本质上“黑洞”攻击者主机的 IP 地址。违规行为和 PortSentry 采取的相应操作会记录在系统日志中。使用另一个 Psionic 实用程序 Logcheck,这些安全警报会以指定的间隔通过电子邮件发送给管理员。因此,主机现在不仅能够自动反击潜在的入侵尝试,而且还能够通知管理员发生的情况。
这些免费软件实用程序的安装和配置非常简单明了。它们可以在大多数操作系统上编译,包括 Linux、Solaris 和 FreeBSD。以下安装使用的系统是使用 Red Hat Linux 7.0 的基于 x86 的 Web 服务器。这些工具可以从 Psionic 的网站下载 (www.psionic.com/tools/)。
截至本文撰写时,tarball 的最新版本是 Logcheck 1.1.1 和 PortSentry 1.0。首先,我们将安装和配置 PortSentry。解压存档并进入 PortSentry-version 目录。如果需要,请阅读 README.install 文件以了解所有可用的配置选项。键入 make <<I>systype> (其中 systype 是以下之一:linux、bsd、solaris、hpux、hpux-gcc、freebsd、openbsd、netbsd、bsdi、aix、osf 或 generic)。然后使用 make install(可以通过编辑 Makefile 更改安装目录)。
接下来,我们将安装 Logcheck。首先,解压存档并进入 Logcheck-version 目录。然后阅读 INSTALL 文件以了解所有可用的配置选项(如果需要)。键入 make <<I>systype> (其中 systype 是以下之一:linux、bsdos、freebsd、sun、generic、hpux 或 digital)。最后,键入 make install(可以通过编辑 Makefile 更改安装目录)。
我们现在将编辑 /usr/local/psionic/portsentry/portsentry.conf 文件以启用路由丢弃。找到并取消注释与您的操作系统对应的 KILL_ROUTE 选项。在我们的示例中,我们将使用 Linux 内核版本 2.102+ 中找到的 ipchains 实用程序
KILL_ROUTE="/sbin/ipchains -I input -s $TARGET$ -j DENY -l
这将丢弃来自攻击者 IP 地址的所有数据包,并记录未来的连接尝试。现在必须在配置文件中指定要监视的各个端口。常用的端口已经给出,可以简单地取消注释,具体取决于系统需要的安全级别
TCP_PORTS="1,11,15,79,111,119,143,540,635,1080,1524,2000,5742,6667, 12345,12346,20034,31337,32771,32772,32773,32774,40421,49724, 54320"UDP_PORTS="1,7,9,69,161,162,513,635,640,641,700,32770,32771, 32772,32773,32774,31337,54321"
然而,在我们的示例 Linux 系统上,我们将使用 PortSentry 的高级隐身扫描检测模式,该模式将默认自动监视低于 1024 的未使用端口。此值也可以更改,但不建议更改。当使用这种高级模式时,也可以手动排除端口
# 默认 TCP ident 和 NetBIOS 服务ADVANCED_EXCLUDE_TCP="113,139"# 默认 UDP 路由 (RIP)、NetBIOS、bootp 广播。ADVANCED_EXCLUDE_UDP="520,138,137,67"
一旦我们主机的所有服务都已启动,现在就可以启用 PortSentry 了。首先,我们启动 TCP 端口监视器(对于非 Linux 系统,省略 -atcp 开关)
/usr/local/psionic/portsentry/portsentry -atcp
跟踪我们的系统日志将给出以下输出
Dec 1 14:23:20 hostname portsentry[18821]:adminalert: 高级隐身扫描检测模式已激活。已忽略 TCP 端口:80Dec 4 14:23:20 hostname portsentry[18821]:adminalert: PortSentry 现在已激活并正在监听。
将显示忽略的 TCP 端口列表,然后确认 PortSentry 已激活。然后,如果需要,我们启动 UDP 端口监视器(同样,对于非 Linux 系统,省略 -audp 开关)
/usr/local/psionic/portsentry/portsentry -audp
再次跟踪我们的系统日志将给出以下输出
Dec 1 14:23:20 hostname portsentry[18821]:adminalert: 高级隐身扫描检测模式已激活。已忽略 UDP 端口:137Dec 4 14:23:20 hostname portsentry[18821]:adminalert: PortSentry 现在已激活并正在监听。
将显示忽略的 UDP 端口列表,然后确认 PortSentry 已激活。命令可以放在启动脚本中,但应始终在所有其他服务都处于活动状态后初始化。在此示例中,我们将上述命令行包含到 /etc/rc.d/rc.local 中。PortSentry 采取的所有操作都将记录在系统日志中。
现在 PortSentry 正在运行,我们将配置 Logcheck,以便通过电子邮件将主机遇到的任何可疑网络活动通知管理员。编辑 /usr/local/etc/logcheck.sh 以包含管理员的电子邮件地址
"mailto:SYSADMIN=your_administrator@yourdomain.com"
最后,将 Logcheck 命令放入 cron 脚本中,以便以最适合您操作的间隔解析系统日志。在本示例中,我们将间隔设置为一小时。通过键入 crontab -e 打开 crontab 进行编辑,并将以下行放入 crontab
0 * * * * /usr/local/etc/logcheck.sh > > /dev/null
主机现在已配置为检测入侵尝试并做出反应,并通知管理员此类尝试,所有操作都是完全自动化的(请参阅列表 1)。
使用 Psionic Software, Inc. 的这款免费软件,系统安全不再是一件苦差事。我的系统已经使用这些免费软件安全实用程序九个月了,它们的性能一直完美无缺。在我们最初使用这些实用程序时,我惊讶地发现 24 小时内发生了如此多的入侵尝试。配置非常全面,并且可以灵活地构建您自己的网络安全策略。我已经为企业设置了数十个网关/防火墙系统,并将这些实用程序纳入了我们的标准安装中。感谢 Psionic,管理员现在有了两个更强大的系统安全工具。
Anthony Cinelli 是 IT 咨询和服务公司 A Reality Technologies, LLC (位于加利福尼亚州圣莫尼卡 www.areality.com/) 的总裁/首席技术官。可以通过 acinelli@areality.com 与他联系。