07. 修补和更新 Ubuntu Server:全面指南

保持 Ubuntu Server 及时修补和更新对于维护安全、稳定性和合规性至关重要。定期更新可以防范漏洞、提高系统性能,并确保遵守行业标准。本指南提供了可操作的见解、实用示例和工具,用于自动更新和有效处理内核补丁。


上一篇文章:

01. Ubuntu Server 简介 – SysOSX: AI & Cloud

02. 如何搭建你的第一台 Ubuntu Server:初学者指南 – SysOSX: AI & Cloud

03. 掌握 Ubuntu Server 的 Linux 命令行 – SysOSX: AI & Cloud

04. Ubuntu Server 用户与权限管理:全面指南 – SysOSX: AI & Cloud

05. Ubuntu Server 网络基础:全面指南 – SysOSX: AI & Cloud

06. 在 Ubuntu Server 上安装和管理软件:完整指南 – SysOSX: AI & Cloud



为什么定期更新 Ubuntu Server 至关重要

1. 安全防护

未修补的漏洞是重大安全风险。据 CISA 称,87% 的入侵针对使用未修补软件的系统。定期更新通过解决已知漏洞来降低这些风险。

真实示例:

2023 年的 OpenSSL 漏洞(CVE-2023-0286)使攻击者能够窃取敏感数据。及时应用补丁的服务器避免了被利用。


2. 系统稳定性

更新通常包括错误修复和性能问题修复,以确保稳定运行。它们还提高了硬件兼容性,特别是对于在 AWS 和 Azure 等云平台上运行的服务器。

真实示例:

2022 年 Linux 内核 5.15 的“Dirty Pipe”问题导致内存泄漏和系统不稳定。一个内核补丁解决了该问题,恢复了系统的可靠性。


3. 合规要求

许多行业要求定期更新以满足安全和隐私标准。不合规可能导致罚款、法律后果和声誉损害。

标准示例:

  • PCI-DSS:支付系统必需。
  • HIPAA:保护医疗保健数据。
  • GDPR:确保欧盟公民的隐私。

Ubuntu 更新命令速查表

以下是 Ubuntu 更新命令的快速参考指南:

命令用途何时使用
sudo apt update刷新软件包列表任何安装之前
sudo apt upgrade安装安全更新每周维护
sudo apt full-upgrade主要版本更新Ubuntu 版本升级
sudo apt autoremove清理旧软件包更新之后

自动修补设置(5 分钟指南)

使用unattended-upgrades自动更新可确保关键补丁在无需人工干预的情况下应用。请按以下步骤设置自动更新:

第 1 步:安装 unattended-upgrades

sudo apt install unattended-upgrades


第 2 步:配置安全更新

编辑配置文件:

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

取消注释以下行:

"Ubuntu:${distro_codename}-security";
"Ubuntu:${distro_codename}-updates";

第 3 步:启用自动重启

将以下行添加到同一文件,以在更新后启用自动重启:

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";


何时使用自动修补

自动修补非常适合停机可接受或人工干预不切实际的环境。示例包括:

  • 非关键系统:正常运行时间不重要的开发或测试环境。
  • 小型企业或个人使用:为没有专职 IT 人员的用户确保安全。
  • 边缘设备或物联网系统:无法手动更新的远程设备。

但是,自动修补并不适合所有环境。在以下场景中请避免使用:

  • 关键任务系统:应在预发布环境中测试更新,以避免引入错误或停机。
  • 高可用性 (HA) 环境:自动修补可能会扰乱集群系统或故障转移机制。
  • 受监管行业:合规标准通常要求更新经过审批和测试流程。
  • 自定义配置:具有独特设置的服务器可能会遇到与自动更新的兼容性问题。

对于此类情况,请考虑手动修补或使用 Ansible 等工具,以保持对更新过程的控制。


内核更新管理

内核更新对于修复漏洞和提高系统性能至关重要。以下是有效管理内核更新的方法:

1. 检查待处理的内核更新

使用以下命令检查可用的内核更新:

apt list --upgradable | grep linux-image


2. 无需重启即可应用更新(Livepatch)

Ubuntu Livepatch 仅适用于 Ubuntu Pro 订阅,它允许你在不重启的情况下应用内核更新,从而最大限度地减少停机时间。

启用 Livepatch 的步骤:

  • 安装 Livepatch:
sudo snap install canonical-livepatch
  • 使用你的令牌启用 Livepatch:
sudo canonical-livepatch enable YOUR_TOKEN

    3. 安全重启流程

    如果需要重启,请按以下步骤优雅地重启:

    检查是否需要重启:

    Ubuntu 会在更新后需要重启时创建文件/var/run/reboot-required。如果此文件不存在,则表示不需要重启。不过,你可以手动检查以下内容:

    • 检查内核版本:
      将正在运行的内核版本与最新安装的内核进行比较:
    uname -r apt list --installed | grep linux-image
    
    • 检查使用已删除文件的正在运行的进程:
      识别使用过时文件的进程:
    sudo lsof | grep deleted
    

      提醒用户注意停机:

      wall "Maintenance reboot in 10 minutes"
      
      

      安排重启:

      sudo shutdown -r +10
      
      

      企业自动化模板

      用于多服务器更新的 Ansible Playbook

      要在多台服务器上管理更新,请使用 Ansible 自动执行该过程。

      示例 Playbook:

      - name: Apply security patches
        hosts: all
        become: yes
        tasks:
          - name: Update apt cache
            ansible.builtin.apt:
              update_cache: yes
      
          - name: Apply security updates
            ansible.builtin.apt:
              upgrade: yes
              cache_valid_time: 3600
      

      运行该 playbook:

      ansible-playbook update.yml
      

      用于非高峰时段更新的 Cron 作业

      使用 cron 作业在非高峰时段安排更新。

      示例 Cron 作业:

      编辑 crontab:

      sudo crontab -e
      

      添加以下行,以安排每周日凌晨 3 点进行更新:

      0 3 * * 7 apt update && apt upgrade -y
      

      常见问题与解决方案

      1. 更新期间磁盘空间不足

      如果服务器在更新期间磁盘空间不足,请清理不必要的文件:

      命令:

      sudo apt clean
      sudo apt autoremove --purge
      

      检查磁盘使用情况:

      df -h
      
      

      2. 更新失败恢复

      如果更新失败,请使用以下命令恢复:

      修复损坏的依赖项:

      sudo apt --fix-broken install
      

      重置软件包状态:

      sudo dpkg --configure -a
      

      3. 离线服务器更新

      对于没有互联网访问权限的服务器,请使用apt-offline在已联网的计算机上下载更新并离线应用。

      在已联网的计算机上:

      apt-offline set update.sig
      

      传输文件并应用:

      apt-offline install update.sig
      

      维护清单

      请遵循此清单,以确保你的 Ubuntu Server 保持安全和稳定:

      • 每周:执行手动安全更新。
      • 每月:在预发布环境中测试完整升级。
      • 每季度:清理存储并删除未使用的软件包。
      • 每年:进行合规审计以满足行业标准。

      官方文档:安装和管理软件包 – Ubuntu Server 文档


      结论

      定期修补和更新 Ubuntu Server 对于维护安全、稳定性和合规性至关重要。通过了解更新的重要性、掌握apt命令、使用unattended-upgrades自动更新并有效管理内核补丁,管理员可以确保服务器保持稳健可靠。对于企业环境,Ansible 和 Livepatch 等工具进一步简化了流程,减少了停机时间并提高了效率。

      展望未来:保护你的 Ubuntu Server

      既然你已经了解如何保持 Ubuntu Server 更新和修补,下一步是确保它能够抵御外部威胁。在我们的下一篇文章保护你的 Ubuntu Server中,我们将介绍加固服务器的实用步骤,包括:

      • 配置防火墙,使用ufw.
      • 安全地设置 SSH 以防止未授权访问。
      • 使用fail2ban等工具防范暴力破解攻击。

      敬请期待可操作的见解,以保护你的服务器并保护你的基础设施免受潜在威胁!

      3 thoughts on “07. Patching and Updating Ubuntu Server: A Comprehensive Guide”

      发表评论