ARL(资产灯塔)从 Docker 安装到部署启动 完整详细流程(复习专用)

适用环境:CentOS 7 系统,本地虚拟机 / 物理机,全程可落地,每一步都标注避坑点,适合复习复盘


一、前置准备:系统环境检查

1. 系统版本确认

bash

运行

复制代码
# 确认CentOS 7系统
cat /etc/redhat-release
# 输出示例:CentOS Linux release 7.9.2009 (Core)

避坑:ARL 源码安装仅支持 CentOS 7/8、Ubuntu 20.04,其他版本会出现依赖问题

2. 关闭防火墙与 SELinux(避免端口拦截)

bash

运行

复制代码
# 1. 关闭firewalld防火墙(永久生效,重启不恢复)
systemctl stop firewalld
systemctl disable firewalld

# 2. 临时关闭SELinux(立即生效)
setenforce 0
# 3. 永久关闭SELinux(重启后生效,避免后续拦截)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 4. 验证状态(确认关闭)
getenforce
# 输出:Disabled 即为成功

避坑:SELinux 是 CentOS 隐藏防火墙,即使 firewalld 关闭,也会拦截网络请求,必须关闭


二、Docker 安装(CentOS 7 国内源方案,解决官方源超时)

1. 安装依赖包(解决 yum 锁问题)

bash

运行

复制代码
# 1. 解决yum锁(PackageKit占用导致的报错)
kill -9 $(ps -ef | grep PackageKit | grep -v grep | awk '{print $2}')
rm -f /var/run/yum.pid

# 2. 安装Docker依赖
yum install -y yum-utils device-mapper-persistent-data lvm2 curl
# 输出:无须任何处理 即为依赖已安装成功

避坑:CentOS 7 默认会后台运行 PackageKit 自动更新,会占用 yum 锁,必须先杀进程删锁文件

2. 配置 Docker 国内镜像源(阿里云,解决官方源连接失败)

bash

运行

复制代码
# 1. 添加阿里云Docker CE源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 2. 替换源地址为阿里云(确保后续安装走国内镜像)
sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

# 3. 清理yum缓存并重建
yum clean all
yum makecache fast

避坑:直接用官方源https://download.docker.com会被墙,导致connection reset by peer,必须用国内源

3. 安装 Docker 引擎

bash

运行

复制代码
# 安装Docker CE、CLI、containerd.io、docker-compose插件
yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 验证安装成功
docker --version
# 输出示例:Docker version 26.1.0, build 9714adc

4. 启动 Docker 并设置开机自启

bash

运行

复制代码
# 启动Docker服务
systemctl start docker
# 设置开机自启
systemctl enable docker

# 验证服务状态
systemctl status docker
# 输出:active (running) 即为正常

5. 配置 Docker 镜像加速器(可选,提升拉取速度)

bash

运行

复制代码
# 创建Docker配置目录
mkdir -p /etc/docker
# 写入加速器配置(科大镜像,国内稳定)
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn", "https://hub-mirror.c.163.com"]
}
EOF

# 重载配置并重启Docker
systemctl daemon-reload
systemctl restart docker

# 验证加速器生效
docker info
# 找到 Registry Mirrors 字段,显示配置的镜像地址即为成功

三、ARL(资产灯塔)部署(源码自动化脚本方案,零手动配置)

1. 下载 ARL 自动化部署脚本

bash

运行

复制代码
# 1. 安装git(如果未安装)
yum install -y git

# 2. 克隆ARL社区维护版源码(国内Gitee镜像,避免GitHub访问失败)
git clone https://gitee.com/Aabyss-Team/ARL.git
cd ARL

避坑:原官方仓库TophantTechnology/ARL已删除,必须用社区维护版,否则下载失败

2. 执行自动化部署脚本

bash

运行

复制代码
# 给脚本执行权限
chmod +x misc/setup-arl.sh
# 执行脚本
./misc/setup-arl.sh
脚本菜单操作步骤(按顺序执行):
  1. 输入 1 → 切换镜像源(使用 LinuxMirrors):首次安装必做,将系统 yum 源换为国内源,解决后续依赖下载慢问题
  2. 输入 2 → 源码安装(支持 CentOS 7/8,Ubuntu 20.04,区分国内外环境) :选择「国内环境」,脚本自动完成:
    • 安装 Docker(用国内源,解决安装失败)
    • 拉取 ARL 源码、配置环境
    • 启动 ARL Web 服务、Worker 服务
  3. (可选)输入 5 → 添加指纹(默认 7k+ 指纹,仅限源码安装):安装完成后执行,补充大量指纹规则,提升资产识别、漏洞扫描准确率
  4. (可选)输入 6 → 安装 ARL 管理面板 :安装可视化管理面板,输入arl命令即可唤起,方便管理服务
  5. 输入 7 → 退出脚本

脚本执行完成后,会输出:

plaintext

复制代码
ARL 安装完成!
ARL 管理面板已安装成功
使用arl命令就可唤起面板
ARL 访问地址:https://192.168.1.4:5003(你的服务器内网IP)
用户名:admin
初始密码:xxxxxx(随机生成,务必保存)

四、ARL 服务配置与端口监听修复(解决公网 / 内网访问失败)

1. 核心问题:默认仅本地监听,需修改配置对外访问

bash

运行

复制代码
# 1. 进入ARL配置目录
cd /opt/ARL/app
# 2. 备份原配置(防止出错)
cp config.py config.py.bak
# 3. 修改配置:监听所有网卡、端口5003、关闭SSL(用HTTP访问)
sed -i 's/host = "127.0.0.1"/host = "0.0.0.0"/' config.py
sed -i 's/port = 5013/port = 5003/' config.py
sed -i 's/ssl = True/ssl = False/' config.py

# 4. 重启ARL服务,让配置生效
systemctl restart arl-web.service
systemctl restart arl-worker.service

# 5. 验证端口监听(关键!必须显示*:5003)
ss -tulnp | grep 5003
# 正常输出:
# tcp    LISTEN     0      128       *:5003                  *:*                   users:(("nginx",pid=xxxx,fd=7),...)

避坑:脚本默认将 ARL 绑定到127.0.0.1:5013,仅本地可访问,必须修改为0.0.0.0:5003,否则外网 / 其他设备无法访问

2. 验证服务状态

bash

运行

复制代码
# 检查ARL Web服务状态
systemctl status arl-web.service
# 检查ARL Worker服务状态
systemctl status arl-worker.service
# 输出:active (running) 即为正常

五、ARL 访问与登录

1. 内网访问(本地虚拟机 / 局域网内)

  • 访问地址:http://你的服务器内网IP:5003(示例:http://192.168.1.4:5003
  • 用户名:admin
  • 初始密码:脚本随机生成(若忘记,可在/opt/ARL/app/config.py中查看ADMIN_PASSWORD字段)

避坑:不要用公网 IP 访问本地虚拟机,会因路由器端口未映射导致超时,必须用内网 IP

2. 公网访问(可选,需路由器端口映射)

如果需要在外网访问,需在家庭路由器中配置端口映射

  • 内网 IP:192.168.1.4(你的虚拟机 IP)
  • 内网端口:5003
  • 外网端口:5003
  • 协议:TCP

配置完成后,即可用公网 IP 访问:http://你的公网IP:5003


六、常见问题排查(复习重点,踩坑解决方案)

1. yum 锁问题(PackageKit 占用)

报错/var/run/yum.pid 已被锁定,PID 为 xxxx 的另一个程序正在运行解决

bash

运行

复制代码
kill -9 $(ps -ef | grep PackageKit | grep -v grep | awk '{print $2}')
rm -f /var/run/yum.pid

2. Docker 源连接失败

报错Could not fetch/save url https://download.docker.com/linux/centos/docker-ce.repo解决:用阿里云源重新配置,执行步骤二的 2 小节

3. 端口访问超时(ERR_CONNECTION_TIMED_OUT)

原因

  • 服务仅监听127.0.0.1,未对外监听
  • 防火墙 / 安全组未放行 5003 端口
  • 用公网 IP 访问本地虚拟机,未做端口映射解决
  1. 执行步骤四的 1 小节,修改监听地址为0.0.0.0
  2. 关闭防火墙 / 放行 5003 端口
  3. 用内网 IP 访问,或配置路由器端口映射

4. Telnet 命令无法识别(Windows)

报错telnet : 无法将"telnet"项识别为 cmdlet解决:用 PowerShell 自带的端口测试命令:

powershell

复制代码
Test-NetConnection 你的服务器IP -Port 5003
# 输出:TcpTestSucceeded : True 即为端口通

5. Nginx 反向代理问题(端口监听正常但无法访问)

原因 :Nginx 配置错误,未正确转发到 ARL 的 5013 端口解决

bash

运行

复制代码
# 编辑Nginx配置
vi /etc/nginx/conf.d/arl.conf
# 写入正确配置
server {
    listen 5003;
    server_name _;
    location / {
        proxy_pass http://127.0.0.1:5013;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

# 验证配置并重启Nginx
nginx -t
systemctl restart nginx

七、登录后必做操作(安全 + 功能优化)

1. 第一时间修改初始密码

登录后进入「个人中心」→「修改密码」,更换强密码,避免被暴力破解

2. 更新指纹库

进入「系统设置」→「指纹管理」→「更新指纹」,获取最新的资产识别规则,提升扫描准确率

3. 熟悉核心功能

  • 资产发现:批量扫描网段,梳理内网 / 公网资产
  • 漏洞扫描:集成 POC,一键扫描目标漏洞
  • 子域名收集:自动化收集站点子域名,信息收集神器
  • 端口扫描:全端口快速扫描,定位开放服务

4. 定期备份数据

bash

运行

复制代码
# 备份ARL数据库(MongoDB)
mongodump -h 127.0.0.1:27017 -d arl -o /opt/arl_backup/$(date +%Y%m%d)

八、ARL 服务管理命令(日常运维)

bash

运行

复制代码
# 启动ARL服务
systemctl start arl-web.service
systemctl start arl-worker.service

# 停止ARL服务
systemctl stop arl-web.service
systemctl stop arl-worker.service

# 重启ARL服务
systemctl restart arl-web.service
systemctl restart arl-worker.service

# 查看ARL服务状态
systemctl status arl-web.service
systemctl status arl-worker.service

# 查看ARL日志
journalctl -u arl-web.service -f
journalctl -u arl-worker.service -f

# 唤起ARL管理面板
arl

九、关键知识点总结(帮你彻底理解原理)

  1. IP 地址原理
    • 192.168.x.x 是内网 IP,仅局域网内可访问
    • 公网 IP 是运营商给家庭 / 服务器的出口 IP,需端口映射才能访问内网设备
  2. 端口监听原理
    • 127.0.0.1:5013:仅本地可访问,外部无法连接
    • 0.0.0.0:5003:监听所有网卡,所有设备可访问
  3. 防火墙原理
    • firewalld 是 CentOS 用户态防火墙,SELinux 是内核态防火墙,两者都会拦截网络请求
  4. 反向代理原理
    • Nginx 监听 5003 端口,将请求转发到 ARL 的 5013 端口,实现外网访问
相关推荐
七七powerful20 小时前
Kubernetes 弹性伸缩(HPA)设计思想深度解析
云原生·容器·kubernetes
IMPYLH20 小时前
Linux 的 shuf 命令
linux·运维·服务器·bash
SPC的存折20 小时前
Cisco Packet Tracer 8.0 上的 VLAN 综合实验报告
运维·网络
雨奔20 小时前
Kubernetes Pod Preset 详解:自动注入 Pod 配置的高效方案
云原生·容器·kubernetes
Cat_Rocky21 小时前
网络技术基础一点点
运维·服务器·网络
Agent产品评测局21 小时前
混合云架构适配:企业级智能体灵活部署完整方案与最佳实践 | 2026企业自动化选型硬核指南
运维·人工智能·ai·chatgpt·架构·自动化
爱编程的陶老师21 小时前
K8s是什么?——第一集:从“搬箱子”到“自动化仓库”的革命
容器·kubernetes·自动化
舰长11521 小时前
nginx常用配置反向代理配置
运维·websocket·nginx
要做一个小太阳21 小时前
Consul SD 常见标签
运维·数据库·consul
郝开21 小时前
Docker Compose 本地环境搭建:独立 Compose + 共享网络 + .env 统一管理(架构设计篇)
网络·docker·容器