帅秃顶的博客

  • 隐私政策🤝
  • 关于🏆
  • 友情链接🔗
热爱生活的每一天
帅秃顶的个人博客
  1. 首页
  2. linux
  3. 正文

分享一个简单实用的shell脚本

2026年4月2日 34点热度 0人点赞 1条评论

我的WordPress博客使用的域名托管在Cloudflare上,为了提高VPS的安全性,可以配置VPS上的防火墙仅允许来自Cloudflare的IP访问80/443端口。我使用的是ufw防火墙,具体脚本如下:

#!/bin/bash

echo "开始执行▶️"
# 下载最新 Cloudflare IP 列表
cf_ips_v4=$(curl -s https://www.cloudflare.com/ips-v4)
cf_ips_v6=$(curl -s https://www.cloudflare.com/ips-v6)

# 给新规则添加特殊标记 comment,便于识别
RULE_COMMENT="cf-update-$(date +%s)"

# 先添加新的 Cloudflare IP规则(带标记)
for ip in $cf_ips_v4; do
    ufw allow proto tcp from $ip to any port 80 comment $RULE_COMMENT
    ufw allow proto tcp from $ip to any port 443 comment $RULE_COMMENT
done

for ip in $cf_ips_v6; do
    ufw allow proto tcp from $ip to any port 80 comment $RULE_COMMENT
    ufw allow proto tcp from $ip to any port 443 comment $RULE_COMMENT
done

# 等待1-2秒,确保新规则生效
sleep 2

# 删除旧的 Cloudflare 80/443 端口规则(但排除刚刚加的)
EXISTING_RULES=$(ufw status numbered | grep -E '80\/tcp|443\/tcp' | grep -v "$RULE_COMMENT" | awk -F'[][]' '{print $2}' | sort -rn)

for rule in $EXISTING_RULES; do
    ufw --force delete $rule
done

# 设置默认拒绝 80/443 的外来访问(如果没有就添加一次)
ufw status | grep -q "DENY.*80" || ufw deny 80/tcp
ufw status | grep -q "DENY.*443" || ufw deny 443/tcp

echo "✅ Cloudflare IP 更新完成(零中断),80/443 只允许 Cloudflare访问。其他端口规则未受影响。"

使用firewalld防火墙的可以自行修改适配。

标签: cloudflare shell ufw
最后更新:2026年4月2日

帅秃顶

告别的年代,分开的理由,终不须诉说出口

点赞
< 上一篇

文章评论

  • porntude

    So dive in, have fun

    2026年4月24日
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复
    帅秃顶 的头像
    最近评论
    porntude 发布于 20 小时前(04月24日) So dive in, have fun
    333985 发布于 1 周前(04月16日) wish you best and best
    porntude 发布于 2 周前(04月07日) wish you all the best
    porntude 发布于 1 个月前(03月22日) Very good i like it
    两性资源 发布于 1 个月前(03月22日) 看不懂但大受震撼

    COPYRIGHT © 2025 pigpigpigGo. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang