本文目录导读:

在 HP-UX 上修复已知漏洞,最核心的方法是安装 HP 官方发布的补丁(Patches),由于 HP-UX 并非像 Linux 那样有 yum 或 apt,其补丁管理有特定的工具和流程。
以下是详细的修复步骤和策略:
第一步:确定漏洞并找到对应的补丁
在打补丁之前,必须先知道漏洞的编号和影响范围。
-
获取漏洞信息:
- 如果来源是 CVE 编号(如 CVE-2023-xxxxx),需要查找对应的 PHCO(软件补丁)、PHKL(内核补丁)、PHNE(网络补丁)或 PHSS(子系统/安全补丁)编号。
- HP 官方安全公告通常格式为
HPSBUX或HPSSB。
-
搜索补丁包:
- 在线搜索:访问 HP Support Center(需要有效服务合同),在“Software and Drivers”下选择“Patch Management”,输入 CVE ID 或补丁号。
- 本地搜索:如果已下载补丁包,可以使用
swlist命令查看当前系统已安装的补丁。# 查看所有已安装的补丁 swlist -l patch | grep -i <补丁号或关键词>
-
下载补丁:
- 登录 HP 支持网站,下载 depot 文件(
PHKL_12345.depot或*.tar.gz格式),注意选择与操作系统版本(11.11/11.23/11.31)和架构(PA-RISC 或 Itanium)匹配的补丁。
- 登录 HP 支持网站,下载 depot 文件(
第二步:检查前提条件
这是 HP-UX 补丁管理中非常关键的一步,避免出现依赖问题。
- 检查系统版本:
uname -a
- 检查补丁依赖:HP 补丁往往有先后顺序,使用
swverify或补丁自带的说明文件检查。 - 检查磁盘空间:确保
/var和opt分区有足够空间(至少 500MB 以上)。bdf
第三步:安全地应用补丁
HP-UX 使用 Software Distributor (SD) 工具(swinstall 和 swcopy)进行补丁管理。
方法:使用 swinstall(推荐,带交互界面或命令行)
-
拷贝补丁到本地(可选):
# 将下载的 .depot 文件拷贝到 /var/spool/patch/ 目录 cp /path/to/PHKL_12345.depot /var/spool/patch/
-
停止相关进程(强烈建议):
- 如果是网络或服务补丁,提前停止相关服务以减少中断。
- 如果是内核补丁,需要重启系统。
-
执行安装:
# 从本地 depot 安装 swinstall -x mount_all_filesystems=false -x reinstall=true -x patch_match_target=true \ -s /var/spool/patch/PHKL_12345.depot # 从远程 depot 安装(如果挂载了网络共享) # swinstall -s /mnt/patches/PHKL_12345.depot- 参数
-x patch_match_target=true:只安装系统缺失的补丁(避免重复)。 - 参数
-x reinstall=true:允许覆盖安装。
- 参数
-
处理依赖冲突:
- 如果遇到
ERROR: DEPENDENCY_NOT_SATISFIED,需要先安装前置补丁。
- 如果遇到
方法:使用 swcopy + swinstall(分两步,更安全)
先将 depot 复制到根目录()挂载点,再进行安装,这样可以回滚。
swcopy -s /var/spool/patch/PHKL_12345.depot \* swinstall -s /var/spool/patch/PHKL_12345.depot \*
第四步:验证与重启
-
检查安装结果:
# 查看补丁是否成功安装 swlist -l patch | grep <你的补丁号> # 或查看所有已安装补丁的详细信息 swlist -l product | grep PH
-
重启系统(如果需要):
- 内核补丁:必须重启。
shutdown -r -y 0 "Applying critical security patch"
- 应用/服务补丁:重启对应服务(
kill -HUP <pid>或svcadm restart)而非整个系统。
- 内核补丁:必须重启。
-
进行回归测试:
- 针对修复的漏洞,验证漏洞扫描结果是否消失。
- 测试相关核心业务功能是否正常。
第五步:回滚(如果出现问题)
HP-UX 的 SD 工具支持补丁回滚,但依赖于 depot 文件是否存在。
-
使用
swremove回滚单一补丁:# 查看补丁是否可被回滚(如果有 Product_Revision 编号) swlist -a revision -l patch PHKL_12345 # 删除该补丁 swremove PHKL_12345
- 注意:如果多个补丁依赖该补丁,
swremove会报错并拒绝删除,需要先删除依赖补丁,再删目标补丁。
- 注意:如果多个补丁依赖该补丁,
-
从备份恢复:如果系统因补丁崩溃,唯一可靠的办法是从带区(Mirror Disk)或磁带备份恢复。打补丁前一定要做备份(如
make_tape_recovery或vxvmmirror)。
特殊情况与替代方案
如果无法直接打官方补丁(例如合同到期或无法联网),可以考虑以下缓解措施(非根本修复):
- 配置 WFP(Web Filtering Policy)或 IPSec:阻断漏洞利用的特定端口或协议。
- 修改系统参数(NDD):例如针对 TCP 漏洞,调整
ndd参数:ndd -set /dev/tcp tcp_rexmit_interval_initial 1000
但这只是临时措施,需要写入
/etc/rc.config.d/nddconf以持久化。 - 禁用不必要的服务:
chkconfig -d <service>或使用 SMF(Service Management Facility,HP-UX 11.31)禁用。 - 升级整个操作系统:老旧版本(如 HP-UX 11.11)可能已停止安全支持,此时应考虑迁移到 11.31 并获取最新的 Quality Pack。
总结建议
- 建立补丁管理流程:不要在生产环境直接打补丁,在测试环境验证后再实施。
- 优先使用 HP 官方 QP(Quality Pack):HP-UX 每年会发布集成的补丁包,包含大量安全修复,建议定期(如每季度)应用最新的 QP(
PHSS_xxxxx)。# 查看已安装的 Quality Pack swlist -l bundle | grep -i quality
- 自动化工具:对于大规模服务器,考虑使用 HP Server Automation 或 HP Operations Orchestration 进行自动化补丁部署。
一句话总结:通过 swinstall 安装 HP 官方提供的 .depot 补丁文件,内核补丁需重启,应用补丁需验证,并在操作前务必做好系统备份。