百科解释
目录·使用简介·编辑Snort侦测规则 Snort? 是一套开放源代码(open source)的网络入侵预防软件(IPS)与网络入侵侦测软件(IDS)。Snort使用了以侦测签章(signature-based)与通讯协定(protocol)的侦测方法。截至目前为止,Snort的被下载次数已达到数百万次。 Snort 被认为是全世界最广泛使用的入侵预防与侦测软件。 1998年, Martin Roesch撰写了一个名为Snort的软件, 被其定位成"简单轻巧"的入侵侦测软件。 如今Snort的影响力远广布全世界. 经过多年的发展,Snort已经成为一成熟且多功能的软件,在入侵侦测与预防的领域中被广泛使用。近来在侵入规则语言(rules language)和侦测功能的进步之下,Snort已成为最富弹性与精确的威胁侦测软件之一。 使用简介 Snort并非复杂难以操作的软件。Snort可以三个模式进行运作: 侦测模式(Sniffer Mode):此模式下, Snort将在现有的网域内撷取封包,并显示在屏幕上。 封包纪录模式(packet logger mode):此模式下, Snort将已撷取的封包存入储存媒体中(如硬盘)。 上线模式(inline mode):此模式下, Snort可对撷取到的封包做分析的动作,并根据一定的规则来判断是否有网络攻击行为的出现。 基本指令:侦测模式 若你想要在屏幕上显示网络封包的标头档(header)内容,请使用 ./snort -v 如果想要在屏幕上显示正在传输的封包标头档内容,请使用 ./snort -vd 如果除了以上显示的内容之外,欲另外显示资料连结层(Data link layer)的资料的话,请使用 ./snort -vde 基本指令:封包纪录模式 在记录封包之前,您必须先指定一个目录来储存该资料。举例而言,若您在您目前的目录下建立了一个名为log的目录,欲存纪录资料于该目录下的话,请使用 ./snort -dev -l ./log 若想要以二进制码(binary code)的方式来储存封包资料的话,请使用 ./snort -l ./log -b 若欲读取某已储存的封包记录档案(假设其档名为packet.log),请使用 ./snort -dvr packet.log 若欲读取该档案中特定网络协定的资讯(假设是tcp协定),请使用 ./snort -dvr packet.log tcp 基本指令:入侵侦测模式 若欲使用入侵侦测模式,请使用 ./snort -dev -l ./log -h 192.168.1.0/24 -c snort.conf 其中snort.conf是封包的签章档案 若不需要得知资料连结层的资讯,请使用 ./snort -d -h 192.168.1.0/24 -l ./log -c snort.conf 以下是Snort在入侵侦测模式的指令选项: 线上模式 封包的抓取不透过 libcap,而是透过防火墙,并可告知防火墙是否让此封包通过。启用线上模式使用 ./snort -Qd -h 192.168.0.0/16 -l ./log -c snort.conf 防火墙的设定 Linux iptables -t nat -A PREROUTING -j QUEUE 编辑Snort侦测规则 以下是一种编辑侦测规则(Snort rule)的例子: alert tcp any any ->192.168.1.0/24 111 依次分为以下几个部份: 标头 标头的部份指的是此规则欲执行的动作。以上的例子为"alert",即警示。 完整的标头选项列表如下: 通讯协定 通讯协定指出执行该规则的协定为何。上述的例子是tcp协定。 目前snort支援四种通讯协定: tcp, udp, icmp, ip 并计划在未来支援以下的协定: ARP, IGRP, GRE, OSPF, RIP, IPX 等等 IP位置 输入遵循此规则的封包IP位置。上述的例子是192.168.1.0。 若要侦测某一网段的IP位置,请在IP位置后面加上 /(数字)。 阜号 遵循此规则的阜号(port number)。上述的例子是 port 24。 以下为实际例子: 进阶规则编辑 Includes: include允许指令的规则档包含其他的规则档。 include: 请注意,在该行结尾处没有分号。被包含的规则档会把任何默认的变量值替换为其本身的变量。 Variables : 在Snort中定义的变量。 var: 例子: var NET 192.168.1.0/24 alert tcp any any -> $NET any (flags: S; msg: "FIN packet";) 变量名称可以用多种方法修改。可以在"$"符号之后定义变量。"?" 和 "-"可用于变量修改符号。 $var - 定义变量。 $(var) - 用变量"var"的值替换。 $(var:-default) - 用变量"var"的值替换。若"var"没有定义,则使用"default"替换。 $(var:?messageXXX) - 用变量"var"的值替换,或打印出错误讯息"messageXXX"。 例子: var NET $(NET:-192.168.1.0/24) log tcp any any -> $(NET:?NET is undefined!) 23 Config Snort的很多配置和命令行选项都可以在配置档中设置。 config [: ] 指令: