简介
这篇文章主要是关于适用于Linux的几种基于主机的***检测系统。特别的,我们将会覆
盖一些怎么安装这些软件包的要素,已经它们的用处和什么时候能够用到这些东西。
系统安全101
本文将为大家展示一些基础的系统安全知识。特别的,我假设很多常见的安全措施已经
被用来抵抗来自Internet对主机的***。这些安全措施主要是:
防火墙,确定了系统的来自Internet的用户对哪些TCP或者UDP端口有访问的权限。例如
:我们通过一些很简单的Web Server防火墙的规则设置,就可以确定这台机器只有用来
提供http服务的80端口向用户开放。
系统是不需要没有用处的守护进程的。例如:一个Web服务器一般只需要一个正在运行的
进程来服务Web页面。进程并不是就是和服务与Web页面相关联的,譬如RPC/Portmap服务
,NFS服务,X Font服务,DNS域名服务,其他外来的或者是没有什么用处的应用软件应
该被关掉或者是禁用。在Red Hat Linux的系统中,通常我们用一种运行等级的编辑器来
进行有关的设置,譬如我们可以用ntsysv 或者tksysv来禁用其中的那些没有要求的守护
进程。
通过编辑和修改/etc/inetd.conf可以屏蔽一些不用的端口。作为一个典型的默认值,我
们安装一个新的Linux系统的时候,/etc/inetd.conf默认的打开了很多端口。所有的系
统都应该通过编辑/etc/inetd.conf,删除或者是注释掉其中的一些行,用来禁用那些没
有用处的端口,这是最基本的系统安全行为。
警戒线(Lines of Defense):
图解一、多层系统安全
这一部分,我们将讨论一个多层通道的系统安全问题。当其中一些安全层被破坏的时候
,很多安全层能够独立的应用来提供一些额外的防卫。图1就是一种多层结构的系统安全
模型。
图表中的每一层都会为自己的上一层提供额外的数据保护。例如:第一层是防火墙,如
果防火墙没有阻挡住外界的***尝试,那么第二层-端口守护程序就会提供额外的保护。
进一步,里面的安全系统是LIDS和LogCheck程序,在***尝试没有被第二层截获的时候
也会进行保护。
监控当前连接
防火墙后的第一防护层是用来监控当前与主机的连接尝试的软件包。端口守护程序包(
http://www.psionic.com/abacus/portsentry/ )提供了一些简洁和有用方式来完成这些
事情。
端口守护(PortSentry)程序的作用
端口守护程序的主要作用监控一些特殊的TCP/IP端口的活动情况。PortSentry监视并报
告一些端口的活动,其中的一种情况可能被选中,包括拒绝进一步的连接尝试。这是一
种很重要的防护措施,因为一般的***在***一个系统之前都会将会使用一些工具来探
测系统的漏洞和弱点。察觉到探测器或者是端口扫描,就可以彻底的切断一些潜在地黑
客进一步的连接尝试,中止一些带有***意图的进一步的端口扫描。
安装PortSentry
对于Red Hat的用户来说,Red Hat的ftp服务器上的RPM包里面包含了这个程序。这个站
点在全球都有它的镜像,你可以在www.redhat.com上面查找距离你最近的站点。我还不
能确定.deb格式的软件包中间是PortSentry这样的程序,但是我可以确认那里肯定是有
这个软件的。对于其他Linux用户来说,通过原码来安装这个软件也是相当地简单的。
推荐配置
PortSentry有很多运行模式,包括不同的UDP和TCP秘密运行的模式。我选择的运行机制
是把PortSentry绑定在那些没有被使用的或者是认为有潜在的***可能的TCP端口上。例
如:我将24小时连续的扫描我的web服务器上面的这些端口,port 143 (imap2), port
111 (portmap) 和port 23 (telnet)都是我的Internet系统上没有使用的TCP端口。你可
以通过这条命令:
portsentry -tcp
在你的系统启动的时候就使PortSentry进入基本的TCP运行模式。同时要保证PortSentr
y的配置文件portsentry.conf中包含了TCP_PORTS这行配置来扫描你需要进行扫描的端口

反应选项
你能通过portsentry.conf中的”Response Options”部分来详细的说明什么样的反应是P
ortSentry察觉了一些不期望的连接。通常我会使用ipchains来中断那些来自于连接的源
方的进一步连接。这个也可以通过portsentry.conf中下面这样一行来进行配置:
KILL_ROUTE=”/sbin/ipchains -I input -s $TARGET$ -j DENY -l”
在接受来自高端口的扫描行为的时候,可以通过删除上面一行中的-l这个选项来屏蔽这
些进一步的连接,可以有效的维持系统日志空间。
监视系统日志
诸如防火墙系统、PortSentry这样的软件可以有效的监视或者是屏蔽一些端口的不期望
的连接。这样可以防止最典型的那种”扫描-***”的***方式。
当系统需要运行特殊的服务(例如:Apache Web Server,或者是绑定了一个DNS服务)
的时候,同时有***破解了这种服务中的一些***点,这些程序就会很不幸运的不能保
持把所有的***者拒之门外。绑定运行着一个容易受***的程序的DNS服务器,这些端口
最终总是要被一些***通过扫描很广范围的机器的特定的一个端口,并且会试图通过这
个端口来***系统。很不幸,防火墙或者是PortSentry程序会将这些***尝试当作正常
的合理的连接。
系统日志检测(LogCheck)
LogCheck是用来扫描系统日志文件的软件(http://www.psionic.com/abacus/logcheck
/ )。LogCheck会扫描系统日志文件(在Linux系统中,系统日志文件在/var/log/目录下
面),同时当系统出现一些异常的时候,LogCheck就会通过Email来通报给管理员。系统
日志文件中的异常的消息通常是表示有一些***正在尝试***或者是正在侵入系统。
安装LogCheck
LogCheck有四个主要的配置文件。在RPM版本中,这几个配置文件在/etc/logcheck目录
下面。通常我们只需要配置logcheck.ignore和logcheck.violations.ignore这两个文件
。我在安装完LogCheck后的程序一般是这样的:
允许LogCheck在正常的运行模式下面运行一次,这样将会一个巨大的输出文件,不过我
们可以把这个文件删除算了。
24小时以后让LogCheck再次运行一次,这次我们会在日志文件的入口处中发现产生了一
些新的东西,同时也是一个很大的但是仍然可以计算大小的文件。仔细的阅读这个文件

在文件的入口处有一些不需要我们关心的特定的字符串,如果这些字符串时一些”违反安
全”的片断,我们可以将这些字符串片断加入到logcheck.violations.ignore文件中;或
者当他们是”异常系统事件”的时候,我们就将这些字符串加到logcheck.ignore中。
在折椅歌星期中,每隔12~24小时就重复一下这些步骤。在这个阶段中,我们反复的设置
.ignore文件的过滤规则,最后剩下的就是我们的系统真正关心的了。
注意到RPM文件指定LogCheck每小时运行一次,但是我只需要每天运行一次,除非是在特
定的需要监视的系统。这样可以每天把/etc/cron.hourly/logcheck这个文件拷贝到/et
c/cron中一次。
基于内核的***检测
基于内核的***检测是一种相当巧妙的新型的Linux***检测系统。现在最主要的基于内
核的***检测系统叫做LIDS,并可以从http://www.lids.org/ [...]

\