您的位置:首页 > 理论基础 > 计算机网络

sort搭建安全入侵检测服务器

2007-08-25 19:53 811 查看
Snort是一个著名的免费而又功能强大的轻量级入侵检测系统,具有使用简便、轻量级以及封堵效率高等特点,本文从实用操作的角度介绍了如何用Snort保证上网主机的安全。
      入侵检测技术是继“防火墙”、“数据加密”等传统安全保护措施之后的新一代安全保障技术。它对计算机和网络资源上的恶意使用行为进行识别和响应,它不仅检测来自外部的入侵行为,同时也监督内部用户的未授权活动。而且,随着网络服务器对安全性要求的不断增大,如何在Linux环境下抵御黑客入侵和攻击,切实保证服务器的安全具有重大的实践意义。
Snort是一个强大的轻量级的免费网络入侵检测系统,其特点如下:
1.轻量级的网络入侵检测系统Snort虽然功能强大,但其代码非常简洁、短小,源代码压缩包只有1.8M多。2.Snort的可移植性好 Snort的跨平台性能极佳,目前已经支持类Unix下Linux、Solaris、Freebsd、Irix、HP-ux、微软的 Windows2000等服务器系统。
3.Snort的功能非常强大Snort具有实时流量分析和日志IP网络数据包的能力,能够快速检测网络攻击,及时发出报警。利用XML插件,Snort可以使用SNML(简单网络标志语言)把日志放到一个文件或者适时报警。Snort能够进行协议分析和内容的搜索/匹配,现在Snort能分析的协议有TCP、UDP、ICMP,将来可能增加对ARP、IPX等协议的支持。它能够检测多种方式的攻击和探测,例如缓冲区溢出、秘密端口扫描、CGI攻击、SMB探测、探测存在系统指纹特征的企图等。Snort的日志格式既可以是tcpdump式的二进制格式,也可以解码成ASCⅡ字符格式,更加便于用户尤其是新手检查。使用数据库输出插件,Snort可以把日志记录进数据库。使用TCP流插件,Snort可以对 TCP包进行重组。
4.Snort的扩展性较好,对于新的攻击反应迅速作为一个轻量级的网络入侵检测系统,Snort有足够的扩展能力。它使用一种简单的规则描述语言,最基本的规则只是包含四个域:处理动作、协议、方向、注意的端口,例如“log tcp any any-> 192.168.0.1/24 79”。发现新的攻击后,可以很快根据“bugtraq”邮件列表,找出特征码,写出检测规则。因为规则语言简单,所以容易上手,节省人员的培训费用。
5.遵循公共通用许可证GPLSnort遵循通用公共许可证GPL,所以只要遵守GPL ,任何组织和个人都可以自由使用。
Snort的体系结构
     包解码 Snort的包解码支持以太网和SLIP及PPP媒体介质。包解码所做的工作就是为探测引擎准备数据,其功能是捕获网络传输数据并按照TCP/IP协议的不同层次将数据包进行解析。Snort利用libpcap库函数进行数据采集,该库函数可以为应用程序提供直接从链路层捕获数据包的接口函数,并可以设置数据包过滤器来捕获指定的数据。网络数据采集和解析机制是整个NIDS实现的基础,其中最关键的是要保证高速和低的丢包率,这不仅仅取决于软件的效率还同硬件的处理能力相关。对于解析机制来说,能够处理数据包的类型的多样性也同样非常重要。
      探测引擎探测引擎是Snort的心脏,它主要负责的工作是:按照启动时加载的规则,对每个数据包进行分析。探测引擎将Snort规则分解为链表头和链表选项进行引用。链表头由诸如源/目标IP地址及端口号这些普通信息标识,链表选项定义一些更详细的信息如TCP 标志、ICMP代码类型、特定的内容类型、负载容量等。探测引擎按照Snort规则文件中定义的规则依次分析每个数据包。与数据包中数据匹配的第一条规则触发在规则定义中指定的动作,凡是与规则不匹配的数据包都会被丢弃。
日志记录/告警系统告警和日志是两个分离的子系统。日志允许将包解码收集到的信息以可读的格式或以tcpdump格式记录下来。可以配置告警系统,使其将告警信息发送到 syslog、flat文件、Unix套接字或数据库中。在进行测试或在入侵学习过程当中,还可以关掉告警。缺省情况下,所有的日志将会写到 /var/log/Snort文件夹中,告警文件将会写到/var/log/Snort/alerts文件中。Snort的数据包记录器子系统主要提供了如下方式:“Fast Model”,采取tcpdump的格式记录信息 ;“Readable Model”,按照协议格式记录,易于用户查看;“Alert to syslog”,向syslog发送报警信息;“Alert to text file”,以明文形式记录报警信息。
      值得提出的是,Snort考虑到用户需要高性能的时候,即网络数据流量非常大,可以将数据包信息进行压缩从而实现快速报警。
Snort的使用方法

安装Snort

      Snort是基于libpcap的,一般操作系统安装的时候,libpcap已经默认安装了,如果没有安装,可以到http://www.tcpdump.org下载。Snort的安装步骤如下:

1.分别执行指令:mkdir Snortinstall和cd Snortinstall;

2.从www.Snort.org 下载Snort-2.0.0.tar.gz和Snortrules.tar.tz到新建的目录中,可以通过浏览器或者wget下载;

3.分别执行如下指令:tar -zxvf Snort-2.0.0.tar.gz;cd Snort-2.0.0;

./configure;make;make install。

Snort使用

       这里通过使用常见的观察主机是否存活的Ping命令来介绍Snort的具体使用。执行命令“./Snort -v”,运行Snort和显示IP和TCP/UDP/ICMP头信息。笔者使用命令:“ping 192.168.0.1”,显示如下信息:

06/10-10:21:13.884925 192.168.0.2 -> 192.168.0.1

ICMP TTL:64 TOS:0x0 ID:4068

ID:20507 Seq:0 ECHO

06/10-10:21:13.885081 192.168.0.1 -> 192.168.0.2

ICMP TTL:128 TOS:0x0 ID:15941

ID:20507 Seq:0 ECHO REPLY

06/10-10:21:14.884874 192.168.0.2 -> 192.168.0.1

ICMP TTL:64 TOS:0x0 ID:4069

ID:20507 Seq:256 ECHO

06/10-10:21:14.885027 192.168.0.1 -> 192.168.0.2

ICMP TTL:128 TOS:0x0 ID:15942

ID:20507 Seq:256 ECHO REPLY

如果想要解码应用层,就执行命令“Snort -d”,然后执行“ping 192.168.0.1”,就可以显示如下信息:

06/10-10:26:39.894493 192.168.0.2 -> 192.168.0.1

ICMP TTL:64 TOS:0x0 ID:4076

ID:20763 Seq:0 ECHO

58 13 42 39 E0 BB 05 00 08 09 0A 0B 0C 0D 0E 0F X.B9............

10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................

20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./

30 31 32 33 34 35 36 37 01234567

06/10-10:26:39.894637 192.168.0.1 -> 192.168.0.2

ICMP TTL:128 TOS:0x0 ID:15966

ID:20763 Seq:0 ECHO REPLY

58 13 42 39 E0 BB 05 00 08 09 0A 0B 0C 0D 0E 0F X.B9............

10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F ................

20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F !"#$%&'()*+,-./

30 31 32 33 34 35 36 37 01234567

     如果要看到更详细的关于以太网帧头的信息,就要使用“Snort -vde” 命令,然后执行“ping 192.168.0.1”就可以显示相应信息。

Snort规则的编写

      Snort之所以受到广泛的关注,一方面由于它的轻量级特性,消耗系统资源少;另一方面就在于它的动态性和可编程性。然而这对于广大网络用户来说有些困难,因为他们必须具备相应的网络协议分析知识和安全知识。值得庆幸的是,这个软件有相应的规则库可以实时地从网上下载(网址为:www.Snort.org),用户可以直接下载即可使用,所以本文不讲述过多的规则编写规范,只是给出几个简单的例子:

● SMB报警配置: output alert_smb:workstation.list ;

● 端口扫描检测模块的配置:prepro

cessor portscan:192.168.1.0/24 5 7 /var/log/portscan.log ;

● 封堵带有不健康信息的数据包:alert tcp any any <> 192.168.1.0/24 80 (content-list:"adults";msg:"Not for children!";react:block,msg) 。

(作者E-mail: liyangsuper@163.com)

背景知识

入侵检测系统简介

      入侵检测系统 (Intrusion Detection System,IDS) 顾名思义,便是对入侵行为的发觉。它通过对计算机网络或计算机系统中的若干关键点收集信息并对其进行分析,从中发现网络或系统中是否有违反安全策略的行为和被攻击的迹象。它具有如下功能:

● 监控、分析用户和系统的活动;

● 核查系统配置和漏洞;

●评估关键系统和数据文件的完整性;

● 识别攻击的活动模式并向网管人员报警;

● 对异常活动的统计分析;

● 操作系统审计跟踪管理,识别违反政策的用户活动;

● 评估重要系统和数据文件的完整性。

      入侵检测系统的结构一般如图所示。其中“包抓取引擎”从网络上抓取数据包;“包分析引擎”对数据包做简单处理如IP重组、TCP流重组,并根据规则库判断是否为可疑或入侵的数据包;“规则库”是入侵检测系统的知识库,定义了各种入侵的知识;“响应模块”是当系统发现一个可疑的数据包的时候所采取的响应手段。其中,“包分析引擎”是整个系统的核心所在,对入侵特征的检测在这里完成。

      IDS通常采用两种技术:一是异常发现技术,它假定所有入侵行为都是与正常行为不同的。如果建立系统正常行为的轨迹,那么理论上可以把所有与正常轨迹不同的系统状态视为可疑企图。对于异常阀值与特征的选择是异常发现技术的关键。比如,通过流量统计分析将异常时间的异常网络流量视为可疑。异常发现技术的局限是并非所有的入侵都表现为异常,而且系统的轨迹难于计算和更新。二是模式发现技术,它假定所有入侵行为和手段(及其变种)都能够表达为一种模式或特征,那么所有已知的入侵方法都可以用匹配的方法发现。模式发现的关键是如何表达入侵的模式,把真正的入侵与正常行为区分开来。模式发现的优点是误报少,局限是它只能发现已知的攻击,对未知的攻击无能为力

出自 51CTO.COM博客
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息