somethingwithproof/cloudflare-ufw-sync

GitHub: somethingwithproof/cloudflare-ufw-sync

这是一个能够自动将Cloudflare IP范围同步到Linux UFW防火墙规则的Python工具,旨在确保只有Cloudflare的流量可以访问服务器。

Stars: 0 | Forks: 0

# Cloudflare UFW Sync [![Python](https://img.shields.io/badge/Python-3.8%2B-blue)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black) [![Tests](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/b566b411bf060902.svg)](https://github.com/thomasvincent/cloudflare-ufw-sync/actions/workflows/tests.yml) [![PyPI](https://img.shields.io/pypi/v/cloudflare-ufw-sync)](https://pypi.org/project/cloudflare-ufw-sync/) 企业级 Cloudflare IP 与 UFW 同步工具。 ## 概述 `cloudflare-ufw-sync` 是一个强大的工具,旨在自动将 Cloudflare 的 IP 范围与您的 UFW (Uncomplicated Firewall) 规则同步。这确保了只有来自 Cloudflare 网络的流量被允许访问您的 Web 服务器。 ## 架构 ![架构图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/6927ade641060903.png) ## 功能 - 🔄 Cloudflare IP 范围与 UFW 规则的自动同步 - 🔒 通过适当的权限处理安全管理 UFW 规则 - 🛠️ 支持 IPv4 和 IPv6 地址范围 - 🔍 用于审计和故障排查的详细日志记录 - 🔧 可自定义的配置 - 🧪 全面的测试套件 ## 安装 ### 通过 PyPI ``` pip install cloudflare-ufw-sync ``` ### 从源码 ``` git clone https://github.com/thomasvincent/cloudflare-ufw-sync.git cd cloudflare-ufw-sync pip install . ``` ## 配置 在 `/etc/cloudflare-ufw-sync/config.yml` 或 `~/.config/cloudflare-ufw-sync/config.yml` 创建配置文件: ``` cloudflare: api_key: your-api-key # Optional: Only needed if using authenticated endpoints ip_types: - v4 # IPv4 addresses - v6 # IPv6 addresses ufw: default_policy: deny port: 443 # The port to allow access to proto: tcp # Protocol (tcp, udp, or both) comment: "Cloudflare IP" # Comment for UFW rules sync: interval: 86400 # Sync interval in seconds (default: 1 day) enabled: true ``` ## 使用方法 ### 命令行 ``` # 运行同步操作 cloudflare-ufw-sync sync # 在守护进程模式下运行 cloudflare-ufw-sync daemon # 查看当前状态 cloudflare-ufw-sync status ``` ### 作为服务 提供了一个 systemd 服务文件,以便作为服务运行同步: ``` sudo cp scripts/cloudflare-ufw-sync.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable cloudflare-ufw-sync sudo systemctl start cloudflare-ufw-sync ``` ## 开发 ### 使用 Docker 进行测试 如果您偏好隔离环境,您可以完全在 Docker 中构建并运行测试套件。 ``` # 构建开发镜像(包含开发依赖并以可编辑模式打包) docker build -t cloudflare-ufw-sync:dev . # 使用 pytest 运行测试(安静模式,首次失败时停止) docker run --rm -t --entrypoint pytest cloudflare-ufw-sync:dev -q --maxfail=1 --disable-warnings ``` 这正是 CI 中使用的设置,也是维护者在本地进行合理性检查更改时使用的设置。 ### Make 目标 为了方便,一些 make 目标镜像了 Docker 工作流: ``` # 构建开发镜像 make docker-build # 在容器内运行测试套件 make docker-test # 在容器内运行 tox(根据 tox.ini 进行 lint + mypy) make docker-tox ``` ### 设置 ``` # 克隆仓库 git clone https://github.com/thomasvincent/cloudflare-ufw-sync.git cd cloudflare-ufw-sync # 设置虚拟环境 python -m venv venv source venv/bin/activate # 安装开发依赖 pip install -e ".[dev]" ``` ### 使用 Tox 进行测试和 Linting 该项目包含一个 `tox.ini` 文件,用于设置测试、linting 和类型检查的环境。这允许您在提交更改之前,在本地运行与 CI 流水线中执行的相同检查。 ``` # 安装 tox pip install tox # 在所有支持的 Python 版本上运行所有测试和检查 tox # 运行特定 Python 版本的测试 tox -e py38 # For Python 3.8 tox -e py39 # For Python 3.9 tox -e py310 # For Python 3.10 tox -e py311 # For Python 3.11 tox -e py312 # For Python 3.12 # 仅运行 linting 检查 tox -e lint # 仅运行 type checking tox -e mypy # 格式化代码 tox -e format ``` ### 手动测试 如果您更喜欢手动运行测试和 linting: ``` # 运行测试 pytest # 运行 linting black . isort . flake8 # 运行 type checking mypy src ``` ## 许可证 本项目在 MIT 许可证下授权 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 安全 请参阅 [SECURITY.md](SECURITY.md) 了解安全策略和报告漏洞。 ## 贡献 欢迎贡献!请随时提交 Pull Request。
标签:CDN, Cloudflare, DDoS防护, DNS解析, IPv4, IPv6, IP同步, MITRE ATT&CK, PowerShell, Prompt Injection, Python, Streamlit, UFW, 开源项目, 无后门, 白名单, 系统运维, 网络安全, 访问控制, 请求拦截, 逆向工具, 防火墙, 防火墙规则, 隐私保护