来源:整理自肥工大周健老师的PPT
目录
6.1 网络防御概述
一、网络防御的意义
进攻与防御是对立统一的矛盾体。进攻常常是为了有效的防御,而防御也常常是为了更好的进攻。
据说,普鲁士军事理论家、西方近代军事理论卡尔·菲利普·戈特弗里德·冯·克劳塞维茨曾经说过:进攻是最好的防守。
但是,克劳塞维茨确实说过:一将无谋,累死三军
他还说过:防御相比进攻是更强的战斗形式。
研究并积极部署网络防御技术,是达到“网络攻防平衡”的前提和基础
在网络空间中,如果只会进攻不懂防御,注定不会在网络攻防对抗中取得最终胜利。
二、被动防御技术和主动防御技术
所谓被动安全防御也称为传统的安全防御,主要是指以抵御网络攻击为目的的安全防御方法。
*典型的被动安全防御技术有:防火墙技术、加密技术、Virtual Private Network技术等*
主动网络安全防御则是以及时发现正在遭受攻击,并及时采用各种措施阻止攻击者达到攻击目的,尽可能减少自身损失的网络安全防御方法。
典型的主动安全防御技术有:网络安全态势预警、入侵检测、网络引诱、安全反击等技术。
三、网络安全纵深防御体系
网络安全的纵深防御(Defense in depth)的思想是指通过设置多重安全防御系统,实现各防御系统之间的相互补充,即使某一系统失效也能得到其他防御系统的弥补或纠正。
本质上是通过增加系统的防御屏障,既避免了对单一安全机制的依赖,也可以错开不同防御系统中可能存在的安全漏洞,从而提高抵御攻击的能力。
四、主要防御技术
1. 防火墙技术
防火墙是一种较早使用、实用性很强的网络安全防御技术,是最主要的被动安全防御技术之一。防火墙主要用于逻辑隔离不可信的外部网络与受保护的内部网络,或者说是用于对不同安全域的隔离。
2. 虚拟局域网技术
虚拟局域网(Virtual Private Network, Virtual Private Network)也是一种较早使用、实用性很强的网络安全被动防御技术,其主要的作用是通过加密技术,在不安全的网络中构建一个安全的传输通道,是加密和认证技术在网络传输中的应用。
3.入侵检测与防护技术
入侵检测与防护技术属于主动防御技术,主要有两种:入侵检测系统(lntrusion Detection System,IDS)和入侵防护系统( Intrusion Prevention System,IPS)。
- 入侵检测系统(IDS)注重的是网络安全状况的监管,通过监视网络或系统资源,寻找违反安全策略的行为或攻击迹缘,并发出报警
- 入侵防护系统(IPS)则倾向于提供主动防护,注重对入侵行为的控制。其设计宗旨是预先对入侵活动和攻击性网络流量进行拦截,避免其造成损失。
4. 网络蜜罐技术
蜜罐( Honeypot)技术也是一种主动防御技术,是一个“诱捕”攻击者的陷阱技术。蜜罐系统是一个包含漏洞的诱骗系统,通过模拟一个或多个易受攻击的主机和服务,给攻击者提供一个容易攻击的目标。攻击者往往在蜜罐上浪费时间,延缓对真正目标的攻击,而且可以为安全人员获得入侵取证提供重要的信息和有用的线索,便于研究入侵者的攻击行为。
6.2 防火墙基础
一、防火墙的基本概念
防火墙(Firewall),在徽派建筑中也称为马头墙,其本义是指设置在建筑物之间或在建筑物内部用以防火分隔以阻止火势或烟气蔓延,并具有较高的耐火性、稳定性、耐久性、隔热性和抗变形能力的墙体。
1. 防火墙的定义
在计算机网络(特别是互联网)中,防火墙特指一种在本地网络与外界网络之间的安全防御系统。作为一种非常有效的网络安全系统,防火墙能够隔离风险区域与安全区域的连接,同时不会妨碍安全区域对风险区域的访问。
1994年,William Cheswick 和Steven Bellovin在《Firewalls and Internet Security》一书中给出了防火墙的如下定义:
防火墙是位于两个网络之间的一组构件或一个系统,具有以下属性:
- 防火墙是不同网络或者安全域之间信息流的唯一通道,所有双向数据流必须经过防火墙。
- 只有经过授权的合法数据,即防火墙安全策略允许的数据才可以通过防火墙。
- 防火墙系统应具有很高的抗攻击能力,并且其自身还不受各种攻击的影响。
- 防火墙是位于两个(或多个)网络间,实施访问控制策略的一个或一组组件的集合。
2. 防火墙的基本要求
- 保障信任网络(内部网)的安全
- 保证信任网络与非信任网络(外部网)之间的连通
防火墙就是现实世界中的门卫
3.防火墙的作用
分离器:隔离风险区域,同时不妨碍对风险区域的访问;
限制器:不同网络或网络安全域之间信息的出入口并根据安全策略控制出入网络的信息流;
分析器:监控进出网络的信息流,仅让安全、核准了的信息进入,抵御对有安全威胁的数据包,从而完成看似不可能的任务。
4. 防火墙的基本要素
- 安全策略
- 信任网络(内部网)
- 非信任网络(外部网)
- 非信任网络(外部网)
二、防火墙的位置
1.防火墙的物理位置
在现实中,防火墙通常被部署在任何有访问控制需要的场合,比如局域网边界、两个不同的网络之间等。
2.防火墙的逻辑位置
逻辑位置指的是防火墙与ISO OSI模型对应的逻辑层次关系。处于不同层次的防火墙实现不同级别的过滤功能,其特性也不同。
一般说来,工作层次越高,能检查的信息就越多,其提供的安全保护等级就越高,复杂程度和实现难度也越大。
中继器级:不是严格意义上的防火墙,主要进行电磁辐射防护、物理物理隔离等。如网闸。
网桥级:透明模式的防火墙。本质上是利用防火墙连接了同一个网络的不同部分,用户感觉不到防火墙的存在,但在支持的功能方面有所欠缺。
路由器级:最主流的防火墙模式。防火墙处于网络边界或者两个不同网络之间,检查数据包的源、目的IP地址以及包首部的其他标志来确定是否允许数据包通过防火墙。
电路级:仅起到一种代理的作用,是一个安装专用软件的主机,并由其代表被保护主机与外界进行通信,也称为电路级代理。SOCKS协议是最著名的电路级代理协议。
网关级:也称应用层代理服务器,通常是一个安装了代理软件的主机,每一种应用都需要一个相应的代理软件。外界只能访问代理服务器而无法直接与被保护主机建立连接。
3. 防火墙的不足
作为网络边界防护机制,防火墙无法防范的安全威胁:
来自网络内部的安全威胁
通过非法外联的网络攻击
数据驱动型攻击(计算机病毒传播)
由于技术原因,无法有效防范的安全威胁:
针对开放服务安全漏洞的渗透攻击
针对网络客户端程序的渗透攻击
基于隐蔽通道进行通信的特洛伊木马或僵尸网络
三、防火墙技术类型
包过滤防火墙 (packet filter)
1988, DEC
网络包粒度, 工作在传输层与网络层之间, 主要实现形式为路由器ACL
状态防火墙 (stateful firewall)
1989, AT&T Bell
网络会话粒度,工作在传输层与网络层之间
目前防火墙最主要实现方式
应用层代理防火墙 (application layer firewall)
Paper: 1990 Purdue, AT&T
Product: 1991 DEC
工作在应用层
四、包过滤防火墙
1. 基本思想及实现原理
- 使用同一组规则,对到达的每个IP包进行匹配判断,并根据匹配成功与否决定转发或丢弃。
- 通常以到达数据包中的源、目标IP地址,以及源、目的端口号为判断对象
- 只要有一条规则被匹配,就根据规则决定其后续动作,不再匹配剩余规则
- 如果所有规则均未匹配,则采取默认规则
- 通常需要双向配置
2. 主要特点
包过滤防火墙实际上就是一种网络层的访问控制技术,通常可以在路由器上通过配置ACL的方式实现。
仅仅根据数据包自身包含的信息(协议头部)进行检查和过滤并没有考虑连接的状态。
优点:
实现简单
对用户透明
效率高
缺点:
正确制定规则并不容易
不可能引入认证机制
五、状态防火墙
1. 状态防火墙的基本思想
跟踪网络会话(连接)状态, 判断报文合法性
特性: 状态报文检查(SPI: stateful packet inspection)
2. 状态防火墙机制
跟踪和维护网络连接状态信息(CT: connection table)
TCP会话
SYN包: NEW connections
经过三次握手: ESTABLISHED connections
UDP会话
只有出现双向流量后,才设置为ESTABLISHED
规则配置
以会话为规则匹配粒度,即访问控制的对象为会话
支持对会话状态的匹配
六、代理
代理(proxy)也是一种安全防护技术。代理技术允许客户端通过代理服务器与网络服务进行非直接的连接
在代理服务器上可以进行访问控制和内容检查
1. 不同类型的代理技术
- 应用层:应用层代理 (HTTP代理)
- 传输层:电路级代理 (Socks代理)
- 网络层:NAT代理 (NAT网关、拨号上网路由器)
2. 应用层代理
应用层代理
也称为应用层网关、代理服务器
特定应用层网络服务(HTTP/Email…)
MPS – Microsoft Proxy Server、Squid
应用层代理优势
- 隐藏内部网络信息
- 通讯中转,严格内容审查
- 存储转发机制,在线审计
- 用户级身份认证机制
应用层代理不足
- 不通用、不透明、处理速度较慢、部署代价较高
3. 电路级代理
电路级代理
Socks代理
工作在传输层
同时为多种不同的应用服务提供支持
工作机制
TCP层中继
建立外部连接,并在连接会话间转发数据
差异:通用、用户级身份认证,但无法进行细致内容审查
4. NAT代理
NAT(网络地址转换)
- 允许多个用户分享少量或单一的IP地址(源NAT)
- 允许将网络服务映射到内部服务网络IP和端口(目的NAT)
NAT代理优势
- 方便:任意使用私有网段IP地址,无需申请,无冲突
- 安全:对外隐藏内部网络信息
七、Linux中的开源防火墙
Netfilter
Linux内核中的防火墙模块
Netfilter特性
- 包过滤->状态报文检查
- 灵活可扩展框架, 支持NAT网络地址转换, 提供多层API接口以支持第三方扩展
Netfilter功能
- 构建防火墙, NAT共享上网, 利用NAT构建透明代理, 构建QoS或策略路由器, …
Netfilter组成:由一系列表(Table)组成,每个表由若干个链(Chain)组成,每条链可以由一条或若干条规则(Rule)组成。
IPTables
- Linux应用层的防火墙配置工具
- ipfwadm(2.0.x)ipchains(2.2.x)iptables(2.4.x/2.6.x)
表→链→规则的分层结构
1、表(tables)
❐filter表:包过滤,有INPUT、FORWARD、OUTPUT三个链
❐nat表:地址转换,修改数据包的IP地址和端口号,有PREROUTING、POSTROUTING、OUTPUT三个链
❐mangle表:包重构,用于修改包的服务类型、生存周期以及为数据包设置Mark标记,以实现Qos(服务质量)、策略路由和网络流量整形等特殊应用。含PREROUTING、POSTROUTING、INPUT、OUTPUT和FORWARD五个链
❐raw表:数据跟踪,数据包是否被状态跟踪机制处理,有PREROUTING、OUTPUT两个链。
2、链(chains)
根据数据包流向的不同,有:
❐INPUT链:当数据包源自外界并前往防火墙所在的本机(入站)时,即数据包的目的地址是本机时,则应用此链中的规则。
❐OUTPUT链:当数据包源自防火墙所在的主机并要向外发送(出站)时,即数据包的源地址是本机时,则应用此链中的规则。
❐FORWARD链:当数据包源自外部系统,并经过防火墙所在主机前往另一个外部系统(转发)时,则应用此链中的规则。
❐PREROUTING链:当数据包到达防火墙所在的主机在作路由选择之前,且其源地址要被修改(源地址转换)时,则应用此链中的规则。
❐POSTROUTING链:当数据包在路由选择之后即将离开防火墙所在主机,且其目的地址要被修改(目的地址转换)时,则应用此链中的规则。
❐用户自定义链
3.规则(rules)
所谓规则实际上就是网络管理员根据安全需要而预先定义的过滤数据包的条件。
❐规则一般使用产生式进行定义,即“IF Then”方式。“如果数据包头符合这样的条件,就这样处理这个数据包”。
❐规则一般使用产生式进行定义,即“IF Then”方式。“如果数据包头符合这样的条件,就这样处理这个数据包”。
❐配置防火墙的通过工具进行规制的添加、修改和删除。
4.顺序
❐表间的优先顺序:raw➞mangle ➞ nat ➞ filter
❐链间的匹配顺序:
- 入站数据:PREROUTING➞ INPUT
- 出站数据:OUTPUT➞ POSTROUTING
- 转发数据:PREROUTING➞ FORWARD ➞ POSTROUTING
❐链内规则的匹配顺序:按顺序依次进行检查,找到相匹配的规则即停止(LOG策略会有例外)。若在该链内找不到相匹配的规则,则按该链的默认策略处理
5. Netfilter的运行机制
发送数据包时,数据包在协议栈中从上向下传送,每到达一层就会增加一个首部;在接受数据包时,数据包从下向上传送,每到达一层就剥离一个首部。
发送数据包时,数据包在协议栈中从上向下传送,每到达一层就会增加一个首部;在接受数据包时,数据包从下向上传送,每到达一层就剥离一个首部。
对于收到的每个数据包,都从“A”点进来,经过路由判决,如果是发送给本机的就经过“B”点,并向协议栈的上层继续传递;否则,如果数据包的目的地是不本机,那么就经过“C”点,并经“E”点将该包转发出去。
对于发送的每个数据包,首先也有一个路由判决,以确定该包是从哪个接口出去,然后经过“D”点,最后也是顺着“E”点将该包发送出去。
协议栈那五个关键点A,B,C,D和E就是Netfilter发挥作用的位置。
Netfilter在Linux内核中的位置如图所示:
Netfilter在netfilter_ipv4.h中将这个五个点重新命了个名,如下图所示:
在每个关键点(称为hook点)上,有很多已经按照优先级预先注册了的回调函数(称为“钩子函数”) ,形成一条数据包分析处理链。每个到来的数据包会依次被那些回调函数进行检查和处理并根据规则决定放行或丢弃。
处理完毕,每个回调函数最后必须向Netfilter返回处理结果。每个钩子函数向Netfilter返回下列几个值其中之一:
NF_ACCEPT:继续正常传输数据报,即该数据包正常,可以将其传送网络协议栈的下一个阶段。
NF_DROP:丢弃该数据报,不再传输。
NF_STOLEN:告诉Netfilter“忘掉”该数据报,由回调函数将从此开始对数据包的处理,并且Netfilter应当放弃对该数据包做任何的处理,回调函数从Netfilter获取了该数据包的所有权。
NF_QUEUE:对该数据报进行排队(通常用于将数据报给用户空间的进程进行处理)
NF_REPEAT:再次调用该回调函数,应当谨慎使用这个值,以免造成死循环。
6.3 入侵检测基础
一、 入侵检测技术基本概念
入侵检测(Intrusion Detection)
入侵检测,顾名思义,就是对入侵行为的检测与发现。
入侵检测即为通过对计算机网络或计算机系统中若干关键点信息的收集和分析,从中发现入侵行为的一种安全技术。
入侵(Intrusion)
一次入侵可被定义为任何尝试破坏信息资源的保密性、完整性或可用性的行为。
入侵检测系统(Intrusion Detection System,IDS)
实现入侵检测技术,专门用于入侵行为发现和处理的软件系统或硬件设备。
防火墙 VS IDS:: ::::::::::::::::::::::: 门卫 VS 巡逻队
二、入侵检测基本技术
误用检测(misuse detection)
也称为基于特征的检测 (signature-based detection)
建立起已知攻击的特征库
判别当前行为活动是否符合已知的攻击特征
异常检测(anomaly detection)
也称为基于行为的检测 (behavior-based detection)
首先建立起系统的正常模式轮廓
若实时获得的系统或用户的轮廓值与正常值的差异超出指定的阈值,就进行入侵报警
三、入侵检测系统分类
1。基于网络的入侵检测系统(NIDS)
IDS可以放在防火墙或者网关的后面,以网络嗅探器的形式捕获所有的对内对外的数据包
2.基于主机的入侵检测系统(HIDS)
安全操作系统必须具备一定的审计功能,并记录相应的安全性日志
基于内核——从操作系统的内核接收数据
基于应用——从正在运行的应用程序中收集数据
3。分布式入侵检测系统(DIDS)
入侵检测系统的部署位置
四、网络入侵防御系统
入侵防御系统(Intrusion Prevention System,IPS)是一种主动的、智能的入侵检测、防范、阻止系统,其设计旨在预先对入侵活动和攻击性网络流量进行拦截,避免其造成任何损失,而不是简单地在恶意流量传送时或传送后才发出警报。
IPS通常部署在网络(或被保护对象)的进出口处,当检测到攻击企图后,IPS自动地将攻击包丢掉或采取措施阻断攻击源。
1.IPS的特征
嵌入式运行模式
完善的安全策略
高质量的入侵特征库
高效处理数据包的能力
强大的响应功能
2. IDS与IPS的区别
IDS: 旁路监听,只起到Detection机制
侧重低漏报率,造成误报率较高
对使用者技术水平要求较高,应急响应及时
IPS:串联模式,实时处置数据包
侧重低误报率(对正常业务不造成影响)
高效的处理性能
即插即用,无需使用者参与
五、Snort网络入侵检测系统(我的配置报告)
1. Snort概述
Snort是一个开放源代码、免费、跨平台的基于规则的网络入侵保护和检测系统,支持各种形式的插件、扩充和定制,具有实时数据流量分析、对IP网络数据包进行日志记录、以及对入侵进行探测的功能。
Snort使用一种易于扩展的模块化体系结构,开发人员可以加入自己编写的模块来扩展Snort的功能,如HTTP解码插件、TCP数据流重组插件、端口扫描检测插件、FLEXRESP插件以及各种日志输入插件等。
2. Snort的特点
(1)Snort是一个轻量级的入侵检测系统。Snort虽然功能强大,但是其代码极为简洁、短小。
(2)Snort的跨平台性能极佳,Snort具有跨平台的特点,它支持的操作系统广泛,包括Linux、OpenBSD 、FreeBSD 、NetBSD 、Solaris 、HP-UX 、AIX 、IRIX 、Win32(Windows 9x/NT/2000)等。
(3)Snort的功能非常强大
Snort具有实时流量分析和日志IP网络数据包的能力。
Snort能够进行协议分析,内容的搜索/匹配。
Snort的日志格式既可以是Tcpdump式的二进制格式,也可以解码成ASCII字符形式。
Snort可以对TCP包进行重组。
Snort能够报告非正常的可疑包,从而对端口扫描进行有效的检测。
Snort还有很强的系统防护能力。
(4)良好的扩展性能
Snort对于新的攻击威胁反应迅速。作为一个轻量级的网络入侵检测系统,Snort有足够的扩展能力。 Snort支持插件,可以使用具有特定功能的报告、检测子系统插件对其功能进行扩展。Snort的插件库支持包括数据库日志输出插件、碎数据包检测插件、端口扫描检测插件、HTTP URI normalization插件、XML插件等。
(5)遵循公共通用许可证GPL
Snort遵循GNU通用公共许可证(GPL),所以任何企业、个人、组织都可以免费将其作为NIDS。
3. Snort的组成
Snort由数据包解码器、检测引擎、日志与报警系统等三个重要子系统构成。
4. Snort的工作模式
Snort有以下三种工作模式:
嗅探器——嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。
数据包记录器——数据包记录器模式把数据包记录到硬盘上。
网络入侵检测系统——网路入侵检测模式是最复杂的,而且是可配置的。用户可以让Snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
5. Snort的安装
Snort官网地址:Network Intrusion Detection & Prevention System
6. Snort应用
Snort总体结构
Snort的插件机制
在Snort中运用了插件机制。插件机制具有以下一些明显的优点:
通过增加插件,Snort能够非常容易地增加功能,使程序具有很强的可扩展性。
插件机制简化了Snort的编码工作。
插件机制使代码功能内聚,模块行强,程序相对易读。
插件模块包括预处理插件、处理插件和输出插件3种,它们通常对应规则中的一个或几个关键字,规则匹配中遇到这些关键字时就会激活相应的插件,以完成相应的功能。
(1)预处理插件
源文件名都以spp_开头,并在规则匹配(误用检测)之前运行,完成的功能主要分为以下几类。
模拟TCP/IP堆栈功能的插件:如IP碎片重组、TCP流重组插件。
各种解码插件:如HTTP解码插件、Unicode解码插件、RPC解码插件、Telnet协商插件等。
规则匹配无法进行攻击检测时所用的检测插件:如端口扫描插件、Spade异常入侵检测插件、Bo检测插件、Arp欺骗检测插件等
(2)处理插件
源文件名都以sp_开头,在规则匹配阶段的ParseRuleOptions中被调用,辅助完成基于规则的匹配检测过程。
每个规则处理函数通常对应规则选项中的一个关键字,实现对这个关键字的解释或辅助解释。这些插件的主要功能如下:
协议各字段的检查,如TCPFlag,IcmpType,IcmpCode,Ttl,IpId,TcpAck,TcpSeq,Dsize,IpOption,Rpc,IcmpId,IcmpSeq,IpTos,FragBits,TcpWin,IpProto和 IpSame等。
一些辅助功能,如Respond,Priority,PatternMatch,Session,React,Reference等,这些插件分别完成响应(关闭连接)、严重级别、模式匹配(内容)、会话记录、攻击响应(高级的响应机制)、攻击参考信息等功能。
(3)输出插件
源文件名都以spo_开头,这些插件分为日志和警告两种类型放入两个列表中,在规则匹配过程中和匹配结束之后调用,以便记录日志和警告。
以一个HTTP解码预处理器插件为例来解释插件的内部结构:
每个插件都有一个安装函数,名称为SetupXXX(),如Spp_http_decode.c:SetupHttpDecode()。
在解释规则文件时,如果检测到相应的关键字,系统就会使用规则文件中这些关键字后的字符串作为参数来调用相应的初始化函数。
在检测过程中,一旦规则匹配成功,就会触发处理函数的执行,预处理器就会在预处理过程中对数据报调用相应处理函数进行处理。
Snort的规则
Snort规则分为两个部分:规则头和规则选项。
- 规则头包含规则的动作、协议、源地址、目的地址、子网掩码、源和目的端口信息。
- 规则选项包含报警信息以及用于确定是否触发规则响应动作而检查的数据包区域位置信息。
规则头
(1)规则动作
规则的头包含了定义一个包的Who,Where和What信息,以及当满足规则定义的所有属性的包出现时要采取的行动。
规则的第一项是“规则动作”(Rule Action),“规则动作”告诉Snort在发现匹配规则的包时要干什么。在Snort中有5种动作:Alert,Log,Pass,Activate和Dynamic
(2)协议
规则的第二项是协议。Snort当前分析可疑包的协议有4种:TCP,UDP,ICMP和IP,将来可能会更多,如ARP,IGRP,GRE,OSPF,RIP,IPX等
(3)IP地址
规则头的下一个部分处理一个给定规则的IP地址和端口号信息。关键字“any”可以被用来定义任何地址。
有一个操作符可以应用在IP地址上,它是否定运算符。这个操作符告诉Snort匹配除了列出的IP地址以外的所有IP地址。否定操作符用“!”表示。下面这条规则对任何来自本地网络以外的流都进行报警。
(4)端口号
端口号可以用几种方法表示,包括“any”端口、静态端口定义、范围、以及通过否定操作符。“any”端口是一个通配符,表示任何端口。静态端口定义表示一个单个端口号,例如,23表示Telnet,80表示HTTP等。端口范围用范围操作符“:”表示。
(5)方向操作符
方向操作符“->”表示规则所施加的流的方向。方向操作符左边的IP地址和端口号被认为是流来自的源主机,方向操作符右边的IP地址和端口信息是目标主机,还有一个双向操作符“< >”,告诉Snort把地址/端口号对既作为源,又作为目标来考虑。这对于记录/分析双向对话很方便,例如,Telnet或者POP3会话 。
(6)Activate和Dynamic 规则
Activate和Dynamic规则对给了Snort更强大的能力。用户现在可以用一条规则来激活另一条规则,当这条规则适用于一些数据包时,在一些情况下这是非常有用的,例如用户想设置一条规则:当一条规则结束后来完成记录。Activate规则除了包含一个选择域:Activates外就和一条Alert规则一样。
注意:Activate和Dynamic 规则将被Tagging 所代替。在Snort的将来版本,Activate 和Dynamic规则将完全被功能增强的Tagging所代替。
规则选项
规则选项组成了Snort入侵检测引擎的核心,既易用又强大还灵活。所有的Snort规则选项用分号“;”隔开。规则选项关键字和它们的参数用冒号“:”分开。Snort中有42个规则选项关键字,如:
msg——在报警和包日志中打印一个消息。
logto——把包记录到用户指定的文件中而不是记录到标准输出。
ttl——检查IP头的TTL的值。
tos 检查IP头中TOS字段的值。
id——检查IP头的分片ID值。
ipoption 查看IP选项字段的特定编码。
fragbits 检查IP头的分段位。
dsize——检查包的净荷尺寸的值 。
flags ——检查TCP Flags的值。
seq——检查TCP顺序号的值。
ack——检查TCP应答(Acknowledgement)的值。
window 测试TCP窗口域的特殊值。
itype——检查ICMP Type的值。
icode——检查ICMP Code的值。
icmp_id——检查ICMP ECHO ID的值。
icmp_seq——检查ICMP ECHO 顺序号的值。
content——在包的净荷中搜索指定的样式。
content-list——在数据包载荷中搜索一个模式集合。
offset——Content选项的修饰符,设定开始搜索的位置。
depth——Content选项的修饰符,设定搜索的最大深度。
nocase——指定对Content字符串大小写不敏感。
session——记录指定会话的应用层信息的内容。
rpc——监视特定应用/进程调用的RPC服务。
resp——主动反应(切断连接等)。
react——响应动作(阻塞Web站点)。
reference——外部攻击参考IDS。
sid——Snort规则ID。
rev——规则版本号。
classtype——规则类别标识。
priority——规则优先级标识号。
uricontent——在数据包的URI部分搜索一个内容。
tag——规则的高级记录行为。
ip_proto——IP头的协议字段值。
sameip——判定源IP和目的IP是否相等。
stateless——忽略刘状态的有效性。
regex——通配符模式匹配。
distance——强迫关系模式匹配所跳过的距离。
within——强迫关系模式匹配所在的范围。
byte_test——数字模式匹配。
byte_jump——数字模式测试和偏移量调整。
规则的语法
规则分类存放在规则文件中。规则文件是普通的文本文件,用户可以使用普通的文本编辑器打开进行编辑。
规则文件可以包含注释行,注释行以“#”字符开头,#号前不能有任何非空字符。
Snort允许定义变量,并在规则中使用这些变量。变量的定义格式如下所示:
var:<name><value>
在规则中可以直接使用$<name>,而遇到变量名解释器就会使用<value>替代$<name>。
预处理程序
预处理程序使得Snort的功能可以很容易地扩展,用户和程序员能够将模块化的插件方便地融入Snort之中。预处理程序代码在探测引擎被调用之前、数据包译码之后运行。通过这个机制,数据包可以通过额外的方法被修改或分析。
使用preprocessor关键字加载和配置预处理程序。
在Snort规则文件中的preprocessor指令格式如下:
preprocessor <name>: <options>
例如:
preprocessor minfrag: 128
输出插件
输出插件使得Snort在向用户提供格式化输出时更加灵活。输出插件在Snort的告警和记录子系统被调用时运行,在预处理程序和探测引擎之后。规则文件中指令的格式非常类似于预处理程序。
格式:
output <name>: <options>
例子:
output alert_syslog:LOG_AUTH LOG_ALERT
规则例子
(1)记录所有登录到一个特定主机的数据包:
log tcp any any -> 192.168.1.1/32 23
(2)在第一条的基础上记录了双向的流量:
log tcp any any < > 192.168.1.1/32 23
(3)这一条规则记录了所有到达你的本地主机的icmp数据包:
log icmp any any -> 192.168.1.0/24 any
(4)这条规则允许双向的从你的机子到其他站点的http包:
pass tcp any 80 < > 192.168.1.0/24 any
(5)这条告警规则显示了本地主机对其他主机的111端口的访问,并在log中显示端口影射调用('portmapper call')信息:
alert tcp 192.168.1.0/24 any -> any 111 (msg:"Portmapper call";)
(6)记录其他任意地址的小于1024端口访问本地小于1024端口的流量:
log tcp any :1024 -> 192.168.1.0/24 :1024
(7)这条规则将会发现SYN FIN扫描:
alert tcp any any -> 192.168.1.0/24 any (msg:"SYN-FIN scan!"; flags: SF;)
(8)这条规则将会发现空TCP扫描:
alert tcp any any -> 192.168.1.0/24 any (msg:"Null scan!"; flags: 0;)
(9)这条规则将会发现Queso fingerprint扫描:
alert tcp any any -> 192.168.1.0/24 any (msg:"Queso fingerprint";flags: S12;)
(10)这条规则将进行基于内容的查找以发现溢出攻击:
alert tcp any any -> 192.168.1.0/24 143 (msg:"IMAP Buffer overflow!"; conten
t:"|90E8 C0FF FFFF|/bin/sh";)
(11)这条规则将会发现PHF攻击:
alert tcp any any -> 192.168.1.0/24 80 (msg:"PHF attempt"; content:"/cgi-bin/phf";)
(12)这条规则将会发现Traceroute包:
alert udp any any -> 192.168.1.0/24 any (msg:"Traceroute"; ttl:1;)
(13)这条规则将会发现其他主机对本地发出的icmp包:
alert udp any any -> 192.168.1.0/24 any (msg:"Traceroute"; ttl:1;)
(14)这条规则发现nmap的TCP的ping扫描:
alert tcp any any -> 192.168.1.0/24 any (flags: A; ack: 0; msg:"NMAP TCP ping!";)
(15)这条规则将会发现源路由的数据包(源路由攻击):
alert tcp any any -> any any (ipopts: lsrr; msg: "Source Routed packet!";)
6.4 虚拟局域网基础
一、虚拟局域网概述
虚拟局域网(Virtual Private Network)是指在两台计算机或两个网络之间之间建立的一条穿越公共网络的专用连接。一般地,这样的专有连接是通过隧道技术、加密和密钥管理、认证和访问控制等实现与专用网类似的安全性能,从而达到在Internet上安全传输机密数据的目的。
二、虚拟局域网分类
1. 按Virtual Private Network业务类型划分:
(1)Intranet Virtual Private Network(内部公文流转)
(2)Access Virtual Private Network(远程拨号Virtual Private Network)
(3)Extranet Virtual Private Network(各分支机构互联)
2. 按Virtual Private Network发起主体划分:
(1)客户发起,也称基于客户的Virtual Private Network
(2)服务器发起,也称客户透明方式 或基于网络的Virtual Private Network
3. 按隧道协议层次划分:
(1)二层隧道协议:L2F/L2TP 、PPTP
(2)三层隧道协议:GRE、IPSec
(3)介于二、三层间的隧道协议:MPLS
(4)SSL Virtual Private Network
三、虚拟局域网应用场景
Virtual Private Network通常用于以下两种场景:
- 远程接入
- LAN-LAN 通信(外联网接入)
1. 远程接入
企业Virtual Private Network允许移动用户通过因特网拨号进入它们本地的因特网服务供应商(ISP)来接入企业LAN,通常使用远程接入隧道协议,如L2TP,PPTP或L2F。
2. LAN-LAN 通信
同一组织机构的分支机构可以使用Virtual Private Network来接入到组织总部的内联网。这种方式的内联网互连可以确保通信安全,且其费用相对专线连接要低得多。
四、Virtual Private Network的安全性
一个Virtual Private Network至少提供如下功能:
数据加密;
身份认证;
访问权限控制。