你的License Server正在公网上被扫描。
这不是危言耸听。27000是FlexNet的默认端口,互联网上的扫描器每天都在扫。一旦发现开放的27000端口,攻击者就知道你跑了个FlexNet服务。FlexNet Publisher(原名FLEXlm)的组件(lmgrd、lmadmin及各个vendor daemon)从未被设计用于部署在互联网或公有云上。
这篇文章不讲虚的,直接说怎么检测、怎么封堵。
把License Server暴露在公网上,风险不只是“有人会连进来”这么简单。
风险一:历史漏洞多,攻击成本低
FlexNet历史上曝出过多个高危漏洞,而且很多不需要认证就能利用。
2011年爆出的ZDI-11-244漏洞,允许远程攻击者在FlexNet License Server Manager(lmadmin)上执行任意代码。攻击者利用lmgrd或lmadmin默认监听的27000端口,发送一个特制的数据包,就能在服务器上执行任意命令。这个漏洞的CVSS评分是9.0(高危) 。
类似的漏洞还有CVE-2018-20032和CVE-2018-20034,攻击者可以通过发送特定消息让lmgrd和vendor daemon之间的心跳停止,导致服务瘫痪。CVE-2020-12081允许攻击者通过lmadmin的Web门户访问系统文件或其他敏感文件。
这些漏洞的利用条件只有一个:攻击者能访问到你的License Server端口。不需要账号密码,不需要内网权限。
风险二:信息泄露
即使攻击者不利用漏洞,仅仅通过端口扫描和banner抓取,就能获取你的License Server版本信息、运行的操作系统类型等。这些信息为后续的定向攻击提供了依据。
某些许可证管理界面(如HPE AutoPass License Server的Web界面)如果暴露在公网上,攻击者可以直接访问管理面板。历史上甚至出现过使用硬编码凭证(hard-coded credentials)绕过认证的案例。
风险三:拒绝服务攻击
攻击者不需要入侵,只需要持续发送大量无效请求,就能让lmgrd或vendor daemon过载,导致合法用户无法签出许可证。这种攻击成本极低,但破坏性很大。

检测分两步:先确认内网暴露情况,再从外网验证。
方法一:查看端口监听地址(最重要)
在License Server上执行:
bash
# Linux
netstat -tulnp | grep -E "(lmgrd|27000|27001)"
# Windows
netstat -ano | findstr 27000看Local Address这一列:
| 监听地址 | 含义 | 安全状态 |
|---|---|---|
127.0.0.1:27000 | 只监听本地环回 | 安全,外部无法访问 |
192.168.x.x:27000 | 只监听内网IP | 安全,仅内网可访问 |
0.0.0.0:27000 | 监听所有网卡 | 风险,需确认是否有公网网卡 |
公网IP:27000 | 监听公网IP | 高危,直接暴露 |
如果看到0.0.0.0:27000,不代表一定暴露在公网上——它只是说lmgrd在所有网卡上都监听。但如果这台服务器有公网网卡或公网IP,那公网就能访问到这个端口。
方法二:检查防火墙和路由策略
在服务器上查看防火墙规则:
bash
# Linux iptables
iptables -L -n | grep 27000
# Linux firewalld
firewall-cmd --list-all | grep 27000
# Windows
netsh advfirewall firewall show rule name=all | findstr 27000如果防火墙规则里没有明确限制来源IP(比如只允许内网IP段访问),那端口就是对所有来源开放的。
方法三:检查云平台安全组
如果你的License Server部署在云上(AWS、阿里云、腾讯云等),必须检查安全组/安全组策略。云平台的安全组是独立于操作系统防火墙的一层控制。
登录云控制台,查看安全组的入站规则:
内网自查完了之后,还需要从外部验证——因为有时候你以为没暴露,实际上由于云平台安全组配置错误或路由器端口转发,端口已经对外打开了。
方法一:用在线端口扫描工具
有多个免费工具可以快速检测:
这些工具的原理是:从它们的服务器向你的公网IP发送TCP连接请求,看能否建立连接。
方法二:用nmap从外部扫描(推荐)
如果你有一台不在内网的机器(比如自己的笔记本用手机热点),可以用nmap扫描:
bash
nmap -p 27000-27009 你的公网IP如果输出中显示某个端口状态是open,说明该端口对公网开放。如果是filtered,说明可能被防火墙拦截了。如果是closed,说明端口没有服务在监听。
方法三:用telnet手动测试
从外网的机器上执行:
bash
telnet 你的公网IP 27000如果确认License Server对公网暴露了,按以下步骤处理:
第一步:立即封堵端口
在防火墙或云平台安全组中,删除所有来源为0.0.0.0/0的入站规则,改为只允许内网IP段访问。
如果是云服务器,在安全组中修改入站规则:
如果是本地服务器,在系统防火墙中限制来源IP:

bash
# Linux iptables 示例:只允许192.168.1.0/24访问
iptables -A INPUT -p tcp --dport 27000 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 27000 -j DROP第二步:检查lmgrd的监听地址
如果lmgrd监听了0.0.0.0,而且服务器确实有公网网卡,考虑在启动lmgrd时指定绑定的IP地址。某些版本的lmgrd支持通过命令行或配置文件指定监听地址。
第三步:检查是否有异常访问
查看debug.log,搜索来自非内网IP的连接记录。如果发现可疑IP,记录并排查。
第四步:升级FlexNet版本
如果你还在使用FlexNet 11.16.1.0或更早的版本,立即升级。CVE-2018-20032和CVE-2018-20034影响这些版本。
第五步:考虑部署VPN
如果远程办公人员需要访问License Server,通过VPN接入内网是最安全的方式。不要用端口映射或直接把服务暴露到公网上。
| 检查项 | 状态 |
|---|---|
在服务器上用netstat确认lmgrd监听地址 | ☐ |
| 检查服务器防火墙是否限制了来源IP | ☐ |
| 检查云平台安全组入站规则是否限制了来源IP | ☐ |
| 从外网用nmap或在线工具扫描检测端口是否开放 | ☐ |
| 检查debug.log是否有来自非内网IP的连接记录 | ☐ |
| 确认FlexNet版本是否已修复已知漏洞(CVE-2018-20032等) | ☐ |
确认lmadmin的Web管理界面(如端口8080)未暴露公网 | ☐ |
License Server暴露在公网上,风险不是“可能被攻击”,而是“正在被扫描”。
27000是FlexNet的默认端口,互联网上的自动化扫描工具每天都在扫。一旦发现,攻击者可以利用已知漏洞(CVE-2018-20032、ZDI-11-244等)执行远程代码、窃取信息或让服务瘫痪。
检测方法不复杂:内网用netstat看监听地址和防火墙规则,外网用nmap或在线工具扫一遍端口。发现暴露后立即封堵——在防火墙或安全组中限制来源IP,只允许内网段访问。如果FlexNet版本老旧,同时安排升级。
一句话原则:License Server只应该在内网可见,永远不要让它直接面对公网。