包含结目的youporn所有页面,现在以wwWyouporncom无法在显示了

此内容是该系列 # 部分中的第 # 部分: Snort 使用手册,第 2 部分http://www.ibm.com/developerworks/cn/library/?series_title_by=**auto**敬请期待该系列的后续内容。此内容是该系列的一部分:Snort 使用手册,第 2 部分敬请期待该系列的后续内容。
在上一篇文章中,您了解到 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
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! &*-
Version 2.8.0.2 (Build 75)
By Martin Roesch & The Snort Team: http://www.snort.org/team.html
(C) Copyright
Sourcefire Inc., et al.
Using PCRE version: 7.6
Not Using PCAP_FRAMES
03/31-08:55:12..168.1.102:64862 -& 239.255.255.253:427
UDP TTL:1 TOS:0x0 ID:10292 IpLen:20 DgmLen:64
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:12..168.1.102:64863 -& 239.255.255.253:427
UDP TTL:1 TOS:0x0 ID:10293 IpLen:20 DgmLen:64
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:12..168.1.102:64864 -& 239.255.255.253:427
UDP TTL:1 TOS:0x0 ID:10294 IpLen:20 DgmLen:64
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:12..168.1.102:64865 -& 239.255.255.253:427
UDP TTL:1 TOS:0x0 ID:10295 IpLen:20 DgmLen:64
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:12..168.1.102:64866 -& 192.168.1.255:137
UDP TTL:64 TOS:0x0 ID:10296 IpLen:20 DgmLen:78
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:12..168.1.103:137 -& 192.168.1.102:64866
UDP TTL:64 TOS:0x0 ID:8075 IpLen:20 DgmLen:90
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:12..168.1.102:55381 -& 192.168.1.101:139
TCP TTL:64 TOS:0x0 ID:10297 IpLen:20 DgmLen:64 DF
******S* Seq: 0x42127B5E
Win: 0xFFFF
TcpLen: 44
TCP Options (8) =& MSS: 1460 NOP WS: 0 NOP NOP TS:
TCP Options =& SackOK EOL
LOTS more output here
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:21..0.0.0:68 -& 255.255.255.255:67
UDP TTL:64 TOS:0x0 ID:48134 IpLen:20 DgmLen:328
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:21.976800 ARP who-has 192.168.1.104 tell 192.168.1.1
03/31-08:55:22..168.1.1:67 -& 255.255.255.255:68
UDP TTL:150 TOS:0x0 ID:6040 IpLen:20 DgmLen:576
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
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:
78 (100.000%)
0 (0.000%)
Outstanding:
0 (0.000%)
===============================================================================
Breakdown by protocol (includes rebuilt packets):
(100.000%)
ETHdisc: 0
IP6 EXT: 0
IP6opts: 0
IP6disc: 0
IP4disc: 0
ICMP-IP: 0
TCPdisc: 0
UDPdisc: 0
ICMPdis: 0
ETHLOOP: 0
DISCARD: 0
InvChkSum: 0
Upconvt: 0
Up fail: 0
===============================================================================
Action Stats:
===============================================================================
Snort exiting注意,您需要以根用户的身份运行或是使用 sudo,详细内容请查看上一篇文章。当然,这里的难点是利用这些信息。可以进一步把这些信息分解为单个的包,如清单 2 所示(直接使用清单 1 的内容)。清单 2. 清单 1 输出的单个包=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:21.976800 ARP who-has 192.168.1.104 tell 192.168.1.1
03/31-08:55:22..168.1.1:67 -& 255.255.255.255:68
UDP TTL:150 TOS:0x0 ID:6040 IpLen:20 DgmLen:576
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+这个包表示什么含义?是否值得关注?基本上全部关于 IP 地址包中的最重要信息来自 IP 地址。清单 2 中的包提供了一些;它们在清单 3 中使用粗体突出显示。 清单 3. 注意清单 2 所示包中的 IP 地址 =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
03/31-08:55:21.976800 ARP who-has 192.168.1.104 tell 192.168.1.1
03/31-08:55:22..168.1.1:67 -& 255.255.255.255:68
UDP TTL:150 TOS:0x0 ID:6040 IpLen:20 DgmLen:576
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+这里提到了两个 IP 地址:192.168.1.104 和 192.168.1.1。此外,192.168.1.1 在第二次出现时,后面多了一个端口号。端口号通常出现在 IP 地址之后的冒号后面,例如:192.168.1.1:67。在利用这些信息之前,需要了解您的机器的 IP 地址。可以使用 Windows® 命令 ipconfig,或者在 Linux®、UNIX®,或 Mac OS X 的终端上,使用 ifconfig。在清单 3 的示例包中,192.168.1.104 正是运行 Snort 的机器的 IP 地址,而 192.168.1.1 则是该机器的网络通往外部网络的路由器的地址。在这个例子中,这个包来自一个计算机(运行 Snort,IP 地址为 192.168.1.104),并将传输到路由器(192.168.1.1)。随后,将获得一些额外的信息,诸如长度、ID 和一些奇怪的代码,例如 TOS、TTL 和 UDP。是否适合使用 Snort?现在看来,详细分析包的过程似乎有些繁琐。如果您是习惯使用 CSS 样式和 div 的 Web 设计师,或者是更加关心类的衔接、接口或某个抽象类是否有意义的开发人员,那么包分析是一个非常枯燥乏味的过程。如果开始就加入一些奇怪的缩写词,那么您很可能再没有兴趣阅读本文,而是查找一些有关 CSS 文本替换或如何使用 C# 实现 Chain of Responsibility 设计模式等内容的资料。Snort 最擅长于解决这类复杂和困难的包问题。事实上,Snort 对 Web 开发人员如此有用,是因为 它关注设计模式、布局和函数性任务。使用 Snort,在基本理解的基础之上(可以阅读上一篇文章和本节内容),可以让您的工具完成您不愿意完成的工作。本文其余内容将介绍 Snort 如何处理包分析,以及如何利用社区力量保证系统安全,而不需要重新学习已经淡忘的大学网络课程。配置 Snort不需花大量时间研究包,可以对 Snort 进行设置来处理分析,并在发生问题时收到 Snort 的警报;这些功能是通过为 Snort 指定一组规则 实现的。这些规则通常使用文本文件的形式,告诉 Snort 要执行什么操作,为它在包中查找关键细节提供信息,并指导 Snort 在找到键信息后如何操作。此外,这些规则可以限制 Snort 侦听的内容(例如命令 Snort 只监视单个机器,或监视整个网络中的通信量),以及记录查找到的所有内容并生成一个文件方便日后查看。实际上,使用 Snort 规则可以省去手工分析包的工作。Snort 的默认配置在编写规则之前,需要告诉 Snort 作为 IDS 运行。最简单的方法(包括记录包)是使用 Snort 的默认配置,这个配置保存在 Snort 安装目录(我的是 /usr/local/snort-2.8.1/etc/snort.conf)中的 etc/snort.conf 文件。这种方法可以简单地设置并运行 Snort。清单 4 展示了 Snort 配置文件的一部分。清单 4. 默认的 snort.conf 文件# stream5: Target Based stateful inspection/stream reassembly for Snort
# ---------------------------------------------------------------------
# Stream5 is a target-based stream engine for Snort.
Its functionality
# replaces that of Stream4.
Consequently, BOTH Stream4 and Stream5
# cannot be used simultaneously.
Comment out the stream4 configurations
# above to use Stream5.
# See README.stream5 for details on the configuration options.
# Example config (that emulates Stream4 with UDP support compiled in)
preprocessor stream5_global: max_tcp 8192, track_tcp yes, \
track_udp no
preprocessor stream5_tcp: policy first, use_static_footprint_sizes
# preprocessor stream5_udp: ignore_any_rules
# Performance Statistics
# ----------------------
# Documentation for this is provided in the Snort Manual.
You should read it.
# It is included in the release distribution as doc/snort_manual.pdf
# preprocessor perfmonitor: time 300 file /var/snort/snort.stats pktcnt 10000
# http_inspect: normalize and detect HTTP traffic and protocol anomalies
# lots of options available here. See doc/README.http_inspect.
# unicode.map should be wherever your snort.conf lives, or given
# a full path to where snort can find it.
preprocessor http_inspect: global \
iis_unicode_map unicode.map 1252
preprocessor http_inspect_server: server default \
profile all ports { 80
} oversize_dir_length 500
Example unique server configuration
#preprocessor http_inspect_server: server 1.1.1.1 \
ports { 80
flow_depth 0 \
ascii no \
double_decode yes \
non_rfc_char { 0x00 } \
chunk_length 500000 \
non_strict \
oversize_dir_length 300 \
# rpc_decode: normalize RPC traffic
# ---------------------------------
# RPC may be sent in alternate encodings besides the usual 4-byte encoding
# that is used by default. This plugin takes the port numbers that RPC
# services are running on as arguments - it is assumed that the given ports
# are actually running this type of service. If not, change the ports or turn
# The RPC decode preprocessor uses generator ID 106
# arguments: space separated list
# alert_fragments - alert on any rpc fragmented TCP data
# no_alert_multiple_requests - don't alert when &1 rpc query is in a packet
# no_alert_large_fragments - don't alert when the fragmented
sizes exceed the current packet size
# no_alert_incomplete - don't alert when a single segment
exceeds the current packet size
preprocessor rpc_decode: 111 32771
# content goes on for a long time...因此一个单个配置语句如下所示:preprocessor rpc_decode: 111 32771Snort 在这里使用了大量的关键字,但是为了配合本文的主题,即提供一种实用的、基本的 Snort 方法,因此不会过多涉及这些内容。但是,需要在这个文件中注意两项内容:简短的 Snort 指令,通常包括 preprocessor 语句(关于查找内容)和用于发出警告的 output 语句(未显示在清单 4 中)。默认的 snort.conf 文件实际上是一个功能完整的、有用的配置文件。这不是无用数据,它可用于 Snort 安装。使用 Snort 检测入侵准备好配置文件后,可以作为一种入侵检测程序运行 Snort(将在稍后添加规则),清单 5 展示了以 IDS 形式启动 Snort 的输出,并在前台运行。清单 5. 作为 IDS 运行 Snort bdm0509:/usr/local/snort-2.8.1] sudo snort -de -l logs/ -c etc/snort.conf
Running in IDS mode
--== Initializing Snort ==--
Initializing Output Plugins!
Initializing Preprocessors!
Initializing Plug-ins!
Parsing Rules file etc/snort.conf
PortVar 'HTTP_PORTS' defined :
PortVar 'SHELLCODE_PORTS' defined :
[ 0:79 81:65535 ]
PortVar 'ORACLE_PORTS' defined :
Frag3 global config:
Max frags: 65536
Fragment memory cap: 4194304 bytes
Frag3 engine config:
Target-based policy: FIRST
Fragment timeout: 60 seconds
Fragment min_ttl:
Fragment ttl_limit (not used): 5
Fragment Problems: 1
Stream5 global config:
Track TCP sessions: ACTIVE
Max TCP sessions: 8192
Memcap (for reassembly packet storage): 8388608
Track UDP sessions: INACTIVE
Track ICMP sessions: INACTIVE
Stream5 TCP Policy config:
Reassembly Policy: FIRST
Timeout: 30 seconds
Static Flushpoint Sizes: YES
Reassembly Ports:
21 client (Footprint)
23 client (Footprint)
25 client (Footprint)
42 client (Footprint)
53 client (Footprint)
80 client (Footprint)
110 client (Footprint)
111 client (Footprint)
135 client (Footprint)
136 client (Footprint)
137 client (Footprint)
139 client (Footprint)
143 client (Footprint)
445 client (Footprint)
513 client (Footprint)
514 client (Footprint)
1433 client (Footprint)
1521 client (Footprint)
2401 client (Footprint)
3306 client (Footprint)
HttpInspect Config:
GLOBAL CONFIG
Max Pipeline Requests:
Inspection Type:
Detect Proxy Usage:
IIS Unicode Map Filename: etc/unicode.map
IIS Unicode Map Codepage: 1252
DEFAULT SERVER CONFIG:
Server profile: All
Flow Depth: 300
Max Chunk Length: 500000
Max Header Field Length: 0
Inspect Pipeline Requests: YES
URI Discovery Strict Mode: NO
Allow Proxy Usage: NO
Disable Alerting: NO
Oversize Dir Length: 500
Only inspect URI: NO
Ascii: YES alert: NO
Double Decoding: YES alert: YES
%U Encoding: YES alert: YES
Bare Byte: YES alert: YES
Base36: OFF
UTF 8: OFF
IIS Unicode: YES alert: YES
Multiple Slash: YES alert: NO
IIS Backslash: YES alert: NO
Directory Traversal: YES alert: NO
Web Root Traversal: YES alert: YES
Apache WhiteSpace: YES alert: NO
IIS Delimiter: YES alert: NO
IIS Unicode Map: GLOBAL IIS UNICODE MAP CONFIG
Non-RFC Compliant Characters: NONE
Whitespace Characters: 0x09 0x0b 0x0c 0x0d
rpc_decode arguments:
Ports to decode RPC on: 111 32771
alert_fragments: INACTIVE
alert_large_fragments: ACTIVE
alert_incomplete: ACTIVE
alert_multiple_requests: ACTIVE
Portscan Detection Config:
Detect Protocols:
TCP UDP ICMP IP
Detect Scan Type:
portscan portsweep decoy_portscan distributed_portscan
Sensitivity Level: Low
Memcap (in bytes):
Number of Nodes:
ERROR: Unable to open rules file: ../rules/local.rules or etc/../rules/local.rules
Fatal Error, Quitting..截至最后一行为止,一切运行顺利。Snort 期望发现一些规则文件,但是没有找到,因此出现错误。 默认的配置文件包含一些规则文件Snort 提供了一些标准规则文件,具有预定义的名称和函数。如果再次打开 snort.conf 文件,并浏览最底部的内容,将看到如清单 6 所示的一组命令: 清单 6. snort.conf 文件的底部####################################################################
# Step #6: Customize your rule set
# Up to date snort rules are available at http://www.snort.org
# The snort Web site has documentation about how to write your own custom snort
#=========================================
# Include all relevant rulesets here
# The following rulesets are disabled by default:
web-attacks, backdoor, shellcode, policy, porn, info, icmp-info, virus,
chat, multimedia, and p2p
# These rules are either site policy specific or require tuning in order to not
# generate false positive alerts in most environments.
# Please read the specific include file for more information and
# README.alert_order for how rule ordering affects how alerts are triggered.
#=========================================
include $RULE_PATH/local.rules
include $RULE_PATH/bad-traffic.rules
include $RULE_PATH/exploit.rules
include $RULE_PATH/scan.rules
include $RULE_PATH/finger.rules
include $RULE_PATH/ftp.rules
include $RULE_PATH/telnet.rules
include $RULE_PATH/rpc.rules
include $RULE_PATH/rservices.rules
include $RULE_PATH/dos.rules
include $RULE_PATH/ddos.rules
include $RULE_PATH/dns.rules
include $RULE_PATH/tftp.rules
include $RULE_PATH/web-cgi.rules
include $RULE_PATH/web-coldfusion.rules
include $RULE_PATH/web-iis.rules
include $RULE_PATH/web-frontpage.rules
include $RULE_PATH/web-misc.rules
include $RULE_PATH/web-client.rules
include $RULE_PATH/web-php.rules
include $RULE_PATH/sql.rules
include $RULE_PATH/x11.rules
include $RULE_PATH/icmp.rules
include $RULE_PATH/netbios.rules
include $RULE_PATH/misc.rules
include $RULE_PATH/attack-responses.rules
include $RULE_PATH/oracle.rules
include $RULE_PATH/mysql.rules
include $RULE_PATH/snmp.rules
include $RULE_PATH/smtp.rules
include $RULE_PATH/imap.rules
include $RULE_PATH/pop2.rules
include $RULE_PATH/pop3.rules
include $RULE_PATH/nntp.rules
include $RULE_PATH/other-ids.rules
# include $RULE_PATH/web-attacks.rules
# include $RULE_PATH/backdoor.rules
# include $RULE_PATH/shellcode.rules
# include $RULE_PATH/policy.rules
# include $RULE_PATH/porn.rules
# include $RULE_PATH/info.rules
# include $RULE_PATH/icmp-info.rules
# include $RULE_PATH/virus.rules
# include $RULE_PATH/chat.rules
# include $RULE_PATH/multimedia.rules
# include $RULE_PATH/p2p.rules
# include $RULE_PATH/spyware-put.rules
# include $RULE_PATH/specific-threats.rules
include $RULE_PATH/experimental.rules
# include $PREPROC_RULE_PATH/preprocessor.rules
# include $PREPROC_RULE_PATH/decoder.rules
# Include any thresholding or suppression commands. See threshold.conf in the
# &snort src&/etc directory for details. Commands don't necessarily need to be
# contained in this conf, but a separate conf makes it easier to maintain them.
# Note for Windows users:
You are advised to make this an absolute path,
# such as:
c:\snort\etc\threshold.conf
# Uncomment if needed.
# include threshold.conf该文件试图包含一些规则文件,这些行中最主要的一行如下所示:include $RULE_PATH/local.rules接下来,要运行 Snort 需要一些可以加载和使用的规则。 告诉 Snort 如何使用规则规则在 Snort 术语里面就是 Snort 指令;具体来讲,规则就是如何检查、分析或报告包。虽然配置是关于 Snort 如何操作的更加一般化的规则集,但在包每次跨过所监视的网络接口时,规则将告诉 Snort 执行什么操作。Snort 中的规则由两个基本部分组成:告诉 Snort 查找包中的特定内容,例如 Web 请求中的 GET 或 telnet 连接中的特定端口。 告诉 Snort 在找到特定内容时执行何种操作。多数情况下仅是触发一个警告,允许您对警告进行响应。 因此对于每一个可能的入侵连接,Snort 都需要使用一条规则(或涵盖多个相关入侵的规则)。这种方法的缺点十分明显:需要处理的入侵太多了。即使是专职网络管理员或系统管理员,也无法应付所有不同的入侵,而且新的入侵每天都会出现。更糟糕的是,如果您是一个小型组织的 Web 开发人员,并且兼管 Snort,或者试图劝说已经满负荷工作的管理员再负责 Snort,这更不可能。所幸的是,Snort 解决了这些问题。获得 Snort 的默认规则由于 Snort 是一种技术性的、特定于网络的产品,人们在不断改进 Snort 的同时更新目前流行的入侵类型 —— 以及如何检测并响应这些入侵。每当发布 Snort 的新版本时,将附带一组新的 “默认” 规则集。这个默认规则集基本上涵盖了需要进行保护的所有内容,并且非常简单。导航到 Snort Web 站点(访问
小节的链接),单击左侧导航的 Rules 链接。在规则页面的顶部有一个灰色的导航栏,单击上面的 VRT Rules。向下滚动已注册用户部分,可以找到一组匹配您所使用的 Snort 版本的规则集;图 1 显示了这部分 Snort 站点。注意:确保在下载规则之前已经登录。图 1. 从 Snort Web 站点下载默认规则这将下载一个 ZIP 文件,名为 snortrules-snapshot-2.8.tar.gz。展开这个文件,将得到一个名为 snortrules-snapshot-2.8_s 的文件夹。这个文件夹的内容如图 2 所示。 图 2. 从 Snort Web 站点获得规则“安装” 默认规则集默认情况下,Snort 至少会在 Snort 安装的 rules 目录中查找一个名为 local.rules 的规则集。因此,利用刚才下载的规则,只需将展开的规则文件夹复制或移动到 Snort 安装目录:[bdm0509:/usr/local/snort-2.8.1] cp -rp ~/Downloads/snortrules-snapshot-2.8_s/rules .还应该复制下载的规则中的 etc/ 目录。这将更新您的默认配置,从而包括任何附加的规则文件,这些规则文件可能需要用于这个版本的规则:[bdm0509:/usr/local/snort-2.8.1] cp -rp ~/Downloads/snortrules-snapshot-2.8_s/etc .完成以上所有操作后,您的 Snort 目录结构应当如清单 7 所示。清单 7. 含有一个规则目录的 Snort 安装目录[bdm0509:/usr/local/snort-2.8.1] ls
autom4te.cache configure.in ltmain.sh snort.8
ChangeLog config.guess contrib
config.h depcomp
Makefile config.h.in doc
mkinstalldirs templates
Makefile.am config.log etc
preproc_rules verstuff.pl
Makefile.in config.status install-sh rpm
RELEASE.NOTES config.sub libtool
aclocal.m4 configure logs
schemas嵌套的目录中也包含了大量规则。清单 8 展示了从 Snort 站点获得的所有规则文件。 清单 8. Snort 的 rules/ 目录中的规则[bdm0509:/usr/local/snort-2.8.1] ls rules
Makefile.am
info.rules
smtp.rules
VRT-License.txt
local.rules
snmp.rules
attack-responses.rules misc.rules
specific-threats.rules
backdoor.rules
multimedia.rules spyware-put.rules
bad-traffic.rules mysql.rules
cgi-bin.list
netbios.rules
telnet.rules
chat.rules
nntp.rules
tftp.rules
content-replace.rules open-test.conf
virus.rules
ddos.rules
oracle.rules
voip.rules
deleted.rules
other-ids.rules
web-attacks.rules
web-cgi.rules
policy.rules
web-client.rules
experimental.rules pop2.rules
web-coldfusion.rules
exploit.rules
pop3.rules
web-frontpage.rules
finger.rules
porn.rules
web-iis.rules
web-misc.rules
icmp-info.rules
rservices.rules
web-php.rules
icmp.rules
scan.rules
imap.rules
shellcode.rules在 Mac OS X 上的问题如果在这个阶段尝试在大多数平台上运行 Snort,则应该没有问题。然而,值得一提的是与 Mac OS X 有关的一些问题,特别是在将 Snort 引入 UNIX 或 Linux 生产服务器之前使用 Mac 作为测试机器。需要执行一些步骤才能在 Mac OS X 上正确地运行 Snort。首先,需要删除当前的 Snort 安装并重新构建。但不需要手工删除文件。运行以下命令即可: make clean上面的命令将删除所有文件,为重新构建适合 Mac OS X 的安装做好准备。然后,发出以下命令:[bdm0509:/usr/local/snort-2.8.1] glibtoolize --force
Using `AC_PROG_RANLIB' is rendered obsolete by `AC_PROG_LIBTOOL'
[bdm0509:/usr/local/snort-2.8.1] sudo aclocal -I m4
[bdm0509:/usr/local/snort-2.8.1] sudo autoheader
[bdm0509:/usr/local/snort-2.8.1] sudo automake --add-missing --copy
[bdm0509:/usr/local/snort-2.8.1] sudo autoconf
[bdm0509:/usr/local/snort-2.8.1] export LD_TWOLEVEL_NAMESPACE=1现在,可以重新运行 make 命令,然后运行 make install 命令(上一篇文章已详细描述)。您将获得大量输出,现在基本上可以开始运行 Snort 了。还需要进行一处修改,即 etc/snort.conf 配置文件。在 snort.conf 文件中查找以下行(最简单的方法是搜索 “dynamicengine”)。#
# Load a dynamic engine from the install path
# (same as command line option --dynamic-engine-lib)
dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so通过在行首插入 # 符号注释掉 dynamicengine 行,然后添加以下粗体显示的行: #
# Load a dynamic engine from the install path
# (same as command line option --dynamic-engine-lib)
#dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.so
dynamicengine /usr/local/lib/snort_dynamicengine/libsf_engine.dylib还需要执行几个类似的修改。搜索 “Step #2”,将看到清单 9 所示的内容: 清单 9. 在代码中搜索 Step #2####################################################
# Step #2: Configure dynamic loaded libraries
## If snort was configured to use dynamically loaded libraries,
# those libraries can be loaded here.#
# Each of the following configuration options can be done via# the command line as well.
## Load all dynamic preprocessors from the install path
# (same as command line option --dynamic-preprocessor-lib-dir)
dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_dcerpc_preproc.so
dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_dns_preproc.so
dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_ftptelnet_preproc.so
dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_smtp_preproc.so
dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_ssh_preproc.so
# Comment out above and uncomment this if running OSX
#dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_dcerpc_preproc.dylib
#dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_dns_preproc.dylib
#dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_ftptelnet_preproc.dylib
#dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_smtp_preproc.dylib
#dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_ssh_preproc.dylib注意:为了方便输出和在 Web 上查看,一些行被人为地打断。这些指令在 snort.conf 中都在同一行上,您应该在自己的配置文件中保持这种格式。您将需要如实地根据说明操作。注释掉前面的几行,然后去掉后面几行的注释,如清单 10 所示。清单 10. 显示需要注释和去掉注释的行####################################################
# Step #2: Configure dynamic loaded libraries
## If snort was configured to use dynamically loaded libraries,
# those libraries can be loaded here.#
# Each of the following configuration options can be done via# the command line as well.
## Load all dynamic preprocessors from the install path
# (same as command line option --dynamic-preprocessor-lib-dir)
#dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_dcerpc_preproc.so
#dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_dns_preproc.so
#dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_ftptelnet_preproc.so
#dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_smtp_preproc.so
#dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_ssh_preproc.so
# Comment out above and uncomment this if running OSX
dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_dcerpc_preproc.dylib
dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_dns_preproc.dylib
dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_ftptelnet_preproc.dylib
dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_smtp_preproc.dylib
dynamicpreprocessor
file /usr/local/lib/snort_dynamicpreprocessor/libsf_ssh_preproc.dylib现在,可以运行 Snort 了,看上去似乎需要很多工作,但是使用与网络或系统相关的工具可以轻松地完成此类配置。最棒的是这种工作只需做一次(或少数几次)。但是,在继续之前需要注意,由于大多数规则包含一个新版本的 snort.conf 文件,您需要在每次复制新的文件或 etc/ 目录时执行这些步骤的最后一个步骤。这些内容的细节不是本文探讨的范围,并且涉及到真正的网络和系统管理员问题,作为一名 Web 开发人员或设计师不需要花时间细究这些问题。现在,只需执行这些指令,如果有兴趣进一步了解,可访问 Snort 在线论坛(参见 )。以 IDS 的形式运行 Snort具备了默认的规则集,并且对 Mac OS X(如果使用该平台的话)进行了调整,就可以开始启动 Snort 了。清单 11 显示了需要使用的命令,以及该命令的一部分输出。清单 11. 运行 Snort(没错错误)[bdm0509:/usr/local/snort-2.8.1] sudo snort -de -l logs/ -c etc/snort.conf
Running in IDS mode
--== Initializing Snort ==--
Initializing Output Plugins!
Initializing Preprocessors!
Initializing Plug-ins!
Parsing Rules file etc/snort.conf
PortVar 'HTTP_PORTS' defined :
PortVar 'SHELLCODE_PORTS' defined :
[ 0:79 81:65535 ]
PortVar 'ORACLE_PORTS' defined :
Frag3 global config:
Max frags: 65536
Fragment memory cap: 4194304 bytes
Frag3 engine config:
Target-based policy: FIRST
Fragment timeout: 60 seconds
Fragment min_ttl:
Fragment ttl_limit (not used): 5
Fragment Problems: 1
Stream5 global config:
Track TCP sessions: ACTIVE
Max TCP sessions: 8192
Memcap (for reassembly packet storage): 8388608
Track UDP sessions: INACTIVE
Track ICMP sessions: INACTIVE
Stream5 TCP Policy config:
Reassembly Policy: FIRST
Timeout: 30 seconds
Static Flushpoint Sizes: YES
Reassembly Ports:
21 client (Footprint)
23 client (Footprint)
25 client (Footprint)
42 client (Footprint)
53 client (Footprint)
80 client (Footprint)
LOTS more output like this for a while...
+++++++++++++++++++++++++++++++++++++++++++++++++++
Initializing rule chains...
8771 Snort rules read
8771 detection rules
0 decoder rules
0 preprocessor rules
8771 Option Chains linked into 501 Chain Headers
0 Dynamic rules
+++++++++++++++++++++++++++++++++++++++++++++++++++
+-------------------[Rule Port Counts]---------------------------------------
+----------------------------------------------------------------------------
+-----------------------[thresholding-config]----------------------------------
| memory-cap : 1048576 bytes
+-----------------------[thresholding-global]----------------------------------
+-----------------------[thresholding-local]-----------------------------------
| gen-id=1
sig-id=12224
type=Limit
tracking=src count=1
seconds=600
| gen-id=1
sig-id=12228
type=Limit
tracking=src count=1
seconds=30
| gen-id=1
sig-id=7055
type=Limit
tracking=src count=1
seconds=300
| gen-id=1
sig-id=7069
type=Limit
tracking=src count=1
seconds=300
| gen-id=1
sig-id=7068
type=Limit
tracking=src count=1
seconds=300
| gen-id=1
sig-id=7074
type=Limit
tracking=src count=1
seconds=600
| gen-id=1
sig-id=12121
type=Limit
tracking=src count=1
seconds=300
| gen-id=1
sig-id=12122
type=Limit
tracking=src count=1
seconds=18000
More packet information rolling by...
+-----------------------[suppression]------------------------------------------
-------------------------------------------------------------------------------
Rule application order: activation-&dynamic-&pass-&drop-&alert-&log
Log directory = logs/
Verifying Preprocessor Configurations!
Warning: 'ignore_any_rules' option for Stream5 UDP disabled because of UDP rule with
flow or flowbits option
Warning: flowbits key 'access.download' is set but not ever checked.
Warning: flowbits key 'dce.bind.mqqm' is checked but not ever set.
Warning: flowbits key 'sylk.download' is set but not ever checked.
Warning: flowbits key 'AdvancedSpy_detection' is set but not ever checked.
Warning: flowbits key 'works.download' is set but not ever checked.
Warning: flowbits key 'mspub_header' is set but not ever checked.
358 out of 512 flowbits in use.
*** interface device lookup found: en0
Initializing Network Interface en0
Decoding Ethernet on interface en0
[ Port Based Pattern Matching Memory ]
+-[AC-BNFA Search Info Summary]------------------------------
| Instances
| Patterns
| Pattern Chars
| Num States
| Num Match States : 177685
26.49Mbytes
Match Lists
Transitions
+-------------------------------------------------
--== Initialization Complete ==--
-*& Snort! &*-
Version 2.8.1 (Build 28)
By Martin Roesch & The Snort Team:
http://www.snort.org/team.html
(C) Copyright
Sourcefire Inc., et al.
Using PCRE version: 6.5 01-Feb-2006
Rules Engine: SF_SNORT_DETECTION_ENGINE
Version 1.8
&Build 13&
Preprocessor Object: SF_SSH
Version 1.1
Preprocessor Object: SF_SMTP
Version 1.1
Preprocessor Object: SF_FTPTELNET
Version 1.1
&Build 10&
Preprocessor Object: SF_DNS
Version 1.1
Preprocessor Object: SF_DCERPC
Version 1.1
Not Using PCAP_FRAMES
System will wait here until you exit Snort...
^C*** Caught Int-Signal
Run time prior to being shutdown was 356.123989 seconds
===============================================================================
Packet Wire Totals:
893 (100.000%)
0 (0.000%)
Outstanding:
0 (0.000%)
===============================================================================
Breakdown by protocol (includes rebuilt packets):
(100.000%)
ETHdisc: 0
IP6 EXT: 0
IP6opts: 0
IP6disc: 0
IP4disc: 0
ICMP-IP: 0
TCPdisc: 0
UDPdisc: 0
ICMPdis: 0
ETHLOOP: 0
DISCARD: 0
InvChkSum: 458
Total: 893
===============================================================================
Action Stats:
ALERTS: 33
LOGGED: 33
===============================================================================
Frag3 statistics:
Total Fragments: 0
Frags Reassembled: 0
Discards: 0
Memory Faults: 0
Timeouts: 0
Overlaps: 0
Anomalies: 0
FragTrackers Added: 0
FragTrackers Dumped: 0
FragTrackers Auto Freed: 0
Frag Nodes Inserted: 0
Frag Nodes Deleted: 0
===============================================================================
Stream5 statistics:
Total sessions: 62
TCP sessions: 18
UDP sessions: 44
ICMP sessions: 0
TCP Prunes: 0
UDP Prunes: 0
ICMP Prunes: 0
TCP StreamTrackers Created: 20
TCP StreamTrackers Deleted: 20
TCP Timeouts: 4
TCP Overlaps: 0
TCP Segments Queued: 0
TCP Segments Released: 0
TCP Rebuilt Packets: 0
TCP Segments Used: 0
TCP Discards: 120
UDP Sessions Created: 46
UDP Sessions Deleted: 46
UDP Timeouts: 2
UDP Discards: 0
===============================================================================
HTTP Inspect - encodings (Note: stream-reassembled packets included):
POST methods:
GET methods:
Post parameters extracted:
Double unicode:
Non-ASCII representable:
Directory traversals:
Extra slashes ("//"):
Self-referencing paths ("./"):
Total packets processed:
===============================================================================
Snort exiting这产生了大量输出,并且指出了为什么在命令行运行 Snort 是一种临时的低效的方法。最好是在一个长期的持久的基础上运行 Snort(作为系统或后台进程运行)。但是,在进一步分析规则之前,如清单 11 所示,在 sudo
snort -de -l logs/ -c etc/snort.conf 命令中,应该将运行 Snort 的命令的各个部分分解。下面解释了各个部分的作用: sudo:允许您使用管理特权运行 Snort。上一篇文章对此已做讨论,但简而言之,Snort 需要比普通用户更多的权限。snort:显然,这用来运行 Snort。-de:“d” 选项使 Snort 侦听并显示应用程序层的数据,而 “e” 显示链接层包报头。这个选项实际上提供了有关 Snort 包嗅探的最详尽的记录(但都是必要的)。-l logs/:告诉 Snort 记录包和生成的警告,并将所有内容放入到 logs/ 目录。-c etc/snort.conf:表示使用 etc/snort.conf 作为配置文件来运行 Snort。三种基本的规则在使用当前的规则集运行 Snort 后,可以进一步编写您自己的规则。这种方法可以添加安全性和针对特定问题的检查,并意味着基于 Web 的攻击和与 HTTP 有关的问题将是关注的重点。但是,您首先需要了解一些有关规则构建的概念和理论。下面是一些通用的规则类型。通过查看每一种类型,您将大致了解使用 Snort 规则可以实现哪些操作。包基于它们所指向的端口的规则。这些规则主要侧重于接收包的端口。可以很容易地判断应用程序应该打开哪些端口,因此这种方法可以监视异常的或已关闭端口中潜在的非法通信。在这里,最常出现攻击源的是 IRC(Internet Relay Chat),下面的这条规则可以防止非法利用通用的 IRC 端口:
alert tcp $EXTERNAL_NET any -& $HOME_NET
(msg:"EXPLOIT CHAT IRC topic overflow"; flow:to_client,
content:"|EB|K[S2|E4 83 C3 0B|K|88 23 B8|Pw"; reference:bugtraq,573;
reference:cve,; classtype:attempted- sid:307; rev:9;)包基于包协议的规则。这些规则侧重于使用的协议,比如 HTTP 或 IP Mobility。例如,下面这条规则可以检测到潜在的恶意 SMTP SSL 请求:
alert tcp $SMTP_SERVERS 465 -& $EXTERNAL_NET any
(msg:"SMTP SSLv2 Server_Hello request";
flow:from_server, flowbits:isset,sslv2.client_hello.
content:"|04|"; depth:1; offset:2; content:"|00 02|"; depth:2; offset:5;
flowbits:set,sslv2.server_hello. flowbits:
metadata:policy balanced-ips drop, policy connectivity-ips drop,
policy security-ips drop,
classtype:protocol-command- sid:3497; rev:4;)包基于相关的应用程序的规则。很多应用程序本身没有问题,但是存在潜在的安全漏洞,比如这种应用程序所使用的某个端口或协议存在漏洞。下面的规则可以防止一种顽固的访问漏洞,即允许不当的下载请求:
alert tcp $HOME_NET any -& $EXTERNAL_NET $HTTP_PORTS
(msg:"WEB-CLIENT Microsoft Access file download request";
flow:to_server, content:"GET"; uricontent:".mdb";
flowbits:set,access. flowbits:
metadata: reference:url,support.microsoft.com/kb/925330;
classtype:misc- sid:13627; rev:1;)对于包来讲,不需要理解这些规则中的每一个选项;事实上,要做的是查看 nocase 的内容,而不是如何理解它的含义,或者弄明白规则创建者如何知道 IRC 通信流量通常经过 6666 与 7000 之间的端口。虽然提到过很多次,但是这里还要再重复一遍:如果您是一名设计人员,那么就关注设计方面的内容,如果是一名编程人员,那么就关注编程。以您的主要职能为重点,然后了解相关的 Snort 知识并使用它。随后则由网络或系统管理员来研究每个细节选项。一些常用的规则尽管不需要了解规则的所有细节,但是有些规则是应该熟悉的。这些规则侧重于 Web 或与 Web 相关的问题,并且不一定包含在从 Snort 获得的默认规则集中。避免成为垃圾邮件中转站首先,应当始终防止您的机器(为数百万个用户提供 Web 内容的机器)成为一个邮件中转站。大多数垃圾邮件发送者是这样工作的:他们通过另一个不受保护的机器发送邮件并隐藏自己的身份。实施这种保护实际上出于两种重要的原因:很明显,垃圾邮件不是什么好东西,没有人希望自己的服务器成为垃圾邮件发送者的资源。您的服务器的 IP 会被阻塞。这个问题对于 Web 开发人员来说更加严重。如果其他网络及其管理员意识到您的服务器是发送垃圾邮件的源头,那么很可能阻止您的服务器的 IP 地址访问他们的网络。在某些情况下,这只会影响邮件(来自您的服务器的邮件被阻塞或列入黑名单)。然而,有些情况下,来自或流向您的服务器的所有通信都将被阻塞。这意味着当有人尝试从这个网络访问您的站点时,他们也将受到阻塞,这也将缩减您的用户群。清单 12 展示了一个示例规则,可以将它添加到 Snort 设置中处理邮件转发。清单 12. 使用规则防止邮件转发alert tcp $SMTP_SERVERS 25 -& $EXTERNAL_NET any
(msg:"Possible mail relay usage"; content:"Relaying denied";
flags:A+; classtype:trojan- sid:1000001; rev:1;)详细分析 403 错误有时您希望 Snort 显示信息警告的内容。这些警告提供有用的数据,但是需要采用人工进一步分析。一个很好的例子就是 403 禁止消息(在请求受保护资源时 Web 服务器生成禁止消息)。Snort 可以检测所有这些 “403 - forbidden” 错误,然后发出警告。您将得到如下内容: HTTP/1.0 403 Access denied to 72.187.80.82/../../windows/system/cmd.exe显然,这不仅仅是一个错误的 URL 或坏链接……而是试图恶意利用一个命令行可执行文件。当然,可能还会得到类似如下的警告:HTTP/1.0 403 Access denied to 203.42.142.32/images/sg_talking.jpg乍看上去好像一切正常;似乎只是一个关于图像的权限问题。因此首先确定是否需要将一个 IP 或网络添加到黑名单,其次,需要检查您的应用程序。总之,您需要有关 403 的信息,以便作出决定。清单 13 显示了报告这些信息的规则。清单 13. 报告 403 错误的规则alert tcp $HTTP_SERVERS $HTTP_PORTS -& $EXTERNAL_NET any
(msg:"ATTACK-RESPONSES 403 Forbidden"; flow:from_server,
content:"HTTP/1.1 403"; depth:12; classtype:attempted- sid:1201; rev:7;)实际上这条规则现在包含在了较新的 Snort 版本中,但是如果您已经安装了 Snort,那么确保包含这条规则。如果管理员用电子邮件每月向您发送规则生成的警告,您将得到一些益处。这可以使您了解自己的应用程序设计中存在的潜在安全问题。 避免成为 Snort 权威最后一条忠告,特别是针对小型组织中的人员:小心不要成为 Snort 权威。学习 Snort 将投入大量的时间,这样就无法将精力集中在您的专长上:设计站点和构建 Web 应用程序等。当然,如果希望 进一步了解网络,那么就尽情地研究 Snort 吧。但是最好向目前的管理员推荐类似本文的文章,并鼓励他们完成这些工作,而不是成为他们学习 Snort 知识的管道。 从某种角度而言,对安全性有了一定的了解之后,就应该就此打住。学习一些关于 Snort 或其他 IDS 知识是容易的,并且容易因此变得多疑。攻击 Web 应用程序有很多方法,您不可能阻止所有攻击方式。与其熟悉并精通 Snort,还不如与管理员建立良好的关系。告诉他们您的安全需求和顾虑,然后由他们解决问题。从长远来看,与亲自接揽本应由管理员负责的安全性维护相比,这将受益匪浅。结束语好像 Snort 应该是由系统和网络管理员来使用的工具。作为一名 Web 设计师或应用程序编程人员,和管理员一起讨论他们如何安装 Snort 时,您可能会感到茫然。因此,如果您将这篇文章(或包含一些 Snort 规则的文本文件)交给管理员时,可能会遭到拒绝,您要为此做好心理准备。尽管如此,您的职责 是将所有工作整合到设计良好的 Web 站点,或一个经过调优的 Web 应用程序。因此,如果将保护您的工作成果的职责完全交付给其他人,那么这样做不仅愚蠢而且是不负责任的。通过一些准备工作、一些前瞻性考虑以及与您的管理员进行深入的交流,您将可以获得一些提示、技巧和本文详述的规则,并应用到企业的 Snort 设置中。如果您在一个更小的组织中工作,可能需要亲自负责 Snort 的工作。这也没有关系;它允许您使用正确的方式保护您的应用程序,并且最重要的是,确保您 Web 站点可以一直安全运行,使您可以在晚上关掉手机、传呼机等睡个安稳的觉。最重要的是,Snort 可以让您的 Web 应用程序在更广阔的环境中运行。 如果选择将站点和应用程序放在 Internet 中,那么将在一个非常公开的环境中运行;因此不能确定所有内容运行正常。然而,通过与管理员和组织中的其他成员进行交流,对 Snort 有了充分的了解,那么就可以在开发并部署应用程序之后实现长期运行。
相关主题您可以参阅本文在 developerWorks 全球网站上的 。本系列的第 1 部分 (developerWorks,2007 年 6 月),介绍 Snort 安装细节并帮助您检测 Web 站点入侵。
提供了有关 Snort 的所有内容。Red Hat Linux 提供了一个出色的特性,可以 。虽然有一点过时,但是基本概念仍然适用。如果希望拥有 Snort 的强大功能,但是需要提供专业支持的商业产品,请查看构建在 Snort 之上的 。访问 ,在线解答有关 Snort 的疑问。The
提供了所有 Snort 二进制文件和源文件下载。您可以从
下载一个面向 Mac OS X 的 C 编译器。可能需要一个帐户,但是可以免费注册和下载。下载 。 允许在 Windows 平台上实现 Snort 链接层网络访问。(Kerry Cox 和 Christopher Gerg,O'Reilly Media,Inc.)提供了有关安全性的更全面的介绍,并为站点管理提供了大量与 Snort 相关的内容。(Angela Orebaugh、Simon Biles 和 Jacob Babbin,O'Reilly Media, Inc.)是一份出色的参考资料,介绍了 Snort 知识和一些特殊任务,涵盖了基本安装、高级入侵检测和网络优化等。
添加或订阅评论,请先或。
有新评论时提醒我
static.content.url=http://www.ibm.com/developerworks/js/artrating/SITE_ID=10Zone=Web developmentArticleID=319920ArticleTitle=Snort 使用手册,第 2 部分: 配置publish-date=

我要回帖

更多关于 homemade 的文章

 

随机推荐