首页 > 编程知识 正文

全国it外包(深入浅出的讲解)

时间:2023-05-03 21:52:42 阅读:92202 作者:773

防御基础

攻击的流量是多少

关于dos防御,首先要知道受到了多少攻击。 这个问题看起来很简单,但其实有很多不为人知的细节。

例如,SYN Flood在服务器端生成更多的SYN队列以提高传输效率。 攻击程序在填充标头时,不在IP标头和TCP标头中填充可选字段。 因此,IP报头的长度正好为20字节,TCP报头也为20字节,共计40字节。

在以太网的情况下,最小分组长度的数据段必须达到46字节,攻击消息只有40字节,所以网卡在发送时在TCP报头的末尾填充6个0,进行满足最小分组长度请求的处理。 此时,数据包整体的长度如果加上14字节的以太网头部、20字节的IP头部、20字节的TCP头部、以及用最小数据包长度的请求填充的6字节的0,则全部为60字节。

但这还没有结束。 以太网在传输数据时,也有CRC检查的要求。 网卡在发送数据之前进行数据包的CRC检查,并将4字节的CRC值附加在标头的最后。 此时,数据包长度不再是40字节,而是64字节。 这是常见的SYN数据包攻击,数据包结构如下。

|14字节以太网标头|20字节IP标头|20字节TCP|6字节填充|4字节检查|

|目标MAC|源MAC|协议类型| IP标头|TCP标头|以太网填充| CRC检查|

到了64字节,SYN数据包的填充完成,准备开始传输。 攻击数据包非常小,不足以满足最大传输单元(MTU )的1500字节,因此不会被分片。 那么,这些数据包会像生产线上的罐头一样,由一个数据包和一个数据包密集传输吗? 其实不然。

以太网在传输时也有前导码(preamble )和帧间隔(inter-frame gap )。 其中,前导码占8字节,即64位。 前导码前面的所有7个字节都用10101010、1和0分隔。 但是,第8个字节变为10101011,如果主机监视两个连续的1,则可以看到之后是数据。 网络传输时,数据结构如下。

|8字节前导码|6字节的MAC地址|6字节的源MAC地址|2字节的高级协议类型|20字节的IP头|20字节的TCP头|6字节的以太网填充|4字节的CRC检查

也就是说,本来只有40字节的SYN包在网络上传输时所占的带宽实际上是84字节。

有了以上基础,就可以开始计算攻击流量和网络设备的线速度问题了。 当只填充了IP报头和TCP报头的最快乐的灰狼数据包在以太网上奔跑时,100Mbit的网络、能够支持的最大PPS (数据包个数)为100106/(8*)

灌篮防御

综上所述,SYN Flood攻击占用了服务器大量的CPU、内存资源,占据了SYN队列满地。 因此,通过修改内核参数可以有效缓解。 主要参数如下:

net.ipv4.tcp_syncookies=1

net.IP v4. TCP _ max _ syn _ backlog=8192

net.ipv4.tcp_synack_retries=2

启用SYN Cookie,设置SYN的最大队列长度,并分别设置SYN ACK的最大重试次数。

SYN Cookie的作用是缓解服务器资源的压力。 启用之前,服务器在收到SYN数据包后立即分配存储空间,并以随机化数字作为SYN编号发送SYN ACK数据包。 然后,保存连接的状态信息并等待客户端的确认。 启用SYN Cookie后,服务器将不再分配存储空间,而是使用基于时间种子的随机数算法来设置SYN编号,而不是完全随机的SYN编号。 发送SYN ACK确认消息后,清空资源,不保存状态信息。 服务器在从客户端接收到最终的ACK分组之前,验证与通过Cookie验证算法发送的SYN ACK消息序列号是否一致,如果一致则完成握手,失败则丢弃。 当然,上述高级攻击有SYN混合ACK的攻击方法,但这是对这种防御方法的反击,其优劣取决于双方的硬件结构

tcp_max_syn_backlog使用服务器的内存资源增加队列的长度,以防止攻击包占用所有连接从而导致普通用户完成握手。 net.ipv4.tcp_SYN ACK_retries是指减少服务器synack消息的重试次数,并尽快释放等待资源。 这三种措施应对攻击的三大危害一对一,完全对症下药。 但是,这些措施也是双刃剑,可能会消耗更多的服务器内存资源,或者影响普通用户建立TCP连接,需要评估和仔细设置服务器的硬件资源和攻击大小。

除了定制TCP/IP协议栈外,还经常出现TCP数据包丢弃方案,利用TCP协议的重发机制识别正常用户和攻击消息。 防御设备在接收到一个IP地址的SYN消息时,会简单地核对该IP是否存在于白名单中,如果存在,则传输到后端。 如果不在白名单中,则检查该IP是否在一定时间内首次为SYN消息,否则检查是否重新发送消息,如果是重新发送,则转发并加入白名单。

不是则丢弃并加入黑名单。是首次SYN报文则丢弃并等待一段时间以试图接受该IP的SYN重传报文,等待超时则判定为攻击报文加入黑名单。

首包丢弃方案对用户体验会略有影响,因为丢弃首包重传会增大业务的响应时间,有鉴于此发展出了一种更优的TCP Proxy方案。所有的SYN数据报文由清洗设备接受,按照SYN Cookie方案处理。和设备成功建立了TCP三次握手的IP地址被判定为合法用户加入白名单,由设备伪装真实客户端IP地址再与真实服务器完成三次握手,随后转发数据。而指定时间内没有和设备完成三次握手的IP地址,被判定为恶意IP地址屏蔽一定时间。除了SYN Cookie结合TCP Proxy外,清洗设备还具备多种畸形TCP标志位数据包探测的能力,通过对SYN报文返回非预期应答测试客户端反应的方式来鉴别正常访问和恶意行为。

清洗设备的硬件具有特殊的网络处理器芯片和特别优化的操作系统、TCP/IP协议栈,可以处理非常巨大的流量和SYN队列。

HTTP Flood防御

HTTP Flood攻击防御主要通过缓存的方式进行,尽量由设备的缓存直接返回结果来保护后端业务。大型的互联网企业,会有庞大的CDN节点缓存内容。

当高级攻击者穿透缓存时,清洗设备会截获HTTP请求做特殊处理。最简单的方法就是对源IP的HTTP请求频率做统计,高于一定频率的IP地址加入黑名单。这种方法过于简单,容易带来误杀,并且无法屏蔽来自代理服务器的攻击,因此逐渐废止,取而代之的是JavaScript跳转人机识别方案。

HTTP Flood是由程序模拟HTTP请求,一般来说不会解析服务端返回数据,更不会解析JS之类代码。因此当清洗设备截获到HTTP请求时,返回一段特殊JavaScript代码,正常用户的浏览器会处理并正常跳转不影响使用,而攻击程序会攻击到空处。

DNS Flood防御

DNS攻击防御也有类似HTTP的防御手段,第一方案是缓存。其次是重发,可以是直接丢弃DNS报文导致UDP层面的请求重发,可以是返回特殊响应强制要求客户端使用TCP协议重发DNS查询请求。

特殊的,对于授权域DNS的保护,设备会在业务正常时期提取收到的DNS域名列表和ISP DNS IP列表备用,在攻击时,非此列表的请求一律丢弃,大幅降低性能压力。对于域名,实行同样的域名白名单机制,非白名单中的域名解析请求,做丢弃处理。

慢速连接攻击防御

Slowloris攻击防御比较简单,主要方案有两个。

第一个是统计每个TCP连接的时长并计算单位时间内通过的报文数量即可做精确识别。一个TCP连接中,HTTP报文太少和报文太多都是不正常的,过少可能是慢速连接攻击,过多可能是使用HTTP 1.1协议进行的HTTP Flood攻击,在一个TCP连接中发送多个HTTP请求。

第二个是限制HTTP头部传输的最大许可时间。超过指定时间HTTP Header还没有传输完成,直接判定源IP地址为慢速连接攻击,中断连接并加入黑名单。

企业级防御

互联网企业防御DDoS攻击,主要使用上文的基础防御手段,重点在于监控、组织以及流程。

监控需要具备多层监控、纵深防御的概念,从骨干网络、IDC入口网络的BPS、PPS、协议分布,负载均衡层的VIP新建连接数、并发连接数、BPS、PPS到主机层的CPU状态、TCP新建连接数状态、TCP并发连接数状态,到业务层的业务处理量、业务连通性等多个点部署监控系统。即使一个监控点失效,其他监控点也能够及时给出报警信息。多个点信息结合,准确判断被攻击目标和攻击手法。

一旦发现异常,立即启动在虚拟防御组织中的应急流程,防御组织需要囊括到足够全面的人员,至少包含监控部门、运维部门、网络部门、安全部门、客服部门、业务部门等,所有人员都需要2-3个备份。流程启动后,除了人工处理,还应该包含一定的自动处理、半自动处理能力。例如自动化的攻击分析,确定攻击类型,自动化、半自动化的防御策略,在安全人员到位之前,最先发现攻击的部门可以做一些缓解措施。

除了DDoS到来之时的流程等工作之外,更多的工作是在攻击到来之前。主要包含CDN节点部署、DNS设置、流程演习等。对于企业来说,具备多个CDN节点是DDoS防御容量的关键指标。当一个机房承担不住海量数据时,可以通过DNS轮询的方式,把流量引导到多个分布节点,使用防御设备分头处理。因此DNS的TTL值需要设置得足够小,能够快速切换,每个CDN节点的各种VIP设置也需要准备充分。

在虚拟化时代,各种用户的不同业务共处在相同的物理机平台,遭受DDoS攻击的可能性越来越高,而且一个用户被攻击可能牵扯到大量的其他用户,危害被显著放大,因此防御显得尤为重要。阿里云的虚拟化业务,平均每天遭受约20起DDoS攻击,最大流量达到接近20Gbit/s,所有这些攻击都在15分钟内自动处理完成,让客户远离DDoS的威胁,专心发展业务。

总地来说,对DDoS防御,主要的工作是幕后积累。台上十分钟,台下十年功,没有充分的资源准备,没有足够的应急演练,没有丰富的处理经验,DDoS攻击将是所有人的噩梦。

整理/潇洒的发卡 上海蓝盟创始人兼CEO,复旦校友创新创业俱乐部副会长,致力于用IT外包网络维护服务赋能企业客户发展,助力其创新、迭代和进化。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。