12-攻击检测与防范配置
本章节下载: 12-攻击检测与防范配置 (443.69 KB)
1.5.1 TCP客户端验证功能(TCP Client verify)
1.5.2 DNS客户端验证(DNS Client verify)
1.5.3 DNS reply验证(DNS reply verify)
1.5.4 HTTP客户端验证(HTTP Client verify)
1.5.5 SIP客户端验证(SIP Client verify)
攻击检测及防范是一个重要的网络安全特性,它通过分析经过设备的报文的内容和行为,判断报文是否具有攻击特征,并根据配置对具有攻击特征的报文执行一定的防范措施,例如输出告警日志、丢弃报文、加入黑名单或客户端验证列表。
设备能够检测单包攻击、扫描攻击和泛洪攻击等多种类型的网络攻击,并能对各类型攻击采取合理的防范措施。
单包攻击也称为畸形报文攻击,主要包括以下三种类型:
· 攻击者通过向目标系统发送带有攻击目的的IP报文,如分片重叠的IP报文、TCP标志位非法的报文,使得目标系统在处理这样的IP报文时出错、崩溃;
· 攻击者可以通过发送正常的报文,如ICMP报文、特殊类型的IP option报文,来干扰正常网络连接或探测网络结构,给目标系统带来损失;
· 攻击者还可通过发送大量无用报文占用网络带宽,造成拒绝服务攻击。
设备可以对表1-1中所列的各单包攻击行为进行有效防范。
表1-1 单包攻击类型及说明列表
单包攻击类型 |
说明 |
ICMP redirect |
攻击者向用户发送ICMP重定向报文,更改用户主机的路由表,干扰用户主机正常的IP报文转发。 |
ICMP unreachable |
某些系统在收到不可达的ICMP报文后,对于后续发往此目的地的报文判断为不可达并切断对应的网络连接。攻击者通过发送ICMP不可达报文,达到切断目标主机网络连接的目的。 |
ICMP type |
ICMP报文中,type值的表示不同含义的报文,接收者需要根据不同的类型进行响应,攻击者通过构造特定type类型的ICMP报文来达到影响系统正常处理报文等目的。 |
ICMPv6 type |
ICMPv6报文中,type值的表示不同含义的报文,接收者需要根据不同的类型进行响应,攻击者通过构造特定type类型的ICMPv6报文来达到影响系统正常处理报文等目的。 |
Land |
攻击者向目标主机发送大量源IP地址和目的IP地址都是目标主机自身的TCP SYN报文,使得目标主机的半连接资源耗尽,最终不能正常工作。 |
Large ICMP |
某些主机或设备收到超大的报文,会引起内存分配错误而导致协议栈崩溃。攻击者通过发送超大ICMP报文,让目标主机崩溃,达到攻击目的。 |
Large ICMPv6 |
某些主机或设备收到超大的报文,会引起内存分配错误而导致协议栈崩溃。攻击者通过发送超大ICMPv6报文,让目标主机崩溃,达到攻击目的。 |
IP option |
攻击者通过构造指定选项类型的IP报文,达到探测网络结构的目的。 |
IP option abnormal |
攻击者利用IP报文中的异常选项的设置,达到探测网络结构的目的,也可由于系统缺乏对错误报文的处理而造成系统崩溃。 |
Fragment |
攻击者通过向目标主机发送分片偏移小于等于5的分片报文,导致主机对分片报文进行重组时发生错误而造成系统崩溃。 |
Impossible |
攻击者通过向目标主机发送源IP地址和目的IP地址相同的报文,造成主机系统处理异常。 |
Tiny fragment |
攻击者构造一种特殊的IP分片来进行微小分片的攻击,这种报文首片很小,未能包含完整的传输层信息,因此能够绕过某些包过滤防火墙的过滤规则,达到攻击目标网络的目的。 |
Smurf |
攻击者向目标网络发送ICMP应答请求,该请求包的目的地址设置为目标网络的广播地址,这样该网络中的所有主机都会对此ICMP应答请求作出答复,导致网络阻塞,从而达到令目标网络中主机拒绝服务的攻击目的。 |
TCP Flag |
不同操作系统对于非常规的TCP标志位有不同的处理。攻击者通过发送带有非常规TCP标志的报文探测目标主机的操作系统类型,若操作系统对这类报文处理不当,攻击者便可达到使目标主机系统崩溃的目的。 |
Traceroute |
攻击者连续发送TTL从1开始递增的目的端口号较大的UDP报文,报文每经过一个路由器,其TTL都会减1,当报文的TTL为0时,路由器会给报文的源IP设备发送一个TTL超时的ICMP报文,攻击者借此来探测网络的拓扑结构。 |
Winnuke |
攻击者向安装(或使用)Windows系统的特定目标的NetBIOS端口(139)发送OOB(Out-Of-Band,带外)数据包,这些攻击报文的指针字段与实际的位置不符,从而引起一个NetBIOS片断重叠,致使已与其他主机建立连接的目标主机在处理这些数据的时候系统崩溃。 |
UDP Bomb |
攻击者发送畸形的UDP报文,其IP首部中的报文总长度大于IP首部长度与UDP首部中标识的UDP报文长度之和,可能造成收到此报文的系统处理数据时越界访问非法内存,导致系统异常。 |
UDP Snork |
攻击者向Windows系统发送目的端口为135(Windows定位服务)源端口为135、7或19(UDP Chargen服务)的报文,使被攻击系统不断应答报文,最终耗尽CPU资源。 |
UDP Fraggle |
攻击者通过向目标网络发送源UDP端口为7且目的UDP端口为19的Chargen报文,令网络产生大量无用的应答报文,占满网络带宽,达到攻击目的。 |
Teardrop |
攻击者通过发送大量分片重叠的报文,致使服务器对这些报文进行重组时造成重叠,因而丢失有效的数据。 |
Ping of death |
攻击者构造标志位为最后一片且长度大于65535的ICMP报文发送给目标主机,可能导致系统处理数据时越界访问非法内存,造成系统错误甚至系统崩溃。 |
IPv6 ext-header |
攻击者可以通过构造包含异常数量IPv6扩展头的报文对目标主机进行攻击,目标主机在解析报文时耗费大量资源,从而影响转发性能。 |
扫描攻击是指,攻击者运用扫描工具对网络进行主机地址或端口的扫描,通过准确定位潜在目标的位置,探测目标系统的网络拓扑结构和开放的服务端口,为进一步侵入目标系统做准备。
攻击者发送大量目的IP地址变化的探测报文,通过收到的回应报文来确定活跃的目标主机,以便针对这些主机进行下一步的攻击。
攻击者获取了活动目标主机的IP地址后,向目标主机发送大量目的端口变化的探测报文,通过收到的回应报文来确定目标主机开放的服务端口,然后针对活动目标主机开放的服务端口选择合适的攻击方式或攻击工具进行进一步的攻击。
攻击者控制多台主机,分别向特定目标主机发送探测报文,通过收集所有被控制的主机的回应报文,确定目标主机开启的服务端口,以便进一步实施攻击。
泛洪攻击是指攻击者在短时间内向目标系统发送大量的虚假请求,导致目标系统疲于应付无用信息,从而无法为合法用户提供正常服务,即发生拒绝服务。
设备支持对以下几种泛洪攻击进行有效防范:
根据TCP协议工作原理,服务器收到SYN报文后需要建立半连接并回应SYN ACK报文,然后等待客户端的ACK报文来建立正式连接。由于资源的限制,操作系统的TCP/IP协议栈只能允许有限个TCP连接。攻击者向服务器发送大量伪造源地址的SYN报文后,由于攻击报文是伪造的,服务器不会收到客户端的ACK报文,从而导致服务器上遗留了大量无效的半连接,耗尽其系统资源,使正常的用户无法访问,直到半连接超时。
ACK报文为只有ACK标志位置位的TCP报文,服务器收到ACK报文时,需要查找对应的连接。若攻击者发送大量这样的报文,服务器需要进行大量的查询工作,消耗正常处理的系统资源,影响正常的报文处理。
由于SYN ACK报文为SYN报文的后续报文,服务器收到SYN ACK报文时,需要查找对应的SYN报文。若攻击者发送大量这样的报文,服务器需要进行大量的查询工作,消耗正常处理的系统资源,影响正常的报文处理。
FIN报文用于关闭TCP连接。若攻击者向服务器发送大量的伪造的FIN报文,可能会使服务器关闭掉正常的连接。同时,服务器收到FIN报文时,需要查找对应的连接,大量的无效查询操作会消耗系统资源,影响正常的报文处理。
RST报文为TCP连接的复位报文,用于在异常情况下关闭TCP连接。如果攻击者向服务器发送大量伪造的RST报文,可能会使服务器关闭正常的TCP连接。另外,服务器收到RST报文时,需要查找对应的连接,大量的无效查询操作会消耗系统资源,影响正常的报文处理。
DNS服务器收到任何DNS Query报文时都会试图进行域名解析并且回复该DNS报文。攻击者通过构造并向DNS服务器发送大量虚假DNS Query报文,占用DNS服务器的带宽或计算资源,使得正常的DNS Query得不到处理。
DNS客户端收到任何DNS reply报文时都会进行处理。攻击者在一定条件下将大量伪造的DNS reply报文发送给某个DNS客户端,消耗大量DNS客户端的资源,使得正常的DNS reply报文得不到处理。
HTTP服务器收到HTTP GET/POST命令时可能进行一系列复杂的操作,包括字符串搜索、数据库遍历、数据组装、格式化转换等等,这些操作会消耗大量系统资源,因此当HTTP请求的速率超过了服务器的处理能力时,服务器就无法正常提供服务。攻击者通过构造并发送大量虚假HTTP GET/POST请求,使服务器崩溃,无法响应正常的用户请求。
SIP服务器收到SIP INVITE报文后,服务器需要分配一定的资源用于跟踪和建立会话。当SIP请求的速率超过了服务器的处理能力时,SIP服务器就无法正常提供服务。攻击者通过构造并发送大量虚假的SIP INVITE请求,大量消耗SIP服务器的系统资源,影响正常的报文处理。有关SIP协议的详细介绍,请参见“语音配置指导”中的“SIP”。
ICMP flood攻击是指,攻击者在短时间内向特定目标发送大量的ICMP请求报文(例如ping报文),使其忙于回复这些请求,致使目标系统负担过重而不能处理正常的业务。
ICMPv6 flood攻击是指,攻击者在短时间内向特定目标发送大量的ICMPv6请求报文(例如ping报文),使其忙于回复这些请求,致使目标系统负担过重而不能处理正常的业务。
UDP flood攻击是指,攻击者在短时间内向特定目标发送大量的UDP报文,占用目标主机的带宽,致使目标主机不能处理正常的业务。
设备的包过滤功能一般是通过判断TCP首个分片中的五元组(源IP地址、源端口号、目的IP地址、目的端口号、传输层协议号)信息来决定后续TCP分片是否允许通过。RFC 1858对TCP分片报文进行了规定,认为TCP分片报文中,首片报文中TCP报文长度小于20字节,或后续分片报文中分片偏移量等于8字节的报文为TCP分片攻击报文。这类报文可以成功绕过上述包过滤功能,对设备造成攻击。
为防范这类攻击,可以在设备上配置TCP分片攻击防范功能,对TCP分片攻击报文进行丢弃。
DoS(Denial of Service,拒绝服务)攻击的目的是使被攻击对象无法提供正常的网络服务。Login用户DoS攻击是指,攻击者通过伪造登录帐户在短时间内向设备连续发起大量登录请求,占用系统认证处理资源,造成设备无法处理正常Login用户的登录请求。
为防范这类攻击,可以在设备上配置Login用户攻击防范功能,对发起恶意认证并多次尝试失败的用户报文进行丢弃。
字典序攻击是指攻击者通过收集用户密码可能包含的字符,使用各种密码组合逐一尝试登录设备,以达到猜测合法用户密码的目的。
为防范这类攻击,可以在设备上配置Login用户延时认证功能,在用户认证失败之后,延时期间不接受此用户的登录请求。
IP黑名单功能是根据报文的IP地址进行报文过滤的一种攻击防范特性。根据报文过滤条件的不同,该特性可分为源IP黑名单和目的IP黑名单。源IP黑名单根据报文的源IP地址进行报文过滤,目的IP黑名单根据报文的目的IP地址进行报文过滤。同基于ACL(Access Control List,访问控制列表)的包过滤功能相比,黑名单进行报文匹配的方式更为简单,可以实现报文的高速过滤和有效屏蔽。
用户黑名单功能是基于用户进行报文过滤的一种攻击防范特性。该特性需要和用户身份识别功能配合使用,由后者为其提供用户身份和用户IP地址的对应关系。有关用户身份识别功能的详细介绍,请参见“安全配置指导”中的“用户身份识别与管理”。同IP黑名单的包过滤功能相比,用户黑名单可以从用户级进行访问控制,提高了过滤策略的易用性。
地址对象组黑名单功能是基于地址对象组进行报文过滤的一种攻击防范特性。该特性需要和地址对象组功能配合使用,由后者为其提供地址对象组和IP地址的对应关系。有关地址对象组功能的详细介绍,请参见“安全配置指导”中的“对象组”。同IP黑名单的包过滤功能相比,地址组黑名单可以对网段进行访问控制,提高了易用性。
地址对象组白名单功能需要和地址对象组功能配合使用,由后者为其提供地址对象组和IP地址的对应关系。有关地址组功能的详细介绍,请参见“安全配置指导”中的“对象组”。
配置地址对象组白名单功能后,无论来自该地址对象组的报文是否存在攻击,设备都将其直接转发。
TCP客户端验证功能用来防御服务器受到的SYN flood,ACK flood,SYN-ACK flood,FIN flood,RST flood等攻击。启用了TCP客户端验证功能的设备称为TCP proxy,它位于客户端和服务器之间,能够对客户端与服务器之间的TCP连接进行代理。当设备检测到有服务器受到相关泛洪攻击时,TCP proxy即将该服务器IP地址添加为动态受保护的IP地址,并对所有向该受保护服务器发起的TCP连接的协商报文进行处理,通过对客户端发起的TCP连接进行验证,达到保护服务器免受各种TCP泛洪攻击的目的。
TCP客户端验证支持两种验证模式:
· Safe Reset:是指仅对TCP连接的正向握手报文进行处理,也称为单向代理模式。
· SYN Cookie:是指对TCP连接的正向和反向所有报文都进行处理,也称为双向代理模式。
用户可以根据实际的组网情况选择不同的代理模式。例如:在如图1-1所示的组网中,从客户端发出的报文经过TCP proxy,而从服务器端发出的报文不经过TCP proxy,此时只能使用Safe Reset方式;在如图1-2所示的组网中,从客户端发出的报文和从服务器端发出的报文都经过TCP proxy,此时两种验证模式都可以使用。
TCP Client verify处理流程:
Safe Reset代理模式下,TCP Client verify的处理流程如图1-3所示。
图1-3 Safe Reset模式的TCP Client verify处理流程
TCP proxy收到某客户端发来的与受保护服务器(匹配某个受保护IP地址表项)建立TCP连接的请求(SYN报文)后,先代替服务器向客户端回应序号错误的SYN ACK报文。如果TCP proxy收到客户端回应的正确RST报文,则认为该TCP连接请求通过TCP代理的验证。此后一定时间内,TCP proxy收到来自该客户端的TCP报文后,直接将其向转发给服务器,允许客户端和服务器之间直接建立TCP连接。
一般而言,应用服务器不会主动对客户端发起恶意连接,因此服务器响应客户端的报文可以不需要经过TCP proxy的检查。TCP Client verify仅需要对客户端发往应用服务器的报文进行实时监控,服务器响应客户端的报文可以根据实际需要选择是否经过TCP proxy,因此Safe Reset模式能够支持更灵活的组网方式。
由于TCP proxy对客户端发起的TCP连接进行了干预,因此Safe Reset模式的实现要求客户端的实现严格遵守TCP协议栈的规定,如果客户端的TCP协议栈实现不完善,即便是合法用户,也可能由于未通过TCP proxy的严格检查而无法访问服务器。而且,该方式依赖于客户端向服务器发送RST报文后再次发起请求的功能,因此启用TCP Client verify后,客户端发起的每个TCP连接的建立时间会有相应增加。
SYN Cookie模式下,TCP Client verify的处理流程如图1-4所示。
图1-4 SYN Cookie模式的TCP Client verify处理流程
TCP proxy收到某客户端发来的与受保护服务器建立TCP连接的请求(SYN报文)后,先代替服务器向客户端回应正常的SYN ACK报文(窗口值为0)。如果收到客户端回应的ACK报文,则认为该TCP连接请求通过TCP代理的验证。然后,TCP Client verify再代替客户端向服务器发送SYN报文,并通过三次握手与服务器建立TCP连接。因此,在客户端和TCP proxy、TCP proxy和服务器之间会建立两个TCP连接,而且两个TCP连接使用的序号不同。
SYN Cookie模式下,TCP proxy作为虚拟的服务器与客户端交互,同时也作为虚拟的客户端与服务器交互,在为服务器过滤掉恶意连接报文的同时保证了常规业务的正常运行。但该方式要求TCP proxy必须部署在所保护的服务器入口和出口的关键路径上,且要保证所有客户端向服务器发送的报文以及服务器向客户端回应的报文都需要经过该设备。
DNS客户端验证功能用来防御服务器受到的DNS flood攻击。启用了DNS客户端验证功能的设备位于客户端和服务器之间,能够对客户端与服务器之间的DNS连接进行代理。当设备检测到有服务器受到DNS flood攻击时,即将该服务器IP地址添加为动态受保护的IP地址,并对所有向该受保护服务器发起的DNS Query进行处理,通过对客户端发起的DNS连接进行验证,达到保护服务器免受DNS flood攻击的目的。
DNS Client verify的处理流程如图1-5所示。
DNS客户端验证设备收到某客户端发送的UDP类型的DNS Query报文(目的地址匹配受保护IP表项)后,先代替服务器向客户端回应DNS Truncate(TC)报文,要求客户端以TCP方式进行域名请求。如果是合法客户端,则它收到DNS Truncate报文之后会向DNS客户端验证设备发送目的端口为53的TCP SYN报文。DNS客户端验证设备收到此报文后,先代替服务器向客户端回应序号错误的SYN ACK报文,之后,如果能够收到客户端回应的RST报文,则认为该客户端通过了DNS客户端验证。对于通过了DNS验证的客户端,设备直接转发其后续报文,不对报文进行处理。
由于DNS Client verify对客户端发起的DNS请求进行了干预,因此要求客户端的实现严格遵守TCP/IP协议栈以及DNS协议的规定,如果客户端的协议栈实现不完善,即便是合法用户,也可能由于未通过DNS Client verify的严格检查而无法访问服务器。而且,该方式依赖于客户端向服务器发送RST报文后再次发起请求的功能,因此启用DNS Client verify后,正常客户端发起的首个DNS请求的响应时间会有相应增加。
DNS reply验证功能用来防御DNS客户端受到的DNS reply flood攻击。启用了DNS reply验证功能的设备位于客户端和服务器之间,能够对客户端与服务器之间的DNS reply报文进行代理。当设备检测到有客户端受到DNS reply flood攻击时,即将该客户端IP地址添加为动态受保护的IP地址,并对所有向该受保护客户端发送的DNS reply报文进行验证,达到保护客户端免受DNS reply flood攻击的目的。
DNS reply verify的处理流程如图1-6所示,DNS Reply验证设备收到某服务器发送的UDP类型的DNS reply报文(目的地址匹配受保护IP表项),代替DNS客户端向服务器发送DNS query报文,该报文的Query ID和源端口号由验证设备生成。如果是合法的服务器,则它收到含有新的Query ID和源端口号的DNS query报文后,会向验证设备发送含有新的Query ID和目的端口号的DNS reply报文。DNS reply验证设备收到此报文后,提取Query ID和目的端口号,如果与验证设备发送的DNS query报文的Query ID和源端口号一致,则认为服务器通过了DNS reply验证。对于通过了DNS reply验证的服务器,设备直接转发其后续报文,不对报文进行处理。
HTTP客户端验证功能用来防御服务器受到HTTP flood攻击。启用了HTTP客户端验证功能的设备位于客户端和服务器之间,能够对客户端与服务器之间的HTTP GET/POST请求进行代理。当设备检测到有服务器受到HTTP flood攻击时,即将该服务器IP地址添加为动态受保护的IP地址,并对所有向该受保护服务器发起的HTTP GET/POST请求报文进行处理,通过对客户端发起的HTTP GET/POST请求进行两次验证的方式,达到保护服务器免受HTTP flood攻击的目的。
HTTP GET Client verify的处理流程如图1-7所示:
图1-7 HTTP GET Client verify处理流程
HTTP客户端验证设备收到某客户端发送的TCP连接请求报文(目的地址匹配受保护IP表项)后,首先以TCP Proxy的Syn Cookie方式进行验证(详见“1.5.1 TCP客户端验证功能(TCP Client verify)”)。客户端的TCP连接通过验证之后,设备将对客户端发送的HTTP GET请求报文进行两次重定向验证,具体流程如下所述。
(1) 第一次重定向验证:设备收到客户端的HTTP GET请求之后向其发送HTTP Redirect报文,并在重定向报文中设置标记位要求客户端结束本次TCP连接。该过程中,设备会记录该客户端的信息。当前的TCP连接结束之后,客户端与设备进行一轮新的TCP三次握手。
(2) 第二次重定向验证:设备收到客户端向重定向地址发起的HTTP GET请求之后,向其发送HTTP Redirect报文,并在重定向报文中设置标记位要求客户端结束本次TCP连接。该过程中,设备会检查客户端是否经过了第一次重定向,以及本次HTTP访问的URI是否是设备重定向的地址。如果检查通过,设备会将该客户端加入到信任IP表项中,该客户端的后续HTTP GET请求报文将被直接进行透传。
图1-8 HTTP Client POST verify处理流程
HTTP客户端验证设备收到某客户端发送的TCP连接请求报文(目的地址匹配受保护IP表项)后,首先以TCP Proxy的Syn Cookie方式进行验证(详见“1.5.1 TCP客户端验证功能(TCP Client verify)”)。客户端的TCP连接通过验证之后,设备将对客户端发送的HTTP POST请求报文依次进行重定向验证和超时验证,具体流程如下所述。
(2) 重定向验证:设备收到客户端的HTTP POST请求之后向其发送带有Set-Cookie验证字段的HTTP Redirect报文,并在重定向报文中设置标记位要求客户端结束本次TCP连接。该过程中,设备会记录该客户端的信息。当前的TCP连接结束之后,客户端与设备进行一轮新的TCP三次握手。
(3) 超时验证:设备收到客户端发起的带有Cookie字段的HTTP POST请求之后,向其发送HTTP 超时报文,并在报文中设置标记位要求客户端结束本次TCP连接。该过程中,设备会检查客户端是否经过了第一次重定向,以及本次HTTP报文中是否带有有效的Cookie值。如果检查通过,设备会将该客户端加入到信任IP表项中,该客户端的后续HTTP POST请求报文将被直接进行透传。
SIP客户端验证功能用来防御服务器受到SIP flood攻击。启用了SIP客户端验证功能的设备位于客户端和服务器之间,能够对客户端与服务器之间SIP协议的INVITE请求进行代理。当设备检测到有服务器受到SIP flood攻击时,即将该服务器IP地址添加为动态受保护的IP地址,并对所有向该受保护服务器发起的SIP INVITE请求报文进行处理,通过对客户端发起的SIP INVITE请求进行验证的方式,达到保护服务器免受SIP flood攻击的目的。
SIP Client verify的处理流程如图1-9所示。
SIP客户端验证设备收到某客户端发送的UDP类型的INVITE报文(目的地址匹配受保护IP表项)后,先代替服务器向客户端回应OPTIONS报文,该报文中携带branch值信息。如果是合法客户端,则它收到OPTIONS报文之后会向SIP客户端验证设备发送OPTIONS ACK报文。SIP客户端验证设备收到此报文后,检查OPTIONS ACK报文中的branch值和发送的OPTIONS报文中的branch值是否相同,若相同,则认为该客户端通过了SIP客户端验证。对于通过了SIP验证的客户端,设备直接转发其后续报文,不对报文进行处理。若branch值不相同,则认为该客户端未通过了SIP客户端验证,直接丢弃报文。
攻击检测与防范配置任务如下:
(1) 配置并应用攻击防范策略
b. 配置攻击防范策略
各类型的攻击防范功能之间没有先后顺序,可根据实际组网需求,配置其中的一种或多种:
c. (可选)配置攻击防范例外列表
d. 应用攻击防范策略
请至少选择其中一项进行配置:
(2) (可选)配置单包攻击防范日志的非聚合输出功能
(3) (可选)配置TCP分片攻击防范(通常单独使用)
(4) (可选)配置攻击排名的Top统计功能
(5) (可选)配置客户端验证(可单独使用,也可与泛洪攻击防范配合使用)
(6) (可选)配置黑名单(可单独使用,也可与扫描攻击防范配合使用)
¡ 配置IP黑名单
¡ 配置用户黑名单
(7) (可选)配置地址对象组白名单
(8) (可选)配置Login用户攻击防范(通常单独使用)
攻击防范策略主要包括针对攻击类型指定的检测条件及采取的防范措施。
在配置攻击防范之前,必须首先创建一个攻击防范策略,并进入该攻击防范策略视图。在该视图下,可以定义一个或多个用于检测攻击的特征项,以及对检测到的攻击报文所采取的防范措施。
(1) 进入系统视图。
system-view
(2) 创建一个攻击防范策略,并进入攻击防范策略视图。
attack-defense policy policy-name
单包攻击防范主要通过分析经过设备的报文特征来判断报文是否具有攻击性,一般应用在设备连接外部网络的接口上,且仅对应用了攻击防范策略的接口上的入方向报文有效。若设备检测到某报文具有攻击性,则默认会输出告警日志,另外还可以根据配置将检测到的攻击报文做丢弃处理。
若指定的单包攻击的处理行为中配置了logging参数,生成的日志信息不会输出到控制台和监视终端。此时如需获取该日志,可通过执行display logbuffer命令进行查看。有关display logbuffer命令的详细介绍,请参见“网络管理和监控命令参考”中的“信息中心”。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 开启指定类型单包攻击报文的特征检测,并设置攻击防范的处理行为。请至少选择其中一项进行配置。
¡ 开启指定类型的知名单包攻击报文的特征检测,并设置攻击防范的处理行为。
signature detect { fraggle | fragment | impossible | land | large-icmp | large-icmpv6 | smurf | snork | tcp-all-flags | tcp-fin-only | tcp-invalid-flags | tcp-null-flag | tcp-syn-fin | tiny-fragment | traceroute | udp-bomb | winnuke } [ action { { drop | logging } * | none } ]
signature detect { ip-option-abnormal | ping-of-death | teardrop } action { drop | logging } *
¡ 开启ICMP类型的单包攻击报文的特征检测,并设置攻击防范的处理行为。
signature detect icmp-type { icmp-type-value | address-mask-reply | address-mask-request | destination-unreachable | echo-reply | echo-request | information-reply | information-request | parameter-problem | redirect | source-quench | time-exceeded | timestamp-reply | timestamp-request } [ action { { drop | logging } * | none } ]
¡ 开启ICMPv6类型的单包攻击报文的特征检测,并设置攻击防范的处理行为。
signature detect icmpv6-type { icmpv6-type-value | destination-unreachable | echo-reply | echo-request | group-query | group-reduction | group-report | packet-too-big | parameter-problem | time-exceeded } [ action { { drop | logging } * | none } ]
¡ 开启IP选项类型的单包攻击报文的特征检测,并设置攻击防范的处理行为。
signature detect ip-option { option-code | internet-timestamp | loose-source-routing | record-route | route-alert | security | stream-id | strict-source-routing } [ action { { drop | logging } * | none } ]
¡ 开启IP扩展头类型的单包攻击报文的特征检测,并设置攻击防范的处理行为。
signature detect ipv6-ext-header ext-header-value [ action { { drop | logging } * | none } ]
缺省情况下,所有类型的单包攻击的特征检测均处于关闭状态。
(4) (可选)配置启动Large ICMP攻击防范的ICMP报文长度的最大值。
signature { large-icmp | large-icmpv6 } max-length length
缺省情况下,ICMP报文和ICMPv6报文长度的最大值均为4000字节。
(5) (可选)配置对不同级别的单包攻击报文的处理方式。
signature level { high | info | low | medium } action { { drop | logging } * | none }
缺省情况下,对info和low级别的单包攻击的处理行为是发送日志;对medium和high级别的单包攻击的处理行为是发送日志并丢包。
(6) (可选)开启指定级别单包攻击报文的特征检测。
signature level { high | info | low | medium } detect
缺省情况下,未开启任何级别的单包攻击报文的特征检测。
扫描攻击防范主要通过监测网络使用者向目标系统发起连接的速率来检测其探测行为,一般应用在设备连接外部网络的接口上,且仅对应用了攻击防范策略的接口上的入方向报文有效。若设备监测到某IP地址主动发起的连接速率达到或超过了一定阈值,则可以根据配置输出告警日志、丢弃来自该IP地址的后续报文,或者将检测到的攻击者的源IP地址加入IP黑名单。
若配置扫描攻击的处理行为为输出告警日志,且端口扫描和地址扫描同时达到扫描阈值,则仅输出地址扫描的告警日志。
若指定的扫描攻击的处理行为中配置了加入IP黑名单,则需要开启全局或接口上的黑名单过滤功能来配合。关于黑名单过滤功能的相关配置请参见“1.16 配置IP黑名单”。
若指定的扫描攻击的处理行为中配置了logging参数,生成的日志信息不会输出到控制台和监视终端。此时如需获取该日志,可通过执行display logbuffer命令进行查看。有关display logbuffer命令的详细介绍,请参见“网络管理和监控命令参考”中的“信息中心”。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 开启指定级别的扫描攻击防范。
scan detect level { { high | low | medium } | user-defined { port-scan-threshold threshold-value | ip-sweep-threshold threshold-value } * [ period period-value ] } action { { block-source [ timeout minutes ] | drop } | logging } *
缺省情况下,扫描攻击防范处于关闭状态。
泛洪攻击防范主要用于保护服务器,通过监测向服务器发起连接请求的速率来检测各类泛洪攻击,一般应用在设备连接外部网络的接口上,且仅对应用了攻击防范策略的接口上的入方向报文有效。在接口上应用了泛洪攻击防范策略后,接口处于攻击检测状态,当它监测到向某服务器发送报文的速率持续达到或超过了指定的触发阈值时,即认为该服务器受到了攻击,则进入攻击防范状态,并根据配置启动相应的防范措施(输出告警日志、对后续新建连接的报文进行丢弃处理或者进行客户端验证)。此后,当设备检测到向该服务器发送报文的速率低于恢复阈值(触发阈值的3/4)时,即认为攻击结束,则由攻击防范状态恢复为攻击检测状态,并停止执行防范措施。
在泛洪攻击防范策略中,阈值是触发系统执行防范动作的条件,因此,阈值的设置是否合理将直接影响攻击防范的效果。
· 如果防范阈值设置过低则在没有发生攻击时,系统就启动攻击防范功能,影响设备性能或者造成正常流量被丢弃。
· 如果防范阈值设置过高则即使发生了攻击,系统也无法感知,不能及时启动防范功能。
因此在配置攻击防范前,应该先了解正常网络中的流量,然后根据正常网络中的流量来设置各攻击类型对应的阈值。在不了解网络正常流量大小时,可以启用流量阈值学习功能并根据学习结果进行阈值配置。流量阈值学习功能的原理是:系统对正常网络环境下的各种流量按时间进行统计,得出此段时间内各种流量的最高值,从而以此为依据计算出各种攻击类型对应的防范门限值。
阈值学习有单次学习和周期学习两种学习模式:
· 单次学习:只进行一次阈值学习。
· 周期学习:按周期学习间隔进行多次阈值学习。其中,周期学习间隔是指从上次学习的结束时间到下次学习开始时间的间隔时间。
开启阈值学习功能后,会对所有类型的泛洪攻击进行阈值学习。在周期学习模式下,最新一次的学习结果会覆盖上一次学习结果。对于学习到的阈值,系统还支持自动应用功能。您可以启用自动应用功能,也可以选择只学习不启用自动应用功能。
当设备上安装了多块业务板时,每种泛洪攻击防范策略中配置的全局触发阈值为每块业务板上的全局触发阈值,因而整机的该类泛洪攻击的全局触发阈值即为每块业务板上的全局触发阈值与业务板数目的乘积。
为保护指定IP地址,攻击防范策略中支持基于IP地址的攻击防范配置。对于所有非受保护IP地址,可以统一开启攻击防范检测,并采用全局的参数设置来进行保护。
若指定的泛洪攻击的处理行为中配置了logging参数,生成的日志信息不会输出到控制台和监视终端。此时如需获取该日志,可通过执行display logbuffer命令进行查看。有关display logbuffer命令的详细介绍,请参见“网络管理和监控命令参考”中的“信息中心”。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 对所有非受保护IP地址开启SYN flood攻击防范检测。
syn-flood detect non-specific
缺省情况下,未对任何非受保护IP地址开启SYN flood攻击防范检测。
(4) 配置SYN flood攻击防范的全局触发阈值。
syn-flood threshold threshold-value
缺省情况下,SYN flood攻击防范的全局触发阈值为1000。
(5) 配置SYN flood攻击防范的全局处理行为。
syn-flood action { client-verify | drop | logging } *
缺省情况下,不对检测到的SYN flood攻击采取任何措施。
(6) 开启对IP地址的SYN flood攻击防范检测,并配置触发阈值和处理行为。
syn-flood detect { ip ipv4-address | ipv6 ipv6-address } [ vpn-instance vpn-instance-name ] [ threshold threshold-value ] [ action { { client-verify | drop | logging } * | none } ]
缺省情况下,未对任何指定IP地址配置SYN flood攻击防范检测。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 对所有非受保护IP地址开启ACK flood攻击防范检测。
ack-flood detect non-specific
缺省情况下,未对任何非受保护IP地址开启ACK flood攻击防范检测。
(4) 配置ACK flood攻击防范全局触发阈值。
ack-flood threshold threshold-value
缺省情况下,ACK flood攻击防范的全局触发阈值为1000。
(5) 配置ACK flood攻击防范的全局处理行为。
ack-flood action { client-verify | drop | logging } *
缺省情况下,不对检测到的ACK flood攻击采取任何措施。
(6) 开启对IP地址的ACK flood攻击防范检测,并配置触发阈值和处理行为。
ack-flood detect { ip ipv4-address | ipv6 ipv6-address } [ vpn-instance vpn-instance-name ] [ threshold threshold-value ] [ action { { client-verify | drop | logging } * | none } ]
缺省情况下,未对任何指定IP地址配置ACK flood攻击防范检测。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 对所有非受保护IP地址开启SYN-ACK flood攻击防范检测。
syn-ack-flood detect non-specific
缺省情况下,未对任何非受保护IP地址开启SYN-ACK flood攻击防范检测。
(4) 配置SYN-ACK flood攻击防范的全局触发阈值。
syn-ack-flood threshold threshold-value
缺省情况下,SYN-ACK flood攻击防范的全局触发阈值为1000。
(5) 配置SYN-ACK flood攻击防范的全局处理行为。
syn-ack-flood action { client-verify | drop | logging }*
缺省情况下,不对检测到的SYN-ACK flood攻击采取任何措施。
(6) 开启对IP地址的SYN-ACK flood攻击防范检测,并配置触发阈值和处理行为。
syn-ack-flood detect { ip ipv4-address | ipv6 ipv6-address } [ vpn-instance vpn-instance-name ] [ threshold threshold-value ] [ action { { client-verify | drop | logging } * | none } ]
缺省情况下,未对任何指定IP地址配置SYN-ACK flood攻击防范检测。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 对所有非受保护IP地址开启FIN flood攻击防范检测。
fin-flood detect non-specific
缺省情况下,未对任何非受保护IP地址开启FIN flood攻击防范检测。
(4) 配置FIN flood攻击防范的全局触发阈值。
fin-flood threshold threshold-value
缺省情况下,FIN flood攻击防范的全局触发阈值为1000。
(5) 配置FIN flood攻击防范的全局处理行为。
fin-flood action { client-verify | drop | logging } *
缺省情况下,不对检测到的FIN flood攻击采取任何措施。
(6) 开启对IP地址的FIN flood攻击防范检测,并配置触发阈值和处理行为。
fin-flood detect { ip ipv4-address | ipv6 ipv6-address } [ vpn-instance vpn-instance-name ] [ threshold threshold-value ] [ action { { client-verify | drop | logging } * | none } ]
缺省情况下,未对任何指定IP地址配置FIN flood攻击防范检测。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 对所有非受保护IP地址开启RST flood攻击防范检测。
rst-flood detect non-specific
缺省情况下,未对任何非受保护IP地址开启RST flood攻击防范检测。
(4) 配置RST flood攻击防范的全局触发阈值。
rst-flood threshold threshold-value
缺省情况下,RST flood攻击防范的全局触发阈值为1000。
(5) 配置全局的RST flood攻击防范的全局处理行为。
rst-flood action { client-verify | drop | logging } *
缺省情况下,不对检测到的RST flood攻击采取任何措施。
(6) 开启对IP地址的RST flood攻击防范检测,并配置触发阈值和处理行为。
rst-flood detect { ip ipv4-address | ipv6 ipv6-address } [ vpn-instance vpn-instance-name ] [ threshold threshold-value ] [ action { { client-verify | drop | logging } * | none } ]
缺省情况下,未对任何指定IP地址配置RST flood攻击防范检测。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 对所有非受保护IPv4地址开启ICMP flood攻击防范检测。
icmp-flood detect non-specific
缺省情况下,未对任何非受保护IPv4地址开启ICMP flood攻击防范检测。
(4) 配置ICMP flood攻击防范的全局触发阈值。
icmp-flood threshold threshold-value
缺省情况下,ICMP flood攻击防范的全局触发阈值为1000。
(5) 配置ICMP flood攻击防范的全局处理动作。
icmp-flood action { drop | logging } *
缺省情况下,不对检测到的ICMP flood攻击采取任何措施。
(6) 开启对IPv4地址的ICMP flood攻击防范检测,并配置触发阈值和处理行为。
icmp-flood detect ip ip-address [ vpn-instance vpn-instance-name ] [ threshold threshold-value ] [ action { { drop | logging } * | none } ]
缺省情况下,未对任何指定IPv4地址配置ICMP flood 攻击防范触发阈值。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 对所有非受保护IPv6地址开启ICMPv6 flood攻击防范检测。
icmpv6-flood detect non-specific
缺省情况下,未对任何非受保护IPv6地址开启ICMPv6 flood攻击防范检测。
(4) 配置ICMPv6 flood攻击防范的全局触发阈值。
icmpv6-flood threshold threshold-value
缺省情况下,ICMPv6 flood攻击防范的全局触发阈值为1000。
(5) 配置ICMPv6 flood攻击防范的全局处理行为。
icmpv6-flood action { drop | logging } *
缺省情况下,不对检测到的ICMPv6 flood攻击采取任何防范措施。
(6) 开启对IPv6地址的ICMPv6 flood攻击防范检测,并配置触发阈值和处理行为。
icmpv6-flood detect ipv6 ipv6-address [ vpn-instance vpn-instance-name ] [ threshold threshold-value ] [ action { { drop | logging } * | none } ]
缺省情况下,未对任何指定IPv6地址配置ICMPv6 flood攻击防范检测。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 对所有非受保护IP地址开启UDP flood攻击防范检测。
udp-flood detect non-specific
缺省情况下,未对任何非受保护IP地址开启UDP flood攻击防范检测。
(4) 配置UDP flood攻击防范的全局触发阈值。
udp-flood threshold threshold-value
缺省情况下,UDP flood攻击防范的全局触发阈值为1000。
(5) 配置UDP flood攻击防范检测的全局处理行为。
udp-flood action { drop | logging } *
缺省情况下,不对检测到的UDP flood攻击进行任何处理。
(6) 开启对IP地址的UDP flood攻击防范检测,并配置触发阈值和处理行为。
udp-flood detect { ip ipv4-address | ipv6 ipv6-address } [ vpn-instance vpn-instance-name ] [ threshold threshold-value ] [ action { { drop | logging } * | none } ]
缺省情况下,未对任何指定IP地址配置UDP flood攻击防范检测。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 对所有非受保护IP地址开启DNS flood攻击防范检测。
dns-flood detect non-specific
缺省情况下,未对任何非受保护IP地址开启DNS flood攻击防范检测。
(4) 配置DNS flood攻击防范的全局触发阈值。
dns-flood threshold threshold-value
缺省情况下,DNS flood攻击防范的全局触发阈值为1000。
(5) (可选)配置DNS flood攻击防范的全局检测端口号。
dns-flood port port-list
缺省情况下,DNS flood攻击防范的全局检测端口号为53。
(6) 配置对DNS flood攻击防范的全局处理行为。
dns-flood action { client-verify | drop | logging } *
缺省情况下,不对检测到的DNS flood攻击采取任何措施。
(7) 开启对IP地址的DNS flood攻击防范检测,并配置触发阈值和处理行为。
dns-flood detect { ip ipv4-address | ipv6 ipv6-address } [ vpn-instance vpn-instance-name ] [ port port-list ] [ threshold threshold-value ] [ action { { client-verify | drop | logging } * | none } ]
缺省情况下,未对任何指定IP地址配置DNS flood攻击防范检测。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 对所有非受保护IP地址开启DNS reply flood攻击防范检测。
dns-reply-flood detect non-specific
缺省情况下,未对任何非受保护IP地址开启DNS reply flood攻击防范检测。
(4) 配置DNS reply flood攻击防范的全局触发阈值。
dns-reply-flood threshold threshold-value
缺省情况下,DNS reply flood攻击防范的全局触发阈值为1000。
(5) 配置DNS reply flood攻击防范的全局检测端口号。
dns-reply-flood port port-list
缺省情况下,DNS reply flood攻击防范的全局检测端口号为53。
(6) 配置对DNS reply flood攻击防范的全局处理行为。
dns-reply-flood action { client-verify | drop | logging } *
缺省情况下,不对检测到的DNS reply flood攻击采取任何措施。
(7) 开启对IP地址的DNS reply flood攻击防范检测,并配置触发阈值和处理行为。
dns-reply-flood detect { ip ipv4-address | ipv6 ipv6-address } [ vpn-instance vpn-instance-name ] [ port port-list ] [ threshold threshold-value ] [ action { { client-verify | drop | logging } * | none } ]
缺省情况下,未对任何指定IP地址配置DNS reply flood攻击防范检测。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 对所有非受保护IP地址开启HTTP flood攻击防范检测。
http-flood detect non-specific
缺省情况下,未对任何非受保护IP地址开启HTTP flood攻击防范检测。
(4) 配置HTTP flood攻击防范的全局触发阈值。
http-flood threshold threshold-value
缺省情况下,HTTP flood攻击防范的全局触发阈值为1000。
(5) (可选)配置HTTP flood攻击防范的全局检测端口号。
http-flood port port-list
缺省情况下,HTTP flood攻击防范的全局检测端口号为80。
(6) 配置对HTTP flood攻击防范的全局处理行为。
http-flood action { client-verify | drop | logging } *
缺省情况下,不对检测到的HTTP flood攻击采取任何措施。
(7) 开启对IP地址的HTTP flood攻击防范检测,并配置触发阈值和处理行为。
http-flood detect { ip ipv4-address | ipv6 ipv6-address } [ vpn-instance vpn-instance-name ] [ port port-list ] [ threshold threshold-value ] [ action { { client-verify | drop | logging } * | none } ]
缺省情况下,未对任何指定IP地址配置HTTP flood攻击防范检测。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 对所有非受保护IP地址开启SIP flood攻击防范检测。
sip-flood detect non-specific
缺省情况下,未对任何非受保护IP地址开启SIP flood攻击防范检测。
(4) 配置SIP flood攻击防范的全局触发阈值。
sip-flood threshold threshold-value
缺省情况下,SIP flood攻击防范的全局触发阈值为1000。
(5) (可选)配置SIP flood攻击防范的全局检测端口号。
sip-flood port port-list
缺省情况下,SIP flood攻击防范的全局检测端口号为5060。
(6) 配置对SIP flood攻击防范的全局处理行为。
sip-flood action { client-verify | drop | logging } *
缺省情况下,不对检测到的SIP flood攻击采取任何措施。
(7) 开启对IP地址的SIP flood攻击防范检测,并配置触发阈值和处理行为。
sip-flood detect { ip ipv4-address | ipv6 ipv6-address } [ vpn-instance vpn-instance-name ] [ port port-list ] [ threshold threshold-value ] [ action { { client-verify | drop | logging } * | none } ]
缺省情况下,未对任何指定IP地址配置SIP flood攻击防范检测。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 开启泛洪攻击阈值学习功能。
threshold-learn enable
缺省情况下,未开启阈值学习功能。
(4) (可选)配置阈值学习模式。
¡ 单次学习模式
threshold-learn mode once
¡ 周期学习模式
threshold-learn mode periodic
缺省情况下,学习模式为单次学习模式。
(5) (可选)配置学习时长。
threshold-learn duration duration
缺省情况下,阈值学习时长为1440分钟。
(6) (可选)配置学习间隔。
threshold-learn interval interval
缺省情况下,阈值学习间隔为1440分钟。
单次学习模式请跳过本步骤。
(7) (可选)配置学习容忍度。
threshold-learn tolerance-value tolerance-value
缺省情况下,阈值学习容忍度为50%。
未开启自动应用功能时请跳过本步骤。
(8) (可选)开启阈值学习结果自动应用功能。
threshold-learn auto-apply enable
缺省情况下,阈值学习结果自动应用功能处于关闭状态。
(9) 应用最近一次的阈值学习结果。
threshold-learn apply
在阈值学习结果自动应用功能开启时,此命令不生效。
攻击防范例外列表用于过滤不需要进行攻击防范检测的主机报文,与指定的ACL permit规则匹配的报文将不会受到任何类型的攻击防范检测。该配置用于过滤某些被信任的安全主机发送的报文,可以有效的减小误报率,并提高服务器处理效率。例如:攻击防范功能可能将源IP地址相同,目的地址不同的组播报文(如OSPF、PIM等协议报文)检测为扫描攻击,此时可以通过配置例外列表放行组播报文来消除误报。
例外列表引用的ACL的permit规则中仅源地址、目的地址、源端口、目的端口、协议号、L3VPN和非首片分片标记参数用于匹配报文。
(1) 进入系统视图。
system-view
(2) 进入攻击防范策略视图。
attack-defense policy policy-name
(3) 配置攻击防范例外列表。
exempt acl [ ipv6 ] { acl-number | name acl-name }
缺省情况下,未配置攻击防范例外列表。
(1) 进入系统视图。
system-view
(2) 进入接口视图。
interface interface-type interface-number
(3) 配置在接口上应用攻击防范策略。
attack-defense apply policy policy-name
缺省情况下,接口上未应用任何攻击防范策略。
通过在本机应用攻击防范策略,使已配置的攻击防范策略对目的地址为本机的报文生效。
此功能主要用于交换机产品,默认情况下交换机产品对转发的报文下发给硬件转发,只有目的地址是本机的报文才会由软件处理,但软件处理没有攻击防范功能。因此在交换机产品上,为处理针对本机的攻击,需要通过在本机上应用攻击防范策略来实现。
对于非交换机产品,可以通过在本机上应用攻击防范策略提高对目的地址为本机的攻击报文的处理效率。
当接口和本机均应用了攻击防范策略时,先进行接口上攻击防范策略的检测,若报文未被丢弃,则还会进行本机上攻击防范策略的检测。
(1) 进入系统视图。
system-view
(2) 配置在本机应用攻击防范策略。
attack-defense local apply policy policy-name
缺省情况下,本机未应用任何攻击防范策略。
对日志进行聚合输出是指,在一定时间内,对在本机或同一个同一个接口上检测到的相同攻击类型、相同攻击防范动作、相同的源/目的地址以及属于相同VPN的单包攻击的所有日志聚合成一条日志输出。
通常不建议开启单包攻击防范的日志非聚合输出功能,因为在单包攻击较为频繁的情况下,它会导致大量日志信息输出,占用控制台的显示资源。
(1) 进入系统视图。
system-view
(2) 开启对单包攻击防范日志的非聚合输出功能。
attack-defense signature log non-aggregate
缺省情况下,单包攻击防范的日志信息经系统聚合后再输出。
设备上开启TCP分片攻击防范功能后,能够对收到的TCP分片报文的长度以及分片偏移量进行合法性检测,并丢弃非法的TCP分片报文。
如果设备上开启了TCP分片攻击防范功能,并应用了单包攻击防范策略,则TCP分片攻击防范功能会先于单包攻击防范策略检测并处理入方向的TCP报文。
(1) 进入系统视图。
system-view
(2) 开启TCP分片攻击防范功能。
attack-defense tcp fragment enable
缺省情况下,TCP分片攻击防范功能处于开启状态。
开启了攻击排名的Top统计功能后,设备将基于攻击者、被攻击者和攻击类型对丢包数量进行统计。用户可以通过display attack-defense top-attack-statistics命令查看攻击排名的Top统计信息,以便采取有效的攻击防范措施。
(1) 进入系统视图。
system-view
(2) 开启攻击排名的Top统计功能。
attack-defense top-attack-statistics enable
缺省情况下,攻击排名的Top统计功能处于关闭状态。
通过在设备连接外部网络的接口上开启TCP客户端验证功能,可以保护内部网络中的应用服务器免受SYN flood、SYN-ACK flood、RST flood、FIN flood或ACK flood攻击。TCP客户端验证功能有两种工作方式:
· 手工添加受保护IP地址:当设备检测到来自某客户端的首个目的地址为配置的受保护IP地址的SYN报文后,将对该客户端的新建TCP连接的协商报文进行合法性检查。
· 自动添加受保护IP地址:当设备检测到某服务器受到了SYN flood、SYN-ACK flood、RST flood、FIN flood、ACK flood攻击时,会根据配置启动相应的防范措施。若防范措施配置为对攻击报文进行TCP客户端验证,则设备会将该服务器IP地址添加到受保护IP表项中,并按照指定的TCP客户端验证代理模式,对后续新建TCP连接的协商报文进行合法性检查。
单向代理模式时,通过合法性检查的TCP客户端的IP地址将被加入信任IP地址列表中,之后设备将放行来自该IP地址的TCP报文。
(1) 进入系统视图。
system-view
(2) (可选)配置TCP客户端验证的受保护IP地址。
client-verify tcp protected { ip destination-ip-address | ipv6 destination-ipv6-address } [ vpn-instance vpn-instance-name ] [ port port-number ]
(3) 进入接口视图。
interface interface-type interface-number
(4) 开启TCP客户端验证功能。
¡ 配置单向代理模式。
client-verify tcp enable mode safe-reset
¡ 配置双向代理模式。
client-verify tcp enable [ mode syn-cookie ]
缺省情况下,TCP客户端验证功能处于关闭状态。
通过在设备连接外部网络的接口上开启DNS客户端验证功能,可以保护内部网络中的应用服务器免受DNS flood攻击。DNS客户端验证功能有两种工作方式:
· 手工添加受保护IP地址:当设备检测到来自某客户端的首个目的地址为配置的受保护IP地址的DNS Query报文时,对该客户端发送的DNS报文进行合法性检查。
· 自动添加受保护IP地址:当设备检测到某服务器受到了DNS flood攻击时,会根据配置启动相应的防范措施。若防范措施配置为对攻击报文进行DNS客户端验证,则设备会将该服务器IP地址添加到受保护IP表项中,并对后续的DNS Query请求报文进行合法性检查。
通过合法性检查的DNS客户端的IP地址将被加入信任IP地址列表中,之后设备将放行来自该IP地址的DNS报文。
(1) 进入系统视图。
system-view
(2) (可选)配置DNS客户端验证的受保护IP地址。
client-verify dns protected { ip destination-ip-address | ipv6 destination-ipv6-address } [ vpn-instance vpn-instance-name ] [ port port-number ]
(3) 进入接口视图。
interface interface-type interface-number
(4) 开启DNS 客户端验证功能。
client-verify dns enable
缺省情况下,DNS客户端验证功能处于关闭状态。
通过在设备连接外部网络的接口上开启DNS reply验证功能,可以保护内部网络中的DNS客户端免受DNS reply flood攻击。DNS reply验证功能有两种工作方式:
· 手工添加受保护IP地址:当设备检测到来自某服务器的首个目的地址为配置的受保护IP地址的DNS reply报文时,对该服务器发送的DNS reply报文进行合法性检查。
· 自动添加受保护IP地址:当设备检测到某客户端受到了DNS reply flood攻击时,会根据配置启动相应的防范措施。若防范措施配置为对攻击报文进行DNS reply验证,则设备会将该客户端IP地址添加到受保护IP表项中,并对后续的DNS reply请求报文进行合法性检查。
通过合法性检查的DNS服务器的IP地址将被加入信任IP地址列表中,之后设备将放行来自该IP地址的DNS reply报文。
由于DNS reply验证对服务器发送的DNS应答进行了干预,因此要求服务器的实现严格遵守TCP/IP协议栈以及DNS协议的规定,如果服务器的协议栈实现不完善,即便是合法DNS reply报文,也可能会检查不通过。
(1) 进入系统视图。
system-view
(2) (可选)配置DNS reply验证的受保护IP地址。
client-verify dns-reply protected { ip destination-ip-address | ipv6 destination-ipv6-address } [ vpn-instance vpn-instance-name ] [ port port-number ]
(3) 进入接口视图。
interface interface-type interface-number
(4) 开启DNS reply验证功能。
client-verify dns-reply enable
缺省情况下,DNS reply验证功能处于关闭状态。
通过在设备连接外部网络的接口上开启HTTP客户端验证功能,可以保护内部网络中的应用服务器免受HTTP flood攻击。HTTP客户端验证功能有两种工作方式:
· 手工添加受保护IP地址:当设备检测到来自某客户端的首个目的地址为配置的受保护IP地址的HTTP GET/POST报文时,对该客户端发送的HTTP报文进行合法性检查。
· 自动添加受保护IP地址:当设备监测到某服务器受到了HTTP flood攻击时,会根据配置启动相应的防范措施。若防范措施配置为对攻击报文进行HTTP客户端验证,则设备会将该服务器IP地址添加到受保护IP表项中,并对后续的HTTP GET/POST请求报文进行合法性检查。
通过合法性检查的HTTP客户端的IP地址将被加入信任IP地址列表中,之后设备将放行来自该IP地址的HTTP报文。
(1) 进入系统视图。
system-view
(2) (可选)配置HTTP客户端验证的受保护IP地址。
client-verify http protected { ip destination-ip-address | ipv6 destination-ipv6-address } [ vpn-instance vpn-instance-name ] [ port port-number ]
(3) 进入接口视图。
interface interface-type interface-number
(4) 开启HTTP客户端验证功能。
client-verify http enable
缺省情况下,HTTP客户端验证功能处于关闭状态。
通过在设备连接外部网络的接口上开启SIP客户端验证功能,可以保护内部网络中的SIP应用服务器免受SIP flood攻击。SIP客户端验证功能有两种工作方式:
· 手工添加受保护IP地址:当设备检测到来自某客户端的首个目的地址为配置的受保护IP地址的INVITE报文时,对该客户端发送的SIP报文进行合法性检查。
· 自动添加受保护IP地址:当设备检测到某服务器受到了SIP flood攻击时,会根据配置启动相应的防范措施。若防范措施配置为对攻击报文进行SIP客户端验证,则设备会将该服务器IP地址添加到受保护IP表项中,并对后续的INVITE请求报文进行合法性检查。
通过合法性检查的SIP客户端的IP地址将被加入信任IP地址列表中,之后设备将直接转发来自该IP地址的SIP协议的INVITE报文。
如果客户端发送的报文首部信息不完整,即便是合法用户,也可能由于未解析到对应的字段导致未通过SIP客户端验证的严格检查而无法访问服务器。
(1) 进入系统视图。
system-view
(2) (可选)配置SIP客户端验证的受保护IP地址。
client-verify sip protected { ip destination-ip-address | ipv6 destination-ipv6-address } [ vpn-instance vpn-instance-name ] [ port port-number ]
(3) 进入接口视图
interface interface-type interface-number
(4) 开启SIP客户端验证功能
client-verify sip enable
缺省情况下,SIP客户端验证功能处于关闭状态。
通过配置IP黑名单功能可以对来自或发往指定IP地址的报文进行过滤。
IP黑名单的配置包括开启黑名单过滤功能和添加IP黑名单表项。若全局的黑名单过滤功能处于开启状态,则所有接口上的IP黑名单过滤功能均处于开启状态。若全局的黑名单过滤功能处于关闭状态,则需要开启指定接口上的黑名单过滤功能。添加IP黑名单表项的同时可以选择配置IP黑名单表项的老化时间,若不配置,那么该IP黑名单表项永不老化,除非用户手动将其删除。
IP黑名单表项除了可以用户手工添加之外,还可以通过其他方式自动添加。对于源IP黑名单,在黑名单功能使能的前提下,若配置了扫描攻击防范策略及相应的IP黑名单添加功能,则可以将检测到的扫描攻击方IP地址添加到源IP黑名单中。扫描攻击防范添加的源IP黑名单表项必定会老化,老化时间可配。关于扫描攻击防范的相关配置请参见“1.7.3 配置扫描攻击防范策略”。
(1) 进入系统视图。
system-view
(2) (可选)添加IP黑名单表项。
¡ 添加源IPv4黑名单表项。
blacklist ip source-ip-address [ vpn-instance vpn-instance-name ] [ ds-lite-peer ds-lite-peer-address ] [ timeout minutes ]
¡ 添加源IPv6黑名单表项。
blacklist ipv6 source-ipv6-address [ vpn-instance vpn-instance-name ] [ timeout minutes ]
¡ 添加目的IPv4黑名单表项。
blacklist destination-ip destination-ip-address [ vpn-instance vpn-instance-name ] [ timeout minutes ]
¡ 添加目的IPv6黑名单表项。
blacklist destination-ipv6 destination -ipv6-address [ vpn-instance vpn-instance-name ] [ timeout minutes ]
(3) (可选)使能黑名单日志功能。
blacklist logging enable
缺省情况下,黑名单日志功能处于关闭状态。
(4) 开启黑名单过滤功能。请选择其中一项进行配置。
¡ 开启全局黑名单过滤功能。
blacklist global enable
缺省情况下,全局黑名单功能处于关闭状态。
¡ 请依次执行以下命令开启接口上的黑名单过滤功能。
interface interface-type interface-number
blacklist enable
缺省情况下,接口上的黑名单功能处于关闭状态。
通过配置用户黑名单功能可以对指定用户的报文进行过滤。
用户黑名单的配置包括开启全局黑名单过滤功能和添加用户黑名单表项。添加用户黑名单表项的同时可以选择配置用户黑名单表项的老化时间,若不配置,那么该用户黑名单表项永不老化,除非用户手动将其删除。
用户黑名单功能需要配合用户身份识别功能使用,有关用户身份识别功能的详细介绍,请参见“安全配置指导”中的“用户身份识别与管理”。
(1) 进入系统视图。
system-view
(2) 开启全局黑名单过滤功能。
blacklist global enable
缺省情况下,全局黑名单功能处于关闭状态。
(3) 添加用户黑名单表项。
blacklist user user-name [ domain domain-name ] [ timeout minutes ]
(4) (可选)开启黑名单日志功能。
blacklist logging enable
缺省情况下,黑名单日志功能处于关闭状态。
通过配置地址对象组黑名单功能可以对指定地址网段的报文进行过滤。
地址对象组黑名单目前仅支持由管理员手工进行配置、删除。
地址对象组黑名单功能需要配合地址对象组功能使用,有关地址对象组功能的详细介绍,请参见“安全配置指导”中的“对象组”。
(1) 进入系统视图。
system-view
(2) 通过引用地址对象组配置黑名单。
blacklist object-group object-group-name
缺省情况下,未引用地址对象组。
(3) 开启黑名单过滤功能。请选择其中一项进行配置。
¡ 开启全局黑名单过滤功能。
blacklist global enable
缺省情况下,全局黑名单功能处于关闭状态。
¡ 请依次执行以下命令开启接口上的黑名单过滤功能。
interface interface-type interface-number
blacklist enable
缺省情况下,接口上的黑名单功能处于关闭状态。
通过配置地址对象组白名单功能可以放行指定地址网段的报文。
地址对象组白名单目前仅支持由管理员手工进行配置、删除。
地址对象组白名单功能需要配合地址对象组功能使用,有关地址组功能的详细介绍,请参见“安全配置指导”中的“对象组”。
(1) 进入系统视图。
system-view
(2) 通过引用地址对象组配置白名单。
whitelist object-group object-group-name
缺省情况下,未引用地址对象组。
(3) 开启白名单过滤功能。请选择其中一项进行配置。
¡ 开启全局白名单过滤功能。
whitelist global enable
缺省情况下,全局白名单功能处于关闭状态。
¡ 请依次执行以下命令开启接口上的白名单过滤功能。
interface interface-type interface-number
whitelist enable
缺省情况下,接口上的白名单功能处于关闭状态。
Login用户攻击防范功能处于开启状态时,如果用户登录设备连续失败的次数达到指定次数,则此用户IP地址将被加入黑名单,在全局黑名单功能开启的情况下,来自该IP地址的用户报文将被阻断指定的时长。
通过Login攻击防范功能与全局黑名单功能相配合,可以有效防范Login用户DoS攻击。
(1) 进入系统视图。
system-view
(2) 开启Login用户攻击防范功能。
attack-defense login enable
缺省情况下,Login用户攻击防范功能处于关闭状态。
(3) 配置Login用户登录失败的最大次数。
attack-defense login max-attempt max-attempt
缺省情况下,Login用户登录失败的最大次数为3次。
(4) 配置Login用户用户登录失败后阻断时长。
attack-defense login block-timeout minutes
缺省情况下,Login用户登录失败后阻断时长为60分钟。
(5) 开启全局黑名单过滤功能。
blacklist global enable
缺省情况下,全局黑名单功能处于关闭状态。
Login用户登录失败后,若设备上配置了重新进行认证的等待时长,则系统将会延迟一定的时长之后再允许用户进行认证,可以有效地避免设备受到Login用户字典序攻击。
Login用户延迟认证功能与Login用户攻击防范功能无关,只要配置了延迟认证等待时间,即可生效。
(1) 进入系统视图。
system-view
(2) 配置Login用户登录失败后重新进行认证的等待时长。
attack-defense login reauthentication-delay seconds
缺省情况下,Login用户登录失败后重新进行认证不需要等待。
在完成上述配置后,在任意视图下执行display命令可以显示配置后攻击检测及防范的运行情况,通过查看显示信息验证配置的效果。
在用户视图下,执行reset命令可以清除攻击检测及防范的统计信息。
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!