首页    新闻    下载    文档    论坛     最新漏洞    黑客教程    数据库    搜索    小榕软件实验室怀旧版    星际争霸WEB版    最新IP准确查询   
名称: 密码:      忘记密码  马上注册
操作系统 :: unix

Snort:为你的企业规划入侵检测系统


http://www.gipsky.com/
  尽管有许多IT界的专家怀疑入侵检测系统存在的必要性,但是现在到了为你的企业建立入侵检测系统的 时候了。也许还有许多人认为对付恶意的攻击防火墙已经足够了,但在IT界,安全问题目前已经受到了如此广 泛的关注,已经到了有必要采用入侵检测系统的地步了。Snort是一种入侵检测系统,它小巧免费,具有很好的 配置性和可移植性,是基于网络的入侵检测系统,也可以称之为NIDS。除此之外,它还可以用来截获网络中的 数据包并做为数据包的日志。



  Snort经常被称为轻量级的入侵检测系统。Snort被标以轻量级的称号是因为它首先是设计给小网络段使 用的。基于规则的体系结构使Snort非常灵活,它的设计者将它设计的很容易插入和扩充新的规则,这样它就能 够对付那些新出现的威胁。本文详细讨论了Snort的安装及其体系结构和规则,以及如何运行它。



  1.安装



  Snort是由Martin Roesch编写的,你可以从http://www.snort.org/下载。在本 文完成时,它的最新版本是1.7。该网站除了提供源码下载外还将提供适用于常用平台的二进制版本。但在下载 和安装Snort之前,请先安装libpcap的0.5以上版本,libpcap的最新版本是0.6.2。它支持夸平台捕获数据包并 可以对其进行分析。Libpcap还有支持一些BSD平台的版本。你可以从http://www.tcpdumpl.org下载到最新版本 的libcap。



  安装Snort很简单。如同安装其它典型的UNIX工具一样,安装步骤包括./configure,接 下来是make。我常常喜欢查看配置的选项,通过./configure ?help就可以看到所有的选项了。最后用make install将会安装所有的Snort文件。此时,你还没有完全做好准备运行Snort,在运行Snort之前,你得先创建 它的规则文件。在写规则文件之前,我们还是先来看看Snort的体系结构。



  2.Snort的体系结构



  Snort的体系结构由三个主要的部分组成。在图1中显示的是这些部分的简化表示。对它们的描述如下:



  1、包解码:Snort的包解码支持以太网和SLIP及PPP媒体介质。包解码所做的所有工作就是为探测引擎 准备数据。



  2、探测引擎:探测引擎是Snort的心脏。它主要负责的工作是:按照启动时加载的规则,对每个数据包 进行分析。探测引擎将Snort规则分解为链表头和链表选项进行引用。链表头由诸如源/目标ip地址及端口号这 些普通信息标识。链表选项定义一些更详细的信息如TCP标志、ICMP代码类型、特定的内容类型、负载容量等。 探测引擎按照Snort规则文件中定义的规则依次的分析每个数据包。与数据包中数据匹配的第一条规则触发在规 则定义中指定的动作。凡是与规则不匹配的数据包都被丢弃。探测引擎中的关键部分是plugin模块如端口扫描 模块等,它增加的一些分析能力增强了Snort的功能。



  3、日志记录/告警系统:告警和日志是两个分离的子系统。日志允许你将包解码收集到的信息以可读的 格式或以tcpdump格式记录下来。你可以配置告警系统,使其将告警信息发送到syslog、flat文件、Unix套接字 或数据库中。在进行测试或在入侵学习过程当中,你还可以关掉告警。缺省情况下,所有的日志将会写到 /var/log/Snort文件夹中,告警文件将会写到/var/log/Snort/alerts文件中。



  3.Snort规则



  Snort规则文件是一个ASCII文本文件,可以用常用的的文本编辑器对其进行编辑。规则文件的内容由以 下几部分组成:



  变量定义:在这里定义的变量可以在创建Snort规则时使用。



  Snort规则:在入侵检测时起作用的规则,这些规则应包括了总体的入侵检测策略。在本文的后面给出了一 个Snort规则。



  预处理器:即插件,用来扩展Snort的功能。如用portscan来检测端口扫描。



  包含文件Include Files:可以包括其它Snort规则文件。



  输出模块:Snort管理员通过它来指定记录日志和告警的输出。当Snort调用告警及日志子系统时会执行输 出模块。



  Snort规则逻辑上可以分为两个部分:规则的头部和规则选项部分。对Snort规则的描述必须在一行之内 完成,另外它必须包含IP地址,以便在不能按照主机名进行查找使用。图2显示了Snort规则的头及选项的细节 。



  图2. 规则表的结构组成



  在Snort的主页中,读者对Snort的规则细节中最感兴趣的链接是“Writing Snort Rules"。另外, Snort的发行版本中提供的RULES.SAMPLE是一个非常不错的文档。你可以参照它为你的工作环境构建Snort规则 。在写规则前,建议你先写出网络入侵检测策略。这包括先定义出进行日志记录、忽略或发出告警信息的事件 。下面给出一个非常简单的规则:



  ##



  #Define our network and other network



  #



  var OURNET 208.177.13.0/24



  var OTHERNET !$OURNET



  var NIDSHOST 208.177.13.251



  var PORTS 10



  var SECS 3



  ##



  # Log rules



  ##



  log tcp $OTHERNET any -> $OURNET 23



  log tcp $OTHERNET any -> $OURNET 21



  log tcp $OTHERNET any -> $OURNET 79



  ##



  #Alert Rules



  ##



  alert udp any any -> $OURNET 53 (msg:"UDP IDS/DNS-version-query";



  content:"version";)



  alert tcp any any -> $OURNET 53 (msg:"TCP IDS/DNS-version-query";



  content:"version";)



  alert tcp any any -> $OURNET 80 (msg:"PHF attempt";



  content:"/cgi-bin/phf";)



  ##



  # Load portscan pre-processor for portscan alerts



  ##



  preprocessor portscan: $OTHERNET $PORTS $SECS



  /var/log/snort/pscan_alerts



  preprocessor portscan-ignorehosts: $OURNET



  ##



  # Pass Rules (Ignore)



  ##



  pass tcp $OURNET any -> $OTHERNET 80



  pass udp any 1024: <> any 1024:



  pass tcp any 22 -> $NIDSHOST 22



  该规则要求,记录下网络外部主机所做的下列行为:



  Telnet、FTP通信、finger。



  对以下行为发出告警:



  从本网以外的机器中发出的端口扫描行为,并将告警信息写入到/var/log/snort/pscan_alerts文件中 ;



  所有的PHF请求



  DNS版本查询



  忽略以下信息:



  对1024以上UDP端口的访问;



  从本网内发出的WEB浏览通信及网络入侵检测系统间的ssh通信;



  4.运行Snort



  Snort可以以包窃听器方式、包日志记录器和入侵检测系统三种方式运行。如果以包窃听器的方式运行 ,TCP/UDP/ICMP的头信息及应用数据在标准输出设备中输出:



  # Snort -vd



  当Snort作为包记录器使用时,它将应用及协议的头信息记录到/var/log/today.log中:



  # Snort -dev -l /var/log/today.log



  做为一个网络入侵检测系统,Snort在le0接口进行监听,配置文件为/etc/Snort.rules,并以后台进程 的方式运行:



  # Snort -D -i le0 -c /etc/Snort.rules



  Snort并不会按着规则在配置文件中出现的次序来对其进行评估,在默认的情况下它是按照 Alert,Pass,Log的次序对规则进行评估的。用命令行标志-o可以改变评估的次序为Pass,Alert,Log。-A选项指 定了告警模式,共有四种方式可供选择:full,fast,none和unsock。Full,none,fast这几种方式的含义很明白 ,unsock选项可以使Snort将告警信息通过UNIX的套接字发往一个负责处理告警信息的主机,在该主机上有一个 程序在套接字上进行监听。有关该选项的细节可以通过snort的man获得更多的内容。通过Snort的告警方式,你 可以在告警信息中对当前的情况进行详细的描述。



  必须要对snort的配置进行验证,验证的方法是 再检查一遍入侵检测规则。对于入侵检测的策略,你可以进行一些指定的测试并观察日志和告警。对于我们上 面列出的策略,我们可以运行Telnet,FTP和finger。你可以使用诸如scanner之类的工具,如一些可以很容易得 到的扫描器,如nmap都是不错的。商业用途的扫描器如network Associates发行的Cybercop和Internet Security System的ISS可以帮助你自动的完成这些过程。Netcat是另外一个功能强大的工具,你可以从 http://www.atstake.com/research tools/下载。总之,你可以用几个简单的脚本语句对你的系统进行攻击 。但是你一定要小心,运行这些脚本意味着你信任这些脚本。下面显示了几个简单的告警。其中包括三个常见 的攻击:IIS Unicode攻击,SYN/Fin扫描和portscan。



  表2. 常见的告警信息



  [**] spp_http_decode: IIS Unicode attack detected [**]



  03/07-11:10:40.910903 192.168.0.1:3607 ->192.168.1.2:80



  TCP TTL:249 TOS:0x0 ID:22898 IpLen:20 DgmLen:1022 DF



  ***AP*** Seq: 0x552997B8 Ack: 0xE39D7CB1 Win: 0x4470 TcpLen:20



  [**] IDS198/SYN FIN Scan [**]



  03/13-01:38:45.254726 192.168.1.3:53 -> 192.168.0.1:53



  TCP TTL:23 TOS:0x0 ID:39426 IpLen:20 DgmLen:40



  ******SF Seq: 0x4D622A79 Ack: 0x7EEF29AF Win: 0x404 TcpLen:



  03/15-19:36:23.468056



  [**] spp_portscan: PORTSCAN DETECTED from 192.168.2.25 (THRESHOLD 3



  connections exceeded in 4 seconds) [**]



  03/15-19:36:39.561360



  [**] spp_portscan: portscan status from 192.168.3.25: 5 connections



  across 1



  hosts: TCP(0),UDP(5) [**]



  5.总结



  首先是高级的黑客,接下来



  
<< SNORTFAQv1.7.5 网络安全技术介绍 >>
API:
gipsky.com& 安信网络
网友个人意见,不代表本站立场。对于发言内容,由发表者自负责任。

系统导航

 

Copyright © 2001-2010 安信网络. All Rights Reserved
京ICP备05056747号