CentOS环境下如何防止DDoS攻击
导读:CentOS 环境下防止 DDoS 的实用方案 一 分层防护思路 网络层:在边界或上游开启运营商/云厂商的高防IP/BGP高防与清洗服务,隐藏源站真实 IP,异常流量在上游被丢弃或限速。 主机层:最小化暴露面(只开放必要端口与服务)、用...
CentOS 环境下防止 DDoS 的实用方案
一 分层防护思路
- 网络层:在边界或上游开启运营商/云厂商的高防IP/BGP高防与清洗服务,隐藏源站真实 IP,异常流量在上游被丢弃或限速。
- 主机层:最小化暴露面(只开放必要端口与服务)、用 iptables/firewalld 做连接速率与并发限制、开启 SYN Cookies 等内核抗洪能力。
- 应用层:对 HTTP/HTTPS 启用速率限制、并发控制与 WAF 规则(如 ModSecurity),缓解 CC 攻击。
- 检测与响应:用 Fail2Ban 自动封禁恶意来源,结合日志与连接数监控快速处置。
二 快速加固清单(可直接执行)
- 系统更新与最小化服务
- 执行:
sudo yum update -y,仅开启业务必需端口与服务,关闭不必要的端口/协议。
- 执行:
- 防火墙与连接管控(iptables 示例)
- 允许回环与已建立连接:
sudo iptables -A INPUT -i lo -j ACCEPTsudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
- 限制新 SYN 速率(缓解 SYN Flood):
sudo iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPT
- 限制 ICMP 速率(防 ICMP 洪水):
sudo iptables -A INPUT -p icmp -m limit --limit 10/s --limit-burst 10 -j ACCEPT
- 按 IP 限制并发连接(示例阈值 20):
sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-reset
- 持久化规则:
sudo iptables-save > /etc/iptables/rules.v4
- 允许回环与已建立连接:
- 应用层速率限制(Nginx 示例)
- 在 http 段定义共享内存区:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s; - 在 server/location 段启用:
limit_req zone=mylimit burst=5;(可按业务适当调大/调小)
- 在 http 段定义共享内存区:
- Fail2Ban 自动封禁
- 安装与启用:
sudo yum install fail2ban -y & & sudo systemctl enable --now fail2ban - 建议创建
/etc/fail2ban/jail.local,示例:[DEFAULT] bantime = 600; findtime = 600; maxretry = 3[sshd] enabled = true; port = ssh; filter = sshd; logpath = /var/log/secure; maxretry = 3
- 安装与启用:
三 内核网络参数优化
- 编辑
/etc/sysctl.conf,加入或调整为:net.ipv4.tcp_syncookies = 1(开启 SYN Cookies,缓解半开连接耗尽)net.ipv4.tcp_tw_reuse = 1(允许 TIME_WAIT 套接字复用)net.ipv4.tcp_fin_timeout = 30(缩短 FIN_WAIT_2 超时,加速回收)
- 使配置生效:
sudo sysctl -p
四 监测与应急处置
- 连接数排查(定位异常来源)
- 统计每个 IP 的连接数:
netstat -ntu | awk '{ print $5} ' | cut -d: -f1 | sort | uniq -c | sort -nr - 观察当前已建立连接总量:
netstat -an | grep ESTABLISHED | wc -l
- 统计每个 IP 的连接数:
- 临时封禁与解封
- 封禁单个 IP:
sudo iptables -A INPUT -s < 攻击IP> -j DROP - 解封:
sudo iptables -D INPUT -s < 攻击IP> -j DROP
- 封禁单个 IP:
- 日志与告警
- 实时查看:
sudo tail -f /var/log/messages /var/log/secure;结合 Fail2Ban 日志与业务日志发现异常模式。
- 实时查看:
五 针对 LNMP 与 LAMP 的要点
- LNMP:在 Nginx 启用
limit_req限流与burst缓冲,结合 ModSecurity 做应用层规则过滤,减轻 HTTP GET/POST 洪泛与 CC 攻击。 - LAMP:优先在上游接入高防IP/BGP高防并正确回源,隐藏源站;在系统防火墙层面限制访问源与端口,减少攻击面。
- 当遭受大流量/超大流量攻击时,仅靠单机防火墙难以完全抵御,建议联动上游清洗与高防服务共同处置。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS环境下如何防止DDoS攻击
本文地址: https://pptw.com/jishu/759081.html
