1.
准备与风险评估
- 检查VPS环境(发行版、内核、控制面板、带宽是否计费/限速)。建议Ubuntu 20.04+/Debian 10+或CentOS 7+。
- 与提供商确认是否有机房侧清洗(scrubbing)、BGP黑洞或带宽峰值上限。若有,记录联系人和流程以便遇到攻击时触发。
2.
基础网络与内核硬化
- 编辑 /etc/sysctl.conf,加入并应用 sysctl -p:
net.ipv4.tcp_syncookies=1
net.ipv4.tcp_fin_timeout=15
net.ipv4.ip_forward=0(如非路由器)
net.ipv4.conf.all.rp_filter=1
net.netfilter.nf_conntrack_max=262144(按内存调整)
- 重启相关服务或机器以确保生效。
3.
选择与部署防火墙(iptables/ufw/firewalld)
- Debian/Ubuntu:推荐使用iptables+nft或ufw。示例iptables基本策略(先备份 iptables-save > /root/iptables.bak):
iptables -F && iptables -X
iptables -P INPUT DROP
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -p tcp --dport 22 -m recent --update --seconds 60 --hitcount 6 --name SSH -j DROP
- CentOS:可使用firewalld配合rich rules或直接使用 nftables。
4.
使用ipset管理大规模黑名单
- 安装 ipset(apt/yum)。创建集合并添加规则:
ipset create badips hash:ip maxelem 1000000
ipset add badips 1.2.3.4
iptables -I INPUT -m set --match-set badips src -j DROP
- 定时从可信源(如CERT、日志分析)更新黑名单,使用cron脚本自动同步并重载ipset。
5.
Nginx / 应用层限流与WAF
- Nginx limit_req 配置示例(http或server块):
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server { location / { limit_req zone=one burst=20 nodelay; } }
- 部署ModSecurity+规则或使用商用WAF(Cloudflare、阿里云WAF)进行七层清洗。
6.
Fail2ban与自定义过滤器
- 安装fail2ban,复制 /etc/fail2ban/jail.local:配置ssh、nginx-http-auth、nginx-botsearch等jail。示例:
[sshd] enabled=true port=22 filter=sshd maxretry=5 bantime=3600
- 为大量慢速扫描创建recidive jail,将触发IP加入ipset以实现高效拦截。
7.
SYN/UDP攻击速率限制与conntrack保护
- 限制SYN并设置tcp syncookies(已在sysctl设置)。iptables示例:
iptables -N SYN_FLOOD
iptables -A INPUT -p tcp --syn -m limit --limit 15/s --limit-burst 30 -j RETURN
iptables -A INPUT -p tcp --syn -j DROP
- 对UDP使用hashlimit或rate limiting,必要时直接丢弃来自异常端口的大量UDP包。
8.
上游清洗与混合策略(Provider+Cloud)
- 在本地无法承受时,立即联系VPS提供商请求机房侧清洗或BGP策略。准备好攻击流量样本(时间、流量峰值、源IP段)以便客服快速定位。
- 同时并行启用CDN/WAF(如Cloudflare)作前端流量清洗,若需TCP层保护可使用Cloudflare Spectrum或第三方云清洗服务。
9.
日志、监控与自动化响应
- 部署实时监控(Prometheus+Grafana、Zabbix或商用),监控指标包括带宽、连接数、conntrack使用率、SYN率。
- 编写自动化脚本:当单IP连接数或流量异常时自动加入ipset并通知运维;当流量超过阈值自动触发上游清洗流程或切换到只读/维护页面。
10.
常见操作演练与演习流程
- 定期进行演练:模拟高连接数(使用合法压力测试工具向自有测试域名发流量),验证黑名单、ipset、上游清洗、告警是否按预期工作。记录步骤并完善SOP。
11.
问:台湾VPS遇到大流量攻击,先做什么?
- 答:第一时间确认是DDoS还是正常流量(查看连接数、请求URL、源IP分布),立即启用机房侧清洗或联系提供商;在VPS端启动速率限制、启用ipset封锁高频源并临时屏蔽非必要端口(如关闭非必要服务)。
12.
问:如何在VPS端实现快速封堵大量恶意IP?
- 答:使用ipset配合iptables/nftables,一次性写入成千上万IP代替逐条iptables规则。配合cron或日志分析脚本自动拉取并更新集合,实现高效封堵。
13.
问:机房侧清洗与自己做清洗,哪个更优先?
- 答:优先联系机房/上游提供商做清洗(他们有更高带宽与BGP能力)。本地防护作为第一道与第二道防线(限速、WAF、黑名单),两者结合是最稳妥的防御策略。
来源:台湾vps服务器在高防需求下如何配置防火墙与流量清洗策略