# 安恒防火墙-添加黑名单 **Repository Path**: ucu520/AH-FW-black ## Basic Information - **Project Name**: 安恒防火墙-添加黑名单 - **Description**: 安恒防火墙添加黑名单脚本 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-05-13 - **Last Updated**: 2026-06-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AH-FW-black - 安恒防火墙黑名单管理工具 ## 项目简介 本工具用于自动化管理安恒明御防火墙(DAS-TGFW)的黑名单,支持 **IP地址** 和 **域名** 的添加、查询、修改和删除操作。 ### 功能特性 - ✅ **IP黑名单管理**:支持IPv4和IPv6地址的增删改查 - ✅ **域名黑名单管理**:支持域名的增删改查 - ✅ **批量操作**:支持单次添加/删除多个IP或域名 - ✅ **文件同步**:支持从本地文件批量同步黑名单到防火墙 - ✅ **两种认证方式**:支持AuthorizationToken和Bearer Token认证 --- ## 使用方式 ### 命令语法 ```bash [options] [arguments] ``` ### 命令列表 | 命令 | 说明 | |------|------| | `add` | 添加黑名单(IP或域名) | | `get` | 查看黑名单列表 | | `set` | 修改黑名单条目 | | `remove` | 删除黑名单条目 | | `-h/--help` | 显示帮助信息 | ### 详细用法 #### 1. 添加黑名单 ```bash # 添加IP add ip [ip2] [ip3] ... add ip 192.168.1.100 add ip 10.0.0.1 10.0.0.2 10.0.0.3 add ip 1.1.1.1,2.2.2.2,3.3.3.3 # 添加域名 add domain [domain2] ... add domain www.example.com add domain test.com,abc.com ``` #### 2. 查看黑名单 ```bash # 查看所有IP(自动分页获取全部IPv4和IPv6) get ip # 仅查看IPv4 get ipv4 # 仅查看IPv6 get ipv6 # 查看域名 get domain # 分页查看 get ipv4 -page 2 -size 20 get domain -size 50 ``` #### 3. 修改黑名单 ```bash # 修改IP set ip -old 1.1.1.1 -new 2.2.2.2 # 修改域名 set domain -old www.old.com -new www.new.com ``` #### 4. 删除黑名单 ```bash # 删除IP remove ip 1.1.1.1 remove ip 1.1.1.1 2.2.2.2 # 删除域名 remove domain www.example.com remove domain test.com,abc.com ``` #### 5. 同步本地黑名单文件 直接运行程序(不带任何参数),会自动从配置的本地文件同步黑名单到防火墙: ```bash ./ah ``` --- ## 环境要求 ### Go编译环境 ```bash # 查看Go版本 go version # 示例输出 go version go1.22.5 darwin/arm64 ``` ### 依赖说明 本项目仅使用Go标准库,无需额外依赖。 --- ## 项目初始化与编译 ### 1. 克隆项目 ```bash git clone https://gitee.com/ucu520/AH-FW-black.git cd AH-FW-black ``` ### 2. 初始化Go模块(如需要) ```bash go mod init demo3-AH-FW-black go mod tidy ``` ### 3. 编译方式 #### 方式一:使用编译脚本(推荐) ```bash # 查看编译菜单 ./build.sh # 编译全部架构 ./build.sh 00 # 编译特定架构 (1-6对应不同架构) ./build.sh 1 # linux/amd64 ./build.sh 2 # linux/arm64 ./build.sh 3 # windows/amd64 ./build.sh 4 # windows/386 ./build.sh 5 # darwin/amd64 ./build.sh 6 # darwin/arm64 # 设置自定义前缀编译 ./build.sh -000 myfw 00 ``` #### 方式二:手动编译 ```bash # Linux/Mac go build -o ah . # Windows go build -o ah.exe . # 交叉编译 GOOS=linux GOARCH=amd64 go build -o ah-linux-amd64 . GOOS=windows GOARCH=amd64 go build -o ah-windows-amd64.exe . GOOS=darwin GOARCH=arm64 go build -o ah-darwin-arm64 . ``` #### 编译产物 编译成功后,产物位于 `build/` 目录: ``` build/ ├── ah-linux-amd64 ├── ah-linux-arm64 ├── ah-windows-amd64.exe ├── ah-windows-386.exe ├── ah-darwin-amd64 └── ah-darwin-arm64 ``` --- ## 配置说明 首次运行会自动生成 `config.ini` 配置文件: ```ini # 明御防火墙API配置 [AuthorizationType] AuthorizationToken [AuthorizationToken] # 请在此处填写Token值 (注意:Token中如有#号,请勿在行尾添加注释) YourTokenHere [Authorization] # Bearer eyJxxJ9... [server] https://192.168.250.254 [blacklist_file] blackList.txt ``` ### 认证方式配置 #### 方式一:AuthorizationToken(推荐) 在防火墙系统中,编辑管理员账户获取 `apiToken`: ![apiToken配置位置](img/apiToken.png) 配置示例: ```ini [AuthorizationType] AuthorizationToken [AuthorizationToken] your-api-token-here ``` #### 方式二:Authorization(浏览器抓包获取) 通过浏览器F12开发者工具抓包获取: ![Authorization抓包位置](img/Authorization.png) 配置示例: ```ini [AuthorizationType] Authorization [Authorization] Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... ``` ### 服务器配置 ```ini [server] https://your-firewall-ip-or-domain ``` ### 本地黑名单文件 创建 `blackList.txt` 文件,每行一个IP或域名,支持注释(以 `#` 开头): ```txt # IP黑名单 192.168.1.100 10.0.0.1 1.1.1.1 # 域名黑名单 www.example.com malicious.com ``` --- ## 注意事项 1. **HTTPS安全**:本工具默认跳过SSL证书验证,适用于内网环境。生产环境建议配置合法证书。 2. **认证方式二选一**:`AuthorizationType` 只能设置为 `AuthorizationToken` 或 `Authorization`,不可同时启用。 3. **Token有效期**:请定期检查并更新Token,避免因Token过期导致操作失败。 4. **网络可达性**:确保运行本工具的主机能够访问防火墙的API端口(通常为443)。 5. **权限要求**:使用的管理员账户需要有黑名单管理权限。 6. **批量操作限制**:单次批量操作建议不超过100条,避免API请求超时。 --- ## 项目结构 ``` AH-FW-black/ ├── main.go # 主程序入口 ├── config.ini # 配置文件(自动生成) ├── blackList.txt # 本地黑名单文件(自动生成) ├── build.sh # 多架构编译脚本 ├── go.mod # Go模块依赖 ├── img/ # 文档图片 │ ├── Authorization.png │ └── apiToken.png └── README.md # 项目说明文档 ``` --- ## API接口说明 本工具调用以下防火墙API接口: | 接口 | 方法 | 说明 | |------|------|------| | `/api/v1/blacklist` | POST | 添加IP黑名单 | | `/api/v1/blacklist` | GET | 查询IP黑名单 | | `/api/v1/blacklist` | PUT | 修改IP黑名单 | | `/api/v1/blacklist` | DELETE | 删除IP黑名单 | | `/api/v1/domainBlackList` | POST | 添加域名黑名单 | | `/api/v1/domainBlackList` | GET | 查询域名黑名单 | | `/api/v1/domainBlackList` | PUT | 修改域名黑名单 | | `/api/v1/domainBlackList` | DELETE | 删除域名黑名单 | --- ## License MIT License