一月 19, 2026指南
如何保护您的 VPS 免受 DDoS 攻击:实用指南
使用防火墙、速率限制和其他经过验证的方法保护您的 VPS 免受 DDoS 攻击的综合指南。

DDoS 攻击(分布式拒绝服务)可以在几分钟内使您的服务器离线,导致收入损失、客户不满和声誉损害。在 2026 年,此类攻击变得更加复杂和容易获得。幸运的是,现代保护方法也在不断发展。本指南将向您展示如何保护您的 Hiddence VPS 免受最常见的 DDoS 攻击类型。
什么是 DDoS 攻击?
当多台计算机(僵尸网络)同时向您的服务器发送请求时,就会发生 DDoS 攻击,从而耗尽服务器资源并使其对合法用户不可用。
DDoS 攻击的主要类型
- 容量攻击(L3/L4):UDP 洪水、ICMP、SYN 洪水 - 耗尽网络带宽
- 应用层攻击(L7):HTTP 洪水、Slowloris - 针对应用层
- 协议攻击:利用网络协议中的漏洞
内置 Hiddence 保护
所有 Hiddence VPS 都包括基本的第 3-4 层 DDoS 保护(网络级别)。这会自动过滤大多数容量攻击。但是,第 7 层(应用)攻击需要额外配置。
步骤 1:防火墙设置
第一道防线是适当的防火墙配置。UFW(简单防火墙)是适用于 Ubuntu/Debian 的简单有效的工具。
bash
# 安装 UFW
sudo apt update && sudo apt install ufw -y
# 允许 SSH(重要!在启用 UFW 之前执行此操作)
sudo ufw allow 22/tcp
# 允许 HTTP 和 HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 启用 UFW
sudo ufw enable
# 检查状态
sudo ufw status verbose
# 高级保护规则:
# 限制 SSH 连接(暴力破解保护)
sudo ufw limit 22/tcp
# 阻止 ICMP ping 洪水
sudo nano /etc/ufw/before.rules
# 在 *filter 后添加:
-A ufw-before-input -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP
# 防止 SYN 洪水
sudo nano /etc/sysctl.conf
# 添加:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5
# 应用更改
sudo sysctl -p步骤 2:安装 Fail2Ban
Fail2Ban 自动阻止显示可疑活动的 IP 地址(多次失败的登录尝试、端口扫描)。
bash
# 安装
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
# SSH 和 HTTP 保护配置
# 创建本地配置
sudo nano /etc/fail2ban/jail.local
# 添加:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
banaction = ufw
[sshd]
enabled = true
port = 22
logpath = /var/log/auth.log
[nginx-http-auth]
enabled = true
filter = nginx-http-auth
port = http,https
logpath = /var/log/nginx/error.log
[nginx-limit-req]
enabled = true
filter = nginx-limit-req
port = http,https
logpath = /var/log/nginx/error.log
# 重启 Fail2Ban
sudo systemctl restart fail2ban
# 检查状态
sudo fail2ban-client status步骤 3:Nginx 保护
如果您使用 Nginx,请配置速率限制以防范 HTTP 洪水攻击。
bash
sudo nano /etc/nginx/nginx.conf
# 添加到 http 块:
http {
# 请求限制:每个 IP 每秒 10 个请求
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
# 连接限制
limit_conn_zone $binary_remote_addr zone=addr:10m;
# Slowloris 保护
client_body_timeout 10s;
client_header_timeout 10s;
keepalive_timeout 5s 5s;
send_timeout 10s;
# 其余配置...
}
# 在 server 块中添加:
server {
location / {
# 应用请求限制
limit_req zone=one burst=20 nodelay;
# 连接限制:每个 IP 最多 10 个
limit_conn addr 10;
# 您的配置...
}
}
# 测试配置并重新加载
sudo nginx -t
sudo systemctl reload nginx步骤 4:使用 CDN
为了获得最大保护,请使用像 Cloudflare 这样的 CDN 服务。CDN 充当代理,隐藏您服务器的真实 IP 并吸收大多数 DDoS 攻击。优势:隐藏真实 IP、自动恶意流量过滤、负载分配、免费 SSL/TLS、用于 L7 保护的 WAF。
- 在 cloudflare.com 注册(提供免费计划)
- 添加您的域名并在注册商处更改 NS 记录
- 为 DNS 记录启用“代理”模式(橙色云)
- 在 SSL/TLS 部分将 SSL 模式设置为“完全(严格)”
- 在安全设置中启用“DDoS 保护”和“机器人战斗模式”
步骤 5:监控
定期监控有助于及早发现攻击。
bash
# 监控活动连接
watch -n 1 'ss -s'
# 查看按连接数排序的前几个 IP
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
# 实时查看日志
sudo tail -f /var/log/nginx/access.log
sudo journalctl -u nginx -f
# 检查 Fail2Ban 中阻止的 IP
sudo fail2ban-client status sshd紧急措施
如果攻击已经进行中,请采取以下措施:
- 识别来源:使用 'netstat' 或日志识别攻击 IP
- 临时阻止:sudo ufw insert 1 deny from 攻击IP
- 阻止整个子网:sudo ufw deny from 123.45.0.0/16
- 限制速率:临时将 Nginx 限制降低到 1-5 请求/秒
- 联系支持:联系 Hiddence 支持以激活高级保护
- 在 Cloudflare 中启用“受攻击模式”(如果使用)
最佳实践
- 如果使用 CDN,永远不要发布服务器的真实 IP
- 定期更新系统:sudo apt update && sudo apt upgrade
- 使用 SSH 密钥而不是密码进行服务器访问
- 将默认 SSH 端口(22)更改为非标准端口
- 设置自动备份以便快速恢复
- 为关键服务使用单独的 IP
- 启用日志记录并定期检查日志中的可疑活动
- 如果您的服务不是全球性的,请考虑使用地理阻止