Loading...

当前位置:资讯中心主页 >网管技术其他 >文章内容

  • Linux入侵检测
  • 来源:linux宝库作者:linux宝库 发布时间:2007-09-30 08:00:00
    • 域名注册

    • 域名惊喜价格 cn域名1元注册
    • com域名39.9

      虚拟主机

    • 主机按月支付,低至19元/月
    • 超大流量,可开子站点

      VPS主机

    • 特惠VPS168元/月,4-8M独享带宽保证
    • 独立操作系统,无限开站点

      这篇文章主要是关于适用于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运行模式。同时要确保PortSentry的设置文件portsentry.conf中包含了TCP_PORTS这行设置来扫描你需要进行扫描的端口。

      反应选项

      你能通过portsentry.conf中的"Response Options"部分来周详的说明什么样的反应是PortSentry察觉了一些不期望的连接。通常我会使用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这个文件拷贝到/etc/cron中一次。

      基于内核的入侵检测

      基于内核的入侵检测是一种相当巧妙的新型的Linux入侵检测系统。目前最主要的基于内核的入侵检测系统叫做LIDS,并能从http://www.lids.org/ 下载。

      什么是LIDS?

      LIDS是一种基于Linux内核的入侵检测和预防系统。

      LIDS的保护目的是防止终极用户root的篡改系统重要部分的。LIDS主要的特点是提高系统的安全性,防止直接的端口连接或是存储器连接,防止原始磁碟的使用,同时还要保护系统日志文件。LIDS当然也会适当制止一些特定的系统操作,譬如:安装sniffer、修改防火墙的设置文件。

      LIDS文件工程

      LIDS比安装PortSentry和LogCheck要复杂一点,不过非常幸运的是,在LIDS的主页上面有周详的安装和设置手册。

      安装LIDS

      首先,在安装之前,我们需要大部分最新的LIDS软件包(我使用的是0.9)和适当的内核版本。我目前使用的是从Red Hat主页上下载的2.2.14-12版本的内核,因为其中包含一些安全补丁。同时你也需要你使用的内核的一些原始码。

      目前的LIDS主要是适用于2.2.14版本的内核。我安装的在2.2.14的内核的Red Hat Linux 6.2上面安装了LIDS。在安装LIDS之前,我在ftp.redhat.com下载了最新的内核版本,并且依照http://www.redhat.com/support/docs/howto/kernel-upgrade/kernel-upgrade.html 安装了这个内核。

      接着的事情就是升级内核原始码。这里我们是这样做的:

      rpm -Uhv kernel-source-2.2.14-12.i386.rpm

      然后就是编译和安装lidsadm这个程式:

      cd /usr/local/src/security/lids-0.9/lidsadm-0.9

      make

      make install

      生成一个RipeMD-160口令,这个以后将会在安装进内核的:

      lidsadm -P

      输入口令是"anypass",得到秘钥"d502d92bfead11d1ef17887c9db07a78108859e8"。接着,我把Redhat的设置文件拷贝到我的结构体系中,在/usr/src/linux目录下面:

      cd /usr/src/linux/configs/

      cp kernel-2.2.12-i686.config ..

      下面我们就使用下面的命令来安装LIDS:

      cd /usr/src

      patch -p0 同时我们应该注意到Red Hat所提供的内核和Linus发布的标准的2.2.14版本的内核有一些细微的差别,因为其中包含一些修改过的驱动程式。同样lids-0.9-2.2.14-redhat.patch文件也是和LIDS发布的标准的lids-0.9-2.2.14.patch有一些细微的差别,不

      

  • 以上内容由 华夏名网 搜集整理,如转载请注明原文出处,并保留这一部分内容。

      “华夏名网” http://www.sudu.cn 和 http://www.bigwww.com 是成都飞数科技有限公司的网络服务品牌,专业经营虚拟主机,域名注册,VPS,服务器租用业务。公司创建于2002年,经过6年的高速发展,“华夏名网”已经成为我国一家知名的互联网服务提供商,被国外权威机构webhosting.info评价为25大IDC服务商之一。

    华夏名网网址导航: 虚拟主机 双线主机 主机 域名注册 cn域名 域名 服务器租用 酷睿服务器 vps vps主机

  • (阅读次数:181)
  • 上一篇: Linux上如何阻止系统攻击者    下一篇: Linuxswat多个严重漏洞
  • [收藏] [推荐] [评论] [打印本页] [返回上一页][关闭窗口]
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。