偏执的系统管理员如何自信地与最新的稳定PHP版本保持同步?(安全修复程序已经定期发布)。
这是生产服务器,因此“中断的东西”吓死我了。维护停机时间不是问题。
具体来说,我们正在运行最新的Suse Enterprise Linux,但是完全或更通用的答案是完全可以接受的。
您如何处理生产机器的安全更新?我们有什么不知道这个家伙这么害怕使用包管理器来“更新”的呢?
有什么建议吗?
偏执的系统管理员如何自信地与最新的稳定PHP版本保持同步?(安全修复程序已经定期发布)。
这是生产服务器,因此“中断的东西”吓死我了。维护停机时间不是问题。
具体来说,我们正在运行最新的Suse Enterprise Linux,但是完全或更通用的答案是完全可以接受的。
您如何处理生产机器的安全更新?我们有什么不知道这个家伙这么害怕使用包管理器来“更新”的呢?
有什么建议吗?
Answers:
我以与处理其他所有问题相同的方式处理PHP:首先升级开发环境(生产的VMWare克隆),对它进行回归测试,然后使用与VMWare主机相同的部署模板将其升级到生产环境。(如果您使用软件包管理器进行升级,则将使用相同的软件包)。
作为额外的隔离层,我们的生产环境由成对的冗余主机组成,并且从生产循环中取出一个主机进行升级,然后进行全面测试,然后再切换到该主机以升级其合作伙伴。
通常,安全更新应在实际中尽快应用,非安全/非关键错误修正更新每季度应用一次以最大程度地减少停机时间。
PHP是我最需要保持更新到最新版本的东西。我不相信大多数东西。
最终,最好的选择是查看从当前版本到最新版本的每个变更日志,并切实权衡风险。
如果您要升级从5.3.1到5.3.2的次要版本,我不会太担心。
如果您是从5.2.x升级到5.3.x,则可能会引入一些兼容性问题。
如果您使用系统软件包,通常发行版将不会引入会破坏现有性能的升级。RHEL和CentOS会修补旧版本以进行修复,直到主要发行版本发布为止。通常,为您进行测试可以降低风险。我希望SuSE 企业也是如此。
对于升级途径,最好的选择是在升级生产之前,构建测试服务器并针对最新版本测试应用程序。
另一个不太受欢迎的答案是建立允许的URL和功能的白名单。在Apache中,您可以通过结合使用代理和重写功能来做到这一点。
基本上,您进行两次安装,其中一次安装具有简化的配置:代理,重写和不执行代码;等等。任何“允许的” URL(带有参数等)都将被代理到第二次安装。
然后,将您自己添加到PHP的开发人员列表中,并仔细监视发行说明。每当您看到可能是安全漏洞的东西时,便会在首次安装中构建垫片以检测此类失败,并向用户发送错误。
在这样的设置中,您需要将POST重定向到一个过滤器(如果您根本需要POST;某些站点只允许通过某些IP地址进行POST就可以了!)可以查找允许的来源,并预先验证一切。
设置这样的白名单非常耗时,但是对于需要运行比PHP稳定寿命(似乎只有几年)更长的任务的关键应用程序,这可能是利用大量PHP的绝佳方法应用程序,而不会遇到漏洞。