CentOS 环境下防止 DDoS 的实用方案
一 分层防护思路
二 快速加固清单(可直接执行)
sudo yum update -y,仅开启业务必需端口与服务,关闭不必要的端口/协议。sudo iptables -A INPUT -i lo -j ACCEPTsudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPTsudo iptables -A INPUT -p tcp --syn -m limit --limit 1/s --limit-burst 3 -j ACCEPTsudo iptables -A INPUT -p icmp -m limit --limit 10/s --limit-burst 10 -j ACCEPTsudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j REJECT --reject-with tcp-resetsudo iptables-save > /etc/iptables/rules.v4limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;limit_req zone=mylimit burst=5;(可按业务适当调大/调小)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四 监测与应急处置
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nrnetstat -an | grep ESTABLISHED | wc -lsudo iptables -A INPUT -s <攻击IP> -j DROPsudo iptables -D INPUT -s <攻击IP> -j DROPsudo tail -f /var/log/messages /var/log/secure;结合 Fail2Ban 日志与业务日志发现异常模式。五 针对 LNMP 与 LAMP 的要点
limit_req 限流与 burst 缓冲,结合 ModSecurity 做应用层规则过滤,减轻 HTTP GET/POST 洪泛与 CC 攻击。