保持EC2 Ubuntu计算机更新的最佳实践


Answers:


13

无人值守升级软件包是在Ubuntu中自动应用重要错误修复和安全补丁的标准方法。

我建议在每个Ubuntu系统上安装它:

sudo apt-get update &&
sudo apt-get install unattended-upgrades

您无需创建自己的Cron作业。该软件包将为您安装一个。

如果您要更改默认配置,则可以编辑默认配置:https : //help.ubuntu.com/lts/serverguide/automatic-updates.html


对在生产服务器上执行此操作的可取性有任何想法吗?安静地应用更改并冒着更新失败或引入问题的风险,这让我感到紧张。
ianjs 2014年

3
“每个”也指生产系统。我多年来一直在自动应用Ubuntu安全补丁,并且不记得有任何严重的问题。让生产服务器坐在那里没有已知安全补丁的情况令我感到紧张,并冒着利用它们的风险。也就是说,每种情况都有不同的需求,因此最好对每个补丁进行严格的测试阶段。但是请注意,它们总是被释放,所以您会很忙。
埃里克·哈蒙德

1
除非您有冗余/群集设置,否则我建议您这样做。Ubuntu的更新过程还不尽人意,我已经多次停止了服务,最近一次甚至中断了引导扇区……而且我们没有什么特别的-只是Apache作为反向代理和Tomcat应用程序。
加倍

1

unattended-upgrades从2015年到2020年,我们一直在使用,没有问题。我们有一个小型安装程序(在DigitalOcean上):

  • nginx
  • mysql-server
  • php5-fpm php5-curl php5-mysql

基于过去的良好表现,以这种方式进行更新比不进行更新更安全。但这并不一定是未来的保证!

apache根据其他用户的报告以及我过去的apache更新经验,对于来说,这可能不是一个好主意。[见上文和此处 ]

使用时unattended-upgrades,当版本接近EOL时仍需要手动干预。


(除了问题:根据我在TWiki,WordPress和Jenkins的经验,与OS本身相比,使这些应用程序保持最新实际上是更大的关注点,尽管我们当然应该同时进行这两种操作。为了省心,您可以将面向Internet的应用程序沙箱化为在Docker容器中运行的非根进程。)


但是,由于您询问了最佳实践,因此AWS文档中推荐的主要方法是:

  • 创建并启动新实例以替换当前的在线实例。然后删除当前实例。

    新实例将在安装过程中安装最新的安全补丁集。

(2020年2月)

这可以作为蓝绿色部署策略的一部分来完成。这样做的好处是,您可以在切换流量之前针对新服务器运行测试。如果您的测试是彻底的,那么从理论上讲,您的更新可以完全自动化,在上线之前进行验证,并且不会造成停机。

其他优点:

  • 如果需要人工关注,则测试可以向您提供高级警告(与相对unattended-upgrades,当警告仅在问题存在后才由您的用户发出!)

  • 如果您的系统确实受到威胁,或者您决定更换提供商,则此方法应该使推出全新部署变得容易。您的部署策略是脚本化的,而不是古老的记忆。

但是,当然unattended-upgrades,与简单安装相比,此方法需要更多的设置,并且更加复杂,因此仍然存在错误的余地。


AWS确实也提到了执行“更新依赖项堆栈命令”,这似乎是他们执行类似于的正式方式unattended-upgrades。似乎可以从其“实例”界面触发,但是我不确定是否可以自动化。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.