1. 概述与准备工作
a) 确认服务信息:获取供应商(香港 CN2 GIA)提供的公网 IP、ASN、BGP 会话信息、带宽峰值、是否提供清洗/黑洞及联络窗口。
b) 建立联络:准备好技术联络(NOC)邮箱/电话,明确侧写(可接受清洗阈值、是否支持 FlowSpec、黑洞社区等)。
c) 环境准备:准备一台管理跳板机(仅允许特定管理 IP),准备详细的变更窗口与回滚计划。
2. 基础内核与网络参数硬化(sysctl)
a) 编辑 /etc/sysctl.conf 或使用 sysctl -w 设置,示例:
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_fin_timeout=15
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
sysctl -w net.netfilter.nf_conntrack_max=2000000
b) 保存并生效:sysctl -p。说明:开启 TCP SYN cookies、调短 FIN 超时、增大 conntrack 有助于抵抗连接耗尽型攻击。
3. 防火墙策略:最小化面向公网的暴露端口
a) 先建立默认拒绝策略,再逐条放行必须端口。iptables 示例:
iptables -P INPUT DROP
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 管理IP -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
b) 推荐使用 nftables 或 firewall-cmd 统一管理。保留管理口仅限管理 IP 段访问。
4. 抵御 SYN/UDP 洪泛的具体配置
a) iptables raw table 加速丢弃异常:
iptables -t raw -I PREROUTING -p tcp --syn -m limit --limit 1000/second --limit-burst 2000 -j RETURN
iptables -t raw -I PREROUTING -p tcp --syn -j DROP(仅在测试确认下使用)
b) 使用 nftables rate limit:
nft add rule inet filter input tcp flags syn limit rate 200/second drop
c) 对 UDP 使用限制和签名维护:检查常用 UDP 服务端口,关闭不必要的 UDP。
5. conntrack 与 nf_conntrack 调优
a) 查看当前 conntrack 使用:cat /proc/net/nf_conntrack 或 ss -s。
b) 调整:sysctl -w net.netfilter.nf_conntrack_max=2000000;并调整内存相关参数 net.core.somaxconn。
c) 定期清理超时连接或设置短超时:net.netfilter.nf_conntrack_tcp_timeout_established 可酌情缩短。
6. 日志与检测:启用实时告警
a) 部署 Netdata、Prometheus+Grafana 或 Zabbix,监控接口流量、连接数、SYN/UDP 错误率。
b) 配置阈值告警:如 1 分钟内流量峰值超出 2×带宽或 conntrack 使用 > 70% 即触发告警并自动通知 NOC。
c) 日志聚合:使用 rsyslog/Fluentd 统一转发到安全日志中心,便于攻击溯源和后续分析。
7. 应用层防护:WAF 与限速策略
a) 使用 Nginx + ModSecurity 或商业 WAF(如 F5、Cloudflare)做应用层保护,启用 OWASP 核心规则集。
b) Nginx 限速示例:在 server/ location 中使用 limit_req_zone $binary_remote_addr zone=req_zone:10m rate=10r/s;并用 limit_conn 限制并发连接。
c) 针对 API 接口采用签名与 token、请求白名单与验证码降低自动化攻击成功率。
8. SSH 与管理面安全加固
a) 关闭 root 密码登录,启用密钥认证并限制来源 IP:/etc/ssh/sshd_config 设置 PermitRootLogin no;PasswordAuthentication no;AllowUsers user@管理IP。
b) 启用 2FA(如 Google Authenticator)和 Fail2ban 防止暴力破解:示例 fail2ban local 配置过滤 sshd 并 banip 1 小时。
c) 使用 bastion 主机并只开放该主机的 22 端口到管理网段,审计所有管理操作。
9. 与运营商配合:黑洞、FlowSpec 与清洗
a) 在签约时确认清洗策略:是否包含按流量计费的清洗、清洗点位置(香港/大陆/全球)、清洗阈值。
b) 请求 BGP FlowSpec:向运营商提交源/目的 IP、端口、协议的黑名单规则模板,请求临时下发以快速阻断流量。示例:提交要求“对目标 IP 的 UDP/流量 > XX Mbps 下发 FlowSpec 阻断”。
c) 如无 FlowSpec,要求运营商支持 BGP community 黑洞(公告到 null0)并准备公告模板与审批流程。
10. 使用 CDN/清洗服务与本地防御结合
a) 对网站/静态内容启用 CDN,减少源站压力。CDN 对抗 L7 攻击有明显优势。
b) 对无法使用 CDN 的业务(如游戏/即时通信)配合上游清洗服务或部署多节点负载均衡。
c) 设定回源访问控制,仅允许 CDN/清洗回源 IP 访问源站。
11. 自动化脚本与应急流程
a) 编写应急脚本:当触发特定告警时自动执行限制规则(比如临时 iptables 阻断高风险子网、启用 rate limit)。存放在受控目录并签名。
b) 应急流程文档:列出触发条件、联络人、清洗申请模板、回滚步骤。确保 NOC 与运维均能按流程操作。
c) 定期演练:至少每季度进行一次 DDoS 演练,验证清洗与回退流程的有效性。
12. 资源与成本评估
a) 评估清洗成本:按峰值流量与清洗次数估算,明确 SLA。
b) 多冗余策略:对关键业务准备备用机房/链路,采用 Anycast 或 DNS 轮询以分散攻击流量。
c) 审计与合规:记录日志保存周期、个人数据访问控制符合当地法规。
13. 常用命令与配置片段汇总(便于复制)
a) sysctl 快速生效:echo "net.ipv4.tcp_syncookies=1" >> /etc/sysctl.conf && sysctl -p
b) nftables 基础限速:nft add table inet filter; nft add chain inet filter input { type filter hook input priority 0 ; }; nft add rule inet filter input tcp flags syn limit rate 200/second drop
c) fail2ban 快速启用:apt install fail2ban;在 /etc/fail2ban/jail.local 添加 [sshd] enabled = true bantime = 3600 maxretry = 5
14. 长期维护与安全提升建议
a) 定期更新内核与网络组件(至少每月检查补丁),修补已知漏洞。
b) 建立攻击情报库:记录攻击源 ASN/IP 并形成黑名单(注意合法性与误杀风险)。
c) 持续优化:根据流量特征调整防护阈值,结合机器学习流量分析提升检测率。
15. 问:在香港 CN2 GIA 上遭遇大流量 DDoS,先做哪些应急操作?
答:立即启用临时防护:1) 将管理 IP 白名单化并关闭非必要端口;2) 使用 iptables/nftables 对异常源 IP 作速率限制或临时阻断;3) 迅速联系运营商请求 FlowSpec/黑洞或启动清洗服务;4) 若有 CDN/清洗提供商,切换到“全站走清洗”模式并监控回源流量。
16. 问:如何判断是 L3/L4 还是 L7 攻击,防护策略有何不同?
答:通过流量特征判断:L3/L4 攻击表现为带宽/包速率异常(带宽占满、SYN/UDP 洪泛),可从接口速率与 conntrack 急升判断;L7 攻击表现为 HTTP 请求数骤增但带宽可能不高(请求占用 CPU/内存)。防护:L3/L4 优先靠链路清洗、黑洞、FlowSpec 与速率限制;L7 依赖 WAF、验证码、API 限流与行为分析。
17. 问:供应商不支持 FlowSpec 或清洗怎么办?
答:采取多层防护:1) 部署 CDN/第三方清洗服务做前端防护;2) 在本地侧增设速率限制、conntrack 调优、黑名单与自动化阻断脚本;3) 若可行,迁移或增加第二条具有清洗能力的上游链路做冗余;4) 与供应商协商 SLA 或选择支持 FlowSpec/黑洞的合作方。
来源:部署香港gia cn2需要关注的网络安全与DDoS防护配置要点