Firewall Management System
Firewall Management System 是一个基于 Go 和 Vue3 的防火墙管理系统,支持多用户、IP 白名单管理、黑名单管理以及管理员审批流程。通过自动获取用户 IP 地址,简化了 IP 白名单的申请和审批流程。
功能特性
-
用户管理
- 普通用户注册与登录
- 管理员账户管理
- 多级权限控制(普通用户、管理员、超级管理员)
-
IP 白名单管理
- 自动获取用户 IP 地址
- 用户申请 IP 白名单
- 管理员审批 IP 请求
- 自动更新 iptables 规则
-
黑名单管理
- 支持按用户或 IP 封禁
- 自动撤销被封禁用户的 IP 权限
- 实时同步 iptables 规则
-
安全特性
- Cloudflare Turnstile 验证码
- 请求频率限制
- 审计日志记录
- 会话管理加固
-
部署支持
- 支持 Docker 容器化部署
- Systemd 服务管理
- Nginx 反向代理配置
技术栈
-
后端
- Go 1.20+
- Gorilla Mux 路由
- SQLite 数据库
- iptables 规则管理
-
前端
- Vue 3
- Pinia 状态管理
- Vite 构建工具
- Axios HTTP 客户端
-
部署
- Docker
- Systemd
- Nginx
安装与部署
1. 环境要求
- Linux 服务器(推荐 Ubuntu 22.04 LTS)
- Go 1.20+
- Node.js 16+
- SQLite3
- iptables
2. 克隆项目
git clone https://code.kcpot.top/QuarkTree/firewall-system.git
cd firewall-system
3. 配置环境变量
在 backend/config/.env
中配置以下变量:
SESSION_SECRET="your-32byte-secret-key"
CF_SITE_KEY="your-cloudflare-sitekey"
CF_SECRET_KEY="your-cloudflare-secret"
DEFAULT_ADMIN="superadmin"
DEFAULT_ADMIN_PASS="SecurePass123!"
4. 初始化数据库
sqlite3 backend/db/firewall.db < backend/scripts/init_db.sql
5. 初始化管理员账户
chmod +x backend/scripts/init_admin.sh
./backend/scripts/init_admin.sh
6. 构建与运行
后端
cd backend
go mod tidy
go build -o firewall
sudo ./firewall
前端
cd frontend
npm install
npm run build
npx serve -s dist -p 3000
7. 使用 Docker 部署
cd deploy/docker
docker-compose up -d
配置文件
Nginx 配置 (deploy/nginx/firewall.conf
)
server {
listen 80;
server_name firewall.example.com;
location /api {
proxy_pass http://127.0.0.1:8080;
proxy_set_header X-Real-IP $remote_addr;
}
location / {
root /var/www/firewall-frontend;
try_files $uri $uri/ /index.html;
}
}
Systemd 服务文件 (deploy/systemd/firewall.service
)
[Unit]
Description=Firewall Management Service
After=network.target
[Service]
EnvironmentFile=/opt/firewall/config/.env
WorkingDirectory=/opt/firewall/backend
ExecStart=/usr/local/bin/firewall
Restart=always
User=firewall-user
[Install]
WantedBy=multi-user.target
使用指南
1. 用户注册与登录
- 访问
/register
注册新用户 - 访问
/login
登录系统
2. 申请 IP 白名单
- 登录后访问
/user/dashboard
- 点击“申请新 IP”按钮
3. 管理员审批
- 管理员登录后访问
/admin/dashboard
- 查看待审批请求并批准或拒绝
4. 黑名单管理
- 管理员访问
/admin/blacklist
- 添加或移除黑名单条目
API 文档
公共接口
POST /api/register
- 用户注册POST /api/login
- 用户登录
用户接口
POST /api/user/request
- 申请 IP 白名单GET /api/user/requests
- 获取用户请求状态
管理接口
GET /api/admin/requests
- 获取待审批请求POST /api/admin/approve
- 批准或拒绝请求POST /api/admin/blacklist
- 管理黑名单
贡献指南
欢迎提交 Issue 和 Pull Request!
请确保代码风格一致,并通过所有测试。
许可证
本项目采用 MIT 许可证。
Languages
Vue
52.3%
Go
22%
JavaScript
19.6%
Shell
3.1%
Dockerfile
3%