上一篇 下一篇 分享链接 返回 返回顶部

Cloudflare 加固实战:从隐藏源站 IP 到只放行回源流量

发布人:慈云数据-客服中心 发布时间:2小时前 阅读量:0

Cloudflare 安全加固方案|附完整命令

在现代 Web 架构中,Cloudflare 已经不仅仅是一个 CDN 加速服务,它同时承担了 DNS 托管、DDoS 防护、WAF Web 应用防火墙、Bot 管理、访问控制、TLS 证书、安全日志分析等多重角色。对于企业网站、API 服务、SaaS 平台、WordPress 站点、静态站点以及自建业务系统来说,合理配置 Cloudflare 可以显著提升整体安全性。

但需要注意的是:仅仅把域名接入 Cloudflare 并不等于安全加固完成。如果源站 IP 泄露、源站防火墙未限制 Cloudflare 回源 IP、TLS 模式配置错误、WAF 规则缺失、后台路径裸露,攻击者仍然可以绕过 Cloudflare 直接攻击源站。

本文将系统介绍一套 Cloudflare 安全加固方案,并提供完整命令,适用于 Linux 服务器、Nginx、常规 Web 站点、API 服务以及自建后台系统。


一、Cloudflare 安全加固总体思路

Cloudflare 安全加固的核心目标是:

  1. 隐藏源站真实 IP
  2. 只允许 Cloudflare 访问源站
  3. 强制 HTTPS 加密访问
  4. 开启 WAF 和安全规则
  5. 限制后台、API、敏感路径访问
  6. 降低恶意爬虫、扫描器、爆破请求影响
  7. 启用安全响应头
  8. 建立日志审计和攻击监控机制

一套完整的 Cloudflare 防护架构通常如下:

用户 / 攻击者
     |
     v
Cloudflare DNS / CDN / WAF / DDoS 防护
     |
     v
源站服务器 Nginx / Apache / 应用服务

正确的安全加固重点在于:
所有外部流量都必须先经过 Cloudflare,再到达源站。任何直接访问源站 IP 的请求都应该被拒绝。


二、接入 Cloudflare 前的准备工作

在正式配置 Cloudflare 之前,建议先完成以下准备:

1. 确认域名 DNS 管理权

你需要将域名 DNS 托管到 Cloudflare,通常需要修改域名注册商处的 NS 服务器。

例如 Cloudflare 会提供类似如下 NS:

arya.ns.cloudflare.com
karl.ns.cloudflare.com

然后在域名注册商后台将原来的 NS 修改为 Cloudflare 提供的 NS。


2. 记录当前 DNS 解析

迁移 DNS 前,建议导出或截图当前 DNS 记录,包括:

  • A 记录
  • AAAA 记录
  • CNAME 记录
  • MX 邮件记录
  • TXT 记录
  • SPF / DKIM / DMARC 记录
  • 子域名解析记录

尤其注意邮件相关记录不要遗漏,否则可能影响邮件收发。


3. 检查源站服务

在加固之前,先确认源站服务正常:

curl -I http://your-domain.com
curl -I https://your-domain.com

也可以直接访问源站 IP 测试:

curl -I http://源站IP

如果源站 IP 可直接访问,后续必须进行防火墙限制。


三、Cloudflare DNS 安全配置

1. 开启代理模式

在 Cloudflare DNS 页面中,常见记录如下:

A     example.com       1.2.3.4
A     www.example.com   1.2.3.4

需要将网站相关记录设置为橙色云朵状态:

Proxied

也就是启用 Cloudflare 代理。

如果是以下类型记录,通常不建议开启代理:

MX 邮件记录
mail 子域名
ftp 子域名
SSH 相关子域名

建议配置方式:

example.com        Proxied
www.example.com    Proxied
api.example.com    Proxied
admin.example.com  Proxied 或配合 Zero Trust
mail.example.com   DNS only

2. 避免源站 IP 泄露

源站 IP 泄露是 Cloudflare 防护中最常见的问题。攻击者一旦获取源站真实 IP,就可以绕过 Cloudflare 直接攻击服务器。

常见泄露方式包括:

  • 历史 DNS 记录泄露
  • 子域名未代理
  • 邮件服务器与 Web 服务器共用 IP
  • SSL 证书透明日志泄露
  • GitHub、配置文件、日志中泄露 IP
  • 服务器默认站点暴露
  • 通过 Shodan、FOFA、Censys 搜索到源站

建议措施:

  1. Web 源站单独使用服务器,不与邮件服务共用 IP。
  2. 所有 Web 子域名尽量开启 Cloudflare 代理。
  3. 更换已经泄露过的源站 IP。
  4. 源站只允许 Cloudflare IP 回源。
  5. 不在公开仓库暴露服务器 IP。

四、配置 SSL/TLS 安全策略

Cloudflare 提供多种 SSL/TLS 模式:

Off
Flexible
Full
Full Strict

强烈建议使用:

Full (strict)

1. 为什么不建议 Flexible?

Flexible 模式下:

用户 <=> Cloudflare:HTTPS
Cloudflare <=> 源站:HTTP

这意味着 Cloudflare 到源站之间不是加密连接,存在安全风险,并且容易导致 HTTPS 跳转循环。

2. 推荐模式 Full Strict

Full Strict 模式下:

用户 <=> Cloudflare:HTTPS
Cloudflare <=> 源站:HTTPS

同时 Cloudflare 会校验源站证书有效性。


五、安装 Cloudflare Origin Certificate

Cloudflare 可以为源站签发 Origin Certificate,用于 Cloudflare 到源站之间的 HTTPS 加密。

在 Cloudflare 后台:

SSL/TLS -> Origin Server -> Create Certificate

选择:

Let Cloudflare generate a private key and a CSR

证书域名可以填写:

example.com
*.example.com

然后将证书和私钥保存到服务器。

1. 创建证书目录

sudo mkdir -p /etc/nginx/ssl/cloudflare
sudo chmod 700 /etc/nginx/ssl/cloudflare

2. 保存证书文件

sudo nano /etc/nginx/ssl/cloudflare/origin.pem

粘贴 Cloudflare Origin Certificate 内容。

保存私钥:

sudo nano /etc/nginx/ssl/cloudflare/origin.key

粘贴 Private Key 内容。

设置权限:

sudo chmod 600 /etc/nginx/ssl/cloudflare/origin.key
sudo chmod 644 /etc/nginx/ssl/cloudflare/origin.pem

六、Nginx 配置 HTTPS 源站

以下以 Nginx 为例。

1. 编辑站点配置

sudo nano /etc/nginx/conf.d/example.com.conf

示例配置:

server {
    listen 80;
    server_name example.com www.example.com;

    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate     /etc/nginx/ssl/cloudflare/origin.pem;
    ssl_certificate_key /etc/nginx/ssl/cloudflare/origin.key;

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers off;

    root /var/www/example.com;
    index index.html index.htm index.php;

    access_log /var/log/nginx/example.com.access.log;
    error_log  /var/log/nginx/example.com.error.log;

    location / {
        try_files $uri $uri/ =404;
    }
}

测试配置:

sudo nginx -t

重载 Nginx:

sudo systemctl reload nginx

七、只允许 Cloudflare IP 访问源站

这是 Cloudflare 安全加固中最关键的一步。

如果不做这一步,攻击者只要知道源站 IP,就可以绕过 Cloudflare 的 WAF、DDoS 防护和访问限制。

Cloudflare 官方 IP 列表地址:

https://www.cloudflare.com/ips-v4
https://www.cloudflare.com/ips-v6

八、使用 UFW 限制 Cloudflare 回源

如果你的服务器使用 Ubuntu/Debian,并启用了 UFW,可以使用以下方式。

1. 重置 UFW,谨慎操作

如果你是远程 SSH 登录服务器,执行防火墙命令前一定要确保 SSH 端口已放行,否则可能把自己锁在服务器外。

假设 SSH 端口为 22:

sudo ufw allow 22/tcp

如果 SSH 端口为 2222:

sudo ufw allow 2222/tcp

允许常规出站:

sudo ufw default deny incoming
sudo ufw default allow outgoing

2. 放行 Cloudflare IPv4

for ip in $(curl -s https://www.cloudflare.com/ips-v4); do
  sudo ufw allow from $ip to any port 80 proto tcp
  sudo ufw allow from $ip to any port 443 proto tcp
done

3. 放行 Cloudflare IPv6

for ip in $(curl -s https://www.cloudflare.com/ips-v6); do
  sudo ufw allow from $ip to any port 80 proto tcp
  sudo ufw allow from $ip to any port 443 proto tcp
done

4. 拒绝其他访问 80/443

UFW 默认拒绝入站后,不需要额外 deny。启用 UFW:

sudo ufw enable

查看规则:

sudo ufw status numbered

测试端口:

sudo ss -tulnp

九、使用 iptables 限制 Cloudflare 回源

如果你使用 iptables,可以参考以下规则。

1. 创建脚本

sudo nano /usr/local/bin/cloudflare-firewall.sh

写入以下内容:

#!/bin/bash

# 清空已有规则,请根据生产环境谨慎使用
iptables -F
iptables -X

ip6tables -F
ip6tables -X

# 默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

ip6tables -P INPUT DROP
ip6tables -P FORWARD DROP
ip6tables -P OUTPUT ACCEPT

# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
ip6tables -A INPUT -i lo -j ACCEPT

# 允许已建立连接
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
ip6tables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 允许 SSH,请按实际端口修改
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT

# 放行 Cloudflare IPv4 到 80/443
for ip in $(curl -s https://www.cloudflare.com/ips-v4); do
  iptables -A INPUT -p tcp -s $ip --dport 80 -j ACCEPT
  iptables -A INPUT -p tcp -s $ip --dport 443 -j ACCEPT
done

# 放行 Cloudflare IPv6 到 80/443
for ip in $(curl -s https://www.cloudflare.com/ips-v6); do
  ip6tables -A INPUT -p tcp -s $ip --dport 80 -j ACCEPT
  ip6tables -A INPUT -p tcp -s $ip --dport 443 -j ACCEPT
done

echo "Cloudflare firewall rules applied."

添加执行权限:

sudo chmod +x /usr/local/bin/cloudflare-firewall.sh

执行脚本:

sudo /usr/local/bin/cloudflare-firewall.sh

2. 持久化 iptables 规则

Debian/Ubuntu 安装:

sudo apt update
sudo apt install -y iptables-persistent

保存规则:

sudo netfilter-persistent save
sudo netfilter-persistent reload

CentOS/RHEL 可使用:

sudo service iptables save
sudo systemctl enable iptables

十、使用 nftables 限制 Cloudflare 回源

较新的 Linux 系统推荐使用 nftables。

1. 安装 nftables

Debian/Ubuntu:

sudo apt update
sudo apt install -y nftables
sudo systemctl enable nftables
sudo systemctl start nftables

CentOS/RHEL:

sudo dnf install -y nftables
sudo systemctl enable nftables
sudo systemctl start nftables

2. 创建 Cloudflare IP 更新脚本

sudo nano /usr/local/bin/update-cloudflare-nft.sh

写入:

#!/bin/bash

CF4=$(curl -s https://www.cloudflare.com/ips-v4 | awk '{print $0}')
CF6=$(curl -s https://www.cloudflare.com/ips-v6 | awk '{print $0}')

cat > /etc/nftables.conf <

授权并执行:

sudo chmod +x /usr/local/bin/update-cloudflare-nft.sh
sudo /usr/local/bin/update-cloudflare-nft.sh

查看规则:

sudo nft list ruleset

3. 定时更新 Cloudflare IP

Cloudflare IP 段可能发生变化,建议定期更新。

编辑 cron:

sudo crontab -e

添加:

0 3 * * * /usr/local/bin/update-cloudflare-nft.sh >/var/log/update-cloudflare-nft.log 2>&1

表示每天凌晨 3 点自动更新规则。


十一、恢复真实访问者 IP

启用 Cloudflare 代理后,Nginx 默认看到的访问 IP 可能是 Cloudflare 节点 IP,而不是用户真实 IP。因此需要配置真实 IP 还原。

Cloudflare 会通过请求头传递真实 IP:

CF-Connecting-IP

1. 创建 Cloudflare Real IP 配置

sudo nano /etc/nginx/conf.d/cloudflare-real-ip.conf

写入以下内容:

real_ip_header CF-Connecting-IP;

继续添加 Cloudflare IP 段:

curl -s https://www.cloudflare.com/ips-v4 | while read ip; do
  echo "set_real_ip_from $ip;"
done
curl -s https://www.cloudflare.com/ips-v6 | while read ip; do
  echo "set_real_ip_from $ip;"
done

可以自动生成完整配置:

sudo bash -c 'echo "real_ip_header CF-Connecting-IP;" > /etc/nginx/conf.d/cloudflare-real-ip.conf'
curl -s https://www.cloudflare.com/ips-v4 | while read ip; do
  echo "set_real_ip_from $ip;" | sudo tee -a /etc/nginx/conf.d/cloudflare-real-ip.conf
done
curl -s https://www.cloudflare.com/ips-v6 | while read ip; do
  echo "set_real_ip_from $ip;" | sudo tee -a /etc/nginx/conf.d/cloudflare-real-ip.conf
done

测试并重载:

sudo nginx -t
sudo systemctl reload nginx

十二、Cloudflare WAF 基础加固

Cloudflare WAF 是防御 Web 攻击的重要模块。建议至少开启以下功能。

1. 开启托管规则

路径:

Security -> WAF -> Managed rules

建议启用:

Cloudflare Managed Ruleset
Cloudflare OWASP Core Ruleset

如果是 WordPress 站点,还可以启用:

Cloudflare WordPress Ruleset

OWASP 规则可防护常见攻击:

  • SQL 注入
  • XSS 跨站脚本
  • 命令注入
  • 本地文件包含
  • 远程文件包含
  • 协议异常请求
  • 恶意 User-Agent

2. 配置安全级别

路径:

Security -> Settings -> Security Level

建议设置为:

Medium

如果遭遇攻击,可以临时提高为:

High
I'm Under Attack

但不建议长期使用 “I'm Under Attack” 模式,因为它可能影响正常用户体验和 API 调用。


十三、创建自定义 WAF 规则

Cloudflare 自定义规则非常实用,可以根据国家、URI、User-Agent、请求方法、IP、Header 等维度进行控制。


1. 限制后台路径访问

例如后台路径为:

/admin

可以创建规则:

(http.request.uri.path starts_with "/admin")

动作:

Managed Challenge

如果后台只允许固定 IP 访问:

(http.request.uri.path starts_with "/admin" and ip.src ne 你的办公IP)

动作:

Block

2. 保护 WordPress 登录入口

WordPress 常见敏感路径:

/wp-login.php
/wp-admin
/xmlrpc.php

规则示例:

(http.request.uri.path eq "/wp-login.php" or http.request.uri.path starts_with "/wp-admin")

动作:

Managed Challenge

阻止 XML-RPC:

(http.request.uri.path eq "/xmlrpc.php")

动作:

Block

3. 阻止恶意扫描路径

常见扫描路径包括:

/.env
/.git
/config.php
/backup.zip
/phpinfo.php
/server-status

Cloudflare 表达式:

(
http.request.uri.path contains ".env" or
http.request.uri.path contains ".git" or
http.request.uri.path contains "phpinfo" or
http.request.uri.path contains "backup" or
http.request.uri.path contains "server-status"
)

动作:

Block

4. 阻止非常见 HTTP 方法

一般网站只需要:

GET
POST
HEAD

规则:

not http.request.method in ("GET", "POST", "HEAD")

动作:

Block

对于 REST API,可根据业务放行:

GET
POST
PUT
PATCH
DELETE
OPTIONS

十四、Rate Limiting 限速防护

登录接口、验证码接口、短信接口、API 接口容易被刷。

建议对以下路径设置 Rate Limiting:

/login
/api/login
/wp-login.php
/register
/send-sms
/graphql

示例策略:

路径:/api/login
条件:每个 IP 1 分钟超过 10 次
动作:Managed Challenge 或 Block
持续时间:10 分钟

Cloudflare 表达式示例:

(http.request.uri.path eq "/api/login")

对于 API 接口:

(http.request.uri.path starts_with "/api/")

可以设置:

每 IP 每分钟 120 次
超过后 Challenge 或 Block

如果是公开 API,应结合鉴权、签名、Token、用户维度限速,不要只依赖 IP。


十五、Bot 防护配置

Cloudflare 的 Bot Fight Mode 或 Super Bot Fight Mode 可以减少自动化攻击和恶意爬虫。

路径:

Security -> Bots

建议:

开启 Bot Fight Mode

如果你使用的是付费套餐,可以配置:

Definitely automated: Block
Likely automated: Managed Challenge
Verified bots: Allow

需要注意:

  • 搜索引擎爬虫不要误封
  • 支付回调、Webhook、监控服务要加入白名单
  • API 客户端可能被误判,需要单独规则处理

十六、启用 HSTS

HSTS 可以强制浏览器只使用 HTTPS 访问网站,降低 SSL 剥离攻击风险。

路径:

SSL/TLS -> Edge Certificates -> HTTP Strict Transport Security

建议配置:

Enable HSTS: On
Max Age: 6 months 或 1 year
Include subdomains: 根据实际情况开启
Preload: 谨慎开启

如果所有子域名都支持 HTTPS,可以开启 Include subdomains。
如果不确定,不要开启 preload,否则后续回退困难。

也可以在 Nginx 添加:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

十七、配置安全响应头

安全响应头可以降低 XSS、点击劫持、MIME 混淆等风险。

Nginx 示例:

add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;

如果业务允许,可以添加 CSP:

add_header Content-Security-Policy "default-src 'self'; img-src 'self' data: https:; script-src 'self' 'unsafe-inline' 'unsafe-eval' https:; style-src 'self' 'unsafe-inline' https:;" always;

完整 Nginx 示例:

server {
    listen 443 ssl http2;
    server_name example.com www.example.com;

    ssl_certificate     /etc/nginx/ssl/cloudflare/origin.pem;
    ssl_certificate_key /etc/nginx/ssl/cloudflare/origin.key;

    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-XSS-Protection "1; mode=block" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
    add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;

    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

十八、防止直接 IP 访问源站

除了防火墙限制外,还建议在 Nginx 配置默认站点,拒绝非指定域名访问。

server {
    listen 80 default_server;
    listen 443 ssl default_server;

    server_name _;

    ssl_certificate     /etc/nginx/ssl/cloudflare/origin.pem;
    ssl_certificate_key /etc/nginx/ssl/cloudflare/origin.key;

    return 444;
}

444 是 Nginx 特殊状态码,表示直接关闭连接。

测试配置:

sudo nginx -t
sudo systemctl reload nginx

十九、Cloudflare Page Rules / Configuration Rules

可以为不同路径设置不同安全策略。

1. 后台路径禁用缓存

URL: example.com/admin/*
Cache Level: Bypass
Security Level: High

2. API 路径禁用缓存

URL: example.com/api/*
Cache Level: Bypass

3. 静态资源缓存

URL: example.com/static/*
Cache Level: Cache Everything
Edge Cache TTL: 1 month

对于新版 Cloudflare,建议使用:

Rules -> Cache Rules
Rules -> Configuration Rules
Rules -> Redirect Rules

二十、Cloudflare Zero Trust 保护后台

对于管理后台、内部门户、运维面板,推荐使用 Cloudflare Zero Trust Access。

适用场景:

  • /admin
  • /dashboard
  • /wp-admin
  • Grafana
  • Jenkins
  • GitLab
  • Kibana
  • Portainer
  • 宝塔面板
  • 内部 API 文档

配置思路:

Zero Trust -> Access -> Applications -> Add an application

设置访问策略:

只允许指定邮箱域名
只允许指定邮箱账号
启用 OTP
启用 GitHub / Google / Azure AD 登录

这样即使后台路径暴露,也需要先通过 Cloudflare Access 身份认证。


二十一、源站 SSH 安全加固

Cloudflare 保护的是 Web 流量,默认不保护 SSH。因此服务器 SSH 也需要加固。

1. 修改 SSH 端口

sudo nano /etc/ssh/sshd_config

修改:

Port 2222

重启 SSH:

sudo systemctl restart ssh

放行新端口:

sudo ufw allow 2222/tcp

确认新端口可以连接后,再关闭旧端口。


2. 禁止 root 登录

sudo nano /etc/ssh/sshd_config

设置:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

重启:

sudo systemctl restart ssh

3. 使用 fail2ban 防爆破

安装:

sudo apt update
sudo apt install -y fail2ban

创建配置:

sudo nano /etc/fail2ban/jail.local

写入:

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 3600
findtime = 600

重启:

sudo systemctl restart fail2ban

查看状态:

sudo fail2ban-client status sshd

二十二、日志审计与攻击分析

Cloudflare 提供 Security Events,可以查看被 WAF、规则、挑战拦截的请求。

路径:

Security -> Events

重点关注:

  • 攻击来源国家
  • 高频请求 IP
  • 被拦截路径
  • User-Agent
  • 命中的 WAF 规则
  • 请求方法
  • URI 查询参数

源站也应保留 Nginx 日志:

tail -f /var/log/nginx/example.com.access.log
tail -f /var/log/nginx/example.com.error.log

查看访问最多的 IP:

awk '{print $1}' /var/log/nginx/example.com.access.log | sort | uniq -c | sort -nr | head

查看访问最多的路径:

awk '{print $7}' /var/log/nginx/example.com.access.log | sort | uniq -c | sort -nr | head

查看 404 扫描:

awk '$9==404 {print $7}' /var/log/nginx/example.com.access.log | sort | uniq -c | sort -nr | head

二十三、常见问题排查

1. 出现 521 错误

原因通常是 Cloudflare 无法连接源站。

检查:

sudo systemctl status nginx
sudo ss -tulnp | grep nginx
sudo ufw status

确认 Cloudflare IP 已放行,80/443 正常监听。


2. 出现 525 错误

表示 SSL 握手失败。

检查:

sudo nginx -t
openssl s_client -connect example.com:443 -servername example.com

确认源站 SSL 证书路径正确。


3. 出现 526 错误

表示证书校验失败,通常发生在 Full Strict 模式。

解决:

  • 使用有效证书
  • 使用 Cloudflare Origin Certificate
  • 检查证书域名是否匹配

4. 获取不到真实 IP

检查 Nginx 是否配置:

real_ip_header CF-Connecting-IP;
set_real_ip_from Cloudflare_IP段;

然后重载:

sudo nginx -t
sudo systemctl reload nginx

二十四、推荐加固清单

最终建议你按照以下清单逐项确认:

[ ] 域名 DNS 已接入 Cloudflare
[ ] Web 记录已开启 Proxied
[ ] SSL/TLS 使用 Full Strict
[ ] 源站安装 Cloudflare Origin Certificate
[ ] 源站防火墙只允许 Cloudflare IP 访问 80/443
[ ] Nginx 已恢复真实访问者 IP
[ ] 默认站点已拒绝直接 IP 访问
[ ] WAF Managed Rules 已开启
[ ] OWASP Core Ruleset 已开启
[ ] 后台路径已增加 Challenge 或 Zero Trust
[ ] 登录/API 接口已配置限速
[ ] XML-RPC、.env、.git 等敏感路径已拦截
[ ] HSTS 已按需开启
[ ] 安全响应头已配置
[ ] SSH 已禁用 root 和密码登录
[ ] fail2ban 已启用
[ ] Cloudflare Security Events 定期审计
[ ] Cloudflare IP 段更新脚本已定时执行

二十五、总结

Cloudflare 是非常强大的安全平台,但安全效果取决于配置是否完整。很多站点虽然接入了 Cloudflare,但因为源站 IP 暴露、防火墙未限制回源、TLS 模式错误、后台路径未保护,最终仍然被绕过攻击。

一套有效的 Cloudflare 安全加固方案应重点做到:

  • DNS 代理隐藏源站
  • Full Strict 保证端到端加密
  • 源站防火墙只允许 Cloudflare 回源
  • WAF 拦截常见 Web 攻击
  • Rate Limiting 抑制爆破和刷接口
  • Zero Trust 保护后台入口
  • 日志审计持续发现异常

如果只能做一项最重要的配置,那一定是:
在源站防火墙中只允许 Cloudflare IP 访问 80 和 443 端口。

只有这样,Cloudflare 的 DDoS 防护、WAF、Bot 防护和访问控制才真正无法被绕过。

目录结构
全文