somethingwithproof/cloudflare-ufw-sync
GitHub: somethingwithproof/cloudflare-ufw-sync
这是一个能够自动将Cloudflare IP范围同步到Linux UFW防火墙规则的Python工具,旨在确保只有Cloudflare的流量可以访问服务器。
Stars: 0 | Forks: 0
# Cloudflare UFW Sync
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[](https://github.com/psf/black)
[](https://github.com/thomasvincent/cloudflare-ufw-sync/actions/workflows/tests.yml)
[](https://pypi.org/project/cloudflare-ufw-sync/)
企业级 Cloudflare IP 与 UFW 同步工具。
## 概述
`cloudflare-ufw-sync` 是一个强大的工具,旨在自动将 Cloudflare 的 IP 范围与您的 UFW (Uncomplicated Firewall) 规则同步。这确保了只有来自 Cloudflare 网络的流量被允许访问您的 Web 服务器。
## 架构

## 功能
- 🔄 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, 开源项目, 无后门, 白名单, 系统运维, 网络安全, 访问控制, 请求拦截, 逆向工具, 防火墙, 防火墙规则, 隐私保护