OpenBSD,FreeBSD:你的更新理念?

我已经使用了FreeBSD大约5年 – server / Desktop – 并且我倾向于把我的apt-get / yum升级一切习惯与我一起(我pipe理Debian / RHEL / Cent盒子 – 我知道,我知道…应该更聪明,不pipe平台)。 所以通常是:

portsnap fetch portsnap update portmanager -u 

对于港口

有时跟着一个:

 freebsd-update fetch freebsd-update install 

对于系统…等。 然后,只要清理任何混乱,如果它们发生。

我意识到,这是一个相当过分的非BSD方式来做事情。 你的BSD盒的理念是什么? 你运行一个portaudit / portversion – 检查输出,然后更新(使卸载…等)经过仔细考虑?

我对OpenBSD相当陌生,我承认。 我看到自己正在使用ports树,运行“过期”脚本,然后升级关键端口—但是只留下内核/二进制文件,每六个月升级一次。 你补丁/重新编译/重build内核,二进制文件—为什么?

在BSD盒子上,关键服务(相当关键 – 这不是银行或医院)的保守方法是什么? 你在Linux上使用类似的方法吗? 除非安全警告已经给我的灵魂带来了恐惧,否则我通常不会在任何服务器上触摸内核。

是的,有文件和书籍,你们究竟做了什么? 假设我们知道基础 – 智慧是什么? 用例/环境和场景各不相同,风险/利益相关者/用户也不尽相同。 书籍和手册页包含工具和用途,但是缺乏实际应用。 推荐一本书,如果你知道一个覆盖它的书!

谢谢阅读!

Bubnoff

结论〜感谢大家花时间回答这个post。 现在我的策略是遵循两个BSD的邮件列表,并且比以前更加挑剔。

FreeBSD〜Portaudit是一个很好的答案。 通过邮件列表和勤勉的审计,我认为这将在这里很好地发挥作用。 有趣的是OpenBSD和FreeBSD之间不同的端口重点。

OpenBSD〜将遵循邮件列表并使用被认为是关键的包工具(pkg_info和pkg_add -u)。 升级:看起来每年至less需要升级一次。 他们支持最新版本加上一个回来 – 所以现在是4.8和4.7。

再次感谢。

确保每隔一段时间检查安装的易受攻击的端口:portaudit -Fda

我不确定有什么特定的“BSD方式”来做这种types的东西。 这一切都归结于知道什么是更新和testing – 通用系统pipe理员的东西。 幸运的是, freebsd-updateportsnap使得“知道什么”相当平凡。

但是,既然你问了一些具体问题,回到我介绍大量的FreeBSD机器时,他们都是集群中的所有节点。 独立的机器与此不会有太大的不同,但我想你可以为你的生产服务制作一些模糊的“devops”。 最后,拥有独立的testing和生产环境总是一个好主意。

在集群情况下:

  • 每台机器通过NFS挂载/ usr / src/ usr / obj/ usr / ports
  • 根据你的预算,你可以有一个登台/build立机器或者指定一个群集节点作为登台/build立节点。
  • 临时节点具有不同的/ usr / ports副本
  • 暂存节点将每晚通过cvsup更新src-allports-
  • 在必要的更新的情况下,暂存节点将被移除 ,并且buildworldinstallworldportupgrade将被运行。
  • 中转节点将被彻底testing。
  • / usr / ports将在NFS主机上交换
  • 每个群集节点都会被转出运行installworldportupgrade ,然后再进行testing,然后再转回。

显然,这是在系统和端口更新的情况下,但程序类似于更新包或系统。

如果这是用两台机器完成的,你可以让每个机器轮stream作为生产或分期,或者只是从分期更新生产。

您可以跟踪CVS日志中的更改,并检查是否已在/ usr / src / UPDATING/ usr / ports / UPDATING中获得特定更新,两者都自动从cvsup更新。

如果你不使用cvsup (而且这些日子里没有什么理由),你只需要find一些其他的方式来跟踪你想要的更新。 你可以通过邮件发送一份freebsd-update想给自己做的修改列表,并留意安全勘误页面。

OpenBSD更新理念

这是我更新OpenBSD的方法

保持最新的安全发布/补丁:

  • BASE(即OpenBSD开发团队在其源代码树中维护的东西)
  • 软件包/端口(即安装在BASE之上的软件应用程序)

更新程序:

  • 相同的OS版本
  • 新的OS版本

基础

一个。 按照相关的邮件列表 – 我看squish.net每日摘要,以及技术和杂项邮件列表上显示的大方向。

湾 遵循Unix相关的安全公告网站/邮件列表。

C。 保持使用cvsync的本地CVS副本

d。 从上面build立稳定版本

在发布安全更新时,我们会使用该版本的操作系统/漏洞的机器configuration文件评估实际的安全问题。 如果这个漏洞是相关的,我们会通过“相同的版本升级程序”。

包/端口

跟踪端口/软件包的安全更新是比较困难的,但是如果它足够严重到位于我们的基础架构上,那么足够重要的是以类似于BASE的方式跟踪。

  • 获取特定应用程序的邮件列表(我们有责任保持上游更改的标签,而不受OpenBSD项目的限制)。

  • 获取像CERT这样的安全性分布列表,发布应用程序漏洞的结果等。

升级程序

显然,在生产机器上执行安装过程之前,需要在单独的硬件(或VM)上构build和testing安装过程。 对我们来说幸运的是,我们拥有多余的主机,因此可以以最less的服务停机时间进行部署。 因为OpenBSD支持广泛的硬件,所以我们可以为我们的主要机器推出服务器级的设备,把低端的桌面作为我们的冗余主机(或者我们只是在更新周期内build立一个临时的机器来填补主机)。

我们的更新程序在很大程度上依赖于使用非BASE软件的ports / packages系统。 我们从源代码安装软件的两台主机很难在操作系统的版本更新之间进行更新。

相同的OS更新

对于BASE操作系统,我们只要将新的二进制文件安装在旧版本上就可以继续取得成功。 我们最好备份所有的操作系​​统和应用程序configuration/数据文件,格式化并重新安装补丁的操作系统并重新安装软件包(保留原始数据)

在我们部署的OpenBSD主机(30+)以及经验中,备份configuration和数据并不困难。 对于我们的防火墙,所有的数据都在configuration和日志文件中。

对于Ports / Packages – 其中的更改很简单,我们修改我们自己的端口并从中构build软件包。 有一个更新的端口简化了上述过程。

新的OS更新

在操作系统版本之间,我们安装了草图。

我确信这个过程有足够的文档,但是本质上我们build立一个与被replace的系统configuration相同的参考机器。 在部署主机之前进行所需的相同testing。

我们从参考主机备份configuration,并在生产主机上安装OpenBSD,在其上恢复“validation”configuration(之后再次运行相同的validationtesting)。

对于OpenBSD,至less:

  • 包是端口系统的最终产品; 应该有一点,如果有需要与港口运行。
  • – 释放和 – 稳定是(大部分)及时冻结,并不时更新。
  • – 电stream定期更新。 如果你真的需要最新的软件包,这是要走的路。
  • 保持一致:-release / -stable系统坚持使用-release / -stable软件包…-当前系统运行-current软件包

常见问题15,所有关于端口和包装

如果没有安全问题或妨碍function的错误,那么请保持独立。 每3-6个月检查更新一次,所以你不要太落后,否则不要pipe它。

如果没有损坏,请不要修复。

我更喜欢使用portupgrade来升级端口,只有在绝对必要的时候才会这样做,例如在端口中发现漏洞或需要新的function。

至于升级系统,我通常用make buildworld来重build。 我从来没有任何问题,这种方法。