版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
开源入侵检测系统Snort2目录Snort的体系结构Snort的的部署方式Snort的工作模式Snort2的安装与配置Snort2的命令行参数Snort2的预处理器Snort的体系结构1Snort是著名的开源、跨平台、轻量级的网络入侵检测系统,遵循公共通用许可证GPL,采用易于扩展的模块化体系结构。Snort最早是由程序员MartyRoesch在1998年用C语言开发的基于libpcap/winpcap/npcap的数据包嗅探器和日志记录工具。Snort采用基于规则的网络信息搜索机制,对数据包进行内容的模式匹配,从中发现入侵和探测行为。Snort能对网络流量进行实时捕获,对协议进行分析,可以自定义规则库、预处理器及输出插件等扩充其功能,如果有与规则库匹配的非法流量和可疑数据,可以记录到日志文件,并实时报警。Snort简介包解码器、预处理器、检测引擎、报警输出是SNORT系统的基本模块,以插件形式存在,有很强的可扩展性SNORT的体系结构(1)包捕获器:SNORT本身没有捕获数据包的模块,只能借助Linux的捕包函数库Libpcap或Windows的Winpcap直接从网卡获得数据包,并将捕获的数据包传递给包解码器。(2)包解码器:用于将包捕获器传递过来的原始数据包进行解码,并将解码后的数据包存放到SNORT定义的结构体中,方便后续的预处理器和检测引擎处理。(3)预处理器:用于将包解码器解码后的数据包进行预处理操作,使之规范化,方便检测引擎的检测。另外,预处理器也可以检测数据包是否有明显的错误,如果有则直接报警输出。预处理器是插件形式存在的,SNORT中内置了一些常用的预处理器,用户可以根据需要有选择地使用,也可根据添加自定义的预处理器。(4)检测引擎:是SNORT系统最核心的模块,通过规则库判断经过解码和预处理之后的数据包是否存在入侵行为。需在SNORT启动前提前配置好规则库。(5)报警输出:若数据包被检测出错误或非法,则由此模块进行记录并报警。报警信息可以日志文件形式的保存,也可以保存在MYSQL、ORACLE等数据库系统中。用户也可以定制输出插件,将检测后的数据进行直观展示。(6)规则库:是检测引擎对数据包判断是否非法的依据,在SNORT启动时会对系统中的规则进行初始化,初始化好的规则被加载到一个三维链表中。(7)日志文件或数据库:用于记录报警信息。SNORT的体系结构Snort支持以内联(Inline)模式配置为IPS做阻断,只不过功能较弱。最常见的部署方式还是作为IDS来使用,与现有设备形成异构,实现网络流量的交叉检查。Snort作为IDS部署时,应将其以并联的方式挂接在所关注流量必经的链路上。可以将Snort部署在防火墙两侧,具体有以下3种部署方案。(1)部署防火墙外(2)部署在防火墙内(3)防火墙内外分别部署SNORT的部署方式Snort有嗅探器、数据包记录器和入侵检测3种工作模式。嗅探器模式:相当于Wireshark、tcpdump这样的数据包捕获工具,用户可以实时查看网络接口流量。数据包记录器模式:将抓取的数据包存储到本地硬盘中,文件名为snort.log.timestamp。用户可以使用Wireshark等软件或者snort-r功能分析该流量文件。入侵检测模式:最核心的模式,将捕获的数据包与检测规则进行模式匹配,当发现数据包匹配上某条规则,就会执行这条规则中所定义的动作。SNORT的工作模式SNORT2的关键文件SNORT的工作流程模块名源文件名称说明主模块SNORT.c主控模块plugbase.c完成插件的注册、初始化解码模块decode.c解码函数预处理模块preprocessors保存预处理插件规则处理模块rules.c完成所有与规则相关的工作parser.c完成—些辅助工作日志模块log.c完成与日志记录有关的功能SNORT的启动流程(1)调用初始化函数SnortInit(),完成命令行解析、输出模块注册、预处理模块注册、规则选项模块构建、加载动态插件等操作。(2)利用GetPacketSource()函数获取数据源,确定需要进行捕获数据报文的网卡,或者存储数据报文的文件;注册控制处理器,初始化进程文件和权限。SNORT的工作流程(3)调用函数SetPktProcessor()获取数据包,判断数据来源并标注对应的解码函数。(4)调用封装了Libpcap的DAQ函数库的DAQ_Start()函数,启动抓包流程。利用PacketLoop()函数循环抓包。SNORT能调用不同的解码函数对捕获的数据包进行解析,根据检测规则对异常协议进行识别与报警。数据包的处理过程SNORT的工作流程利用捕包库函数捕获到数据链路层的所有流量,包解码器按照数据包的类型逐层向上调用相应的解码函数解码。解码完毕后,识别出相应的协议类型,该过程是在数据链路层完成的。接下来调用网络层解码函数,对数据链路层解码完毕后的数据包做相似的解码工作。调用传输层解码函数对数据包进行最后的解码,并把解码后的数据包存放到系统定义好的数据结构中供预处理器来处理。Snort2的安装与配置2Snort2目前最高版本为2.9.20,有源码版和Windows版Snort2的安装安装完成后还需要安装Npcap,并对配置文件snort.conf进行编辑。Snort2的安装在WindowsXp/2003/Vista/2008上可以使用WinpcapWin7及以后上可以使用npcap,64bit,要匹配可以用snort-V查看Snort的版本和位数,也可以用snort-W可以查看版本、位数、可用接口等,还可以确定捕包函数库与Snort是否匹配。Snort2的安装配置snort.conf文件1)设置网络变量2)配置解码器3)配置基础检测引擎4)配置动态加载库5)配置预处理器6)配置输出插件7)自定义规则集8)自定义预处理器和解码器规则集9)自定义共享对象规则集Snort的配置1.设置网络相关变量IP变量ipvarHOME_NETanyipvarEXTERNAL_NETanyipvarDNS_SERVERS$HOME_NETipvarSMTP_SERVERS$HOME_NETipvarHTTP_SERVERS$HOME_NETipvarSQL_SERVERS$HOME_NETipvarTELNET_SERVERS$HOME_NETipvarSSH_SERVERS$HOME_NETipvarFTP_SERVERS$HOME_NETipvarSIP_SERVERS$HOME_NET Snort的配置(Snort.conf)1.设置网络相关变量端口变量portvarHTTP_PORTS[80,81,311,383,……portvarSHELLCODE_PORTS!80portvarORACLE_PORTS1024:portvarSSH_PORTS22portvarFTP_PORTS[21,2100,3535]portvarSIP_PORTS[5060,5061,5600]portvarFILE_DATA_PORTS[$HTTP_PORTS,110,143]portvarGTP_PORTS[2123,2152,3386]ipvarAIM_SERVERS[/23,/23,/24,……Snort的配置(Snort.conf)1.设置网络相关变量规则文件的路径(可以是相对路径,建议用绝对路径)104行:(105和106也可以先注释点)varRULE_PATHD:\snort\rules 规则路径varSO_RULE_PATHD:\snort\so_rules 共享函数库规则路径varPREPROC_RULE_PATHD:\snort\preproc_rules 预处理器规则路径注释掉113和114行#varWHITE_LIST_PATHD:\snort\rules 允许列表地址#varBLACK_LIST_PATHD:\snort\rules 屏蔽列表地址Snort的配置(Snort.conf)4.配置动态加载库可动态加载的模块改247行和250行dynamicpreprocessordirectoryD:\snort\lib\snort_dynamicpreprocessor 动态预处理器库路径dynamicengineD:\snort\lib\snort_dynamicengine\sf_engine.dll 基本预处理器引擎路径注释掉253行#dynamicdetectiondirectory/usr/local/lib/snort_dynamicrules 动态规则库路径Snort的配置(Snort.conf)5.配置预处理器用于将包解码器解码后的数据包进行预处理操作,使之规范化,方便检测引擎的检测。也可以检测数据包是否有明显的错误,如果有则直接报警输出。预处理器是插件形式存在的,源文件名都是以spp_开头的,SNORT中内置了一些常用的预处理器,如:IP分片重组(frag2)、TCP流重组(stream4)、各种应用层解码等。用户可以根据需要有选择地使用,通常采用默认值,也可根据添加自定义的预处理器。常见分类:模拟TCP/IP堆栈功能的插件:如IP分片重组、TCP流重组插件。各种解码插件:如HTTP解码插件、Unicode解码插件、RPC解码插件、Telnet协商插件等。规则匹配无法进行攻击检测时所用的检测插件:如端口扫描插件、Spade异常入侵检测插件、Bo检测插件、Arp欺骗检测插件等。Snort的配置(Snort.conf)6.配置输出插件在报文匹配某条规则需要输出时,调用相应的输出插件。它们的源文件名都以spo_开头,这些插件分为日志和警告两种类型放入两个列表中,在规则匹配过程中和匹配结束之后调用,以便记录日志和警告。输出方式1)输出到unified2文件:outputunified2:filenamesnort.log,limit128U2boat:用于将Unified2文件转换为不同格式的工具。U2SpewFoo:用于将Unified2文件的内容转储到stdout的轻量级工具。2)输出到syslog:outputalert_syslog:LOG_AUTHLOG_ALERT3)输出到pcap文件:outputlog_tcpdump:tcpdump.log4)输出到数据库:outputdatabase:alert,mysql,host=localhostuser=snortpassword=snorttestdbname=snortencoding=hexdetail=full Snort的配置(Snort.conf)7.定制snort规则集是检测引擎对数据包判断是否非法的依据,在SNORT启动时会对系统中的规则进行初始化,初始化好的规则被加载到一个三维链表中。#include<被包含文件的完整路径和文件名>include$RULE_PATH/local.rulesalerticmpanyany->anyany(msg:"TestingICMPalert";sid:1000001;)Snort的配置(Snort.conf)Snort的使用3嗅探器:从网络上读取数据包并作为连续不断的流显示在终端上。snort–v-i4:输出IP和TCP/UDP/ICMP的包头信息snort–vd-i4:输出IP和TCP/UDP/ICMP的包头信息和应用层的数据snort–vde-i4:输出数据链路层、IP和TCP/UDP/ICMP的包头信息以及应用层的数据数据包记录器:把数据包记录到硬盘上的log目录中(log目录必须存在)snort–dev–l./logsnort–dev–l./log-h/24网络入侵检测系统:此模式最复杂,且是可配置的,可以让Snort分析网络数据流以匹配用户定义的规则,并根据检测结果采取一定的动作。snort–dev–l./log
-h/24–csnort.conf为了提高性能,建议不要使用ve这两个参数Snort2的命令行参数c:\snort\bin>snort[options]<filters>主要snort参数介绍-A<alert>:设置<alert>的模式是full、fast,还是none;full模式是记录标准的alert模式到alert文件中;fast模式只写入时间戳、messages、IPs、ports到文件中,none模式关闭报警。-a:显示ARP包。-b:把LOG的信息包记录为TCPDUMP格式,所有信息包都被记录为二进制形式,这个选项对于fast记录模式比较好,因为它不需要花费包的信息转化为文本的时间。Snort在100Mbps网络中使用“b”比较好。-c<cf>:使用配置文件<cf>,这个规则文件是告诉系统什么样的信息要LOG,或者要报警,或者通过。-C:在信息包信息使用ASCII码来显示,而不是hexdump。Snort的命令行参数主要snort参数介绍-d:解码应用层-D:把Snort以守护进程的方法来运行,默认情况下alert记录发送到/var/log/snort.alert文件中去。-e:显示第二层(数据链路层)的包头信息。-F<bpf>:从<bpf>文件中读BPF过滤器(filters),这里的filters是标准的BPF格式过滤器。-h<hn>:设置网络地址,如一个C类IP地址,使用这个选项,可限制数据进出的方向。-i<if>:使用网络接口参数<if>。-l <ld>:LOG信息包记录到<ld>目录中去。-M<wkstn>:发送WinPopup信息到包含<wkstn>文件中存在的工作站列表中去,这选项需要Samba的支持,wkstn文件很简单,每一行只要添加包含在SMB中的主机名即可(注意不需要两个斜杠\\)。Snort的命令行参数主要snort参数介绍-n<cnt>:指定在处理<cnt>个数据包后退出。-N:关闭Log记录,但ALERT功能仍旧正常。-o:改变所采用的记录文件,如正常情况下采用Alert→Pass→Log,而采用此选项是这样的顺序:Pass→Alert→Log,其中Pass是那些允许通过的规则而不记录和报警,ALERT是不允许通过的规则,LOG指LOG记录。-p:关闭杂乱模式嗅探方式,一般用来更安全的调试网络-r<tf>:读取tcpdump方式产生的文件<tf>,这个方法用来得到一个Shadow(ShadowIDS产生)文件,因为这些文件不能用一般的EDIT来编辑查看。-sLOG:报警的记录到syslog中去,在LINUX机器上,这些警告信息会出现在/var/log/secure,在其它平台上将出现在/var/log/message中。Snort的命令行参数主要snort参数介绍-S<n=v>:设置变量值,这可以用来在命令行定义Snortrules文件中的变量,如要在Snortrules文件中定义变量HOME_NET,可以在命令行中给它预定义值。-v:使用为verbose模式,把信息包打印在console中,这个选项使用后会使速度很慢,这样结果在记录多的是时候会出现丢包现象。-V:显示SNORT版本并退出。-?:显示帮助信息。-W:显示可用接口以上这些参数大多可组合进行使用。Snort的命令行参数Snort入侵检测实例1.实现快速嗅探在命令行输出检测到的IP/TCP/UDP/ICMP数据。如果想要把数据的包头信息在命令行显示,可以使用:
snort-v-i4命令行中会打印出如下的信息:11/25-21:14:34.2352489:8080->:3635TCPTTL:52TOS:0x0ID:32998IpLen:20DgmLen:40DF***A****Seq:0xBAFF71D6Ack:0xAA0A104DWin:0x7ETcpLen:20Snort的命令行参数Snort入侵检测实例1.实现快速嗅探如果打开-d开关,将显示HEX和ASCII形式的应用数据(OSI模型的第七层),命令如下:snort-vd-i4命令行中会打印出如下的信息:11/25-22:53:33.081641->ICMPTTL:128TOS:0x0ID:41593IpLen:20DgmLen:60Type:8Code:0ID:1Seq:44ECHO6162636465666768696A6B6C6D6E6F70abcdefghijklmnop71727374757677616263646566676869qrstuvwabcdefghiSnort的命令行参数Snort入侵检测实例2.实现记录数据包确认log目录已经存在,再使用下面的命令:snort-de-ld:\snort\log-i4-KASCII注意:这里少了-v选项,这意味着Snort将不在屏幕上显示输出信息。命令的前部分使Snort进入探测模式,它在d:\snort\log目录下为每个用户发起的连接创建文件。每个文件中包含的是以ASCII格式显示的流量信息。Snort的命令行参数Snort入侵检测实例2.实现记录数据包确认log目录已经存在,再使用下面的命令:snort-ld:\snort\log-b-i4进入数据包记录界面,同时在log目录下会生成一个名如snort.log.xxxxxxxxxx的日志文件,所有的网络流量将以二进制的形式记录下来,并以PCAP的格式写入到该日志文件中。这样做的优点:(1)允许利用开放源码或者商业的探测器程序进行浏览,例如,Wireshark等。(2)允许重放Snort或者探测程序。(3)速度快,基本上Snort可以得到所有的流量并写入到文件。可用snort-de-rd:\snort\log\snort.log.xxxxxxxxxx重新读入到Snort,用于解码Snort的命令行参数高性能的配置方式在一个高数据流量(如大于100Mb/s)的网络环境下运行snort,就需考虑如何配置snort才能使它高效率地运行,这就要求使用更快的输出功能,产生更少的警告,可使用以下选项:-b-Afast-sSnort的命令行参数Snort的预处理器4预处理器(Preprocessor)用于将包解码器解码后的数据包进行预处理,如对分片的数据包进行重组、规范化等,方便检测引擎的检测。预处理器也可以检测数据包是否有明显的错误,如果有则直接报警输出。当某些入侵行为无法使用检测规则检测时,还能将检测算法以预处理器的形式实现,预处理器也可以进行入侵检测并生成告警。Snort的预处理器Snort2中内置了一些常用的预处理器,用户可以根据需要有选择地使用,也可根据添加自定义的预处理器。内置的预处理器插件可以大致分为三类:(1)模拟TCP/IP堆栈功能的插件,如IP分片重组(frag3)、TCP流重组(stream5)。(2)应用层解码插件,如HTTP解码插件、IMAP解码插件、POP解码插件、SMTP解码插件、RPC解码插件、Telnet协商插件等。(3)规则匹配无法进行检测或异常检测时所用的插件,如PortScan(端口扫描)插件、BO(BackOrifice,后门)检测插件、ARPSpoof(ARP欺骗)检测插件等。Snort的预处理器预处理器是以插件形式存在的,其代码独立于Snort核心代码之外,用户可以在配置文件(snort.conf)中选择要加载哪些预处理器,以便Snort启动时可以动态加载。当Snort运行时,已经注册的预处理器主函数会以链表形式链接起来,进入预处理器模块的数据包会被每一个预处理器处理。Snort的预处理器常用预处理插件1.Normalize2.Frag33.stream54.HTTPInspect5.RPCDecode6.BOSnort的预处理器7.FTP和Telnet8.SMTP9.sfportscan10.ARPSpoof11.SSH12.DNSTHANKS!让网络更安全让世界更美好开源入侵检测系统Snort3目录Snort3概述Snort3的安装Snort3的配置Snort3功能组件的安装及配置Snort3的检查器Snort3概述1Snort3,也称为Snort++,是Cisco(思科)团队历经7年的时间,用C++重新设计的下一代IPS。它采用了一种全新的设计,具有更高的性能、更快的处理速度、更好的可扩展性和可用性,是保护用户网络免受不必要流量、恶意软件、垃圾邮件和网络钓鱼文档等影响首选的开源IPS。Snort3主要的新功能和改进包括:(1)新的进程架构,使Snort3可以有效处理Snort2规避的现代架构。(2)全新的C++设计,使代码库更加模块化,可扩展性更好,更易于在网络上进行维护。(3)多线程、共享内存和Hyperscan等的使用,使Snort3处理数据包所需的资源更少,内存利用率更高,可以更轻松地扩展到网络,启动和处理速度也更快,性能显著提高。(4)Luajit插件允许用户编写自己的插件,更容易根据自己的需要进行定制,比如完成自定义规则选项、深入文件处理等任务。Snort3的新功能Snort3主要的新功能和改进包括:(5)Snort3的规则可以采用LUA格式,规则语法也更简洁,方便用户创建规则,减少规则冗余,同时也使规则更易于编写和理解、运行也更快。比如,规则头中的协议、源目地址、端口和方向操作符都是可选的,若省略则表示匹配任意(相当于关键词any的作用)。(6)Snort3使用了超过200个插件的完整插件系统(Snort2仅在预处理和输出模块中使用插件),用户可以根据网络情况进行自定义设置。(7)重写了TCP处理。(8)改进了共享对象规则,包括为零日漏洞添加规则的能力。(9)使用了新的性能监视器和新的时间和空间分析方法。Snort3的新功能最显著的区别是进程架构Snort2与Snort3的区别特性Snort2Snort3多线程支持每个进程一个每个进程任意多个插件仅限于预处理和输出具有超过200个插件的完整插件系统与端口无关的协议检查不支持支持IPS加速器/支持Hyperscan不支持支持模块化不支持支持可扩展内存分配不支持支持下一代TALOS规则-比如正则表达式/规则选项/粘性缓冲区不支持支持新的和改进的HTTP检查器-比如支持HTTP/2不支持支持TALOS提供的轻量级内容更新不支持支持Snort3的安装2Snort3目前只有源码版(.tar.gz的源码包),可以手动编译安装在Kali、CentOS、FreeBSD、Ubuntu、OracleLinux等基于Linux的操作系统上。Snort3的安装Snort3-.tar.gz:Snort3的源码安装包。libdaq-3.0.10.tar.gz:Snort3的数据采集器。snortrules-snapshot-31470.tar.gz:Snort3的订阅规则集。pulledpork3-main.zip:用来下载和合并Snort规则集的脚本。snort-openappid.tar.gz:使Snort能识别、控制和测量网络上正在使用的应用程序。gperftools-2.9.1.tar.gz:GooglePerfTools工具集,可以提高Snort性能、减少内存使用,可在/gperftools/gperftools下载最新版。splunk-9.0.4-de405f4a7979-linux-2.6-amd64.deb:一个安全信息和事件管理(SIEM)系统,它收集、存储并允许轻松地进行分析以及可视化数据,包括Snort创建的警报。主要安装包及其功能主要路径/usr/localbinetcvarlogsnort.exesnort2lua.exesnortrulessnortgcc :编译器,如果报错,apt-getinstallg++flex :DAQ所需的解析器bison :DAQ所需的解析器zlib1g-dev :Snort所需的压缩库libpcap-dev :Snort所需的网络流量捕获头文件库libdnet-dev :不是必要的,为几个网络历程提供了简化的可移植接口luajit :lua的头文件库headersbuild-essential :提供编译软件的构建工具libpcre3-dev :Snort所需的pcre3的头文件libdumbnet-dev :同libdnetopenssllibssl-dev :ssl的加密组件,提供SHA和MD5文件签名部分依赖包的功能安装编译环境及依赖包安装snort的数据采集库DAQ安装TCMalloc(Google开发的内存管理工具)安装snort3网卡的配置将下载snort3规则复制到规则目录中修改snort3的配置文件新增测试规则文件启动snort3验证效果安装和配置OpenAppID安装和配置pulledpork3安装和配置splunk安装流程Snort3的配置3Snort3也有免费版(Community)、注册版(Registered)、收费版(Subscription)三类规则。可以分解为下载规则、修改配置文件和运行Snort三个部分。使用注册规则集用户也可以根据需要创建自定义的规则文件,再在自定义的规则文件中创建用户自定义的规则,在对Snort进行配置让自定义的规则生效。1.创建自定义的规则文件和规则sudovi/usr/local/etc/snort/rules/test.rules alerticmpanyany->anyany(msg:"ICMPTrafficDetected";sid:10000001;metadata:policysecurity-ipsalert;)2.使用自定义的规则文件和规则1)sudosnort-c/usr/local/etc/snort/snort.lua-R/usr/local/etc/snort/rules/test.rules-ieth0-Aalert_fast2)sudovi/usr/local/etc/snort/snort.luainclude$RULE_PATH/test.rulessudosnort-c/usr/local/etc/snort/snort.lua-ieth0-Aalert_fast使用自定义规则启用JSON输出插件,可以将Snort3的告警信息写入JSON格式的文本文件,以便导入到安全信息和事件管理系统SIEM中(如Splunk)。启用JSON输出插件Snort3功能组件的安装及配置4处理前面介绍的Snort3的基本功能之外,Snort3还有很多可选的功能组件或第三方的软件,可以增强Snort3的功能。OpenAppID:使Snort能够识别、控制和测量网络上正在使用的应用程序。PulledWork:管理Snort规则集的工具。Snort3自启动脚本:系统启动时Snort3能自动运行Splunk:SIEM(SecurityInformationandEventManagement)工具,可对信息进行统一、实时的监控、历史分析,对外部的入侵和内部的违规、误操作行为进行监控、审计分析、调查取证、出具各种报表报告,以实现资源合规性管理的目标,同时提升企业的安全运营、威胁管理和应急响应的能力。Snort3功能组件的安装及配置Snort3的检查器Inspector5功能相当于Snort2的预处理器,用于对解码后的数据包进行错误检测和预处理,方便检测引擎的检测。Snort3也内置了一些常用的检查器,如normalize、stream5、http_inspect、http2_inspect、RPCDecode、bo、smtp、arpspoof、ssh、dce、dns、ssl、sip、imap、pop、modbus、dnp3等,用户可以根据需要有选择地使用,也可根据添加自定义的预处理器。Snort3的检查器InspectorTHANKS!让网络更安全让世界更美好Snort的规则目录规则的基本语法规则的存储结构规则的组成规则的编写与测试规则的基本语法1Snort是一个强大的、基于特征检测的轻量级网络入侵检测系统,它能根据规则对数据流量进行实时分析,通过攻击特征来识别网络发生的攻击行为,并根据检测结果采取一定的动作。对于Snort来说,规则很重要,它是检测引擎的核心内容,是检测引擎判断数据包是否非法的依据。规则的概述Snort规则库中可以有很多的规则,规则有以下的语法要求:(1)规则分类存放在不同的规则文件中。每个规则文件都是文本文件,其命名格式为“类名.rules”。(2)需要使用的规则文件应该用include语句包含在配置文件(如snort.conf,snort.lua)中,语法格式为“include<includefile_path/name>”。(3)若想禁用已包含在配置文件中的规则文件,可以在句首加“#”将其注释掉。(4)在每个规则文件中可以添加一条或多条规则,每条规则占一行。暂时不用的规则可以用“#”注释掉。(5)Snort3增加了#begin和#end注释,允许规则编写者轻松注释多行。规则的基本语法规则中使用变量名的定义变量的定义格式:var<name><value>例:varMY_NET/24alerttcpanyany->$MY_NETany(flags:S;msg:”SYNPacket”)说明:1)$name或$(name):用name的内容替换变量name2)$(name:-default):如果name没有定义就使用default的内容替换变量3)$(name:?message):使用变量name的内容替换变量,如果不成功就打印错误信息message并退出。例:varMY_NET$(MY_NET:-/24)logtcpanyany->$(MY_NET:?MY_NETisundefined!)23规则的基本语法每条规则中的各个规则选项之间是“与”的关系。只有当一个数据包与一条规则中所有的规则选项都匹配时,才算匹配该规则,从而判定该数据包为有害数据包。而在庞大的规则库中,不同的规则之间是“或”的关系,只要一个数据包与某条规则匹配,就判定该数据包为有害数据包。规则的应用逻辑Snort用一个二维链表存储规则,每一条规则都包括规则头和规则选项两个部分,二维链表的其中一维表示规则头,另一维表示规则选项。规则的存储结构每一条规则的规则头部分以规则树节点存储,规则选项部分则以规则选项节点存储。同一条规则的规则树节点与规则选项头节点链接起来。具有相同规则动作(如alert、log、pass等)的规则树节点也链接起来,形成链表判定树。规则的组成2snort的每条规则都可以分成逻辑上的两个部分:规则头和规则选项
规则头:包括规则行为(action)、协议(protocol)、源/目的IP地址、源/目的端口和方向。规则选项:包含报警信息和异常包的信息(特征码,signature),使用这些特征码来决定是否采取规则规定的行动。格式:(关键字:参数;关键字:参数;关键字:参数;……)采用递归的方法进行规则匹配满足一个规则时,触发相应的操作用户可以根据自己需要添加所需的规则模块
规则的组成举例规则的组成举例规则的组成alerttcpanyany->/24111(content:”|000186a5|”;msg:”mountdaccess”;)规则头规则选项规则含义:任何使用TCP协议连接网络/24中任何主机的111端口的数据包中,如果出现了数据000186a5,便发出警告信息mountdaccess规则头包括7个部分,按照顺序分别是规则动作(Action)、协议类型(Protocol)、网络(Networks)、端口(Ports)、方向操作符(DirectionOperator)、网络(Networks)、端口(Ports)。ActionProtocolNetworksPortsDirectionOperatorNetworksPorts举例:alerttcp$HOME_NETany->$EXTERNAL_NETE$HTTP_PORTS(RULE_OPTIONS)alertudp$EXTERNAL_NET$FILE_DATA_PORTS->$HOME_NETany(RULE_OPTIONS)规则头规则头的语法,Snort2和Snort3有一些区别。在Snort2中,规则头任何一个部分都不可以省略。而在Snort3中,选项Protocol、Networks、Ports和DirectionOperator是可选的,若省略则表示匹配任意,类似于用关键字any,方向是双向(入站/出站)。下面的规则头表示任意地址的TCP流量都要告警。alerttcp(RULES_OPTIONS)Snort3的语法有助于更快地创建规则、减少冗余的规则。但在实际使用时最好有选择性地省略选项,以免在读取规则时产生歧义。规则头(1)规则的动作alert:使用选定的报警方法产生报警信息,并且记录数据包log:记录数据包pass:忽略数据包drop:丢弃并记录数据包reject:拒绝并记录数据包,如果协议是TCP则发送TCP重置;如果协议是UDP则发送ICMP端口不可达消息。sdrop:阻止数据包,但不记录它。activate:报警并激活另一条dynamic规则dynamic:保持空闲状态,直到被activete规则激活,作为一条log规则自定义动作(ruletype):定义自己的规则类型,并将一个或多个输出插件与它们关联起来。然后将规则类型作为Snort规则中的操作。规则头Snort常作为IDS来使用,但它也可配置为IPS,只不过功能较弱。Snort使用数据采集器(DAQ)监听防火墙数据包队列,配合Snort规则动作drop、alert等处理数据包,防火墙在Snort启动后添加链表队列。数据包经过防火墙时将交给Snort来处理,触发入侵检测规则时立刻响应动作并阻止数据包。IPS应该直连在网络中。(1)规则的动作自定义动作(ruletype)例:创建一条规则,记录到tcpdump。ruletypesuspicious{typelogoutputlog_tcpdump:suspicious.log}规则头例:创建记录到系统日志和和tcpdump的规则ruletyperedalert{typealertoutputalert_syslog:LOG_AUTHLOG_ALERToutputlog_tcpdump:suspicious.log}(2)协议每条规则的第二项就是协议项。Snort工作在网络层和传输层,不能直接工作在应用层,写规则时协议可以写TCP、UDP、ICMP、IP,不能写ARP、FTP、TELNET、SMTP、HTTP等。在Snort3中新增了协议关键字HTTP进行HTTP内容检测。在Snort2中,编写规则以检测HTTPURI、Header或Body中的内容时使用的协议为TCP。在Snort3中,则可以用新的协议关键字HTTP,这提供了以下好处:(1)无论HTTP是否使用标准端口,Snort都可以进行检测并对HTTP内容进行告警。因此,规则编写者不必担心某些恶意软件正在通信的端口是否为标准端口。(2)无需在metadata选项中定义的服务映射(例如servicehttp)。(3)使用Snort3新的粘性缓冲区和动态缓冲区的功能,对Snort3的规则进行简化和潜在的性能改进。规则头(3)IP地址单个IP格式:Alerttcp6any->8any(msg:”ipany”)IP组格式:alerttcp[,6,0]any->anyany(msg:"testpcreandcontent!";)alerttcp/24any->anyany(msg:"testpcreandcontent!";)alerttcp[/10,5/20]any->[0/30]any(msg:"testpcreandcontent!";)规则头(3)IP地址IP取反格式:!Alerttcp!6any->8any(msg:”ipany”)alerttcp![,6,0]any->anyany(msg:"testpcreandcontent!";)alerttcp![/10,5/120]any->anyany(msg:"testpcreandcontent!";)IP组使用变量alerttcp$HOME_NETany->anyany(msg:"testpcreandcontent!";)any表示所有IPalerttcpanyany->anyany(msg:"testpcreandcontent!";)规则头(4)端口号单个端口alerttcpany90->any80(msg:"testpcreandcontent!";)多个端口alerttcpany90:100->any80:100(msg:"testpcreandcontent!";)alerttcpany90:->any:100(msg:"testpcreandcontent!";)alerttcpany[90,9090,80,443]->any:100(msg:"testpcreandcontent!";)alerttcpany![90:100]->any80:100(msg:"testpcreandcontent!";)alerttcpany!90:->any:100(msg:"testpcreandcontent!";)alerttcpany![90,9090,80,443]->any:100(msg:"testpcreandcontent!";)使用变量alerttcpany$HTTP_PORTS->any:100(msg:"testpcreandcontent!";)规则头(5)方向操作符->:表示左边的地址和端口是源而右边的是目的。<-:表示右边的地址和端口是源而左边的是目的。<>:表示规则将被应用在两个方向上,若想同时监视服务器和客户端,可以用到这个标示。例如,你可以监视往来POP或者Telnet服务器的数据流。规则头规则选项构成了snort入侵检测引擎的核心,结合了易用性、通用和灵活性。
使用规则选项时要特别注意分号“;”和冒号“:”这两个符号的使用。在每条snort规则中,选项之间使用分号(;)进行分割。规则选项的关键词和其参数之间使用冒号(:)分割规则选项主要有四类General(一般规则选项):提供了有关该规则的信息,但在检测过程中没有任何影响Payload:查找数据包有效负载中的数据,并且可以相互关联non-payload:非有效负载数据post-detection:是在规则“触发”后发生的特定于规则的触发器。规则选项聪者听于无声,明者见于未形维护网络安全,首先要知道风险在哪里,是什么样的风险,什么时候发生风险,正所谓“聪者听于无声,明者见于未形”。感知网络安全态势是最基本、最基础的工作。
——2016年4月19日,习近平总书记在网络安全和信息化工作座谈会上的讲话聪者听于无声,明者见于未形“聪者听于无声,明者见于未形”,最早出自司马迁《史记·淮南衡山列传》:“臣闻聪者听于无声,明者见于未形,故圣人万举万全。”这是淮南王刘安的谋臣伍被劝谏刘安所说,大意是听力好的人能在无声时听出动静,视力好的人能在未成形前看出征兆,所以最智慧、最有道德的圣人做事总是万无一失。后来,东汉史学家班固在《汉书·蒯伍江息夫传》中也曾引用这句。今天,这句典故多被用于强调防范未知风险,见微知著,防微杜渐,增强对矛盾风险挑战的预判和准备。聪者听于无声,明者见于未形提高预见能力一直是党对领导干部的一项基本要求。在革命和建设年代,毛泽东同志就一直强调领导干部必须具有预见性。他指出:“预见就是预先看到前途趋向。如果没有预见,叫不叫领导?我说不叫领导。”很明显,领导干部努力提高预见能力,才能站得高,看得远,才能把握事物的发展规律,看到社会发展的长远趋势,提前做好政策布局。聪者听于无声,明者见于未形作为网络安全的专业技术人员,在构筑网络安全防线时,也要努力提高预见能力。只有对网络安全的发展趋势进行全面、准确地预判,知道风险在哪里,是什么原因导致的风险,是什么样的风险,什么时候发生风险,才能预先防范网络安全风险。General(一般规则选项):提供了有关该规则的信息,但在检测过程中没有任何影响规则选项Snort3规定,所有规则必须有sid选项,且sid不允许为0。(1)小于100:保留给未来扩充时使用。(2)100-1000000:用于Snort官方预设配置的规则项目。(3)大于1000000:本地自定义的规则项目。General(一般规则选项):提供了有关该规则的信息,但在检测过程中没有任何影响msg:一个简单的文本字符串,用于在报警和日志中打印消息msg:"<messagetext>";例:alerttcp$EXTERNALany->$INTERNAL79(msg:”Finger”)规则选项General(一般规则选项):提供了有关该规则的信息,但在检测过程中没有任何影响2、reference包含对外部攻击识别系统的引用。该插件目前支持几个特定的系统以及唯一的url。此插件将被输出插件用来提供一个指向有关所产生的警报的其他信息的链接reference:<idsystem>,<id>;[reference:<idsystem>,<id>;]alerttcpanyany->any7070(msg:"IDS411/dos-realaudio";flags:AP;content:"|fff4fffd06|";reference:arachnids,IDS411;)alerttcpanyany->any21(msg:"IDS287/ftp-wuftp260-venglin-linux";flags:AP;content:"|31c031db31c9b046cd8031c031db|";reference:arachnids,IDS287;reference:bugtraq,1387;reference:cve,CAN-2000-1574;)规则选项Payload:可以在数据包有效载荷内搜索并检测数据,并且很多规则选项之间是可以相互关联的。最主要的规则选项是content以及相关的修饰词选项,如nocase、rawbytes、depth、offset、distance、within等,它们能对content选项进行补充说明。Snort3删除了一些规则选项,如uricontent、http_encode等。规则选项content:是Snort最重要的规则选项之一,用于搜索数据包有效载荷中的特定内容,并基于该数据触发响应。在进行内容匹配时,使用的是最高效的字符串搜索算法Boyer-Moore(简称BM)。如果数据包有效载荷中的任何位置包含与指定内容完全匹配的数据,表示匹配成功,Snort将执行其余的规则选项测试。内容匹配时区分大小写。语法格式如下:content:"<contentstring>";如:alerttcpanyany->/24143(content:“|90c8c0ffffff|/bin/sh”;msg:"IMAPbufferoverflow");“|”管道符号:表示二进制数据,以字节码的形式表示,用于检测特定的数据模式或签名。规则选项-Payloadcontent的修饰词选项:用于对content选项进行补充说明。注意:content的修饰词选项的语法,Snort2和Snort3有较大的区别。在Snort2中,修饰词选项的格式和其他规则选项一样,选项名称和值之间用冒号“:”分隔,不同修饰词之间用分号“;”分隔,只是需要放在content选项的后面,具体格式如下:content:"要匹配的内容";[修饰词选项1:值;修饰词选项2:值;……]在Snort3中,修饰词选项需要放在content选项的内部,名称和值之间用空格分隔,不同修饰词之间用逗号“,”分隔,具体格式如下:content:"要匹配的内容",[修饰词选项1
值,
修饰词选项2值,……];规则选项-Payloadcontent的修饰词选项:用于对content选项进行补充说明。①nocase:表示忽略大小写。语法格式为“nocase;”。下面的规则表示字符串“USERroot”不区分大小写。alerttcpanyany->any21(msg:"FTPROOT";content:"USERroot",nocase;)。②rawbytes:表示匹配原始数据包数据,忽略任何由预处理器完成的解码。语法格式为“rawbytes;”。下面的规则告诉模式匹配器查看原始流量,而不是解码器提供的解码流量。alerttcpanyany->any21(msg:"TelnetNOP";content:"|FFF1|",rawbytes;)规则选项-Payloadcontent的修饰词选项:用于对content选项进行补充说明。③depth:表示匹配深度,指定Snort应该搜索指定模式的数据包的深度,与offset一起使用。例如,depth为5则告诉Snort只在有效载荷的前5个字节中查找指定的模式。depth关键字允许大于或等于正在搜索的模式长度的值,允许的取值范围为1-65535。语法格式为“depth[<number>|<var_name>];”。④offset:表示匹配起始偏移,指定从何处开始搜索数据包中的模式。例如,offset为4将告诉Snort在有效载荷的第5个字节开始查找指定的模式。offset允许-655535到65535之间的值。语法格式为“offset[<number>|<var_name>];”。下面的规则显示了content、offset和depth的组合使用,表示在有效载荷的第5个字节开始的20个字节之内查找“cgi-bin/phf”。alerttcpanyany->any80(content:"cgi-bin/phf",offset4,depth20;)规则选项-Payloadcontent的修饰词选项:用于对content选项进行补充说明。⑤distance:表示匹配相对于上个模式的偏移的距离,与offset类似,只是它是相对于前一个模式匹配的结束而不是数据包的开始,与within一起使用。语法格式为“distance[<byte_count>|<var_name>];”。下面的规则可以匹配正则表达式/ABC.{1,}DEF/,表示字符串“ABC”和“DEF”之间间隔一个字符。alerttcpanyany->anyany(content:"ABC";content:"DEF",distance1;)⑥within:表示相对于上个模式之后匹配深度,使content关键字的模式匹配之间最多有N个字节。语法格式为“within[<number>|<var_name>];”。下面的规则将“EFG”的搜索范围限制在“ABC”后的10个字节之内。alerttcpanyany->anyany(content:"ABC";content:"EFG",within10;)规则选项-Payloadcontent的修饰词选项:用于对content选项进行补充说明。⑦http_client_body:将搜索限制在HTTP客户端请求的主体上。使用此选项检查的数据量取决于HttpInspect的post_depth配置选项。当post_depth设置为-1时,与此关键字匹配的模式将不起作用。不能与rawbytes一起使用。语法格式为“http_client_body;”。下面的规则将对模式“ABC”的搜索限制在HTTP客户端请求的原始主体上。alerttcpanyany->any80(content:"ABC",http_client_body;)⑧http_cookie:将搜索限制在HTTP客户端请求或HTTP服务器响应的Cookie头部字段,不能与rawbytes、http_raw_cookie或fast_pattern一起使用。语法格式为“http_cookie;”。⑨http_raw_cookie:将搜索限制为HTTP客户端请求或HTTP服务器响应的未规范化(UNNORMALIZED)的Cookie头部字段,不能与rawbytes、http_cookie或fast_pattern一起使用。语法格式为“http_raw_cookie;”。规则选项-Payloadcontent的修饰词选项:用于对content选项进行补充说明。⑩http_header:将搜索限制在HTTP客户端请求或HTTP服务器响应的头部字段,不能与rawbytes一起使用。语法格式为“http_header;”。⑪http_raw_header:将搜索限制为HTTP客户端请求或HTTP服务器响应的未规范化(UNNORMALIZED)的头部字段,不能与rawbytes、http_header或fast_pattern一起使用。语法格式为“http_raw_header;”。⑫http_method:将搜索限制为从HTTP客户端请求中提取的方法,不能与rawbytes或fast_pattern一起使用。语法格式为“http_raw_header;”。⑬http_uri:将搜索限制在规范化(NORMALIZED)请求的URI字段,不能与rawbytes一起使用。语法格式为“http_uri;”。⑭http_raw_uri:将搜索限制在规范化(NORMALIZED)请求的URI字段,不能与rawbytes、http_uri或fast_pattern一起使用。语法格式为“http_raw_uri;”。规则选项-Payloadcontent的修饰词选项:用于对content选项进行补充说明。⑮http_stat_code:将搜索限制为从HTTP服务器响应中提取的状态代码字段,不能与rawbytes或fast_pattern一起使用。语法格式为“http_stat_code;”。⑯http_stat_msg:将搜索限制为从HTTP服务器响应中提取的状态消息字段,不能与rawbytes或fast_pattern一起使用。语法格式为“http_stat_msg;”。⑰fast_pattern:用于设置要与快速模式匹配器一起使用的content选项。快速模式匹配器可以选择那些有机会匹配的规则,从而显著减少需要评估的规则数量,提高性能。快速模式匹配器不区分大小写。每条规则只能指定一次fast_pattern选项,且不能与http_cookie、http_raw_uri、http_raw_header、http_raw_cookie、http_method、http_stat_code、http_stat_msg一起使用。fast_pattern选项可以单独使用,也可以选择接受参数。规则选项-Payloadisdataat选项用于验证有效载荷在指定位置是否有数据,可以选择查找与上一个内容匹配的末尾相关的数据。语法格式为“isdataat:[!]<int>[,relative|rawbytes];”。其中rawbytes修饰符表示查看原始数据包数据,忽略预处理器所做的任何解码,只要先前的内容匹配在原始数据包数据中,此修饰符可以与relative修饰符一起使用。下面的规则查找数据包中是否存在字符串“PASS”,并验证字符串“PASS”后面至少有50个字节。alerttcpanyany->any111(content:"PASS";isdataat:50,relative;)下面的规则查找数据包中是否存在字符串“foo”,并验证有效载荷里字符串“foo”后面没有10个字节。alerttcpanyany->any111(content:"foo";isdataat:!10,relative;)规则选项-Payloadpcre选项允许使用与perl兼容的正则表达式编写规则,可以实现比简单的内容匹配更复杂的匹配。语法格式如下:pcre:[!]"(/<regex>/|m<delim><regex><delim>)[ismxAEGRUBPHMCOIDKYS]";pkt_data选项用于将检测用的游标设置为原始传输的有效负载。pkt_data选项必须位于content选项之前,并在更改之前保持有效。此选项可以在一个规则中多次使用。语法格式为“pkt_data;”。规则选项-PayloadNon-payloadDetectionRuleOptions(非有效载荷检测规则选项)用来对数据包的非有效载荷部分(即数据包的包头)进行检测。这类规则选项主要有以下关键字:规则选项-Non-payloadttl:测试IP包头的TTL域的值ttl:"<number>";支持<,>和=操作符tos:测试IP包头的TOS(typeofservice)域的值tos:"<number>";例:alerttcp$EXTERNALany->$CISCOany(msg:”CiscoTOSExample”;tos:!”0”;)规则选项-Non-payloadid:测试IP分组标志符(fragmentID)域是否是一个特定的值id:"<number>";ipoption:查看IP选项(IPoption)域
rr:路由记录,
eof:Endoflist,nop:无操作,
ts:时间戳,
sec:IP安全选项,
lsrr:宽松源路由,
ssrr:严格源路由,satid:流标识符ipopts:<option>;规则选项-Non-payloadfragbits:测试IP包头的分片位R:保留位
D:DF位
M:MF位+
ALL标志,指定的位加上任何其它的位为真
*
ANY标志,指定的任何位为真
!
NOT标志,指定的位不为真-:不包含指定位例:alerttcp!$HOME_NETany->$HOME_NETany(fragbits:R+;msg:"ReserverdIPbitset!";)规则选项-Non-payloaddsize:测试数据包数据段的大小这个规则选项用来测试数据包负载的大小如果知道某个服务有一个特定大小的缓冲区,就能够设置这个选项来捕获制造缓冲区溢出的企图dsize:[>|<]<number>flow:<选项>to_serverto_client…..规则选项-Non-payloadflags:测试TCP标志(flag)是否是某个值F:FIN(TCP标志字节最左边一位)
S:SYN
R:RST
P:PSH
A:ACK
U:URG
2:保留位2
1:保留位1alerttcpanyany->anyany(flags:SF;msg:"PossibleSYNFINscan";)规则选项-Non-payloadseq:测试TCP包的序列号是否是某个值seq:<number>ack:测试TCP包的确认域是否为某个值只有一个实际的用途:检测NMAPTCPping扫描。扫描程序nmap进行TCPping扫描时,把TCP包头的确认号(4个字节)设置为0,然后向目标主机发出TCPACK包,确定目标主机是否正在运行alertanyany->/24any(flags:A;ack:0;msg:"nmapTCPping";)规则选项-Non-payloaditype:测试ICMP数据包的类型(type)域拒绝服务和淹没攻击的数据包有时使用无效的ICMP类型,可以使用这个规则选项对无效的ICMP类型进行检测,也就是说,这个规则选项中的值可以不是正常的数值itype:<number>icode:测试ICMP数据包的编码(code)域icode规则选项和itype非常相似,也是使用数字进行设置icode:<number>";)规则选项-Non-payloadicmp_id:测试ICMP回送包的标志符(ICMPECHOID)是否为某个值icmp_id:<number>icmp_seq:检测ICMP回送包的序列号的值因为一些隐秘通道程序在通讯时使用静态的ICMP域。icmp_seq:<number>规则选项-Non-payloadPost-DetectionRuleOptions是在规则被触发后发生的、特定于规则的触发器,主要有以下规则选项。规则选项-Post-Detectionlogto:把日志记录到一个用户指定的文件,而不是输出到标准的输出文件使用这个选项,对处理来自nmap扫描、HTTPCGI扫描的数据非常方便。注意如果使用二进制日志模式,这个选项会失效。logto:"<文件名>";session:对一个指定的会话记录其应用层信息观察用户在telnet、rlogin、ftp,甚至WEB会话过程中输入了什么,就可以使用这个规则选项session规则选项有两个参数关键词:printable、all。logtcpanyany<>/2423(session:printable;)规则选项-Post-Detectionreact:激活反应措施(阻塞WEB站点)基本的反应就是阻塞用户要访问的站点,例如色情站点
block:关闭连接并发出注意信息
warn:发出警告信息
msg:定义要包含在警告信息中的文本
proxy:<number>:使用代理服务器端口发送警告信息可选参数使用逗号分开,react关键词应该放在所有选项的最后react:<react_basic_modifier[,react_additionall_modifier...]>alerttcpanyany<>/2480(content-list:“adults”;msg:“Notforchildren!”;react:block,msg;)规则选项-Post-Detectionresp:激活反应措施(断开连接等)对于匹配某个规则的数据包,可以通过resp关键词使snort的灵活反应机制生效。使用FlexResp插件,snort能够主动断开恶意连接rst_snd:向发送方套接字发送TCP-RST数据包
rst_rcv:向接受方套接字发送TCP-RST数据包
rst_all:在两个方向上发送TCP-TST数据包
icmp_net:向发送方发送ICMP_NET_UNREACH数据包
icmp_host:向发送方发送ICMP_HOST_UNREACH数据包
icmp_port:向发送方发送ICMP_PORT_UNREACH数据包
icmp_all:向发送方发送以上各种类型的ICMP数据包多个参数可以结合使用,各个参数之间使用逗号隔开。alerttcpanyany->/241524(flags:S;resp:rst_all;msg:"Rootshellbackdoorattempt";)alertudpanyany->.0/31(resp:icmp_port,icmp_host;msg:"Hacker'sParadiseaccessattempt";)规则选项-Post-Detection实例1:IIS发布之初,附带的例子网页存在漏洞特点:保存在Web根目录下的/site/iisamples目录下。alerttcp$EXTERNAL_NETany->$HTTP_SERVER80(msg:”WEB_IISsite/iisamplesaccess”;flag:A+;uricontent:”/site/iisamples”;nocase;classtype:attemped-recon;sid:1046;rev:1;)攻击手段对应规则举例实例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度三人合伙开展物流仓储服务合同
- 2024年店铺分割财产分配协议
- 2024年废窑厂坑塘土地租赁协议
- 2024年度0架AC3A直升机购销协议
- 2024年度煤炭买卖合同(长协)
- 2024水电安装劳务分包合同范本
- 2024年度云计算服务与技术研发合同
- 2024年度新能源汽车销售与服务分包合同
- 2024购买车辆合同范本
- 2024年度智能家居解决方案合同
- Unit 2 This is my pencil. Lesson 10(教学设计)-2024-2025学年人教精通版英语三年级上册
- 2024至2030年中国岩土工程市场深度分析及发展趋势研究报告
- 新版高血压病人的护理培训课件
- 医院等级创建工作汇报
- 2024年江西省公务员录用考试《行测》题(网友回忆版)(题目及答案解析)
- VDA6.3基础培训考核测试卷附答案
- 第01讲 正数和负数、有理数-人教版新七年级《数学》暑假自学提升讲义(解析版)
- 信息系统部署与运维-题库带答案
- 婚姻心理学解读包含内容
- DZ/T 0462.3-2023 矿产资源“三率”指标要求 第3部分:铁、锰、铬、钒、钛(正式版)
- 备战2024年高考英语考试易错点12 名词性从句(4大陷阱)(解析版)
评论
0/150
提交评论