u盘装机nofile (U盘装机助理)

作者 | 阿文

责编 | 郭芮

2016年5月,非法黑客推出了一系列针对全球多家银行网站的银行网站DDoS攻击。约旦、韩国韩国、摩纳哥等央行网络系统瘫痪半小时,无法正常工作。

2016年11月,俄罗斯五家主流银行遭遇为期两天的痛苦DDoS攻击。来自30个国家的2.4万台计算机僵尸网络不断发动强大的力量DDOS攻击。

2017年4月初,江苏省某网络公司服务器频繁发生DDoS流量攻击导致多个挂载在服务器上的网站无法正常运行,损失严重。

2018年3月,Github到目前为止,它遭受了最大的记录DDoS攻击。攻击者通过公共互联网发送小字节UDP要求数据包配置错误memcached作为回应,服务器,memcached服务器通过方向Github发送大量不成比例的响应,形成大规模的响应DDoS攻击。

2019年9月初,北京市公安局网络安全总队(以下简称网络安全总队)发起全国专项打击分布式拒绝服务攻击等违法犯罪行为。三个月内,网安总队在全国范围内逮捕了3名犯罪嫌疑人79北京7268台被控主机被清理干净。

...

什么是DDOS攻击?

比如我开了一家酒店,可以容纳100人同时吃饭。我的一个竞争对手也在对面开了一家酒店。竞争对手雇了300人坐这家酒店坐着不吃不喝,导致酒店满满的,无法正常营业。这在计算机中的表现是分布式拒绝服务。在计算机系统中,它利用网络协议和操作系统的一些缺陷,采用欺骗和伪装策略进行网络攻击,使网站服务器充满大量需要回复的信息,消耗网络带宽或系统资源,导致网络或系统负荷大,瘫痪,停止提供正常的网络服务。

分布式拒绝服务攻击(英语意思是Distributed Denial of Service,简称DDoS)它是指在不同位置的多个攻击者同时攻击一个或多个目标,或者一个攻击者控制不同位置的多台机器,并使用它们同时攻击受害者。

攻击时,可以对源IP伪造地址通常是攻击者发起的DDOS 攻击前,成千上万的计算机被控制,我们称之为肉鸡。入侵者通过这些肉鸡同时向目标机器发起并发请求,导致目标机器的系统资源瞬间被填满,无法正常提供外部服务。

与DoS与单台主机发起的攻击相比,分布式拒绝服务攻击DDoS这是一种集团行为,由数百台甚至数千台入侵后安装攻击过程的主机同时发起。

攻击方式

SYN Flood攻击

SYN Flood 目前网络上最常见的攻击是DDoS它利用了攻击TCP协议实现的缺陷。通过向网络服务所在端口发送大量伪造源地址的攻击报告,目标服务器中的半开连接队列可能会被占用,以防止其他合法用户访问。

众所周知,TCP要建立连接,需要握手三次。通信双方必须至少交换三次成功的信息才能进入连接的全开状态(Full-Open)。建立正常的连接需要以下步骤:

首先,客户端发送到服务器SYN为了启动连接,数据包;

服务器响应初始包和SYN / ACK确认通信;

最后,客户端返回ACK从服务器接收到的数据包中确认数据包。数据包发送和接收序列完成后,TCP连接打开并发送和接收数据。

攻击者利用TCP握手机制在收到初始信息时SYN数据包后,服务器将使用一个或多个SYN / 电脑知识 ACK响应数据包,等待握手的最后一步。这是它的工作原理:

攻击者向目标服务器发送击者SYN通常使用欺骗性的数据包IP地址。

服务器响应每个连接请求,并留下开口准备接收响应。

服务器等待从未到达的最终服务器ACK攻击者在数据包中继续发送更多信息SYN数据包。每个新的SYN数据包的到达导致服务器暂时保持新的开放端口连接一段时间,一旦使用了所有可用端口,服务器就不能正常工作。

当服务器断开连接,但连接另一端的机器没有连接时,连接被认为是半开的。这种类型DDoS在攻击过程中,目标服务器不断离开打开的连接,等待每个连接超时,然后端口再次可用。因此,这种攻击可以被视为半开攻击。

UDP Flood攻击

UDP Flood 流量型日益猖獗DDoS攻击,原理也很简单。常见的情况是大量使用UDP小包冲击DNS服务器或Radius流媒体视频服务器认证服务器。由于UDP在UDP Flood攻击者可以发送大量伪造源IP地址的小UDP包。

ICMP Flood攻击

ICMP Flood攻击属于流量攻击模式,利用大流量给服务器带来更大的负荷,影响服务器的正常服务。目前,许多防火墙直接过滤ICMP报文。因此ICMP Flood频率低。

Connection Flood攻击

Connection Flood这是一种典型的利用小流量冲击大带宽网络服务的攻击方法,其原理是利用真实性IP大量连接到服务器的地址。建立连接后,长时间不释放,占用服务器资源,导致服务器上残留连接(WAIT状态)过多,效率降低,甚至资源耗尽,无法响应其他客户发起的链接。

HTTP Get攻击

这种攻击主要针对存在ASP、JSP、PHP、CGI脚本程序的特点是与服务器正常建立TCP连接并不断向脚本程序提交大量耗费数据库资源的调用,如查询和列表。这种攻击的特点是可以绕过普通的防火墙保护Proxy代理攻击,缺点是攻击静态页面的网站效果不好,会暴露攻击者lP地址。

UDP DNS Query Flood攻击

UDP DNS Query Flood攻击的方法是向被攻击的服务器发送大量的域名分析请求,通常要求分析的域名是随机生成不存在的域名。域名分析的过程给服务器带来了很大的负载,域名分析的要求每秒超过一定数星就会导致DNS超时服务器解析域名。

DDOS 的防范

通过 Linux 自带防火墙防范攻击

以 DDOS SYN Flood 以攻击为例,我们可以通过系统击iptables 防火墙保护。

第一种方法是禁止攻击来源IP,但通常不止一个攻击源IP,这种方法保护弱。

$ iptables -I INPUT -s 192.168.0.2 -p tcp -j REJECT

第二钟是 限制syn并发次数和同一次数IP 新建连接数的数量。

#限制 syn 并发数为每秒 1 次

$iptables -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT

#限制单个 IP 在 60 秒新建立的连接数为 10

$iptables -I INPUT -p tcp --dport 80 --syn -m recent --name SYN_FLOOD --update --seconds 60 --hitcount 10 -j REJECT

但如果攻击源特别多,其实还是很难阻挡的。SYN Flood 会导致 SYN_RECV 通过调整半连接容量,状态连接急剧增加,例如调整为 1024

$ sysctl -w net.ipv4.tcp_max_syn_backlog=1024

net.ipv4.tcp_max_syn_backlog = 1024

另外,每个SYN_RECV 如果失败,核心将自动重试。默认情况下 5次,可修改为一次。

$ sysctl -w net.ipv4.tcp_synack_retries=1

net.ipv4.tcp_synack_retries = 1

此外,TCP SYN Cookies 是一种特殊的防御 SYN Flood 攻击方法,其原理是基于连接信息(包括源地址、源端口、目的地址、目的端口等)计算哈希值(SHA1)这个哈希值叫 cookie。

这个 cookie 它被用作序列号来回应 SYN ACK 包,并释放连接状态。

这个 cookie 它被用作序列号来回应 SYN ACK 包,并释放连接状态。当客户发送三次握手的最后一次时 ACK 之后,服务器将再次计算哈希值,并确认它是上次返回的 SYN ACK 返回包,才会进入 TCP 连接状态。因而,开启 SYN Cookies 之后,半开连接状态不需要维护,半连接数也没有限制。

注意开启 TCP syncookies 之后,内核选项 net.ipv4.tcp_max_syn_backlog 无效。以下方式可打开:

$ sysctl -w net.ipv4.tcp_syncookies=1

net.ipv4.tcp_syncookies = 1

优化与网络相关的核心参数遇到攻击时,请求数会更大,你可能会看到很多地方

TIME. WAIT

状态连接。

linux查看tcp的状态命令

netstat -nat

查看TCP各种状态的数量;

lsof -i:port

可检测打开套接字的情况;

sar -n SOCK

查看tcp创建的连接数;

tcpdump -iany tcp port 6000

对tcp端口为6000抓包。

[root@centos ~]# netstat -ant

Active Internet connections (servers and established)Proto Recv-Q Send-Q Local Address Foreign Address

State

tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN

tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTENtcp 0 0 192.168.10.58:22 13.136.182.

140

:23107 TIME_WAITtcp 0 48 192.168.10.58:22 13.136.182.

140

:61282 TIME_WAIT

tcp6 0 0 :::22 :::* LISTEN

tcp6 0 0 ::1:25 :::* LISTEN

TCP状态及其描述:描述远程等待TCP请求应用程序发送连接请求后远程等待端点的确认。TCP客户端第一次握手后的状态端点已收到连接请求并发送确认。TCP客户端第一次握手后的状态端点已收到连接请求并发送确认。端点正在等待最终确认。TCP第二次握手后服务端的状态
状态
LISTEN
SYN_SENT
SYN-RECEIVED
SYN-RECEIVED
ESTABLIS HE