50000 是什么
50000 是著名的撞车端口:Jenkins 的 JNLP 构建代理默认使用它,IBM DB2 数据库服务器的默认服务端口也是它。两者都在企业内网高频出现,因此看到 50000 时,第一件事是分清它属于哪一类——是把 CI 代理口暴露出来,还是数据库在正常提供服务,处置方式完全不同。
基本信息
| 常见归属 | Jenkins JNLP Agent / IBM DB2 |
|---|---|
| 端口/协议 | TCP,50000 |
| Jenkins 侧 | 旧式 TCP agent 口,新版可改随机或 WebSocket |
| DB2 侧 | 数据服务器默认服务名与端口 |
| 安全等级 | 各自仅内网;Jenkins 侧尤需限源 |
典型使用场景
- CI 排障:构建节点无法注册到控制器时确认代理通道
- 数据库巡检:确认 DB2 实例监听端口与服务名配置
- 防火墙评审:看到 50000 时判断该放行还是该收敛
- 安全核查:确认 Jenkins 代理口未对不受控网段开放
- 现代化改造:把 TCP 代理改为 WebSocket,取消 50000 入站放行
两侧核查命令
两侧核查命令
ss -lntp | grep 50000 # 先确认谁在本机监听
ps -ef | grep -Ei 'jenkins|java|db2' | grep -v grep | head -10 # 按进程判断归属
db2 get dbm cfg 2>/dev/null | grep -i svcename # DB2 侧的服务名与端口
curl -s http://jenkins:8080/manage | head -3 # Jenkins 侧页面可达性(需凭据)
journalctl -u jenkins -n 20 2>/dev/null # 控制器日志中看 agent 注册记录撞车分辨
| 身份 | 典型表现 | 定位方法 |
|---|---|---|
| Jenkins 代理 | 构建机主动连控制器 | 事件日志中出现 agent 注册与断开记录 |
| DB2 服务 | 数据库客户端连接与管理工具可达 | db2 get dbm cfg 查看服务名 |
| 来源不明 | 进程归属不清或无业务认领 | 用 ss/lsof 拿到 PID 后追溯启动方式与负责人 |
现代化路径:新版 Jenkins 支持 WebSocket 方式的入站代理,复用控制器的 8080 反向通道,调整后就可以顺势取消 50000 的入站放行,把这个易混淆的端口彻底腾出来。
Jenkins 代理通道一旦可达,攻击者可以借它获得构建环境中的凭据与产物访问能力。安全评估时不要把它当成「普通高位端口」,它与源码、凭据和发布流水线直接相连。
DB2 侧变更服务名或端口要同步更新客户端目录配置,否则会出现「实例正常但客户端连不上」的情形,排查时注意区分服务端监听与客户端连接配置两处。