偏执系统pipe理员 – vs-过时的PHP版本

一个偏执狂的系统pipe理员如何自信地保持最新的稳定的PHP版本? (安全修补程序已经定期进入)。

这是一个生产服务器,所以“打破东西”是吓死我的家伙。 停机维护不是问题。

具体来说,我们正在运行最近的Suse Enterprise Linux,但是一个通用或者更一般的答案是完全可以接受的。

你如何处理生产机器的安全更新? 我们怎么知道这个家伙害怕使用包pipe理器来“更新”?

任何build议?

我处理PHP的方式与我处理其他事情的方式相同:首先升级开发环境(生产的VMWare克隆),回归testing出来,然后使用我们用于VMWare主机的相同部署模板将其推广到生产环境。 (如果您使用软件包pipe理器进行升级,则可以使用相同的软件包)。

作为一个额外的绝缘层,我们的生产环境由成对的冗余主机组成,一台主机从生产轮转中取出来进行升级,然后在切换到该主机升级其合作伙伴之前进行彻底testing。

作为一般规则,尽快应用安全更新,并按季度应用非安全/非关键性的bug修复更新,以最大限度地减less停机时间。

PHP是我保持更新到当前版本的顶级列表。 我相信它比大多数事情都要less。

最终,你最好的select是审查你当前版本的每一个更新日志,以最新的,有力的衡量风险。

如果你正在升级5.3.1到5.3.2等小版本,我不会太担心。

如果你从5.2.x升级到5.3.x,你可能会引入一些兼容性问题。

如果您使用的是系统软件包,通常情况下,发行版不会引入会破坏现有性能的升级。 RHEL和CentOS修补旧版本的修补程序,直到发行一个主要的发行版本。 为你做testing,通常是降低风险。 我期望SuSE 企业是相似的。

对于升级path,最好的办法是在升级生产之前构build一个testing服务器并针对最新版本testing应用程序。

另一个不太受人喜欢的答案是build立一个允许的url和function的白名单。 在Apache中,您可以通过组合代理和重写function来完成此操作。

基本上,你做两个安装,一个有一个精简configuration:代理,重写,没有代码执行; 等等任何“允许”URL(带有参数等)被代理到第二次安装。

然后,将自己添加到PHP的开发人员列表中,并仔细监视发行说明。 任何时候当你看到一些看起来可能是安全漏洞的东西时,你会在第一次安装时创build一个垫片来检测这种故障,并向用户发送一个错误。

在这样的设置中,您需要将POSTredirect到一个filter(如果您需要POST;根据某些IP地址,某些站点可以正常工作,只允许POST),可以查找允许的来源,validation一切。

这样的白名单设置起来非常耗时,但对于需要运行时间超过PHP稳定寿命(这似乎只有几年)的关键任务应用程序来说,这可以是利用大量PHP应用程序也没有得到他们的漏洞。

除了上述以外,您还可以启用软件包回滚以防万一。

那么,如果某些事情在生产中发生了断裂,那么您绝对肯定在开发过程中工作得很好 ,那么在解决问题之前,您至less可以快速撤消更改。

请参阅Yum中的回滚YUM包 。 我相信其他包pipe理系统也有类似之处。

我知道这是腰带和大括号,我同意华纳与点发布。 小的改变不应该破坏任何东西。 就我个人而言,在PHP升级方面我没有任何问题,但最好是安全而不是遗憾。