昨天早上我有一个操作系统课程,我们刚刚开始了关于操作系统安全的部分。
当教授解释什么是补丁管理器时,他告诉我们,他知道的一家从事保护服务器安全的计算机公司在获得认证后(我真的不知道您在处理计算机时如何认证安全性),停止补丁经理,因为他们说
我们达到了稳定的情况,因此更新软件将解决已知的错误,但也可能最终引入新的安全问题,所以我们不这样做
现在,我不同意它的逻辑,因为确实可以引入新的错误,但是解决现有的错误呢?在这种情况下使用这个词时,稳定是什么意思?
昨天早上我有一个操作系统课程,我们刚刚开始了关于操作系统安全的部分。
当教授解释什么是补丁管理器时,他告诉我们,他知道的一家从事保护服务器安全的计算机公司在获得认证后(我真的不知道您在处理计算机时如何认证安全性),停止补丁经理,因为他们说
我们达到了稳定的情况,因此更新软件将解决已知的错误,但也可能最终引入新的安全问题,所以我们不这样做
现在,我不同意它的逻辑,因为确实可以引入新的错误,但是解决现有的错误呢?在这种情况下使用这个词时,稳定是什么意思?
从理论上讲,您的教授提出的建议听起来很合理。但在实践中存在问题。您永远无法获得稳定的配置。曾经。
没有没有未知错误的重要软件。没有任何。这些错误中有一部分是安全漏洞。
如果有人在认证完成后发现系统中存在远程代码执行漏洞,教授建议怎么办?
他真的相信让系统部署一个已知的远程代码执行漏洞比冒补丁的风险更安全吗?
答案(令人惊讶)可能是“是”。这就是现实世界安全的核心。安全实际上与风险管理有关。每个部署的软件都具有与该软件相关的一定风险。新部署的软件可能会破坏现有的业务线应用程序。它可能会引入新的漏洞。
基本上没有办法知道会发生什么。所以你需要决定你的风险承受能力是多少。
对于某些系统(通常是某人的生命取决于系统的系统),实际上最好保持系统不变(即使存在已知漏洞)并减轻系统外部的漏洞(可能使用防火墙)。对于其他系统,您需要做的就是确保您的业务线应用程序继续工作。
这里没有万能的解决方案。每个企业都需要就与安全补丁相关的风险/回报权衡做出自己的决定。有些人会接受风险,有些人不会。
“稳定”意味着“不变”。这与有时在软件中给出的另一个含义不同:“不是很容易出错”。现在的情况可能是确实存在很多错误,但如果系统没有迅速变化,那么更容易检测和推理其当前的安全状态。
正如您正确指出的那样,这是一把双刃剑:您没有引入新问题,但同样您也没有处理现有问题。这是否是正确的做法取决于现有问题被攻击者知道和利用的相对风险,与导致支持稳定情况的一些问题的新问题的相对风险。
稳定可能意味着一些不同的事情。
通常在托管环境中,您将操作系统带到最新的已知良好补丁级别。这可能意味着它不一定有最新的补丁,但它有所有已知的安全补丁(针对已知漏洞),并且经过测试可以与需要安装的软件一起使用。这是安全性和可用性之间的平衡。
每次修补时,您都可以创建或暴露新的错误和漏洞,还可以破坏需要在服务器上运行的软件。如果补丁破坏了您的网络服务器,那么这台机器无论如何都是无用的。
处理您提到的困境的一种方法是创建登台机器。当您想尝试新的补丁时,您将所有东西都安装在登台机器上,然后从功能和安全的角度进行测试以确保一切正常。由于这需要时间、精力和资源,因此您不想经常这样做。根据安全要求和资源,您可能仅每 6 个月执行一次(零日漏洞利用除外)。
如果您想了解有关此的更多信息,请查看配置管理
“稳定”有两个不同且略有矛盾的地方:
http://www.merriam-webster.com/dictionary/stable?show=2&t=1290292919
1a) 不变或波动
2a) 目标坚定:决心坚定
2b) 不受不安全感的影响(理智的)
大多数软件使用是第二个含义的延伸——稳定的软件是不会崩溃的软件。
Debian stable,你在这里说的意思是第一个意思——稳定的软件是不会改变的软件。
这很有吸引力,因为您可以找出所有错误并为它们制定解决方法,并且稳定性意味着您无需担心新的错误。
然而,安全漏洞与大多数其他漏洞不同:发现正常漏洞的时间通常与它的重要性成正比。我的意思是在开发过程中发现的错误可能会影响大量的用例和用户。而在产品部署后发现的错误很可能是边缘情况,或者只影响一小部分用户。(Y2K 类型的 bug 例外,用户环境的变化会导致大问题)。
安全漏洞通常是边缘情况,但一旦知道,针对它们的攻击就会影响任何使用场景中的每个用户。所以这个问题突然变得对每个人来说都很重要。