Docker快速部署可视化防火墙工具:使用go语言开发,底层是iptables,提供API调用
一、简介
- 该工具相关接口使用go语言开发,高性能,资源占用低,前端页面使用Ant Design Pro开发,简洁美观
- 底层基于iptables,可以针对不同的IP、不同协议进行有效拦截
- 支持定时封禁控制,到期自动释放
- 提供相关API接口,方便接入风控检测系统,进行精准攻击拦截与控制
- 开源地址参考:github.com/luler/hello_firewall
- 本工具运行原理概览可参考下图:
二、安装
只能在基于iptables防火墙的Linux主机上使用,大多数Linux主机都是自带iptables防火墙工具的,如果没有,可自行安装
准备好Docker、docker-compose软件环境
新建docker-compose.yml配置文件,内容如下:
version: "3" services: hello_firewall: image: ghcr.io/luler/hello_firewall:latest privileged: true network_mode: host restart: always environment: - TZ=Asia/Shanghai #时区 - PORT=3000 #服务端口 - ADMIN_NAME=admin #管理员账号 - ADMIN_PASSWORD=admin #管理员登录密码 - JWT_EXPIRE=7200 #访问token过期时间,单位秒 - JWT_SECRET=Hw_KtnqHJ #页面访问token加密秘钥,自定义一个复杂的 - IPTABLES_TARGET_CHAINS=INPUT,DOCKER-USER #iptables目标链,如果不清楚不需要修改 - DATABASE_DEFAULT_DRIVER=sqlite #数据库驱动 - DATABASE_DEFAULT_NAME=runtime/hello_firewall.sqlite #数据库文件路径 volumes: - ./runtime:/app/runtime
新建配置文件完毕后,可在配置文件目录直接运行下面命令启动
docker-compose up -d
三、卸载
- 第一步:停止并删除容器
docker-compose down
- 第二步:清理iptables链
iptables-save | grep -i "hello-firewall" | grep -v "^:HELLO-FIREWALL" | sed 's/^-A \([^ ]*\) \(.*\)/-D \1 \2/' | \ (xargs -L1 iptables 2>/dev/null || true) && (iptables -F HELLO-FIREWALL 2>/dev/null || true) \ && (iptables -X HELLO-FIREWALL 2>/dev/null || true)
四、使用示例
1. 登录可视化界面操作
- 访问地址:127.0.0.1:3000/ ,登录账号密码就是docker-compose.yml文件配置的ADMIN_NAME、ADMIN_PASSWORD,默认都是:admin
- 可以在线查询、添加、删除、禁用封禁项目
2. 使用API接口
2.1 获取授权接口
- 接口:/api/login
- 请求方法:POST
- 请求参数:
{ "name": "admin", //账号 "password": "admin" //密码 }
- 返回结果:
{ "code": 200, "data": { "jwtExpire": 7200, //有效期,单位秒 "token": "eyJhbGciOiJIUzI1NiXXXXXXX", //授权凭证 "type": "Bearer" }, "message": "登录成功" }
2.2 封禁ip接口
- 接口:/api/banIp
- 请求方法:POST
- 请求头:
Authorization=token - 请求参数:
{ "ips": "127.0.0.1", //ip数据,多个用英文逗号隔开,格式:127.0.1,192.168.1.1 "protocol": "tcp", //封禁协议,不传-全部协议,指定协议:tcp udp icmp "port": 8080, //封禁端口号,0-全端口(默认),1-65535(指定端口,传封禁协议时才有效) "expiredAt": "2025-06-31 15:04:05", //过期时间,不传则无过期时间,格式:2006-01-02 15:04:05 "reason": "封禁原因" //封禁原因 }
- 返回结果
{ "code": 200, "data": [], "message": "封禁IP成功" }
2.3 更多接口使用逻辑与后台页面接口一致,如查询、删除、启用禁用等接口,可自行获取…
五、总结
- Docker一键部署,并且提供界面和API,使用起来更加灵活与方便
- 该工具功能仅专注于IP封禁,可以作为组件接入系统风险感知系统,如配合接口日志分析系统挖掘并封禁风险IP、业务代码识别并封禁IP、AI防火墙等等
临时演示使用地址可参考:cas.luler.top/?search=685982c3f0e0...
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: