首页/安全/安全加固速查/CUPS 打印服务暴露(631)
服务与端口收敛50 条

CUPS 打印服务暴露(631)

服务器上的 CUPS 会监听 631 并提供管理界面:无打印需求直接停用;需要时仅绑回环或内网。

安全加固速查安全更新于 2026-10-13

631 与 CUPS 的关系

CUPS(Common Unix Printing System)是 Linux 与 macOS 上的标准打印系统,cupsd 默认监听 631/TCP,同时承载 IPP(Internet Printing Protocol)打印任务和 http://主机:631 上的 Web 管理界面。对不需要打印的服务器来说,这个端口纯粹是多余的攻击面:它长期是扫描器的常见探测目标,历史上多次出现过影响 cupsd 的远程漏洞,补丁不及时的机器风险尤其高。

处置的三档思路

打印服务器需要 631 对外服务,业务服务器不需要,处置按需求分档:完全没有打印需求就直接停用并禁止自启;只在本机用 lp 命令提交任务,就把监听改回环地址;真有共享打印服务,则限制到打印网段再做访问控制,而不是全网开放。要注意 CUPS 常被 cups.socket 套接字激活或 cups-browsed 自动发现间接拉起,只停 cups.service 有时并不足够。

基本信息

服务进程cupsd
协议与端口TCP 631(IPP,管理界面同端口)
管理界面http://127.0.0.1:631
主配置文件/etc/cups/cupsd.conf
相关服务cups.service、cups.socket、cups-browsed
适用平台Linux、macOS、部分 NAS 与打印服务器

常见启用场景

  • 打印服务器与共享打印机:必须保留 631,但应限制来源网段并关闭公网访问
  • 桌面发行版默认开启:本机打印需要,服务器上没有打印机则无此必要
  • 容器镜像自带打印组件:多数是客户端库,本身不监听端口
  • 被打印管理软件或 NAS 拉起:停用前先确认是否有业务依赖
  • 日志与故障排查:打印队列卡住时通常仍需临时启用来定位问题

核查现状

核查现状
ss -tlnp | grep ':631 '                     # 谁在监听 631、绑定在哪个地址
systemctl status cups cups.socket cups-browsed   # 服务与套接字激活状态
grep -E '^(Listen|Port|Browsing)' /etc/cups/cupsd.conf   # 监听地址与自动发现开关
lpstat -r                                   # 打印调度器是否在运行

收敛与限制

收敛与限制
systemctl disable --now cups.service cups-browsed.service   # 无打印需求:停用并禁止自启
systemctl is-enabled cups.socket 2>/dev/null   # 若启用,停服务后端口仍可能被拉起
# /etc/cups/cupsd.conf 中的关键两行
Listen localhost:631   # 只监听回环,不要用已废弃的 Port 631(等于监听所有网卡)
Browsing Off           # 关闭自动发现,避免被动对外暴露打印队列

只对打印网段放行

只对打印网段放行
firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.20.0.0/24 port port=631 protocol=tcp accept'
firewall-cmd --reload
firewall-cmd --list-rich-rules   # 确认规则已生效

核查项与判定

核查项正常表现异常表现
监听地址仅 127.0.0.1:6310.0.0.0:631 或 *:631 对全网暴露
服务自启无打印需求时 disabledenabled 且无人知晓谁开启的
套接字激活cups.socket 未启用已启用,停服务后端口仍被拉起
自动发现cups-browsed 未运行运行中并对外发布打印队列
管理界面curl 访问 631 不可达返回 200 或 401,说明 Web 管理面暴露
cups-browsed 会自动发现并发布网络打印队列,即使 cupsd 已限制为回环,它也可能带来意外的对外监听与信息暴露,两个服务要一起处理。
容器镜像里的 libcups 是客户端库,供程序调用打印接口,不监听任何端口,别把它当成 631 暴露来判定。
631 对外可达时,Web 管理界面会暴露队列名、任务与部分配置信息,历史上 CUPS 出现过可远程利用的漏洞。不要因为「它只是个打印机」就把它留在公网。

易错点

  • 只 stop cups.service 不管 cups.socket 与 cups-browsed:端口会被套接字激活重新拉起,看起来改了实际没生效
  • 为了让同事在浏览器管理打印机把监听改成全网:管理面暴露到非授权网段,攻击面立刻放大
  • 把容器里的 libcups 客户端库当成打印服务:误报暴露、误停依赖,排查方向被带偏
  • 停用打印服务前未确认业务依赖:报表自动出票、标签打印这类旁路需求可能到某次重启后才暴露故障
  • 改完 cupsd.conf 不做语法与效果验证:配置错误时 cupsd 起不来或退回默认全接口监听

数据来源与参考

  • CIS Linux Benchmark:打印服务条目
  • CUPS 官方文档

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌