AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 104665
Accepted
imaginative
imaginative
Asked: 2010-01-21 08:26:13 +0800 CST2010-01-21 08:26:13 +0800 CST 2010-01-21 08:26:13 +0800 CST

更新生产环境 Ubuntu 盒装注意事项

  • 772

每隔一段时间,我就会登录到生产 web/db/tools 框并看到典型的消息:

可以更新 30 个包。16 个更新是安全更新。

我的问题是,你们所有人如何处理生产 Ubuntu 机器上的更新?您是否自动执行这些更新?您是否为他们设置了停机时间?问题是,你永远不知道更新什么时候会破坏某些东西,比如可能是现有的配置文件等。

这个问题的另一部分是,跟上补丁是“一件好事”,但补丁几乎每天都会发布。如果每天都有新的安全补丁可用,那么一个人必须进行多少次计划中断?

我认为有关如何管理更新的答案的线程将非常有用。

linux ubuntu security update
  • 6 6 个回答
  • 14006 Views

6 个回答

  • Voted
  1. Best Answer
    Zypher
    2010-01-21T08:55:23+08:002010-01-21T08:55:23+08:00

    修补 Ubuntu 与 Windows、RHEL、CentOS、SuSE、debian 等并没有什么特别之处。

    在设计补丁程序时,您需要保持的基本心态是假设某些事情会中断。

    在设计补丁设置时,我倾向于使用的一些基本准则是:

    • 始终使用本地系统在内部集中安装补丁程序的网络

    这可能包括使用 WSUS 或<your_os_here>内部补丁管理机器的镜像。可以集中查询并让您知道安装在您的各个机器上的补丁程序的状态的首选。

    • 在可能的情况下,在机器上预先进行安装。

    在可能的情况下,随着补丁的发布,让中央服务器将它们复制到各个机器上。这实际上只是节省时间,因此您不必等待他们下载并安装,您只需在补丁窗口期间开始安装。

    • 获得一个安装补丁的中断窗口,您可能必须重新启动,并且可能会出现问题。确保这些系统的利益相关者知道正在部署补丁。为“这个”不起作用的电话做好准备。

    按照我的基本理论,补丁会破坏事物,请确保您有一个中断窗口来应用补丁足够长的时间来解决关键问题,并可能回滚补丁。您不一定需要让人们在补丁后坐在那里进行测试。就我个人而言,我非常依赖我的监控系统来让我知道一切都在我们可以逃脱的最低水平上运行。但也要准备好在人们开始工作时遇到一些烦人的问题。你应该总是安排有人在那里准备接听电话——最好不是那个一直到凌晨 3 点才修补盒子的人。

    • 尽可能自动化

    就像 IT 中的其他一切一样,脚本、脚本然后再编写一些脚本。脚本包下载,安装开始,镜像。基本上,您想将补丁窗口变成一个婴儿坐姿任务,只需要一个人在那里,以防万一出现问题。

    • 每个月有多个窗口

    如果由于某种原因无法在“指定的夜晚”修补某些服务器,这使您能够不修补它们。如果您不能在第 1 晚进行,则要求他们在第 2 晚免费。还可以让您同时保持修补服务器数量的正常。

    最重要的是跟上补丁!如果你不这样做,你会发现你自己不得不做非常大的 10 多个小时的补丁窗口才能回到你被赶上的点。引入更多可能出错的地方,并使查找导致和发布的补丁变得更加困难。


    这个问题的另一部分是,跟上补丁是“一件好事”,但补丁几乎每天都会发布。如果每天都有新的安全补丁可用,那么一个人必须进行多少次计划中断?

    每月或每隔一个月修补一次服务器 - 恕我直言 - 一个非常可实现且可接受的目标。不仅如此,而且您将不断地修补服务器,更不用说您开始遇到需要为每台服务器应用数百个补丁的情况。

    至于你一个月需要多少个窗户?这取决于你的环境。你有多少台服务器?您的服务器所需的正常运行时间是多少?

    9x5 的较小环境可能每月只需要一个补丁窗口即可。大型 24x7 商店可能需要两个。非常大的 24x7x365 可能需要每周滚动窗口才能每周修补一组不同的服务器。

    找到适合您和您的环境的频率。

    要记住的一件事是,100% 保持最新是不可能达到的目标 - 不要让您的安全部门告诉您其他情况。尽力而为,不要落后太多。

    • 15
  2. Tom O'Connor
    2010-01-21T08:48:59+08:002010-01-21T08:48:59+08:00

    要做的事情:

    1. 备份
    2. 确保它是可恢复的备份(尽管这两个是一般要点)
    3. 在升级时尝试将流量从生产盒中引出。
    4. 尝试使用带外访问方法以防万一,KVM、串行控制台、本地访问或远程操作。
    5. 在一台服务器上进行测试,然后确保一切正常,然后再将更新部署到更多服务器上
    6. 如果可以,请使用 puppet 以确保多个服务器的版本号相同。(你也可以用它来强制升级)
    7. 在测试服务器上,将配置文件的版本与新的(已安装的更新)文件进行比较,并确保没有任何东西会严重破坏事情。我似乎记得 dpkg 在安装与当前安装的不同的新版本之前询问过。

    要避免的事情:

    1. 在中午进行更新,或在周一早上 09:00 或周五下午 5 点进行更新!(感谢@3influence!)
    2. 在非常大的数据库服务器上升级 MySQL(重启可能需要很长时间)
    3. 一次完成所有服务器(尤其是内核)
    4. 做任何可能改变 /etc/networks 的事情(因为你可能会失去连接)
    5. 无需您在场检查一切都可以执行上述操作的自动更新。
    • 7
  3. mpez0
    2010-01-21T11:51:45+08:002010-01-21T11:51:45+08:00

    值得一提的另一点:如果您习惯于 Windows,您会惊讶于大多数 Linux 更新不需要停机或重新启动。有些会,例如内核更新。但是需要重新启动或停机的更新通常会被标记为这样,并且可以按单独的时间表进行处理。

    • 4
  4. James
    2010-01-26T11:03:23+08:002010-01-26T11:03:23+08:00

    我们的 Ubuntu 机器都在运行 LTS 版本。

    我们只是自动安装所有更新——当然这不是“最佳实践”,但我们是一家相对较小的商店,没有针对每项服务的测试/开发/生产环境。无论如何,LTS 更新通常都经过了很好的测试并且微创。

    升级到新版本显然涉及更多。

    • 4
  5. jazmit
    2016-01-24T03:19:16+08:002016-01-24T03:19:16+08:00

    对于 ubuntu LTS 系统,我们通过以下方式处理更新:

    1. 维护一套验收测试,检查我们软件中的所有关键路径
    2. 每天凌晨 4 点在无人值守的情况下安装安全升级,并立即运行验收测试。如果出现任何故障,工程师会被传呼,并且有足够的时间在上午 9 点之前修复或回滚。迄今为止,这种情况在五年内只发生过两次——LTS 经过良好测试且稳定。
    3. 我们每周(在 digitalocean 上)使用蓝/绿部署自动重新部署我们的整个基础架构,从而使所有软件包保持最新版本。如果新部署未通过验收测试,则部署将暂停,直到工程师可以调试问题为止。

    对我们来说,下一个合乎逻辑的步骤是消除内存中的会话信息,这样我们就可以每天甚至每天多次重新部署基础架构,而不会影响客户并消除步骤 (2)。

    这种方法维护成本低,并且完全避免了维护窗口。

    • 4
  6. gbjbaanb
    2010-01-26T11:50:48+08:002010-01-26T11:50:48+08:00

    我推荐的一件事是处理包的回滚。有关如何执行此操作的建议,请参阅使用 Debian 的事务和回滚,因为有时您需要快速修复升级会破坏某些内容。

    • 0

相关问题

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve