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 端口,实现外网访问
相关推荐
IMPYLH2 小时前
Linux 的 id 命令
linux·运维·服务器·bash
xlq223222 小时前
37 内核与用户_信号
linux·运维·服务器
kaico20182 小时前
Jenkins Shared Library 开发
运维·jenkins
小江的记录本2 小时前
【Docker】Docker系统性知识体系与命令大全(镜像、容器、数据卷、网络、仓库)
java·网络·spring boot·spring·docker·容器·eureka
wuxingge2 小时前
docker部署私人影音库Plex
docker·容器
yuanlaile3 小时前
Linux Docker、Swarm、K8s分布式部署全集解析
linux·docker·kubernetes·k8s实战
dajun1811234563 小时前
信息系统运维管理全流程详解 在线画图工具绘制运维流程图表技巧
运维·数据库·信息可视化·流程图·旅游·论文笔记
PyHaVolask3 小时前
Linux实用工具与技巧
linux·运维·chrome
不才小强3 小时前
Linux开发环境搭建指南
linux·运维·服务器