为了让系统尽可能保持安全,您需要及时了解用于您的软件的新修订和补丁。这些信息可以通过若干个渠道得到,不过,通常软件提供商和 Linux 发行商应该为您及时地提供这些信息。您也可以使用(几乎永远免费)CERT(Computer Emergency Response Team)的服务。他们通常会维持传达关于最新的建议、漏洞等信息的邮件列表。

当有新的更新可用时,您应该去查看它是否适用于您的系统以及您的安全需要。安装更新本身可能会导致安全问题。另外,要考虑到每个更新都可能会引入新的漏洞,或者如果更新失败,您的系统可能会停留在不可用的状态。

当在大范围的系统中安装某个更新时,您通常不能同时对它们全部进行更新 —— 这可能会导致您的多个系统在更新期间互相不兼容。

可见,更新系统会涉及到很多风险。这里是降低这些风险的一些建议:

  • 初始安装后,不要将您的系统立即连接到网络。将所有相关的更新下载到一台单独的机器,然后手工地传输它们,以确保系统在暴露在网络上之前已经处于当前状态(current state)。

  • 始终拥有可用的近期系统备份。

  • 对于业务中每一个关键的系统,您都应该有一个与产品环境的硬件和软件相同的独立测试环境。首先在测试环境中获得关于更新的经验,以防止在管理产品系统时出现意外。

  • 理想情况下,您应该已经准备好一套回归测试,在更新包括系统在内的所有程序之前和之后对适当的功能和性能进行对比。至少,要确保拥有可重复的而且文档化的质量控制检查,以保证在修改产品环境之前测试环境中的主要功能和服务不会受到影响。

  • 对于小型网络来说,手工安装更新或许可行,但规模较大时很快就难以处理了。这经常会导致更新不能被安装。使用商业的或者开放源代码的系统管理或者软件分发工作来简化更新的部署。

  • 我们是不是提醒过您最好在手边准备一个备份?我们还要再提醒一次。

  • 制定一个安装更新的计划,并考虑:
    • 更新系统的次序
    • 对您的业务来说关键的系统
    • 系统如何互相依赖
    • 哪个系统包含机密数据

  • 当使用完整性检查工具时(强烈建议至少对服务器使用),为了能识别出意外的更改,要记得更新系统在已知安全状态下占用内存的基线。

  • 在安装任何修订之前,要使用密码检验和工具检查软件的完全性和真实性(尤其是从 Web 站点或者 ftp 服务器上下载时)。在 Linux 领域中,通常使用 MD5 和/或 SHA-1 检验和。如果软件以 RPM 包的形式提供,那么提供商应该已经提供了一个 GnuPG 签名。您可以运行 $ rpm -v --checksig <name>.rpm 命令来检查它。成功的响应应该是 "<name>.rpm: md5 gpg OK";不成功的会是 "<name>.rpm: md5 GPG NOT OK"。 您可以使用 $ md5sum <name>.rpm$ sha1sum <name>.rpm 来确认 MD5 或 SHA-1 检验和。如果您下载的某个文件中包含的检验和可用于多个文件(大部分情况下称为 md5sum.asc 或 <name>.md5),那么您可以使用 $ md5sum -c md5sum.asc

  • 最后,但不是最不重要的是,要备份您的系统。(我们是不是已经说过了?)