应用场景:    

        DOS侧重于通过对主机特定漏洞的利用攻击导致网络栈失效、系统崩溃、主机死机而无法提供正常的网络服务功能,从而造成拒绝服务,常见的DOS攻击手段有TearDrop、Land、Jolt、IGMP Nuker、Boink、Smurf、Bonk、OOB等;扫描也是网络攻击的一种,攻击者在发起网络攻击之前,通常会试图确定目标上开放的TCP/UDP端口,而一个开放的端口通常意味着某种应用。

        DDOS的表现形式主要有两种,一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机;另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主机的内存被耗尽或CPU被内核及应用程序占完而造成无法提供网络服务。    

        NGFW的防SYN Flood攻击采用了业界最新的syncookie技术,在很少占用系统资源的情况下,可以有效地抵御SYN Flood等DDOS攻击对受保护服务器的攻击。从而阻止外部的恶意攻击,保护设备和内网,当检测到此类扫描探测时,向用户进行报警提示。    

        基于上面的例子保护内网服务器。除了进行IPS防护外,在对其进行DDOS的保护。    

   

一、组网需求    

        对所有来自互联网的访问进行DDOS防护。    

       (1)保护web服务器,其私网地址为192.168.1.2,映射到外网地址202.1.1.11,对互联网开放HTTP服务;    

       (2)保护防火墙本身,202.1.1.10, 防止对其https, ssh端口进行DDOS攻击。    

   

二、网络拓扑    

   

   

三、配置要点    

      1  定义服务器地址    

      2  定义DDOS策略    

               

四、配置步骤       

       1  定义服务器地址    

           菜单:防火墙--地址--地址,点击添加按钮    

               image.png

    名称配置为server,地址类型选择子网:ip/掩码为202.1.1.8/29,该地址范围既包含服务器,也包含了设备本身,点击确认     

               image.png

           改地址范围既包括了服务器地址(202.1.1.11)也包括了防火墙的外网口地址(202.1.1.10)。    

2  定义DDOS策略    

           菜单:防火墙--策略--DDOS策略 ,点击新建按钮    

              image.png  

           配置DDOS策略参数:     

image.png

           源接口/区:   wan1, wan1口是外网接口,针对wan1口部署DDOS策略。    

           源地址:all.      

           目的地址:  被保护的地址202.1.1.8/29,同时实现对防火墙外网口和服务器的保护。    

           服务:被保护的服务 http,https,ssh。    

           anomalies:   DDOS支持的防护类型    

           tcp_sysn_flood:   DDOS攻击名称    

           状态:  是否启用该种防护    

           logging: 是否启用日志,ddos日志无需再CLI命令行下开启,只需将logging打勾即可    

           动作: 检查到攻击后的处理动作 block阻止,或者pass。

           阀值:  每秒检测的一定的攻击数量,则会触发相应的处理动作。    

           点击确定即可。    

   

三、常见DOS攻击和防扫描简介     

        防DOS攻击    

        Jolt2:Jolt2攻击通过向目的主机发送报文偏移加上报文长度超过65535的报文,使目的主机处理异常而崩溃。 配置了防Jolt2攻击功能后,NGFW可以检测出Jolt2攻击,丢弃攻击报文并输出告警日志信息。

        Land-Base:Land-Base攻击通过向目的主机发送目的地址和源地址相同的报文,使目的主机消耗大量的系统资源,从而造成系统崩溃或死机。 配置了防Land-Base攻击功能后,NGFW可以检测出Land-Base攻击,丢弃攻击报文并输出告警日志信息。    

        PING of death:PING of death攻击是通过向目的主机发送长度超过65535的ICMP报文,使目的主机发生处理异常而崩溃。 配置了防PING of death攻击功能后,NGFW可以检测出PING of death攻击,丢弃攻击报文并输出告警日志信息。

        Syn flag:Syn-flag攻击通过向目的主机发送错误的TCP标识组合报文,浪费目的主机资源。 配置了防Syn-flag攻击功能后,NGFW可以检测出Syn-flag攻击,丢弃攻击报文并输出告警日志信息。

        Tear drop:Tear-drop攻击通过向目的主机发送报文偏移重叠的分片报文,使目的主机发生处理异常而崩溃。 配置了防Tear-drop攻击功能后, NGFW可以检测出Tear-drop攻击,并输出告警日志信息。因为正常报文传送也有可能出现报文重叠,因此NGFW不会丢弃该报文,而是采取裁减、重新组装报文的方式,发送出正常的报文。

        Winnuke:Winnuke攻击通过向目的主机的139、138、137、113、53端口发送TCP紧急标识位URG为1的带外数据报文,使系统处理异常而崩溃。 配置了防Winnuke攻击功能后,NGFW可以检测出Winnuke攻击报文,将报文中的TCP紧急标志位为0后转发报文,并可以输出告警日志信息。

         Smurf:这种攻击方法结合使用了IP欺骗和ICMP回复方法使大量网络传输充斥目标系统,引起目标系统拒绝为正常系统进行服务。Smurf攻击通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(PING)数据包,来淹没受害主机,最终导致该网络的所有主机都对此ICMP应答请求做出答复,导致网络阻塞。    

               防扫描    

        TCP协议扫描:根据实际网络情况,当受到TCP扫描攻击时,可以配置防TCP扫描。 当一个源IP  地址在1秒内将含有TCP SYN片段的IP  封包发送给位于相同目标IP地址的不同端口数量大于配置的门限值时,即认为其进行了端口扫描,系统将其标记为TCP SCAN,并在配置的阻断时间内拒绝来自于该台源主机的所有其它TCP SYN包。 启用防TCP扫描,可能会占用比较多的内存。      

        UDP协议扫描:根据实际网络情况,当受到UDP扫描攻击时,可以配置防UDP SCAN扫描。 当一个源IP  地址在1秒内将含有UDP的IP  封包发送给位于相同目标IP地址的不同端口数量大于配置的门限值时,即进行了一次端口扫描,系统将其标记为UDP SCAN,并在配置的阻断时间内拒绝来自于该台源主机的所有其它UDP包。 启用防UDP扫描,可能会占用比较多的内存。

        PING扫描:根据实际网络情况,当受到PING扫描攻击时,可以配置防PING扫描。 当一个源IP地址在1秒内发送给不同主机的ICMP  封包超过门限值时,即进行了一次地址扫描。此方案的目的是将ICMP  封包(  通常是应答请求)  发送给各个主机,以期获得至少一个回复,从而查明目标地址。NGFW设备在内部记录从某一远程源地点发往不同地址的ICMP  封包数目。当某个源IP被标记为地址扫描攻击,则系统在配置的阻断时间内拒绝来自该主机的其它更多ICMP  封包。 启用防PING扫描,可能会占用比较多的内存。

         主机抑制时长:设置防扫描功能的阻断时间,当系统检测到扫描攻击时,在配置的时长内拒绝来自于该台源主机的所有其它攻击包,缺省配置为20秒。

   

五、DDOS策略实施建议    

        由于DDOS的闸值,与用户实际业务流量相关,所以没有标准的建议值,建议逐步调整.

       (1)  明确被保护的对象和服务。如保护内网的WEB服务器,则应该明确目的地址和端口。以便节约性能。    

   

           

       (2) 根据业务量估算,配置DOS闸值,过高则无法起到保护作用。同时将动作配置为pass,防止因为阈值配置过低,造成业务中断。    

                 同时开启日志记录,运行一段时间后,观察日志,是否有流量触发DOS, 并分析是否为攻击行为。    

   

            

       (3) 不断优化阈值,最后将动作改为所需的block或者pass,并观察性能的变化。    

       (4) 谨慎使用  tcp_src_session,udp_src_session,tcp_dst_session,udp_dst_session类似功能,正常流量可以触发该类攻击检测,且消耗资源高。。    

             同一个ip发起过的的tcp或者udp会话会触发 tcp_src_session,udp_src_session,如内网用户过多bt下载,同一DNS服务器大量返回包等。    

             而去往同一个ip地址的tcp,udp链接过多,会触发tcp_dst_session,udp_dst_session,如内网用户共同访问你同一dns服务器,百度等常用网站。    

       (5) 性能    

            建议仅开启tcp syn flook, udp flood, 网络中大都为该类型的攻击。tcp_src_session等基于会话数的功能,对cpu消耗较高,不建议开启。    

            对于网络攻击单个服务器的攻击,开启syn flood,要比仅仅依靠防护强策略阻挡,会节约30-50%左右的cpu。可以针对服务器进行ddos保护。    

            DDOS不消耗内存。    

   

       (6) 相关诊断命令    

             A    查看会话:  get system session-info full-stat

              session table:           table_size=2097152 max_depth=4 used=52794

              expect session table:    table_size=32768 max_depth=0 used=0

              misc info:               session_count=27709 exp_count=0 clash=0 memory_tension_drop=0 ephemeral=0/851968 removeable=0

               delete=0, flush=0, dev_down=0/0

          TCP sessions:

         7 in ESTABLISHED state

         27712 in SYN_SENT state                        //syn会话过多,异常    

         1 in CLOSE state

   

          B 抓包:   通过抓包命令可以看到高平率出现的异常数据包。    

          diagnose sniffer packet any 'icmp' 4 1000  或者    

        diagnose sniffer packet any 'tcp' 4 1000  或者    

        diagnose sniffer packet any 'udp' 4 1000

   

   

   

六、DDOS策略参考    

   

异常名称        

描述        

默认的阈值        

tcp_syn_flood        

如果新键TCP连接(包括重传)的SYN数据包传至一个目标IP地址的速率超过配置阈值,则执该动作。        

每秒2000个数据包。        

tcp_port_scan        

如果新建TCP连接(包括重传)的SYN数据包传至一个源IP地址的速率超过配置的阈值,则执行该动作。        

每秒1000个数据包。        

tcp_src_session        

如果从同一个源IP地址传出的并发TCP连接数量超过配置的阈值,则执行该动作。        

5000个并发会话。        

tcp_dst_session        

如果传至同一目标IP地址的并发TCP连接数量超过配置的阈值,则执行该动作。        

5000个并发会话。        

udp_flood        

如果传至目标IP地址的UDP流量超过配置的阈值,则执行该动作。        

每秒2000个数据包。        

udp_scan        

如果一个源IP地址传出的UDP会话数量超过配置阈值,则执行该动作。        

每秒2000个数据包。        

udp_src_session        

如果一个源IP地址传出的并发UDP连接数量超过配置的阈值,则执行该动作。        

5000个并发会话。        

udp_dst_session        

如果传至目标IP地址的并发UDP连接数量超过配置的阈值,则执行该动作。        

5000个并发会话。        

icmp_flood        

如果发送至一个目标IP地址的ICMP数据包数量超过配置的阈值,则执行该动作。        

每秒250个数据包。        

icmp_sweep        

如果一个源IP地址传出ICMP数据包数量超过配置的阈值,则执行该动作。        

每秒100个数据包。        

icmp_src_session        

如果一个源IP地址传出的并发ICMP连接数量超过配置的阈值,则执行该动作。        

300个并发会话        

icmp_dst_session        

如果传至目标IP地址的并发ICMP连接数据超过配置的阈值,则执行该动作。        

3000个并发会话        

ip_src_session        

如果一个源IP地址传出的并发IP连接数据超过配置的阈值,则执行该动作。        

5000个并发会话。        

ip_dst_session        

如果传至目标IP地址的并发IP连接数据超过配置的阈值,则执行该动作。        

5000个并发会话。        

sctp_flood        

如果发送至一个目标IP地址的SCTP数据包数量超过配置的阈值,则执行该动作。        

每秒2000个数据包        

sctp_scan        

如果一个源IP地址传出的SCTP会话数量超过配置阈值,则执行该动作。        

每秒1000个数据包