Snort-轻型的IDS工具(3)

发表于:2007-06-23来源:作者:点击数: 标签:
Snort-轻型的IDS工具 三、snort的设定与启动 我们可以把Snort运做在chroot的环境中,设定也是很简单,首先,可以选定一个有足够位置放置Snort的Log的地方,如果您会定期检查及清除Log文档,您可以把Snort的chroot环境放在/home/snort中,然后需要的是一个 sn

   
  Snort-轻型的IDS工具
  三、snort的设定与启动

  我们可以把Snort运做在chroot的环境中,设定也是很简单,首先,可以选定一个有足够位置放置Snort的Log的地方,如果您会定期检查及清除Log文档,您可以把Snort的chroot环境放在/home/snort中,然后需要的是一个

  snort使用者,执行以下的指令新增Snort这个用者:

  # groupadd snort

  # useradd -g "snort" -d "/home/snort" -s "/nonexists" -c "Snort User" snort   

  然后,把snortrules.tar.gz这个文件解压在/home/snort中,解压了snortrules包后,在/home/snort/ 扔 rules文件出现,这就是Snort使用的Ruleset,这些Ruleset就是供Snort用作侦测任何网络反映的基础。在rules中有一个是"snort.conf",它是Snort的配置文件,需要按实际情况修改snort.conf。

  在 snort.conf 中,需要修改几个地方便可以执行 Snort,以下是可能需要修改的地方:   

  - var HOME_NET

  网络或是主机的 IP,例如只有这一台服务器,就可以只输入服务器的 IP 地址,如果机器有两个以上的 IP,

  可以使用这个方法:

  var HOME_NET [192.168.1.1,192.168.1.2]

  或是

  var HOME_NET 192.168.1.0/24   

  -var SMTP [IP.Address]

  SMTP 服服器的位置,如果与 HOME_NET 中的不同,只需把 $HOME_NET 移除,并加其指定 SMTP 机器的IP便可以。

  - var HTTP_SERVERS

  HTTP 服服器,与 SMTP 中的设定相同,如成为 Web Server 的不是 HOME_NET 机器,可以指定给其他的 IP。

  - var DNS_SERVERS

  DNS 服务器的IP地址,同时需要 Uncomment 以下一行:

  preprocessor portscan-ignorehosts: $DNS_SERVERS

  这可以防止因为 DNS 的 Lookup 而记录无用的 PortScan 。   

  最后是有关记录部份的配置,刚才编译Snort时加入了"MySQL"的支持,为了使用 MySQL 记录,先要在 MySQL中   

  建立 Snort 使用的 Databases、用者名及密码,执行以下命令:

  # echo "CREATE DATABASE snort;"   mysql -u root -p

  # grant INSERT,SELECT on snort.* to snort@localhost

  然后在 Snort 的源始码 日业 "contrib/create_mysql",再执行以下命令建立 Tables

  # mysql -u root -p < create_mysql   

  完成后, e忘记在 snort.conf 中也要启动 MySQL 的支持,简单地 Uncomment 以下:

  在454行:

  output database: log, mysql, user=snort password=123 dbname=snort host=localhost

  在493行:

  ruletype redalert

  {

  type alert

  output alert_syslog: LOG_AUTH LOG_ALERT

  output database: log, mysql, user=snort dbname=snort host=localhost

  }   

  四,执行snort

  一切准备工作都做好了,那么现在开始让snort运行起来了哦:)

  但在这之前请:

  #mkdir /var/log/snort

  #chown snort.snort /var/log/snort

  现在开始 cd 进入 /home/snort 龋 然后打入这个命令:

  /home/snort #snort -b -d -i eth0 -u snort -g snort -c /home/snort/rules/snort.conf -l /var/log/snort &

  -u 功能是使 snort 由 "snort" 这个使用者执行,进入 chroot 的用者环境

  -c 指定使用的指定目录

  & 只是在背景中执行 

  五、SNORT规则编写简介

  一条Snort规则可以分为前后两个部分,规则头和后面的选项部分。规则头包含有匹配后的动作命令、协议类型、以及选择流量的四元组(源目的IP及源目的端口)。规则的选项部分是由一个或几个选项的符合,所有主要选项之间是与的关系。选项之间可能有一定的依赖关系,选项主要可以分为四类,第一类是数据包相关各种特征的描述选项,比如:content、fla gs、dsize、ttl等;第二类是规则本身相关一些说明选项,比如:reference、sid、classtype、priority等;  

  第三类是规则匹配后的动作选项,比如:msg、resp、react、session、logto、tag等;第四类是选项是对某些选项的修饰,比如从属于content的nocase、offset、depth、regex等。由于snort的规则语言语法非常简单,所以可以对新发现的攻击作出快速的反应,迅速开发新的snort规则。编写新的规则,最重要的是知道新攻击的特征码。要得到一个新的攻击的特征码,一般的方法就是进行实际的测试。对一个测试网络进行攻击,使用snort记录在攻击主机和测试网络之间的数据流。然后,对记录的数据进行分析得到其唯一的特征码,最后把得到的特征码加入到规则中。下面是IMAP缓冲区溢出攻击被记录下的数据包:

  --------------------------------------------------------------------------

  052499-22:27:58.403313 192.168.1.4:1034 -> 192.168.1.3:143

  TCP TTL:64 TOS:0x0 DF

  ***PA* Seq: 0x5295B44E Ack: 0x1B4F8970 Win: 0x7D78

  90 90 90 90 90 90 90 90 90 90 90 90 90 90 EB 3B ...............;

  5E 89 76 08 31 ED 31 C9 31 C0 88 6E 07 89 6E 0C ^.v.1.1.1..n..n.

  B0 0B 89 F3 6E 08 89 E9 6E 0C 89 EA CD 80 .....n....n.....

  31 DB 89 D8 40 CD 80 90 90 90 90 90 90 90 90 90 1...@...........

  90 90 90 90 90 90 90 90 90 90 90 E8 C0 FF FF FF ................

  2F 62 69 6E 2F 73 68 90 90 90 90 90 90 90 90 90 /bin/sh.........

  ---------------------------------------------------------------------------

  这个攻击的特征码就是/bin/sh字符串及其前面的机器代码。这实际上是一个shellcode。四用这些信息可以很快开发出一条新的规则:

  alert tcp any any -> 192.168.1.0/24 143 (content:" E8C0 FFF FF /bin/sh";

  msg:"New IMAP Buffer Overflow detected!"

  其中的特征码含有文本和16进制两种形式,它们以 分割,snort运行时都被转换为二进制形式。

  至此,LINUX下的Snort 安装建立成功。结果可以直接从WEB界面上看到,一套完整的IDS系统就可以正常运行了。   

  六,结束语

  Snort 的设定与安装都是很简单的,尽管 Snort 所做的不外是记录及提供侦测,可是这个工作却不可以忽 ,很多公司都有设定有防火墙,而防火所做的是帮您防止多数的攻击,加上使用 Snort 的 大IDS功能,网络管理员可以即随时知道一切 Cracker、Lamer 对公司网络的攻击,而同时可以改变防火墙的Rules,阻止外来的攻击,这是单一防火墙不能为的。(完)

原文转自:http://www.ltesting.net