适用环境: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→ 切换镜像源(使用 LinuxMirrors):首次安装必做,将系统 yum 源换为国内源,解决后续依赖下载慢问题 - 输入
2→ 源码安装(支持 CentOS 7/8,Ubuntu 20.04,区分国内外环境) :选择「国内环境」,脚本自动完成:- 安装 Docker(用国内源,解决安装失败)
- 拉取 ARL 源码、配置环境
- 启动 ARL Web 服务、Worker 服务
- (可选)输入
5→ 添加指纹(默认 7k+ 指纹,仅限源码安装):安装完成后执行,补充大量指纹规则,提升资产识别、漏洞扫描准确率 - (可选)输入
6→ 安装 ARL 管理面板 :安装可视化管理面板,输入arl命令即可唤起,方便管理服务 - 输入
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 小节,修改监听地址为
0.0.0.0 - 关闭防火墙 / 放行 5003 端口
- 用内网 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
九、关键知识点总结(帮你彻底理解原理)
- IP 地址原理 :
192.168.x.x是内网 IP,仅局域网内可访问- 公网 IP 是运营商给家庭 / 服务器的出口 IP,需端口映射才能访问内网设备
- 端口监听原理 :
127.0.0.1:5013:仅本地可访问,外部无法连接0.0.0.0:5003:监听所有网卡,所有设备可访问
- 防火墙原理 :
- firewalld 是 CentOS 用户态防火墙,SELinux 是内核态防火墙,两者都会拦截网络请求
- 反向代理原理 :
- Nginx 监听 5003 端口,将请求转发到 ARL 的 5013 端口,实现外网访问