目标明确:用最小预算搭建能抵抗常见DDoS与应用层攻击的美国服务器环境。
必要准备:一台能在美国机房部署的VPS账号(例如OVH、Vultr、BuyVM等支持DDoS或提供网络保护的供应商),域名一枚,Cloudflare账号(免费计划即可用于HTTP/HTTPS加速和基本防护),本地终端(Mac/Linux/Windows带SSH客户端)。
预算参考:每月10–20美元可拿到基础VPS,配合Cloudflare免费/付费策略可实现低成本高防护。
比价要点:优先看网络层DDoS保护能力(是否有Anti-DDoS,是否支持黑洞/清洗),查看延迟与带宽,费用透明度。
推荐选择:OVH(含基础Anti-DDoS)、Vultr高防机型或寻找有Voxility/Arbor合作的机房;如果主要是Web流量,使用普通VPS配合Cloudflare通常更便宜。
下单建议:先选最小配置(1CPU/1GB/25GB SSD),购买按月付费测试,确认稳定再扩容或购买更长周期节省成本。
下单后先获取IP与SSH登录信息,记录控制面板的恢复/控制台密码。
修改默认SSH端口并禁用密码登录:SSH登录后执行:apt update && apt upgrade -y;编辑 /etc/ssh/sshd_config 改 Port, PermitRootLogin no, PasswordAuthentication no,然后 systemctl restart sshd。
为方便运维,设置一个非root sudo 用户:adduser deploy && usermod -aG sudo deploy。
调整内核参数以提高连接处理与抗SYN攻击能力:在 /etc/sysctl.conf 添加以下内容并执行 sysctl -p:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.core.somaxconn = 1024
net.ipv4.ip_local_port_range = 1024 65535
同时开启 BBR(如适用):apt install linux-headers-$(uname -r) -y;echo "tcp_bbr" >> /etc/modules-load.d/modules.conf;并在 sysctl 配置开启 tcp_congestion_control = bbr。
建议使用 iptables 或 nftables,简化可用 ufw:ufw default deny incoming; ufw default allow outgoing; ufw allow ssh_port/tcp; ufw allow 80,443/tcp; ufw enable。
补充 iptables 规则阻断异常连接:iptables -A INPUT -m conntrack --ctstate INVALID -j DROP;iptables -A INPUT -p tcp --syn -m limit --limit 30/sec --limit-burst 100 -j ACCEPT。保存规则并开机加载。
安装:apt install nginx -y。创建站点配置,监听 80/443 并指向站点目录。
建议在Cloudflare面板创建Origin Certificate(有效期最长15年),将证书与私钥写入服务器并在Nginx中配置 ssl_certificate 与 ssl_certificate_key,Cloudflare的SSL设置选“Full (strict)”。
开启Nginx限速与连接限制示例:在 server 或 http 节点加入 limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; 并在 location 使用 limit_req zone=one burst=20 nodelay。
在Cloudflare添加站点并更换域名解析到Cloudflare提供的Nameserver,然后把A/AAAA/CNAME记录启用“云朵”代理(橙色)。
启用WAF规则、Rate Limiting(可以在免费计划用基础规则,付费可精细控制),开启Bot Fight Mode与“我是受到攻击”模式(仅在攻击时使用)。
设置页面规则强制HTTPS与缓存策略以减少源站压力,启用Always Online与自动最小化静态资源。
安装 fail2ban:apt install fail2ban -y。创建 /etc/fail2ban/jail.local,针对 ssh、nginx-login、nginx-http-auth 加入 jail 配置。
示例 jail.local 简单规则:[sshd] enabled = true; port = ssh_port; maxretry = 5; bantime = 3600。启动并测试:systemctl enable --now fail2ban,使用 fail2ban-client status sshd 查看。
部署轻量监控:使用 UptimeRobot(免费)对 HTTP/HTTPS 心跳监测;在服务器安装 golang-based 简单脚本或 use netdata 进行资源监控。
启用Nginx access+error 日志轮转,并配置 logwatch 或简单的 logrotate 保证磁盘不被日志占满。配置 alert 邮件或Telegram告警脚本在负载或带宽异常时触发。
当出现异常大流量时的先行步骤:立即在Cloudflare启用“我受到了攻击”并开启严格速率限制;在供应商控制面板申请流量清洗或临时黑洞(若必要)。
本地层面:临时调整防火墙速率限制、加大conntrack限制和短期屏蔽异常IP段;若是应用层攻击,增加更严格的WAF规则、验证码或挑战机制(例如登录页加入 CAPTCHA)。
利用Cloudflare免费计划作为http防护与缓存层,可将源站带宽与攻击成本大幅降低;对非必要服务关闭公网端口并通过VPN或jump host管理以减少攻击面。
选择按月小型实例测试,确认后采用半年或年付节省费用;合理使用快照备份替代持续高频付费备份,必要时使用对象存储进行长期冷备份。
建立月度检查表:系统更新、证书有效期检查、备份可用性、日志异常回顾。定期(每季度)进行“故障演练”:模拟短时高并发并验证Cloudflare/WAF/防火墙策略生效。
保留恢复步骤文档,例如如何回滚防火墙规则、如何撤回Cloudflare页面规则、如何切换到备用IP或备用机房。
答:廉价VPS在配合Cloudflare等CDN与WAF后能在较低预算下抵御多数应用层攻击,但面对大规模网络层(例如数十Gbps以上)攻击时,仍然依赖机房级清洗与上游带宽,专门高防机房或第三方清洗(VPS供应商/上游清洗服务)更可靠。
答:基本验证方法包括压力测试(限于合法范围内的自测),使用流量回放模拟高并发请求、观察Cloudflare/防火墙日志是否拦截异常流量;同时使用外部监控(UptimeRobot)检测响应与延迟,若在攻击中源站流量显著下降而服务仍可用,则防护有效。
答:首选通过Cloudflare或CDN将大部分流量吸收并缓存静态内容,启用速率限制与挑战机制降低源站压力;与供应商沟通临时上游清洗或流量限速,必要时切换到按流量计费更低的清洗服务或使用临时黑洞策略以避免高额带宽账单。