Snort 是一款免费、开源的网络入侵防御系统(Network Intrusion Prevention System,NIPS)和网络入侵检测系统(Network Intrusion Detection System,NIDS)工具,可以检测入侵、防止外部攻击损害您的 Web 设计和应用程序编程。本系列的
第一篇文章 完成了 Snort 安装并使它可以检测包、日志通信量,做好了入侵检测的准备工作。在本文中,将了解这些包中的数据含义,以及如何使用这些数据判断是否发生攻击并向系统管理员发出警告。
在上一篇文章中,您了解到 Snort 是什么,以及如何在系统中安装并运行它。也看到了 Snort 如何执行三种关键的基本功能:
- 包嗅探:Snort 可以针对它所在的机器监视进入和出去的包。它还可以监视它所运行的网络中大量正在传输的包。这是 Snort 最基本的功能,以包的形式检测和观察网络通信量是所有其他功能的基础。
- 包记录:Snort 不仅可以实时监视包,还可以记录这些包。日志功能可以使您手动或自动处理这些包,并记录已发生的事件。不论是否正在清理旧包来检测入侵,或是 Snort 根据所记录的内容发出软件警告,包记录功能使 Snort 从一个实时工具转到一个可以以不同形式持久存储数据的工具。
- 入侵检测:从很大程度上讲,入侵检测实际上就是结合了包嗅探和记录功能,并在其上添加一层自动智能层。一个入侵检测系统(即 IDS)具有一个包含网络状态信息的规则集,可以针对网络中可疑的状态进行监视并发出响应。
在本文中,我将越过基本的安装和配置知识,讨论如何 设置 Snort,以检测与 Web 相关的入侵。您将了解如何用最新的规则配置 Snort,并在后台监控服务器的行为。
注意:本文并非从系统管理员的角度考虑 Snort。与 Snort 相关的知识很多,它可以检测各种入侵,包括对 IRC 服务的攻击、与 Web 相关的问题,以及试图通过受保护端口访问机器的恶意代码。但是,本文实际上专门针对 Web 设计者和开发人员,为保护他们的具体项目和应用程序提出改进建议。有关 Snort 的更多参考资料,请参见 参考资料 中的各种链接。
使用 Snort 分析包
在上一篇文章中,我们简单了解了 Snort 的三个功能,并查看了一些包。例如,运行 snort -v
获得如清单 1 所示的输出。
清单 1. 使用 Snort 嗅探
[bdm0509:~] sudo snort -v Password: Running in packet dump mode
--== Initializing Snort ==-- Initializing Output Plugins! Verifying Preprocessor Configurations! *** *** interface device lookup found: en0 ***
Initializing Network Interface en0 Decoding Ethernet on interface en0
--== Initialization Complete ==--
,,_ -*> Snort! <*- o" )~ Version 2.8.0.2 (Build 75) '''' By Martin Roesch & The Snort Team: http://www.snort.org/team.html (C) Copyright 1998-2007 Sourcefire Inc., et al. Using PCRE version: 7.6 2008-01-28
Not Using PCAP_FRAMES 03/31-08:55:12.179192 192.168.1.102:64862 -> 239.255.255.253:427 UDP TTL:1 TOS:0x0 ID:10292 IpLen:20 DgmLen:64 Len: 36 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:12.179498 192.168.1.102:64863 -> 239.255.255.253:427 UDP TTL:1 TOS:0x0 ID:10293 IpLen:20 DgmLen:64 Len: 36 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:12.180121 192.168.1.102:64864 -> 239.255.255.253:427 UDP TTL:1 TOS:0x0 ID:10294 IpLen:20 DgmLen:64 Len: 36 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:12.180278 192.168.1.102:64865 -> 239.255.255.253:427 UDP TTL:1 TOS:0x0 ID:10295 IpLen:20 DgmLen:64 Len: 36 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:12.247880 192.168.1.102:64866 -> 192.168.1.255:137 UDP TTL:64 TOS:0x0 ID:10296 IpLen:20 DgmLen:78 Len: 50 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:12.248297 192.168.1.103:137 -> 192.168.1.102:64866 UDP TTL:64 TOS:0x0 ID:8075 IpLen:20 DgmLen:90 Len: 62 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:12.599248 192.168.1.102:55381 -> 192.168.1.101:139 TCP TTL:64 TOS:0x0 ID:10297 IpLen:20 DgmLen:64 DF ******S* Seq: 0x42127B5E Ack: 0x0 Win: 0xFFFF TcpLen: 44 TCP Options (8) => MSS: 1460 NOP WS: 0 NOP NOP TS: 1428368232 0 TCP Options => SackOK EOL ... LOTS more output here ... =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:21.976018 0.0.0.0:68 -> 255.255.255.255:67 UDP TTL:64 TOS:0x0 ID:48134 IpLen:20 DgmLen:328 Len: 300 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:21.976800 ARP who-has 192.168.1.104 tell 192.168.1.1
03/31-08:55:22.968515 192.168.1.1:67 -> 255.255.255.255:68 UDP TTL:150 TOS:0x0 ID:6040 IpLen:20 DgmLen:576 Len: 548 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:22.977578 ARP who-has 192.168.1.104 tell 192.168.1.104
^C*** Caught Int-Signal Run time prior to being shutdown was 14.231224 seconds =============================================================================== Packet Wire Totals: Received: 78 Analyzed: 78 (100.000%) Dropped: 0 (0.000%) Outstanding: 0 (0.000%) =============================================================================== Breakdown by protocol (includes rebuilt packets): ETH: 78 (100.000%) ETHdisc: 0 (0.000%) VLAN: 0 (0.000%) IPV6: 0 (0.000%) IP6 EXT: 0 (0.000%) IP6opts: 0 (0.000%) IP6disc: 0 (0.000%) IP4: 71 (91.026%) IP4disc: 0 (0.000%) TCP 6: 0 (0.000%) UDP 6: 0 (0.000%) ICMP6: 0 (0.000%) ICMP-IP: 0 (0.000%) TCP: 57 (73.077%) UDP: 14 (17.949%) ICMP: 0 (0.000%) TCPdisc: 0 (0.000%) UDPdisc: 0 (0.000%) ICMPdis: 0 (0.000%) FRAG: 0 (0.000%) FRAG 6: 0 (0.000%) ARP: 3 (3.846%) EAPOL: 0 (0.000%) ETHLOOP: 0 (0.000%) IPX: 0 (0.000%) OTHER: 4 (5.128%) DISCARD: 0 (0.000%) InvChkSum: 0 (0.000%) Upconvt: 0 (0.000%) Up fail: 0 (0.000%) S5 G 1: 0 (0.000%) S5 G 2: 0 (0.000%) Total: 78 =============================================================================== Action Stats: ALERTS: 0 LOGGED: 0 PASSED: 0 =============================================================================== Snort exiting |
注意,您需要以根用户的身份运行或是使用 sudo
,详细内容请查看上一篇文章。
当然,这里的难点是利用这些信息。可以进一步把这些信息分解为单个的包,如清单 2 所示(直接使用清单 1 的内容)。
清单 2. 清单 1 输出的单个包
本文转自IBM Developerworks中国
请点击此处查看全文