Hugo博客公告弹窗

指定ip仅cloudflare能访问

解释:只有把域名托管到cloudflare,并且开启了cdn(小云朵)的网站才能访问,可以有效防止真实服务器 IP 被探测到

在运营网站的过程中,安全始终是一个永恒的话题。即便我们使用了 Cloudflare 这样的 CDN 服务,但如果配置不当,真实 IP 依然有可能泄露。

想象一下这个场景:你的网站正在使用 Cloudflare CDN,看似很安全。但是有一天,你突然发现服务器负载异常,网站响应缓慢。经过排查,你惊讶地发现有大量的直接 IP 访问请求,绕过了 CDN 的防护。这意味着你的服务器真实 IP 已经泄露了。

这种情况并不罕见,IP 可能通过多种途径泄露:

  • DNS 历史记录
  • 邮件服务器配置
  • 解析记录变更前的访问
  • 网站本身的某些功能特性

IP 地址范围

https://www.cloudflare.com/zh-cn/ips/

下载脚本

cd /root && curl -O https://raw.githubusercontent.com/woniu336/open_shell/main/cloudflare-only.sh

赋予权限

chmod +x /root/cloudflare-only.sh

执行

./cloudflare-only.sh

查看规则

iptables -L INPUT -n --line-numbers

仅查看80和443

iptables -L INPUT -n --line-numbers | grep -E "80|443"

查看ipv6

ip6tables -L INPUT -n --line-numbers | grep -E "80|443"

检查是否存在这些冲突规则

iptables -L INPUT -n --line-numbers | grep "dpt:80\|dpt:443"

白名单

添加本地ip,可以做到,在不开cdn的情况下,只有你自己可以访问

iptables -I INPUT 1 -s 你的ip/32 -p tcp -m multiport --dports 80,443 -j ACCEPT

保存规则

iptables-save > /etc/iptables/rules.v4

删除测试 IP:

iptables -D INPUT 1

删除规则

curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/clear-cloudflare.sh && chmod +x clear-cloudflare.sh && ./clear-cloudflare.sh

删除ipv6

for i in {1..8}; do
    ip6tables -D INPUT 1
done

或者(保留fail2ban)

for i in $(iptables -L INPUT -n --line-numbers | grep -E "80|443" | grep -v "f2b-fail2ban" | awk '{print $1}' | sort -nr); do iptables -D INPUT $i; done && for i in $(ip6tables -L INPUT -n --line-numbers | grep -E "80|443" | grep -v "f2b-fail2ban" | awk '{print $1}' | sort -nr); do ip6tables -D INPUT $i; done

调整顺序(可选)

例如:将 f2b-nginx-bad-request 规则移到最前面(在 Cloudflare 规则之前)

删除原来的规则

iptables -D INPUT 18

调整到前面

iptables -I INPUT 1 -p tcp -m multiport --dports 80,443 -j f2b-nginx-bad-request
CC BY-NC-SA 4.0 转载请注明
最后更新于 2025-01-17 05:32
clarity统计