每隔一段时间,我就会登录到生产 web/db/tools 框并看到典型的消息:
可以更新 30 个包。16 个更新是安全更新。
我的问题是,你们所有人如何处理生产 Ubuntu 机器上的更新?您是否自动执行这些更新?您是否为他们设置了停机时间?问题是,你永远不知道更新什么时候会破坏某些东西,比如可能是现有的配置文件等。
这个问题的另一部分是,跟上补丁是“一件好事”,但补丁几乎每天都会发布。如果每天都有新的安全补丁可用,那么一个人必须进行多少次计划中断?
我认为有关如何管理更新的答案的线程将非常有用。
修补 Ubuntu 与 Windows、RHEL、CentOS、SuSE、debian 等并没有什么特别之处。
在设计补丁程序时,您需要保持的基本心态是假设某些事情会中断。
在设计补丁设置时,我倾向于使用的一些基本准则是:
这可能包括使用 WSUS 或
<your_os_here>
内部补丁管理机器的镜像。可以集中查询并让您知道安装在您的各个机器上的补丁程序的状态的首选。在可能的情况下,随着补丁的发布,让中央服务器将它们复制到各个机器上。这实际上只是节省时间,因此您不必等待他们下载并安装,您只需在补丁窗口期间开始安装。
按照我的基本理论,补丁会破坏事物,请确保您有一个中断窗口来应用补丁足够长的时间来解决关键问题,并可能回滚补丁。您不一定需要让人们在补丁后坐在那里进行测试。就我个人而言,我非常依赖我的监控系统来让我知道一切都在我们可以逃脱的最低水平上运行。但也要准备好在人们开始工作时遇到一些烦人的问题。你应该总是安排有人在那里准备接听电话——最好不是那个一直到凌晨 3 点才修补盒子的人。
就像 IT 中的其他一切一样,脚本、脚本然后再编写一些脚本。脚本包下载,安装开始,镜像。基本上,您想将补丁窗口变成一个婴儿坐姿任务,只需要一个人在那里,以防万一出现问题。
如果由于某种原因无法在“指定的夜晚”修补某些服务器,这使您能够不修补它们。如果您不能在第 1 晚进行,则要求他们在第 2 晚免费。还可以让您同时保持修补服务器数量的正常。
最重要的是跟上补丁!如果你不这样做,你会发现你自己不得不做非常大的 10 多个小时的补丁窗口才能回到你被赶上的点。引入更多可能出错的地方,并使查找导致和发布的补丁变得更加困难。
每月或每隔一个月修补一次服务器 - 恕我直言 - 一个非常可实现且可接受的目标。不仅如此,而且您将不断地修补服务器,更不用说您开始遇到需要为每台服务器应用数百个补丁的情况。
至于你一个月需要多少个窗户?这取决于你的环境。你有多少台服务器?您的服务器所需的正常运行时间是多少?
9x5 的较小环境可能每月只需要一个补丁窗口即可。大型 24x7 商店可能需要两个。非常大的 24x7x365 可能需要每周滚动窗口才能每周修补一组不同的服务器。
找到适合您和您的环境的频率。
要记住的一件事是,100% 保持最新是不可能达到的目标 - 不要让您的安全部门告诉您其他情况。尽力而为,不要落后太多。
要做的事情:
要避免的事情:
值得一提的另一点:如果您习惯于 Windows,您会惊讶于大多数 Linux 更新不需要停机或重新启动。有些会,例如内核更新。但是需要重新启动或停机的更新通常会被标记为这样,并且可以按单独的时间表进行处理。
我们的 Ubuntu 机器都在运行 LTS 版本。
我们只是自动安装所有更新——当然这不是“最佳实践”,但我们是一家相对较小的商店,没有针对每项服务的测试/开发/生产环境。无论如何,LTS 更新通常都经过了很好的测试并且微创。
升级到新版本显然涉及更多。
对于 ubuntu LTS 系统,我们通过以下方式处理更新:
对我们来说,下一个合乎逻辑的步骤是消除内存中的会话信息,这样我们就可以每天甚至每天多次重新部署基础架构,而不会影响客户并消除步骤 (2)。
这种方法维护成本低,并且完全避免了维护窗口。
我推荐的一件事是处理包的回滚。有关如何执行此操作的建议,请参阅使用 Debian 的事务和回滚,因为有时您需要快速修复升级会破坏某些内容。