1.
准备与需求评估
- 明确带宽:本示例为6M共享带宽(下行6Mbps/上行6Mbps),适合中小站点和内部服务。
- 资源规格:示例配置为2核CPU / 4GB内存 / 80GB SSD / 1 IPv4地址(示例IP:203.12.45.67)。
- 操作系统:使用Ubuntu 22.04 LTS作为演示系统,命令与配置基于systemd/netplan。
- 域名与DNS:准备好域名(例:www.example.hk)并可修改A记录、TTL及反向PTR。
- 目标SLA:目标可用性99.5%,峰值流量可控,结合CDN与防护服务实现可用性保障。
2.
基础网络配置(IP、路由、DNS)
- netplan示例(/etc/netplan/01-netcfg.yaml):network: { version: 2, ethernets: { eth0: { dhcp4: false, addresses: [203.12.45.67/24], gateway4: 203.12.45.1, nameservers: { addresses: [8.8.8.8,1.1.1.1] } } } }。
- 设置静态路由与默认网关后应用:sudo netplan apply。
- DNS解析:在域名服务商处添加A记录 www -> 203.12.45.67,TTL设为300秒以便快速回滚。
- PTR记录:向机房提交反向域名(PTR)申请,格式:203.12.45.67 -> host.example.hk,提升邮件送达率与信誉。
- 测试连通性:使用ping 8.8.8.8、traceroute并检查iperf3测试带宽(示例:iperf3 -c server -b 6M)。
3.
SSH与系统初始硬化
- 禁用密码登录,启用密钥:编辑/etc/ssh/sshd_config,设置PasswordAuthentication no,PermitRootLogin no,Port 22022(示例)。
- 创建用户并配置公钥:adduser deploy; mkdir -p /home/deploy/.ssh; echo "ssh-rsa AAAA..." > authorized_keys; chown -R deploy:deploy /home/deploy/.ssh; chmod 700/600。
- 更新与最小化服务:sudo apt update && sudo apt upgrade -y;卸载不必要服务以减少攻击面。
- SSH守护进程限制:使用AllowUsers deploy并配置LoginGraceTime 30,MaxAuthTries 3。
- 实时登录监控:安装并启用fail2ban,基础jail.conf配置针对sshd进行5次失败后封禁1小时(/etc/fail2ban/jail.local)。
4.
防火墙与网络层安全规则
- 使用nftables或iptables:示例使用nftables,基本表与链配置允许ssh(22022)、http(80)、https(443)。
- 基本策略:默认DROP进入流量,允许相关和已建立连接,示例命令:nft add table inet filter; nft add chain inet filter input { type filter hook input priority 0; policy drop; }。
- 端口与速率限制:对ssh添加速率限制:tcp dport 22022 ct state new limit rate 4/minute accept。
- ipset黑名单:使用ipset保存恶意IP并在nftables中引用,定期从威胁情报同步。
- 连接跟踪与限制:通过net.netfilter.nf_conntrack_max=262144等sysctl参数增加连接跟踪池,防止conntrack耗尽。
5.
内核与系统性能调优
- TCP相关参数:在/etc/sysctl.conf添加net.ipv4.tcp_syncookies=1, net.ipv4.tcp_max_syn_backlog=2048, net.ipv4.tcp_fin_timeout=15。
- conntrack与文件描述符:设置fs.file-max=100000,net.netfilter.nf_conntrack_max=262144。
- 调整Nginx/应用并发:worker_processes auto,worker_connections 10240,keepalive_timeout 15。
- IO与磁盘:使用noatime挂载SSD并监控iostat,避免频繁同步写入。
- 监控与告警:部署Prometheus + Grafana或使用机房监控,关键指标:CPU、内存、网卡丢包、连接数。
6.
DDoS防御策略与实战措施
- 边界防护:优先使用机房或云厂商的DDoS清洗(例:ChinaNetCenter或机房自带清洗),对6M带宽的VPS尤为关键。
- CDN接入:通过Cloudflare或其他CDN缓存静态内容并启用“我是攻击”页面,减少回源流量。
- 应用层限流:在Nginx配置limit_req_zone与limit_conn_zone限制单IP并发和请求速率(示例:limit_req zone=one burst=10 nodelay;)。
- SYN/UDP洪峰应对:启用syncookies,使用nf_conntrack和iptables drop大量小包;结合ipset封堵高频源IP。
- 事件响应流程:检测(监控告警)→临时封禁(ipset)→切换到CDN/清洗→评估与回放(日志保存)。
7.
域名、证书与CDN配置
- DNS负载与故障转移:将www.example.hk的A记录指向CDN提供的CNAME,同时保留回源IP做应急。
- SSL/TLS:使用Let's Encrypt自动申请证书(certbot),并配置自动续期:certbot renew --dry-run。
- CDN规则:开启缓存策略、页面规则与WAF(Web Application Firewall),缓存命中率目标>70%以降低回源带宽压力。
- HTTP->HTTPS重定向:强制使用HSTS并优化TLS配置(优先使用TLS1.2/1.3,禁用TLS1.0/1.1)。
- 验证与回测:使用curl -I https://www.example.hk检查证书链与缓存头(Cache-Control, CF-Cache-Status)。
8.
真实案例:遭遇DDoS后的处置与数据对比
- 背景:某香港6M站点在促销期间遭遇UDP + SYN混合攻击,原始带宽仅6Mbps,出现大量丢包和服务中断。
- 措施:立即切换到Cloudflare,启用“Under Attack Mode”,并在服务器端启用nftables限流与ipset封堵。
- 结果对比(见下表):切换前后有效回源流量下降、丢包减少、页面可用性提升。
- 结论:对于小带宽VPS,CDN与机房清洗结合边缘限流是最有效的短期策略。
- 后续优化:增加监控周期、制定SOP并与机房签署抗D协议提高应急响应速度。
| 指标 | 遭攻前 | 启用CDN+规则后 |
| 峰值到达流量 | 120 Mbps | 接入点清洗后回源 ~4.5 Mbps |
| 丢包率 | >60% | <5% |
| 页面不可用时长 | 约18分钟 | <1分钟 |
| 回源带宽占用 | 超出6M导致拥塞 | 稳定在<6M |
9.
运维保养与备份恢复策略
- 定期备份:数据库与重要配置每天增量、每周全量,示例使用rsync+cron或BorgBackup。
- 灾备方案:跨区或使用云对象存储(如对象存储OSS)保存快照,确保在机房故障时可快速恢复到其他可用区。
- 自动化与版本控制:将配置文件纳入Git管理,使用Ansible实现可重复部署与修复。
- 日志保留与审计:集中日志到ELK/Graylog并保留至少30天以便事后分析。
- 定期演练:每季度进行恢复演练(RTO/RPO验证),确保SOP可执行。
10.
总结与建议
- 对于6M
香港服务器,核心在于减小回源流量与快速响应突发流量。
- 必备措施:SSH密钥、限速防火墙、CDN接入与机房清洗配合。
- 性能优化与监控同样重要,调整内核和应用参数能显著提高抗压能力。
- 建议定期更新威胁情报并使用ipset自动化封禁恶意IP。
- 最后,制定清晰的应急流程并与机房/CDN厂商保持沟通,确保遇到攻击时能迅速切换与处置。
来源:从零开始部署6m香港服务器 网络配置与安全加固实操指南