重新安装根妥协后?

在服务器妥协之后读到这个问题之后,我开始想知道为什么人们似乎仍然认为他们可以使用检测/清理工具来恢复受感染的系统,或者只是修复用来危害系统的漏洞。

鉴于所有各种rootkit技术和黑客可以做的其他事情,大多数专家build议你应该重新安装操作系统 。

我希望能够更好地理解为什么更多的人不会把这个系统从轨道上取下来,

这里有几点,我希望看到解决。

  • 是否有格式/重新安装不会清理系统的情况?
  • 在什么types的条件下,你认为一个系统可以清理,什么时候你必须做一个完整的重新安装?
  • 你有什么理由反对完全重新安装?
  • 如果你select不重新安装,那么你有什么方法可以合理地确信你已经清理,并防止再次发生进一步的损害。

一个安全决策最终是一个关于风险的商业决策,就像决定要把什么产品推向市场一样。 当你在这种情况下进行构build时,决定不重新安装和重新安装是有道理的。 当你从技术angular度严格考虑时,事实并非如此。

以下是通常进入该业务决策的内容:

  • 我们的停机时间会花费我们多less可观的金额?
  • 当我们不得不向客户透露为什么我们失败时,会花费多less钱?
  • 还有什么其他的活动可以让人们远离重新安装? 成本是多less?
  • 我们是否有合适的人员知道如何正确使用系统? 如果不是的话,那么在排除错误的时候,会花费些什么呢?

因此,当您将这些成本加起来时,可能会认为继续使用“潜在”仍然受损的系统要比重新安装系统要好。

根据我多年前写的一篇文章,当我仍然可以困扰博客。

这个问题不断被黑客的受害者闯入他们的networking服务器。 答案很less改变,但人们不断问这个问题。 我不知道为什么。 也许人们不喜欢他们在寻求帮助时看到的答案,或者找不到他们信任的人给他们build议。 或者,也许人们阅读这个问题的答案,并过分关注为什么他们的情况是特殊的,不同于他们可以在网上find的答案的5%,错过95%的问题和答案,他们的情况是接近相同作为他们在网上阅读的一个。

这使我获得了第一个重要的信息。 我真的很感激你是一个特殊的独特的雪花。 我很欣赏你的网站,因为这反映了你和你的企业,或者至less是你代表雇主的努力。 但是对于外部的人来说,看看这个问题的计算机安全人员是否会尝试帮助你,甚至是攻击者本人,那么你的问题很可能会与其他所有情况至less有95%的相同曾经看过。

不要亲自采取攻击,也不要采取这里提出的build议,也不要采取其他人的build议。 如果您在成为网站黑客的受害者之后阅读本文,那么我真的很抱歉,我真的希望您能在这里find有用的东西,但是这不是让自我克服需要的方式的时候做。

你刚发现你的服务器被黑了。 怎么办?

不要惊慌。 绝对不要匆忙行事,绝对不要试图假装从未发生过的事情,也不要做任何事情。

首先:了解这场灾难已经发生。 这不是拒绝的时候; 现在是接受发生的事情的时候了,要现实一点,并采取措施来pipe理影响的后果。

其中一些步骤将会受到伤害,并且(除非您的网站拥有我的详细信息)我真的不在乎是否忽视所有或部分步骤,但是这样做会让事情变得更好。 药物可能会味道糟透了,但有时你必须忽略,如果你真的想要治愈的工作。

阻止问题变得比现在更糟糕:

  1. 你应该做的第一件事是从互联网断开受影响的系统。 无论您遇到什么其他问题,将系统连接到networking将只允许攻击继续。 我的意思是相当字面的; 让别人实际访问服务器并拔下网线,但是在尝试做其他事情之前,请先将受害者与抢劫者断开。
  2. 更改与受损系统位于同一networking上的所有计算机上的所有帐户的所有密码。 不完全是。 所有帐户。 所有的电脑。 是的,你是对的,这可能是矫枉过正的; 另一方面,它可能不是。 你不知道,你呢?
  3. 检查你的其他系统。 要特别注意其他面向互联网的服务,以及那些持有财务或其他商业敏感数据的人。
  4. 如果系统拥有任何人的个人资料,请立即向可能受到影响的人全面坦率地披露。 我知道这个很难。 我知道这个会受伤的 我知道很多企业都想在地毯下扫清这种问题,但是恐怕你只能去处理这个问题。

仍然犹豫要采取这最后一步? 我明白,我知道。 但是看看这样的:

在某些地方,您可能有法律要求通知当局和/或这类隐私违规的受害者。 不过,如果你不告诉他们,让你的客户恼火,可能是你告诉他们一个问题,他们会更加恼火,他们只有在使用信用卡详细信息收取价值8,000美元的商品后才发现问题。从您的网站偷走。

还记得我之前说过的吗? 坏事已经发生了 。 现在唯一的问题是你如何处理它。

充分了解问题:

  1. 不要把受影响的系统重新在线,直到这个阶段完全完成,除非你想成为那些对我来说是实际决定写这篇文章的转折点的人。 我没有链接到这个post,所以人们可以得到一个便宜的笑声; 我连接,警告你没有遵循第一步的后果。
  2. 检查“受到攻击的”系统,了解攻击是如何成功地影响安全的。 尽一切努力找出攻击来自哪里,以便您了解您有哪些问题需要解决,以确保您的系统在未来安全。
  3. 再次检查“攻击”系统,这次了解攻击发生的位置,以便了解系统在攻击中受到攻击。 确保你跟进任何build议妥协系统可能成为进一步攻击你的系统的跳板的指针。
  4. 确保在任何和所有攻击中使用的“网关”已被充分理解,以便您可以开始正确closures它们。 (例如,如果您的系统受到SQL注入攻击的威胁,那么您不仅需要closures特定的有缺陷的代码行,还需要审计所有代码,以查看是否存在相同types的错误是在别处制造的)。
  5. 了解攻击可能因为多个缺陷而成功。 通常,攻击并不是通过在系统中发现一个主要的错误,而是通过将几个问题(有时是微不足道的小问题)串联在一起来妥协一个系统。 例如,使用SQL注入攻击向数据库服务器发送命令,发现您正在攻击的网站/应用程序正在pipe理用户的上下文中运行,并使用该帐户的权限作为跳板来危害其他部分一个系统。 或者像黑客喜欢称之为:“利用人们常犯的错误,在办公室的另一天”。

制定恢复计划并将您的网站重新上线并坚持下去:

没有人想要离线的时间超过他们必须。 这是一个给定的。 如果这个网站是一个创收机制,那么迅速恢复在线的压力将会非常激烈。 即使唯一的事情是你/公司的声誉,这仍然会产生很大的压力,使事情迅速恢复。

但是,不要太放弃回到网上的诱惑。 而是要尽可能快地了解是什么原因引发了这个问题,并在你回到网上之前解决它,否则你几乎肯定会再次成为入侵的受害者,并且记住:“一次黑客攻击可以归类为不幸;直到再次遭到黑客攻击,看起来像是粗心“(向奥斯卡·王尔德道歉)。

  1. 我假设你在开始本节之前已经理解了导致成功入侵的所有问题。 我不想夸大案件,但如果你没有这样做,那么你确实需要。 抱歉。
  2. 切勿支付勒索/保护费。 这是一个简单的标志,你不希望这个短语用来形容你。
  3. 不要试图在没有完全重build的情况下将相同的服务器重新联机。 在旧硬件上build立一个新的盒子或者“从轨道上干掉服务器并进行干净的安装”,要比审核旧系统的每一个angular落以确保它在清理之前保持干净要快得多在线再次。 如果你不同意,那么你可能不知道确保系统完全清理的真正含义,或者你的网站部署过程是一团糟。 你大概有备份和testing部署你的网站,你可以用它来build立活网站,如果你不这样被黑客攻击不是你最大的问题。
  4. 在进行黑客攻击时,要非常小心地重新使用系统上“活”的数据。 我不会说“永远不要这样做”,因为你会忽略我,但坦率地说,我认为当你知道你不能保证它的完整性时,你需要考虑保持数据的后果。 理想情况下,您应该从入侵之前的备份中恢复。 如果你不能或者不会那样做,你应该对这些数据非常小心,因为它被污染了。 如果这些数据属于客户或网站访问者,而不是直接向您提供,则应特别注意其他人的后果。
  5. 仔细监视系统。 你应该决定把这个做成一个持续的过程(更多的下面),但是在你的网站重新上线之后的这段时间里,你要加倍努力保持警惕。 入侵者几乎肯定会回来,如果你能发现他们想再次入侵,那么如果你真的closures了以前使用过的所有洞,再加上他们自己制造的洞,你一定能够迅速看到,您可以将信息传递给当地的执法机构。

降低未来的风险。

首先你需要了解的是,安全是一个过程,你必须在devise,部署和维护一个面向Internet的系统的整个生命周期中应用,而不是你可以在你的代码之后挨过几层,如便宜涂料。 为了保证安全,从一开始就需要devise一个服务和一个应用程序,作为项目的主要目标之一。 我意识到这很无聊,而且你之前听说过这一切,我只是没有意识到让你的testingweb2.0(testing版)服务进入testing状态的压力的人,但事实是,这样做因为这是第一次被说出来,而且还没有成为谎言,所以重复。

你不能消除风险。 你甚至不应该这样做。 但是,您应该做的是了解哪些安全风险对您至关重要,并了解如何pipe理和降低风险的影响以及风险发生的可能性 。

你可以采取哪些措施来降低攻击成功的可能性?

例如:

  1. 这个漏洞是否允许人们闯入您的网站,发现供应商代码中的一个已知错误,并提供补丁? 如果是这样的话,您是否需要重新考虑如何在面向Internet的服务器上打补丁?
  2. 这个漏洞是否允许人们在供应商代码中插入一个未知的错误,并且没有补丁? 如果采取这种方法,我绝对不会主张改变供应商,因为他们都有问题,而且如果采取这种方法,一年之内就会用完平台。 但是,如果一个系统不断地让你失望,那么你应该迁移到更强大的东西,或者至less,重新构build你的系统,使易受攻击的组件保持在棉花包裹,尽可能远离敌对的眼睛。
  3. 这个缺陷是由您(或为您工作的承包商)开发的代码中的错误吗? 如果是这样,你是否需要重新考虑如何批准代码部署到您的现场? 这个bug是否可以通过一个改进的testing系统,或者通过改变你的编码“标准”来实现(例如,虽然技术不是万能的,但是你可以通过使用文档化的编码技术来降低SQL注入攻击的成功率)。
  4. 是由于服务器或应用程序软件的部署方式有问题吗? 如果是这样,您是否使用自动化程序来尽可能地构build和部署服务器? 这对于在所有服务器上保持一致的“基线”状态有很大的帮助,最大限度地减less了每个服务器上必须完成的定制工作量,因此希望尽可能地减less出现错误的机会。 代码部署也是如此 – 如果您需要“特殊”来部署最新版本的Web应用程序,请尽量使其自动化并确保始终以一致的方式完成。
  5. 入侵是否能在早期被更好地监控系统? 当然,为您的员工提供24小时监控或“随叫随到”系统可能并不符合成本效益,但是有些公司可以监控面向您的networking服务,并在出现问题时提醒您。 你可能会决定你买不起或不需要它,那就好了…只要把它考虑在内。
  6. 在适当的地方使用tripwire和nessus等工具,但不要盲目地使用它们,因为我这样说。 花时间学习如何使用适合您的环境的一些优秀的安全工具,保持这些工具的更新并定期使用它们。
  7. 考虑聘请安全专家定期“审计”您的网站安全。 再说一次,你可能会认为你买不起或者不需要它,这就好了…只要考虑一下。

你可以采取哪些措施来减less成功攻击的后果?

如果你认为你家的水浸较低楼层的“风险”很高,但是不够高,不能移动,你至less应该把不可替代的家庭传家宝搬到楼上。 对?

  1. 你能减less直接接触互联网的服务的数量吗? 你能在内部服务和面向互联网的服务之间保持某种差距吗? 这确保即使您的外部系统受到危害,将其作为跳板来攻击您的内部系统的机会也是有限的。
  2. 你是否存储了你不需要存储的信息? 你是否可以将这些信息存储在其他地方? 这部分有两点, 显而易见的是人们不能窃取你没有的信息,第二点就是你存储的信息越less,你需要维护和编写的信息越less,所以错误的机会就越小你的代码或系统devise。
  3. 你使用“最less访问”的原则为您的networking应用程序? 如果用户只需要从数据库中读取数据,那么确保Web应用程序使用的账户只具有读访问权限,不允许写访问权限,当然也不允许访问系统级别访问权限。
  4. 如果你对某些东西不是很有经验,而且对你的业务也不重要,那就考虑把它外包。 换句话说,如果你运行一个小网站,谈论编写桌面应用程序代码,并决定从网站上开始销售小型桌面应用程序,那么就考虑把你的信用卡订单系统“外包”给Paypal这样的人。
  5. 如果可能的话,从灾难恢复计划的一部分恢复受损系统。 这可以说是您可能遇到的另一个“灾难场景”,仅仅是一个与自己的问题和问题不同,通常的“服务器房间着火”被大型服务器吃掉了。 (根据XTZ编辑)

…最后

我可能没有留下别人认为重要的东西,但上面的步骤至less应该帮助你开始分类,如果你不幸成为黑客的受害者。

最重要的是:不要惊慌。 在行动之前思考。 一旦你做出决定,坚决行动,如果你有什么要添加到我的步骤列表,请在下面留言。

总是把它从轨道上摧毁。 这是唯一确定的方法。

替代文字

大多数系统是具有内在隐含信任的整体实体。 相信一个被泄露的系统是一个隐含的陈述,你信任谁违反了你的系统开始。 换一种说法:

你不能相信它。 不要打扰清洗。 立即断开并隔离机器。 在继续之前了解违规的性质,否则你会再次重复同样的事情。 如果可能,尝试获取违规的date和时间,以便您有一个参考框架。 你需要这个,因为如果你从备份恢复,你需要确保备份本身没有妥协的副本。 擦除之前,恢复 – 不要采取捷径。

实际上,大多数人不这样做,因为他们认为这会花太长的时间,或太过分的破坏性。 我已经build议无数客户可能会遇到问题,但重新安装往往被决策者击倒,原因之一。

这就是说,在我确信我知道进入方法和损害的全部范围的系统上(固定的机器外日志,通常带有IDS,也许SELinux或类似的东西限制了入侵的范围),我已经做了一个清理,不用重新安装,而不会感到内疚。

他们很可能没有经过充分testing的灾难恢复例行程序,以便他们对重build有信心,或者不清楚需要多长时间或会产生什么影响……或者备份不可靠或其风险分析师不了解受损系统的范围。 我可以想到很多原因。

我想说的是,在基本常规和政策方面大部分是不对的,这不是你想公开承认的 – 而是采取防御姿态。 至less我不能看到或捍卫,不pipe你从哪个angular度来看,都不要抹煞一个妥协的系统。

我以前没有把这个系统弄坏,所以我可以分析一下它们进来的vector,然后分析它的用途,看看它们到了哪里。

一旦你扎根 – 你有一个活蜜jar,它可以提供的不仅仅是黑客。 – 特别是警察。

  • 说我一直处于热情的待命状态,并且能够提供快速增强的networking安全来隔离根盒。