一、什么是DDoS攻击?
DDoS(Distributed Denial of Service,分布式拒绝服务)攻击 是一种通过大量傀儡机(僵尸网络)向目标服务器发送海量请求,导致服务器资源耗尽而无法正常服务的攻击手段。
1.1 DDoS攻击的主要类型
| 攻击类型 | 原理 | 危害程度 |
|---|---|---|
| SYN Flood | 发送大量SYN请求耗尽连接表 | ⭐⭐⭐⭐ |
| UDP Flood | 发送大量UDP包消耗带宽 | ⭐⭐⭐⭐⭐ |
| HTTP Flood | 模拟正常HTTP请求耗尽资源 | ⭐⭐⭐⭐ |
| CC攻击 | 模拟真实用户请求 | ⭐⭐⭐ |
| DNS Amplification | 利用DNS服务器放大攻击流量 | ⭐⭐⭐⭐⭐ |
1.2 DDoS攻击的典型症状
- 网站访问突然变慢或无法访问
- 服务器带宽被打满
- CPU和内存使用率异常飙升
- 大量来自不同IP的请求
- 日志文件急剧增大
二、为什么需要隐藏服务器IP?
隐藏服务器真实IP是防御DDoS攻击的第一道防线。
攻击流程(未隐藏IP)
攻击者 → 获取真实IP → 直接攻击真实服务器 → 服务器宕机
攻击流程(已隐藏IP)
攻击者 → 只能看到代理/CDN IP → 攻击代理/CDN → CDN有防护能力 → 真实服务器安全
2.1 隐藏IP的防护原理
| 防护措施 | 作用 | 效果 |
|---|---|---|
| 隐藏真实IP | 攻击者无法直接定位目标 | ⭐⭐⭐⭐ |
| 使用CDN | 分散流量到全球节点 | ⭐⭐⭐⭐⭐ |
| 使用高防IP | 专业DDoS清洗 | ⭐⭐⭐⭐⭐ |
| 使用WAF | 过滤恶意请求 | ⭐⭐⭐⭐ |
三、隐藏服务器IP的6种方法
3.1 方法一:使用CDN(内容分发网络)
原理:将网站静态资源缓存到全球各地的CDN节点,用户访问时从就近节点获取资源,无法直接获取源站IP。
操作步骤(以Cloudflare为例):
- 注册Cloudflare账户并添加域名
- 修改DNS服务器为Cloudflare提供的NS
- 配置DNS记录:
Type: A
Name: @
Content: 源站IP(仅Cloudflare可见)
Proxy status: Proxied(橙色云图标) - 启用防护功能:
- DDoS Protection: On
- WAF: On
- Rate Limiting: 配置限制规则
优势:
– ✅ 免费额度充足(无限流量)
– ✅ 全球节点覆盖
– ✅ 内置DDoS防护
– ✅ 自动隐藏真实IP
注意事项:
– ⚠️ 确保源站防火墙只放行CDN IP段
– ⚠️ 不要将邮件服务器等通过CDN代理
3.2 方法二:使用反向代理(Nginx)
原理:在源站前部署反向代理服务器,外部用户只能看到反向代理的IP。
Nginx反向代理配置:
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_server;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
# 限制请求速率
limit_req zone=one burst=10 nodelay;
}
}
# 定义限速区域
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
部署建议:
– 反向代理服务器部署在高防机房
– 源站防火墙只允许反向代理IP访问
– 配置SSL/TLS加密传输
3.3 方法三:使用高防IP
原理:将域名解析到高防IP,流量先经过高防清洗中心,正常流量再转发到源站。
主流高防IP服务商对比:
| 服务商 | 防护能力 | 价格 | 适合场景 |
|---|---|---|---|
| 阿里云高防 | 500Gbps+ | 2800元/月起 | 国内业务 |
| 腾讯云高防 | 500Gbps+ | 2800元/月起 | 国内业务 |
| AWS Shield | 无限制 | 按量计费 | 国际业务 |
| Cloudflare | 无限制 | 免费~200$/月 | 国际业务 |
3.4 方法四:使用负载均衡 + 隐藏后端
架构设计:
用户请求 → 负载均衡器(公网IP) → 后端服务器(内网IP,无公网IP)
优势:
– 后端服务器没有公网IP,无法直接被攻击
– 负载均衡器可以配置DDoS防护
– 可以动态扩容后端服务器
云负载均衡配置示例(阿里云):
1. 创建负载均衡实例(公网)
2. 添加后端服务器(选择内网IP)
3. 配置监听规则(转发策略)
4. 设置健康检查
3.5 方法五:使用VPN/专线连接
适用场景:企业内部系统、管理后台等不需要公网直接访问的服务。
实现方式:
– 服务器不配置公网IP
– 管理人员通过VPN连接内网
– 通过内网IP访问服务器
OpenVPN部署简要步骤:
# 安装OpenVPN
sudo apt install openvpn easy-rsa -y
# 生成证书
cd /etc/openvpn/easy-rsa
./easyrsa init-pki
./easyrsa build-ca
./easyrsa gen-req server nopass
./easyrsa sign server server
# 启动OpenVPN
sudo systemctl start openvpn@server
3.6 方法六:域名不直接解析到源站
错误做法:
example.com A记录 → 源站IP(直接暴露)
正确做法:
example.com CNAME → cdn.example.com(CDN)
cdn.example.com A记录 → CDN节点IP(隐藏源站)
四、源站防火墙配置(关键!)
隐藏IP后,必须配置源站防火墙,只允许CDN/代理IP访问,否则攻击者可以直接通过源站IP攻击!
4.1 获取Cloudflare IP段
# 下载Cloudflare IP段
curl https://www.cloudflare.com/ips-v4 > cf_ips_v4.txt
curl https://www.cloudflare.com/ips-v6 > cf_ips_v6.txt
4.2 配置iptables只允许Cloudflare访问
#!/bin/bash
# 清空现有规则
iptables -F
iptables -X
# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 允许SSH(建议修改默认端口)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 允许Cloudflare IP段
while read ip; do
iptables -A INPUT -p tcp -s $ip --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -s $ip --dport 443 -j ACCEPT
done < cf_ips_v4.txt
# 拒绝其他所有访问Web端口的请求
iptables -A INPUT -p tcp --dport 80 -j DROP
iptables -A INPUT -p tcp --dport 443 -j DROP
# 保存规则
iptables-save > /etc/iptables/rules.v4
4.3 使用UFW配置(简化版)
# 禁用UFW
sudo ufw disable
# 允许Cloudflare IP段(示例)
sudo ufw allow from 173.245.48.0/20 to any port 80
sudo ufw allow from 103.21.244.0/22 to any port 80
# ... 添加所有Cloudflare IP段
# 拒绝其他Web访问
sudo ufw deny 80/tcp
sudo ufw deny 443/tcp
# 允许SSH
sudo ufw allow 22/tcp
# 启用UFW
sudo ufw enable
五、检测真实IP是否泄露
5.1 使用Nmap扫描
# 扫描开放端口
nmap -p 1-65535 example.com
# 如果源站80/443端口直接开放,说明IP已泄露
5.2 使用Shodan搜索
- 访问 shodan.io
- 搜索:
hostname:example.com - 查看是否有源站IP直接暴露
5.3 检查邮件头
如果网站发送邮件,邮件头可能包含源站IP:
Received: from server.example.com (server.example.com [源站IP])
解决方法:配置邮件服务器通过SMTP中继发送,不直接暴露源站IP。
六、其他DDoS防御措施
隐藏IP只是防御DDoS的第一步,还需要配合其他措施:
6.1 配置速率限制(Rate Limiting)
Nginx配置:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location /login {
limit_req zone=one burst=5;
proxy_pass http://backend;
}
}
}
6.2 启用SYN Cookie
# 编辑sysctl配置
sudo nano /etc/sysctl.conf
# 添加以下配置
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
# 应用配置
sudo sysctl -p
6.3 使用Fail2ban自动封禁恶意IP
# 安装fail2ban
sudo apt install fail2ban -y
# 配置nginx防护
sudo nano /etc/fail2ban/jail.local
配置内容:
[nginx-limit-req]
enabled = true
filter = nginx-limit-req
action = iptables-multiport
logpath = /var/log/nginx/error.log
findtime = 600
maxretry = 10
bantime = 3600
七、常见问题解答
Q1: 隐藏IP后网站访问变慢怎么办?
A: 可能是CDN节点选择不当。建议:
– 选择有国内节点的CDN(如阿里云、腾讯云)
– 配置智能DNS解析,国内用户走国内CDN,海外用户走海外CDN
Q2: 如何测试隐藏IP是否成功?
A: 使用在线工具检测:
– ipinfo.io – 查看网站解析的IP
– shodan.io – 搜索域名关联的IP
– 直接访问源站IP,应该无法访问(防火墙已配置)
Q3: 邮件服务器需要单独处理吗?
A: 是的。邮件服务器不能经过CDN代理,需要单独隐藏:
– 使用邮件中继服务(如SendGrid、Mailgun)
– 配置SPF、DKIM、DMARC防止邮件头泄露IP
Q4: 高防IP和CDN可以同时使用吗?
A: 可以,推荐架构:
用户 → 高防IP(第一层防护) → CDN(第二层防护) → 源站
八、总结
隐藏服务器IP是防御DDoS攻击的基础措施,推荐采用多层防护策略:
| 防护层级 | 措施 | 优先级 |
|---|---|---|
| 第一层 | CDN / 高防IP | ⭐⭐⭐⭐⭐ |
| 第二层 | 源站防火墙 | ⭐⭐⭐⭐⭐ |
| 第三层 | 速率限制 | ⭐⭐⭐⭐ |
| 第四层 | DDoS清洗服务 | ⭐⭐⭐⭐ |
| 第五层 | 监控告警 | ⭐⭐⭐ |
实施步骤:
1. ✅ 接入CDN并开启代理
2. ✅ 配置源站防火墙,只允许CDN IP访问
3. ✅ 启用速率限制和DDoS防护
4. ✅ 定期检测IP是否泄露
5. ✅ 配置监控告警,及时发现攻击
通过隐藏服务器IP并配合其他防御措施,可以大幅提升DDoS攻击的门槛和成本,保护网站稳定运行。
注:本文基于2026年主流DDoS防护技术编写,具体实施方案请根据实际业务需求调整。