mcpField
I
implementing-patch-management-workflow

implementing-patch-management-workflow

github.com/mukul975安全35.2k48 次安装8 周前更新
代码仓库

关于 implementing-patch-management-workflow

这项技能介绍如何规划并落实组织级补丁管理流程,面向负责系统安全与运维的团队。内容覆盖补丁评估、测试、审批、分批部署及验证报告。

主要功能

  1. 01按风险评估和排序补丁
  2. 02在非生产环境测试更新
  3. 03按部署环分批发布
  4. 04规划回滚并协调变更审批
  5. 05通过扫描验证并报告结果

适用场景

  1. 01建立满足合规要求的补丁流程
  2. 02分批向生产系统部署安全更新
  3. 03验证补丁安装并检查回归问题
  4. 04跟踪无法及时修补系统的例外

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill implementing-patch-management-workflow

安装后在 Claude Code 中输入/implementing-patch-management-workflow确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
assets/
template.md
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py
process.py

详细介绍

实施补丁管理工作流

概述

补丁管理是系统地识别、测试、部署和验证软件更新,以修复组织 IT 基础设施中漏洞的过程。有效的补丁管理工作流通过结构化测试、审批关卡和分阶段推出来减少攻击面,同时最大限度地减少运营中断。

何时使用

  • 在环境中部署或配置实施补丁管理工作流能力时
  • 建立与合规要求一致的安全控制时
  • 为该领域构建或改进安全架构时
  • 执行需要此实施的安全评估时

先决条件

  • 识别缺失补丁的漏洞扫描结果
  • 补丁管理工具(WSUS、SCCM/MECM、Ansible、Intune、Jamf)
  • 镜像生产环境的测试环境
  • 变更管理流程(ITIL 或同等流程)
  • 包含操作系统和应用程序版本的资产清单

核心概念

补丁生命周期阶段
  1. 发现:从供应商和漏洞扫描中识别可用补丁
  2. 评估:评估补丁适用性和风险
  3. 优先级排序:按严重性、可利用性和资产关键性对补丁排序
  4. 测试:在非生产环境中验证补丁
  5. 审批:变更咨询委员会(CAB)审查和批准
  6. 部署:分阶段推送到生产系统
  7. 验证:确认安装成功且无回归
  8. 报告:记录合规指标和例外情况
补丁类别
  • 安全补丁:解决 CVE 和安全漏洞
  • 关键更新:影响稳定性的非安全缺陷修复
  • 服务包:累积更新集合
  • 功能更新:新功能(Windows 功能更新等)
  • 固件更新:BIOS/UEFI、网卡、存储控制器固件
  • 第三方补丁:Adobe、Java、Chrome、Firefox 等。
部署环(分阶段推出)
环环境占设备群 %观察时间目的
Ring 0实验室/测试不适用24-48 小时功能验证
Ring 1IT 早期采用者5%48-72 小时真实世界试点
Ring 2业务试点15%5-7 天更广泛的兼容性
Ring 3常规部署50%7-14 天主要推出
Ring 4关键任务30%Ring 3 之后最终部署

工作流

步骤 1:配置补丁源
# WSUS (Windows Server Update Services)
# Configure WSUS server to sync with Microsoft Update
# Via PowerShell on WSUS server:
Install-WindowsFeature -Name UpdateServices -IncludeManagementTools
& "C:\Program Files\Update Services\Tools\WsusUtil.exe" postinstall CONTENT_DIR=D:\WSUS

# Configure GPO for WSUS clients
# Computer Configuration > Administrative Templates > Windows Components > Windows Update
# Specify intranet Microsoft update service location: http://wsus-server:8530
# Ansible: Configure patch repositories for Linux
# roles/patch-management/tasks/configure_repos.yml
---
- name: Configure RHEL patch repository
  yum_repository:
    name: rhel-patches
    description: RHEL Security Patches
    baseurl: https://satellite.corp.local/pulp/repos/patches
    gpgcheck: yes
    gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
    enabled: yes

- name: Configure Ubuntu patch sources
  apt_repository:
    repo: "deb https://apt-mirror.corp.local/ubuntu {{ ansible_distribution_release }}-security main"
    state: present
  when: ansible_os_family == "Debian"
步骤 2:自动化补丁评估
# patch_assessment.py - Correlate vulnerability scans with available patches
import subprocess
import platform
import json

def get_windows_pending_patches():
    """Query Windows Update for pending patches via PowerShell."""
    ps_cmd = """
    $Session = New-Object -ComObject Microsoft.Update.Session
    $Searcher = $Session.CreateUpdateSearcher()
    $Results = $Searcher.Search("IsInstalled=0 AND Type='Software'")
    $Results.Updates | ForEach-Object {
        [PSCustomObject]@{
            Title = $_.Title
            KB = ($_.KBArticleIDs -join ',')
            Severity = $_.MsrcSeverity
            Size = [math]::Round($_.MaxDownloadSize / 1MB, 2)
            Published = $_.LastDeploymentChangeTime.ToString('yyyy-MM-dd')
            CVE = ($_.CveIDs -join ',')
        }
    } | ConvertTo-Json
    """
    result = subprocess.run(
        ["powershell", "-Command", ps_cmd],
        capture_output=True, text=True, timeout=120
    )
    return json.loads(result.stdout) if result.stdout.strip() else []

def get_linux_pending_patches():
    """Query package manager for available security updates."""
    if platform.system() != "Linux":
        return []

    # Try apt (Debian/Ubuntu)
    try:
        result = subprocess.run(
            ["apt", "list", "--upgradable"],
            capture_output=True, text=True, timeout=60
        )
        packages = []
        for line in result.stdout.strip().split("\n")[1:]:
            if line:
                parts = line.split("/")
                packages.append({
                    "package": parts[0],
                    "available_version": parts[1].split()[0] if len(parts) > 1 else "",
                    "source": "apt"
                })
        return packages
    except FileNotFoundError:
        pass

    # Try yum/dnf (RHEL/CentOS)
    try:
        result = subprocess.run(
            ["dnf", "updateinfo", "list", "security", "--available"],
            capture_output=True, text=True, timeout=60
        )
        packages = []
        for line in result.stdout.strip().split("\n"):
            parts = line.split()
            if len(parts) >= 3:
                packages.append({
                    "advisory": parts[0],
                    "severity": parts[1],
                    "package": parts[2],
                    "source": "dnf"
                })
        return packages
    except FileNotFoundError:
        return []
步骤 3:补丁测试自动化
# Ansible playbook: test_patches.yml
---
- name: Test Patches in Lab Environment
  hosts: test_servers
  become: yes
  vars:
    rollback_snapshot: "pre-patch-{{ ansible_date_time.date }}"

  tasks:
    - name: Create VM snapshot before patching
      community.vmware.vmware_guest_snapshot:
        hostname: "{{ vcenter_host }}"
        username: "{{ vcenter_user }}"
        password: "{{ vcenter_pass }}"
        datacenter: "{{ datacenter }}"
        name: "{{ inventory_hostname }}"
        snapshot_name: "{{ rollback_snapshot }}"
        state: present
      delegate_to: localhost

    - name: Apply security patches (RHEL/CentOS)
      dnf:
        name: "*"
        state: latest
        security: yes
        update_cache: yes
      when: ansible_os_family == "RedHat"
      register: patch_result

    - name: Apply security patches (Ubuntu/Debian)
      apt:
        upgrade: dist
        update_cache: yes
        only_upgrade: yes
      when: ansible_os_family == "Debian"
      register: patch_result

    - name: Reboot if required
      reboot:
        reboot_timeout: 600
        msg: "Rebooting for patch installation"
      when: patch_result.changed

    - name: Run post-patch validation
      include_tasks: validate_services.yml

    - name: Report patch results
      debug:
        msg: "Patching {{ 'succeeded' if patch_result.changed else 'no updates' }} on {{ inventory_hostname }}"
步骤 4:生产部署
# deploy_patches.yml - Phased production rollout
---
- name: Ring 1 - IT Early Adopters
  hosts: ring1_hosts
  serial: "25%"
  max_fail_percentage: 10
  become: yes
  tasks:
    - import_tasks: apply_patches.yml
    - import_tasks: validate_services.yml
    - name: Wait for soak period
      pause:
        hours: 48
      run_once: true

- name: Ring 2 - Business Pilot
  hosts: ring2_hosts
  serial: "20%"
  max_fail_percentage: 5
  become: yes
  tasks:
    - import_tasks: apply_patches.yml
    - import_tasks: validate_services.yml

- name: Ring 3 - General Deployment
  hosts: ring3_hosts
  serial: "10%"
  max_fail_percentage: 3
  become: yes
  tasks:
    - import_tasks: apply_patches.yml
    - import_tasks: validate_services.yml
步骤 5:验证和报告

运行补丁后漏洞扫描以确认补丁安装:

# Trigger post-patch verification scan
curl -k -X POST "https://nessus:8834/scans/$VERIFY_SCAN_ID/launch" \
  -H "X-Cookie: token=$TOKEN"

# Compare pre-patch and post-patch results
# Expecting reduction in vulnerabilities matching deployed patches

补丁管理 SLA

严重性SLA(面向互联网)SLA(内部)SLA(气隙环境)
严重(CVSS 9+)48 小时7 天14 天
高(CVSS 7-8.9)7 天14 天30 天
中(CVSS 4-6.9)30 天30 天60 天
低(CVSS 0.1-3.9)90 天90 天90 天

最佳实践

  1. 维护最新的资产清单,确保完整的补丁覆盖
  2. 在部署前于非生产环境中测试所有补丁
  3. 使用具有自动回滚能力的分阶段推出
  4. 将补丁窗口与变更管理流程协调
  5. 跟踪补丁合规指标并向领导层报告
  6. 尽可能自动化,以减少人工工作量和人为错误
  7. 为无法打补丁的系统维护例外文档
  8. 包括第三方应用程序补丁(不仅仅是操作系统补丁)

常见误区

  • 仅修补操作系统而忽略第三方应用程序
  • 没有回滚计划,以防补丁导致服务中断
  • 对所有补丁同等紧急处理(没有基于风险的优先级排序)
  • 无法扩展的手动补丁流程
  • 没有补丁后验证以确认安装成功
  • 忽略固件和 BIOS 更新

相关技能

  • prioritizing-vulnerabilities-with-cvss-scoring
  • implementing-vulnerability-remediation-sla
  • implementing-continuous-vulnerability-monitoring

评论

支持 Markdown