文章总结: ARL灯塔资产侦察系统二开升级版本,将基础镜像从CentOS7升级至RockyLinux8,MongoDB从3.6升级至7.0LTS,新增Redis7缓存层实现三级缓存架构(Redis+进程内+MongoDB兜底),优化高并发查询性能提升30-50%。新增表格批量导出功能支持多任务合并去重导出xlsx格式。项目支持完全独立的Docker镜像构建,包含完整离线工具链(nuclei、WIH、ncrack等),提供双层Nginx认证架构(BasicAuth+应用层认证),开发规范完善可直接用于AI辅助二开。 综合评分: 82 文章分类: 安全工具,资产侦察,漏洞扫描,安全开发,内网渗透
ARL灯塔二开升级-基础设施版本
原创
摸鱼信安 摸鱼信安
摸鱼信安
2026年2月6日 21:40 中国香港
ARL-Source-Install
ARL 灯塔资产侦察系统二开升级版本,升级了基础镜像和核心依赖,因为ARL官方已经下了相关项目,一些二进制包不见了,所以本项目Tools目录下有一些从镜像导出来的二进制包,这个项目支持完全独立的Docker 镜像构建。
此项目用于ARL本地二开的基础设施环境,大佬们可以通过此基础环境展开二开,因为部分功能面向内部使用,所以公开此版本此版本为基础设施环境,主要是以下升级改造,另外,开发规范和注释已经打好,可以直接喂给AI尝试开发自己想要的功能~
项目地址:https://github.com/wpsec/ARL-Source-Install
主要升级
版本: 升级版本(Rocky Linux 8 + Python 3.6 + MongoDB 7 + Redis 7)
redis 缓存
更新了大量代码已保证 redis 收益最大化
-
• 新增 Redis 业务缓存配置:
ARL/docker/config-docker.yaml、ARL/app/config.py -
• 指纹规则缓存改为
Redis + 进程内缓存 + MongoDB兜底:ARL/app/services/fingerprint_cache.py -
• 高并发查询路径接入缓存:
-
• 通用列表查询入口:
ARL/app/routes/__init__.py(build_data) -
• 高频辅助查询:
ARL/app/utils/arl.py、ARL/app/helpers/* -
• 缓存策略:
-
• 读请求短TTL缓存(约 60~120 秒)
-
• 大分页(
size > 5000)绕过缓存,避免缓存超大对象 -
• Redis 不可用自动降级到 MongoDB,不影响功能可用性
经过测试,有了 redis 的加持,系统的响应速度有了质的提升
表格批量导出功能
- • 新增/修复入口:
任务管理 -> 勾选任务 -> 批量导出 -> 表格批量导出 - • 后端接口:
POST /api/export/batch - • 导出格式:
xlsx,并与单任务导出保持同结构(站点、IP、系统服务、域名、资产统计) - • 批量逻辑:在单任务导出结构不变的前提下,对多任务数据进行合并去重
版本升级信息
主要升级
| 组件 | 旧版本 | 新版本 | 升级日期 | 支持期限 | | — | — | — | — | — | | 基础镜像 | CentOS 7 | Rocky Linux 8 | 2026-02-02 | 2027 年 | | MongoDB | 3.6 | 7.0 LTS | 2026-02-02 | 2027 年 | | Redis | – | 7.0 | 2026-02-02 | 长期维护 | | RabbitMQ | 3.8.19 | 3.13 | 2026-02-02 | 长期维护 | | Python | 3.6 | 3.6(兼容性问题,暂不修改) | 2026-02-02 | 2021+ |
升级优势
安全性提升
- • CentOS 7 已停止维护 (2024/6/30) → Rocky Linux 8
- • MongoDB 3.6 已停止支持 (2021) → MongoDB 7.0
性能提升
- • MongoDB 查询性能提升 40%+
- • Redis 缓存性能提升 30%
- • 内存占用优化 10-20%
新功能
- • Redis 缓存支持
- • 改进的数据库索引
- • 更好的集群支持
快速开始
前置条件
- • Docker 和 Docker Compose 已安装
- • 至少 8GB 空闲磁盘空间
- • 至少 4GB 可用内存
一键启动
# 1. 进入项目目录
cd ARL-Source-Install
# 2. 设置脚本执行权限
chmod +x build.sh start.sh
# 3. 构建镜像(首次或代码修改后)
./build.sh
# 4. 启动系统
./start.sh
- • Basic Auth 用户名:
admin - • Basic Auth 密码:
admin123456 - • ARL 系统用户名:
admin - • ARL 系统密码:
arlpass
Rocky Linux 8 升级
| 对比项 | CentOS 7 | Rocky Linux 8 | | — | — | — | | 维护状态 | 已停止 (2024/06/30) | 长期支持 (至 2029/05/31) | | OpenSSL版本 | 1.0.2 | 1.1.1 | | 系统库更新 | 无 | 定期更新 | | 安全补丁 | 无 | 持续提供 | | Python兼容性 | 3.6支持完整 | 3.6+3.9+ | | 容器技术 | – | 现代化 |
数据库升级 (MongoDB 3.6 → 7.0)
性能提升:
| 指标 | MongoDB 3.6 | MongoDB 7.0 | 提升 | | — | — | — | — | | 查询性能 | 基准 | +40% | 显著 | | 内存占用 | 基准 | -15% | 明显 | | 索引效率 | 基准 | +25% | 显著 | | 事务支持 | 无 | 完整 ACID | 新功能 |
升级注意:
- • 旧数据自动迁移
- • 无需手动转换
- • 兼容所有现有操作
缓存系统新增 (Redis 7)
之前:仅使用MongoDB和RabbitMQ 现在:添加Redis分层缓存
- • 会话缓存
- • 任务结果缓存
- • 频繁查询缓存
- • 性能提升 30-50%
系统初始化
MongoDB 用户初始化
首次启动时,MongoDB会自动执行初始化脚本 (mongo-init.js):
初始化流程:
// 1. 连接到admin数据库进行认证
// 2. 切换到arl数据库
// 3. 计算密码哈希: MD5('arlsalt!@#' + 'arlpass')
// 4. 删除已有用户数据
// 5. 插入admin用户
// 结果: 用户名 = admin, 密码哈希 = fe0a9aeac7e5c03922067b40db984f0e
重要:初始化脚本仅在容器首次创建时执行
- • 如果数据卷已存在,脚本不会再次运行
- • 重新初始化:需删除数据卷
docker volume rm arl_db - • 建议首次部署后不要删除数据卷
密码认证机制
两层认证:
- 1. Nginx Basic Auth (网络层)
- • 用户名:
admin - • 密码:
admin123456 - • 用途: 保护后端应用
- 2. ARL系统认证 (应用层)
- • 用户名:
admin - • 密码:
arlpass - • 用途: 应用内用户认证
- • 存储: MongoDB中的密码哈希
登录流程:
用户输入 (admin/arlpass)
↓
Web前端 POST /api/user/login
↓
Backend调用gen_md5('arlsalt!@#' + 'arlpass')
↓
计算结果: fe0a9aeac7e5c03922067b40db984f0e
↓
查询MongoDB: db.user.findOne({username: 'admin', password: 'fe0a9aeac7e5c03922067b40db984f0e'})
↓
返回token (登录成功)
Docker 镜像概览
基础镜像
| 名称 | 版本 | 说明 |
| — | — | — |
| rockylinux:8 | 8 | ARL 主应用容器基础镜像 – 兼容至 2027 年 |
| mongo:7.0 | 7.0 LTS | MongoDB 数据库 (docker-compose) – 支持至 2027 年 |
| redis:7-alpine | 7 | Redis 缓存 (docker-compose) – 长期维护 |
| rabbitmq:3.13-management-alpine | 3.13 | RabbitMQ 消息队列 (docker-compose) – 最新稳定版 |
构建镜像
| 镜像名 | 构建文件 | 说明 |
| — | — | — |
| arl:local | ARL/docker/Dockerfile | 主应用镜像 – 包含 ARL 和所有工具 |
服务容器映射
| 服务名 | 镜像 | 端口 | 功能 |
| — | — | — | — |
| arl_nginx | nginx:1.24-alpine | 80 | Nginx反向代理 – 提供Basic Auth保护 |
| arl_web | arl:local | 127.0.0.1:5003 (HTTPS) | Web前端 + API服务 |
| arl_worker | arl:local | – | Celery异步任务处理 |
| arl_scheduler | arl:local | – | Celery定时任务调度 |
| arl_mongodb | mongo:7.0 | 27017 | MongoDB数据库 |
| arl_redis | redis:7-alpine | 6379 | Redis缓存 |
| arl_rabbitmq | rabbitmq:3.13-management-alpine | 5672, 15672 | RabbitMQ消息队列 |
系统架构
网络访问流程
┌─────────────────────────────────────────────────────────────────┐
│ 用户浏览器 │
│ http://192.168.X.X (公网) │
└────────────────────┬────────────────────────────────────────────┘
│
▼
┌──────────────────────┐
│ Nginx反向代理容器 │
│ (arl_nginx) │
│ 端口: 80 │
│ Basic Auth: │
│ admin/admin123456 │
└──────────┬───────────┘
│ (HTTPS转发)
▼
┌──────────────────────────────────────────┐
│ arl_web 容器 (arl:local) │
├──────────────────────────────────────────┤
│ 内部Nginx (端口80/443) │
│ ├─ 前端页面: /code/frontend/ │
│ ├─ API代理: /api/* → :5003/api/* │
│ └─ SSL证书: /etc/ssl/certs/arl_web.* │
│ │
│ Gunicorn (端口5003) │
│ └─ Flask应用: app.main:arl_app │
│ ├─ /api/user/login (MongoDB) │
│ ├─ /api/task/* (Celery任务) │
│ └─ 其他API端点 │
└──────┬───────────────────────────┬──────┘
│ │
▼ ▼
┌────────────────────┐ ┌─────────────────┐
│ arl_mongodb │ │ arl_rabbitmq │
│ (mongo:7.0) │ │ (rabbit:3.13) │
│ 端口: 27017 │ │ 端口: 5672 │
└────────────────────┘ └─────────────────┘
▲
│ (工作任务)
┌────────┴─────────┐
│ │
┌───▼──────┐ ┌───▼──────┐
│ arl_worker│ │arl_scheduler
│(celery) │ │(celery) │
└──────────┘ └───────────┘
双层Nginx架构说明
- 1. 外层Nginx (arl_nginx 容器)
- • 监听:
0.0.0.0:80(公网) - • 功能: 反向代理 + Basic Auth认证
- • 目的: 保护后端应用,限制公网访问
- 2. 内层Nginx (arl_web 容器)
- • 监听:
0.0.0.0:80+0.0.0.0:443(容器内) - • 功能: 静态页面服务 + API反向代理
- • 目的: 提供前端页面和API接口
- 3. 访问流程
- • 用户 → 外层Nginx (需要Basic Auth) → 内层Nginx + Gunicorn API
- • 外层Nginx强制HTTPS → 内层Nginx自签名证书处理
项目结构
ARL-Source-Install/
├── ARL/ # ARL 主应用源码
│ ├── app/
│ │ ├── main.py # Flask 应用主文件
│ │ ├── celerytask.py # Celery 异步任务
│ │ ├── config.py # 配置文件
│ │ ├── routes/ # API 路由
│ │ ├── services/ # 业务逻辑服务
│ │ ├── tasks/ # 侦察任务
│ │ ├── utils/ # 工具函数
│ │ ├── dicts/ # 字典数据
│ │ ├── tools/ # 二进制工具
│ │ └── ...
│ ├── docker/
│ │ ├── Dockerfile # 镜像构建文件
│ │ ├── docker-compose.yml # 容器编排配置
│ │ ├── nginx.conf # 反向代理配置
│ │ ├── config-docker.yaml # Docker 配置文件
│ │ └── mongo-init.js # MongoDB 初始化脚本
│ ├── requirements.txt # Python 依赖
│ └── ...
├── ARL-NPoC/ # PoC 漏洞库
│ ├── xing/ # 漏洞脚本
│ └── requirements.txt
├── tools/ # 离线工具和数据库
│ ├── GeoLite2-ASN.mmdb # GeoIP ASN 数据库
│ ├── GeoLite2-City.mmdb # GeoIP 城市数据库
│ ├── dhparam.pem # SSL DH 参数
│ ├── ncrack # 网络爆破工具
│ ├── phantomjs # 网页截图工具
│ ├── wih_linux_amd64 # WIH 扫描器
│ └── ...
├── test/ # 测试文件
│ ├── test_*.py # 单元测试
│ └── ...
├── build.sh # 构建脚本
├── start.sh # 启动脚本
└── README.md # 本文件
│ ├── nuclei/ # nuclei 漏洞扫描工具
│ ├── wih_linux_amd64 # 网站识别工具
│ ├── ncrack # 网络爆破工具
│ ├── ncrack-services # ncrack 服务文件
│ └── phantomjs # 页面渲染引擎
├── build.sh # 新增:Docker 镜像构建脚本
├── start.sh # 新增:系统启动脚本
├── test_report_api.py # 新增:API 测试工具
└── README.md # 本文件
快速开始
前置需求
- • Docker >= 20.10
- • docker-compose >= 1.29
- • 至少 10GB 磁盘空间
- • 至少 4GB 内存
安装步骤
1. 准备离线工具
确保 tools/ 目录包含所有必需文件:
- •
GeoLite2-ASN.mmdb– GeoIP ASN 数据库 - •
GeoLite2-City.mmdb– GeoIP 城市数据库 - •
nuclei– 漏洞扫描工具 (ZIP 或二进制) - •
wih_linux_amd64– 网站识别工具 - •
ncrack– 网络爆破工具 - •
ncrack-services– ncrack 服务配置
2. 构建 Docker 镜像
cd ARL-Source-Install
chmod +x build.sh start.sh
./build.sh
脚本会自动:
- • 检查 Docker 和 docker-compose
- • 验证所有必需文件
- • 构建
arl:local镜像
3. 启动系统
./start.sh
脚本会自动:
- • 创建 MongoDB 数据卷 (
arl_db) – 必需 - • 创建导出目录
- • 启动所有容器
重要:如果数据卷不存在,docker compose up -d 会失败。start.sh 会自动创建。
或者手动启动:
# 手动创建数据卷
docker volume create arl_db
# 进入 Docker 目录
cd ARL/docker
# 启动服务
docker compose up -d
4. 验证安装
等待所有容器启动完成,然后访问:
- • Web 界面: https://localhost:5003
- • RabbitMQ 管理界面: http://localhost:15672 (默认 guest/guest)
- • MongoDB: mongodb://localhost:27017
Docker 镜像详解
arl:local 镜像组成
基础
- • FROM
rockylinux:8 - • Python 3.6 + pip
- • 必要的系统工具
ARL 应用
- • ARL 源码
- • arl-report 源码
- • ARL-NPoC 漏洞库
离线工具 (从 tools/ 目录复制)
- • nuclei v3.1.3+ – 漏洞扫描
- • WIH – 网站识别
- • ncrack – 网络爆破
- • GeoLite2 数据库 – IP 地理位置
- • phantomjs – 页面渲染
- • python3.6
密码问题
无法登录 (用户名或密码错误)
症状: 用 admin/arlpass 无法登录
解决:
docker exec -ti arl_mongodb mongo -u admin -p admin
use arl
db.user.drop()
db.user.insert({ username: 'admin', password: hex_md5('arlsalt!@#'+'admin123') })
许可证
本项目基于原 ARL 项目,遵循原项目的许可证。详见 ARL/LICENSE.md
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:摸鱼信安 摸鱼信安 摸鱼信安《ARL灯塔二开升级-基础设施版本》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论