Linux性能优化实战 39 :怎么缓解 DDoS 攻击带来的性能下降问题?

18 篇文章 0 订阅

一、模拟DDOS攻击

      运行 hping3 命令

      

       如果现象不明显,那么把参数里面的 u10 调小,或者加上–flood 选项;

 

二、确认DDOS攻击

1. 执行命令变慢,正常客户端的连接超时了,并没有收到 Nginx 服务的响应。

2. sar命令查看网络收发状况

  接收的 PPS 已经达到了 20000 多,但是 BPS 却只有 1174 kB,这样每个包的大小就只有54B(1174*1024/22274=54)。

  这明显就是个小包了

3. tcpdump 抓包极客时间

Flags [S] 表示这是一个 SYN 包。大量的 SYN 包表明,这是一个 SYN Flood 攻击。

 

三、缓解DDOS

1.  封IP

(1) DDOS是客户端发送了SYN包,但不发送ACK包。这时服务端处于SYN_RECEIVED 状态。

(2) 用 netstat 命令查看

    

    确认IP是192.168.0.2

(3) 使用iptables限制IP

 

2. 限制SYN并发和连接数

     SYN Flood 攻击中的源 IP 并不是固定的。比如,可以在 hping3 命令中,加入 --rand-source 选项,来随机化源 IP。这时上面1的方法就不适用了。

    这时可使用下面的方法来限制syn 包的速率:

    # 限制 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


3. 加大半连接容量

    如果是多台机器同时发送 SYN Flood,这种方法就无效了。

    这时可使用下面的方法:

(1) 加大半连接容量,从256改成1024

$ sysctl -w net.ipv4.tcp_max_syn_backlog=1024
net.ipv4.tcp_max_syn_backlog = 1024

(2) 减少重试次数,从5改为1

$ sysctl -w net.ipv4.tcp_synack_retries=1
net.ipv4.tcp_synack_retries = 1
 

4. 直接不维护半连接队列

如果情况继续严重,就开启 SYN Cookies ,不需要维护半开连接状态了

$ sysctl -w net.ipv4.tcp_syncookies=1
net.ipv4.tcp_syncookies = 1

为了保证配置持久化,你还应该把这些配置,写入 /etc/sysctl.conf 文件中。

$ cat /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_synack_retries = 1
net.ipv4.tcp_max_syn_backlog = 1024

 

5. 外围设备的防护措施

购置专业的入侵检测和防御设备,配置流量清洗设备阻断恶意流量等。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值