zoukankan      html  css  js  c++  java
  • SYN Flood攻击

    概述

    本文主要介绍SYN Flood攻击的原理,以及防火墙设备的防御手段;

    TCP三次握手

    TCP建立连接过程需要经过三次握手,在三次握手成功之后,建立连接,进而进行数据传输;假设有客户端和服务器,客户端向服务器发起连接请求:

    (1) 客户端向服务器发送SYN报文;

    (2) 服务器收到SYN之后向客户端回复SYN-ACK报文

    (3)客户端收到SYN-ACK之后向服务器发送ACK报文;

    经过上述三个步骤,整个连接建立过程结束;

    上述过程中,在服务器收到SYN报文之后,会在内部建立连接请求控制块,该控制块用于跟踪连接建立过程和状态,控制块的生命周期如下:

    (1) 如果收到最后一个握手ACK报文,该控制块会转换成为正式的连接控制块;

    (2) 如果迟迟未收到最后的那个ACK报文,服务器会通过定时器重发SYN-ACK,直至超时,销毁请求控制块;

    明确了上述流程之后,来看SYN Flood的产生;

    SYN Flood产生

    SYN Flood正是利用了上面的服务器收到SYN报文之后,立即就会建立控制块的设计,发起攻击;攻击者通过多台攻陷的“肉机”或者伪造的IP地址,大量的向服务器发送SYN报文,服务器不断的申请资源建立控制块,从而大量占用资源直至资源耗尽,使正常请求服务变慢,或者完全停止服务;

    SYN Flood检测
    1. 新建连接请求数检测

    防火墙等中间设备记录SYN报文的速率,如果超过配置的阈值,则认为存在SYN Flood;

    2. 服务器半开连接数检测

    防火墙等中间设备统计半开连接数目与建立连接数的相对比例,如果发现半开连接数相对于建立连接数有大比例的增加,超过了配置的阈值,则认为存在SYN Flood;

    SYN Flood防御
    1. 完全阻断新连接

    直接彻底的不允许任何SYN报文建立连接请求,直接做丢包处理;

     
    2. 释放无效的半开连接

    当产生大量的半开连接时,防火墙设备需要检测出无效的半开连接,并模拟客户端与服务器的五元组向服务器发送RST报文,通知服务器释放连接资源;

     
    3. SYN Cookie技术

    该技术实际是在客户端和服务器之间建立了TCP Proxy;其过程如下:

    (1) 客户端发送SYN报文;

    (2) 防火墙收到客户端发来的SYN报文,模拟服务器向客户端发送SYN-ACK报文,其中该报文中的序号为防火墙根据客户端信息按一定规则计算出的Cookie值,作为序号发给客户端;

    (3) 客户端在收到SYN-ACK报文之后,正常会回复ACK报文;服务器可能会做如下处理;

    a. 防火墙接收这个ACK报文之后,对其中的需要根据客户端信息进行Cookie计算,如果与序号匹配,则认为是一个合法连接,进而执行步骤(4)以下的步骤;

    b. 如果客户端未回应ACK报文,则认为是攻击请求,丢包处理;此时未建立控制块;

    c. 如果客户端回复了ACK,但是其中的Cookie值检测无法通过,则认为是攻击请求,丢包处理;此时为建立控制块;

    (4) 通过Cookie检测之后,防火墙模拟客户端向服务器发送SYN请求,并建立连接控制块,保存于客户端与防火墙的连接状态和防火墙与服务器的连接状态;

    (5) 服务器回复SYN-ACK给防火墙;

    (6) 防火墙模拟客户端向服务器回复ACK,此时防火墙与服务器之间连接建立完成;

    (7) 经过上述步骤,客户端与防火墙直接建立了连接,防火墙与服务器之间建立了连接,后面交互的数据,全部由防火墙进行代理;

    4. Safe Reset技术

    该技术实际上是对正常的TCP连接建立过程进行了干预性的校验;过程如下:

    (1) 客户端发送SYN报文;

    (2) 防火墙模拟服务器向客户端回复SYN-ACK,其中的确认序号设置为一个错误的序号,并且通过客户端信息计算一个Cookie值作为SYN-ACK的序号发给客户端;

    (3) 客户端收到错误的SYN-ACK之后,正常会发送RST结束连接;

    (4) 防火墙收到RST后,检测其Cookie,如果检测通过,则后续请求放行,进入流程(5);如果未收到RST或者Cookie校验未通过,则做丢包处理;

    (5) 客户端重新发送SYN报文; 防火墙放行状态,不会干预连接建立请求;客户端与服务器正常完成三次握手建立连接;

  • 相关阅读:
    Java 第十一届 蓝桥杯 省模拟赛 梅花桩
    Java 第十一届 蓝桥杯 省模拟赛 梅花桩
    Java 第十一届 蓝桥杯 省模拟赛 梅花桩
    Java 第十一届 蓝桥杯 省模拟赛 元音字母辅音字母的数量
    Java 第十一届 蓝桥杯 省模拟赛 元音字母辅音字母的数量
    Java 第十一届 蓝桥杯 省模拟赛 元音字母辅音字母的数量
    Java 第十一届 蓝桥杯 省模拟赛 最大的元素距离
    Java 第十一届 蓝桥杯 省模拟赛 递增序列
    Java 第十一届 蓝桥杯 省模拟赛 递增序列
    Java 第十一届 蓝桥杯 省模拟赛 最大的元素距离
  • 原文地址:https://www.cnblogs.com/wanpengcoder/p/11762031.html
Copyright © 2011-2022 走看看