在centos系统上防御DDoS攻击是一项复杂但至关重要的任务,DDoS(分布式拒绝服务)攻击通过利用大量受控制的计算设备向目标服务器发送大量请求,从而消耗其资源或带宽,导致服务器无法正常响应合法请求,以下是详细、全面的防御策略及工具使用指南:
了解DDoS攻击类型
DDoS攻击可以分为多种类型,主要包括网络层攻击、传输层攻击和应用层攻击。

1、网络层攻击:如UDP洪水攻击、ICMP洪水攻击等,主要通过消耗带宽资源使目标无法提供服务。
2、传输层攻击:如SYN洪水攻击、ACK洪水攻击等,利用协议漏洞耗尽服务器处理资源。
3、应用层攻击:如HTTP洪水攻击、慢速HTTP攻击等,针对Web服务器、数据库等应用服务,伪造大量合法请求耗尽服务资源。
防御DDoS攻击的策略
1. 网络层防御
增加带宽:扩展带宽可以缓解网络层攻击,如UDP或ICMP洪水攻击,虽然增加带宽并不能完全阻止攻击,但可以延长服务器的响应时间,为其他防御措施争取时间。
使用防火墙:配置防火墙是DDoS防御的基础措施之一,防火墙可以设置流量限制规则,阻止异常的网络请求,过滤掉不必要的流量。

使用流量清洗服务:流量清洗服务可以在检测到异常流量时,将流量引导到特定设备或第三方服务进行分析和过滤。
2. 传输层防御
启用SYN Cookie:SYN Cookie是防止SYN洪水攻击的有效机制,当服务器收到SYN请求时,会生成一个加密的SYN Cookie,而不是立即为每个连接分配资源,只有当客户端完成握手时,才分配资源。
限制TCP连接数:限制每个IP地址的最大连接数可以有效防止DDoS攻击耗尽服务器资源。
3. 应用层防御
使用Web应用防火墙(WAF):WAF是专门为防护应用层攻击设计的防火墙,它可以过滤HTTP、HTTPS请求,防止恶意流量攻击Web服务器。

启用CAPTCHA:对于Web应用,启用 CAPTCHA(如Google reCAPTCHA)是防止应用层攻击的有效手段,它通过要求用户完成图形验证,防止恶意机器人发起大量的HTTP请求。
HTTP请求速率限制:通过限制每个IP的请求速率,可以有效防止HTTP洪水攻击。
4. 分布式防御
使用CDN分发网络(CDN)通过将流量分散到多个节点上,减少服务器的负载压力,并提供DDoS防护。
负载均衡:使用负载均衡器可以将流量分散到多个服务器上,避免单一服务器被集中攻击。
常用DDoS防护工具及其配置
1. DoS Deflate
DoS Deflate 是一款轻量级的DDoS防护脚本,可以监控系统中的大量连接,并自动屏蔽高连接数的IP地址。
安装与配置:
- wget http://www.inetbase.com/scripts/ddos/install.sh
- chmod 700 install.sh
- ./install.sh
配置文件:/usr/local/ddos/ddos.conf
- 文件存放目录
- PROGDIR="/usr/local/ddos"
- 主要功能脚本
- PROG="/usr/local/ddos/ddos.sh"
- IP白名单
- IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list"
- crond定时任务脚本
- CRON="/etc/cron.d/ddos.cron"
- 是否使用APF
- APF="0"
- iptables路径
- IPT="/sbin/iptables"
- 检查间隔时间(默认1分钟)
- FREQ=1
- 最大连接数设置(超过此数值的IP会被屏蔽)
- NO_OF_CONNECTIONS=150
- 是否屏蔽IP(1:屏蔽,0:不屏蔽)
- KILL=1
- 发送电子邮件报警的邮箱地址
- EMAIL_TO="root"
- 禁用IP时间(单位:秒)
- BAN_PERIOD=600
2. fail2ban
fail2ban是一个开源的入侵防御系统,能够自动检测和阻止异常流量或重复的恶意连接。
安装与配置:
- sudo yum install fail2ban
配置示例:
编辑/etc/fail2ban/jail.conf
,启用SSH保护:
- [sshd]
- enabled = true
- maxretry = 5
优化内核设置以减轻DDoS攻击影响
CentOS 7包括iptables的最新版本并支持新的SYNPROXY目标,以下内核设置可以帮助更好地减轻DDoS攻击的影响:
- kernel.printk = 4 4 1 7
- kernel.panic = 10
- kernel.sysrq = 0
- kernel.shmmax = 4294967296
- kernel.shmall = 4194304
- kernel.core_uses_pid = 1
- kernel.msgmnb = 65536
- kernel.msgmax = 65536
- vm.swappiness = 20
- vm.dirty_ratio = 80
- vm.dirty_background_ratio = 5
- fs.filemax = 2097152
- net.core.netdev_max_backlog = 262144
- net.core.rmem_default = 31457280
- net.core.rmem_max = 67108864
- net.core.wmem_default = 31457280
- net.core.wmem_max = 67108864
- net.core.somaxconn = 65535
- net.core.optmem_max = 25165824
- net.ipv4.neigh.default.gc_thresh1 = 4096
- net.ipv4.neigh.default.gc_thresh2 = 8192
- net.ipv4.neigh.default.gc_thresh3 = 16384
- net.ipv4.neigh.default.gc_interval = 5
监控与日志分析
流量监控:使用iptables的日志功能可以帮助跟踪潜在的DDoS活动,并对安全策略做出调整。
日志分析:定期检查和分析防火墙日志,利用工具如Logwatch、Swatch或自定义脚本自动化分析过程。
应急响应计划与灾难恢复
建立应急响应计划:确保在DDoS攻击发生时能快速反应并最小化损失,计划中包括网络流量重定向、备用服务器启用等。
灾难恢复:定期备份关键数据和系统配置,确保可以在短时间内恢复业务操作。
FAQs
Q1: DoS Deflate如何安装和卸载?
A1: DoS Deflate的安装命令如下:
- wget http://www.inetbase.com/scripts/ddos/install.sh
- chmod 700 install.sh
- ./install.sh
卸载命令如下:
- wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
- chmod 700 uninstall.ddos
- ./uninstall.ddos
Q2: fail2ban如何配置来阻止重复的SSH连接?
A2: fail2ban的配置可以通过编辑/etc/fail2ban/jail.conf
文件来实现,启用SSH保护的配置如下:
- [sshd]
- enabled = true
- maxretry = 5
在CentOS系统上防御DDoS攻击需要综合运用多种策略和工具,从网络层、传输层到应用层进行多层次的防护,合理的监控与日志分析以及及时的应急响应计划也是保障系统稳定运行的关键。