DDoS攻击与防御(一)

前言
这章主要讲述DDoS攻击与防御方式

理论知识来源于 https://www.microsoft.com/zh-cn/security/business/security-101/what-is-a-ddos-attack
1:攻击
一般来说,DDoS 攻击分为三大类:容量耗尽攻击、协议攻击和资源层攻击。

1>容量耗尽攻击通过最初似乎是合法的流量来使网络层不堪重负。这种类型的攻击是最常见的 DDoS 攻击形式。DNS(域名服务器)放大就是一种容量耗尽攻击,它使用开放的 DNS 服务器向目标发送海量 DNS 响应流量。
2>协议攻击通过利用第 3 层和第 4 层协议堆栈中的弱点导致服务中断。SYN 攻击就是此类攻击的一个示例,该攻击会消耗所有可用服务器资源(从而使服务器不可用)。
3>资源(或应用程序)层攻击针对 Web 应用程序数据包并破坏主机之间的数据传输。此类攻击的示例包括 HTTP 协议违规、SQL 注入、跨站脚本和其他第 7 层攻击。
网络攻击者可能对一个网络使用一种或多种类型的攻击。例如,攻击可能从一类攻击开始,然后演变为另一种威胁或与其相结合,进而对系统造成严重破坏。

此外,每个类别中都包含多种网络攻击。随着网络犯罪分子的技术越来越复杂,新网络威胁的数量正在增加,并且预计还会攀升。
如果怀疑网络受到攻击,那么必须快速采取行动,因为除了导致故障外,DDoS 攻击还会使组织容易受到其他黑客、恶意软件或网络威胁的攻击。

2:检测
如何检测和响应 DDoS 攻击
虽然没有一种方法可以检测 DDoS 攻击,但有一些迹象可能提示网络正受到攻击:

1>看到网络流量激增但来源不明,这些流量实际来自同一个 IP 地址或范围。
2>网络性能缓慢或异常。
3>网站、在线商店或其他服务完全离线。
现代软件解决方案可以帮助确定潜在威胁。网络安全和监视服务可以就系统变化发出提醒,以便你可以快速响应。

你还需要制定 DDoS 攻击行动计划(包含明确的角色和程序),以便团队能够针对这些威胁采取迅速而果断的行动。务必记住,并非所有 DDoS 攻击都是相同的;需要制定不同的响应协议来缓解不同的攻击。

3:预防与防护
《预防》
在发现网络威胁之前,需要先制定应对流程。准备是及时发现和应对攻击的关键。

需要执行以下操作:

1>制定拒绝服务防御策略,以帮助检测、预防和减少 DDoS 攻击。
2>识别安全漏洞并评估针对设置的潜在威胁。
3>更新任何保护软件或技术并确保其正常工作。
4>成立相关团队并针对应对攻击分配角色。
务必使用有助于保护业务安全的产品、流程和服务来进一步增强安全性。这样一来,一旦检测到威胁,团队便会有知识储备并有能力采取行动。
《防护》
保护网络免受未来攻击。为帮助保护业务,需要执行以下操作:

1>定期进行风险分析,以了解组织的哪些部分需要威胁防护。
2>成立 DDoS 攻击响应团队,专门负责识别和缓解攻击。
3>在你的在线运营中纳入检测和预防工具,并培训用户需要注意什么事项。
4>评估防御策略的有效性(包括开展演习)并确定后续措施。
DDoS 攻击防护有多种形式,从在线资源到监视软件,再到威胁检测工具。了解如何在行业领先且值得信赖的 Microsoft 安全专家的帮助下阻止恶意攻击

4:具体案例分析
1>DDOS攻击(SYNFoold)
客户端一直发送tcp syn包,但是不回复第三次握手的ACK。那服务端就会有大量的SYN_RECV状态的连接
在这里插入图片描述
查看最大syn 队列(半连接队列)大小
cat /proc/sys/net/ipv4/tcp_max_syn_backlog
OR sysctl -a|grep max_syn
查看系统当前半连接队列大小
ss -s
在这里插入图片描述

查看 ss -antp | grep SYN-RECV | wc -l
如果返回比较大比如256
间隔执行 netstat -s | grep “SYNs to LISTEN” 查看累加值
如果上面返回的累计值在不断增加,就说明 SYN 队列已经满了。

防御
内核对于半连接队列的限制是有三个逻辑的:
1 半连接队列满了且没有开启tcp_syncookies,丢弃
2全连接队列满了,且有多个(大于1个)连接没有重传syn+ack,则丢弃
3 如果没有开启tcp_syncookies,并且max_syn_backlog减去半连接队列的长度小于某个值(sysctl_max_syn_backlog >> 2)时,则丢弃

1:cat /proc/sys/net/ipv4/tcp_syncookies #查看是否开启
如下PROC文件tcp_syncookies默认值为1,表明在套接口的SYN backlog队列溢出时,将开启SYNCOOKIES功能,抵御SYN泛洪攻击。如果tcp_syncookies设置为2,将会无条件的开启SYNCOOKIES功能。
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

2 ::如何增大半连接队列
在这里插入图片描述

查看cat /proc/sys/net/ipv4/tcp_max_syn_backlog # 一般默认是128 或256(ubuntu18)
建议调整为1024及以上

查看cat /proc/sys/net/core/somaxconn # 4096 已经可以了

3:减少SYN+ACK重传次数
默认是5次,可以修改为1
echo 1 > /proc/sys/net/ipv4/tcp_synack_retries
在这里插入图片描述

4: 使用iptables
1>屏蔽攻击者IP
netstat -an | grep “:端口” | grep ESTABLISHED
来查看哪些IP可疑~比如:xxx.xxx.xxx.xxx 这个ip连接较多,并很可疑,并不希望它再次与xxx.xxx.xxx.xxx有连接。可使用命令:
iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp -j DROP
2>防止同步包洪水(Sync Flood)
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
–limit 1/s 限制syn并发数每秒1次,可以根据自己的需要修改防止各种端口扫描

Ping洪水攻击(Ping of Death)
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

5:使用工具
使用DDoS deflate自动屏蔽攻击ip
DDoS deflate是一款免费的用来防御和减轻DDoS攻击的脚本。它通过netstat监测跟踪创建大量网络连接的IP地址,
在检测到某个结点超过预设的限 制时,该程序会通过APF或IPTABLES禁止或阻挡这些IP.
DDoS deflate官方网站:http://deflate.medialayer.com/

5:模拟工具
Hping3 是面向命令行的,用于生成和解析 TCP/IP 协议数据包汇编/分析的开源工具
sudo apt install hping3 #安装
命令下面还有自己安装后查看
在这里插入图片描述
常见的应用是:扫描端口、伪造地址和洪水攻击
hping3中的参数如下:
-h --help 显示帮助
-v --version 显示版本
-c --count 发送数据包的数目
-i --interval 发送数据包间隔的时间 (uX即X微秒, 例如: -i u1000)
–fast 等同 -i u1000 (每秒10个包)
–faster 等同 -i u100 (每秒100个包)
–flood 尽最快发送数据包,不显示回复
-n --numeric 数字化输出,象征性输出主机地址
-q --quiet 静默模式,只显示最后的统计数据
-I(大i) --interface 指定需要使用的网络接口 (默认路由接口)
-V --verbose 详细模式
-D --debug 调试信息
-z --bind 将“ctrl+z”组合键与发送包的TTL值绑定,按一次TTL值加1
-Z --unbind 取消绑定 ctrl+z 键
–beep 对于接收到的每个匹配数据包蜂鸣声提示
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
DOS攻击:hping3 -q --rand-source --id 0 --icmp -d 56 --flood xxx.xxx.xxx.xxx
hping3 -c 10000 -d 120 -S -w 64 -p 80 --flood --rand-source IP地址或域名
-q 使用静默模式
–rand-source 伪造源地址
-d 56 发送到目的PC的每个数据包的大小
–id 0 ID值0
–icmp 发送icmp包
-flood 洪水模式
-c 10000 发送的数据包的数量
-S 只发送SYN数据包
-w 64 TCP窗口大小
-p 80 端口号

猜你喜欢

转载自blog.csdn.net/yunteng521/article/details/130860908