1.
SSH 与系统账户加固
- 建立管理用户并禁用 root:adduser adminuser && usermod -aG sudo adminuser
- 上传公钥并设置权限:mkdir -p /home/adminuser/.ssh && echo "你的公钥" > /home/adminuser/.ssh/authorized_keys && chmod 700 /home/adminuser/.ssh && chmod 600 /home/adminuser/.ssh/authorized_keys && chown -R adminuser:adminuser /home/adminuser/.ssh
- 修改 /etc/ssh/sshd_config(示例):Port 2222;PermitRootLogin no;PasswordAuthentication no;UsePAM yes;AllowUsers adminuser
- 应用并验证:systemctl restart sshd && ss -tunlp | grep sshd
2.
Fail2ban 与自动封禁策略
- 安装:apt install -y fail2ban 或 yum install -y fail2ban
- 配置 /etc/fail2ban/jail.local 示例: [sshd] enabled = true port = 2222 maxretry = 5 bantime = 3600 findtime = 600
- 针对 web 登录与 xmlrpc 另建 jail(wordpress 等)并重载:systemctl restart fail2ban;查看状态:fail2ban-client status sshd
3.
iptables / nftables 与 ipset 黑白名单
- 推荐用 ipset 批量管理 IP:apt install -y ipset
- 创建黑名单并导入:ipset create blacklist hash:net -exist;ipset add blacklist 1.2.3.0/24
- iptables 示例规则:iptables -N SYNPROTECT; iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT; iptables -A INPUT -m set --match-set blacklist src -j DROP; iptables -A INPUT -p tcp --syn -m limit --limit 5/second --limit-burst 10 -j ACCEPT; iptables -A INPUT -p tcp --syn -j DROP
- 持久化:iptables-save > /etc/iptables/rules.v4;ipset save > /etc/ipset.conf,并在启动脚本载入
4.
内核与网络参数调优 (sysctl)
- 编辑 /etc/sysctl.conf,添加:net.ipv4.tcp_syncookies=1;net.ipv4.tcp_max_syn_backlog=2048;net.netfilter.nf_conntrack_max=131072;net.ipv4.ip_forward=0(若非路由器)
- 应用:sysctl -p
- 说明:启用 syncookies 防止 SYN 洪泛,提升 conntrack 上限并定期监控 /proc/net/nf_conntrack
5.
Nginx 层的限流与防刷
- 配置 limit_req 与 limit_conn 示例(nginx.conf http 段):limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; limit_conn_zone $binary_remote_addr zone=addr:10m;
- 在 server/location 添加:limit_req zone=one burst=20 nodelay; limit_conn addr 10;
- 启用浏览器指纹/验证码对付应用层攻击,结合 nginx-mod-security 做 WAF 规则过滤
6.
使用 CDN/WAF 与上游清洗(香港节点优先)
- 优先接入 Cloudflare / 阿里云 CDN / 腾讯云 CDN,并开启 WAF、速率限制与 Bot 管理
- 对于大流量 DDoS,联系带宽/机房提供商开通清洗或 BGP Flowspec;确认供应商是否支持 Anycast/分钟级切换
- 配置源站只允许 CDN/清洗服务 IP 访问:使用 ipset 将 CDN IP 加入白名单,并在防火墙中只放行这些 IP
7.
监控与流量取证
- 安装 vnstat/bmon/iftop 以监控流量瞬时值:apt install -y vnstat bmon iftop
- 抓包与分析:tcpdump -i eth0 -w /tmp/attack.pcap 'tcp'(注意文件大小),使用 tshark 或 Wireshark 离线分析
- 建议部署 Prometheus + Grafana 收集 netdata/Node Exporter 指标,并配置告警阈值(流量、连接数、conntrack 使用率)
8.
日志策略与应急脚本
- 配置 logrotate 对 nginx/access/error、auth.log 做轮转与压缩,保留策略按合规设置
- 编写紧急封禁脚本(/usr/local/bin/ban-ip.sh):#!/bin/bash ip=$1; ipset add blacklist $ip; iptables -I INPUT -s $ip -j DROP
- 在检测到异常(监控或 fail2ban)时触发脚本并在工单中记录证据
9.
日常运维与演练
- 定期做渗透测试与压测(控制流量峰值),演练清洗流程与切换到 CDN/备用线路
- 建立恢复流程:快照、备份网站与数据库、预置替换源站计划;定期验证恢复时间
10.
问:香港机房的站群服务器首要防护点是什么?
- 答:首要是建立“边界防护+源站准入”策略:接入 CDN/WAF 做第一道过滤;源站防火墙仅允许 CDN/管理 IP 访问;并开启内核 syncookies、conntrack 上限与 nginx 限流,组合应对网络层与应用层攻击。
11.
问:遭受大流量 DDoS 时本地能做哪些紧急操作?
- 答:立即启用上游清洗或切换到 Anycast/CDN,临时在防火墙用 ipset 批量拉黑异常 IP 段,开启更严格的 nginx rate-limit,启用 SYN cookies,必要时联系带宽提供商做 BGP 黑洞或 Flowspec。
12.
问:如何验证加固措施有效并持续优化?
- 答:用压测工具(wrk、ab、hping3)模拟攻击场景,监控 conntrack、CPU、流量与响应时间;复盘日志与 pcap,调整限流、ipset 规则与防火墙策略,并把有效规则写入自动化脚本以便快速响应。
来源:香港站群专用服务器安全加固方案与DDoS防护建议