如何处理受感染的服务器?

gun*_*win 623 security hacking

这是关于服务器安全的规范问题- 响应违规事件(黑客攻击)
另请参见:

规范版本
我怀疑我的一台或多台服务器受到了黑客、病毒或其他机制的危害:

  • 我的第一步是什么?当我到达现场时,我是否应该断开服务器,保留“证据”,还有其他初步考虑吗?
  • 如何让服务重新上线?
  • 如何防止同样的事情立即再次发生?
  • 是否有从这次事件中学习的最佳实践或方法?
  • 如果我想制定一个事件响应计划,我该从哪里开始?这应该是我的灾难恢复或业务连续性计划的一部分吗?

原版

2011.01.02 - 我在周日晚上 9.30 上班的路上,因为我们的服务器不知何故遭到入侵,导致对我们的供应商的 DOS攻击。访问 Internet 的服务器已关闭,这意味着我们的 5-600 多个客户站点现已关闭。现在这可能是 FTP 黑客攻击,或者某处代码中的一些弱点。我不确定,直到我到达那里。

我怎样才能快速追踪到这个?如果我不尽快备份服务器,我们将面临大量诉讼。任何帮助表示赞赏。我们正在运行 Open SU​​SE 11.0。


2011.01.03 - 感谢大家的帮助。幸运的是,我不是唯一负责这个服务器的人,只是最近的人。我们设法解决了这个问题,尽管它可能不适用于不同情况下的许多其他问题。我会详细说明我们做了什么。

我们从网络上拔掉了服务器。它正在印度尼西亚的另一台服务器上执行(试图执行)拒绝服务攻击,而犯罪方也在那里。

我们首先试图确定这是来自服务器上的哪个位置,考虑到我们服务器上有 500 多个站点,我们预计会在一段时间内兼职。然而,在 SSH 访问仍然存在的情况下,我们运行了一个命令来查找在攻击开始时编辑或创建的所有文件。幸运的是,有问题的文件是在寒假期间创建的,这意味着当时在服务器上创建的其他文件并不多。

然后,我们能够识别ZenCart网站内上传的图像文件夹内的违规文件。

在短暂的休息之后,我们得出结论,由于文件位置的原因,它一定是通过文件上传工具上传的,但该工具没有得到足够的保护。经过一番谷歌搜索,我们发现 ZenCart 管理面板中存在一个安全漏洞,允许上传文件以获取唱片公司的图片。(它从未真正使用过的部分),发布此表单只是上传了任何文件,它没有检查文件的扩展名,甚至没有检查用户是否已登录。

这意味着可以上传任何文件,包括用于攻击的 PHP 文件。我们在受感染站点上使用 ZenCart 保护漏洞,并删除了有问题的文件。

工作完成了,我在凌晨 2 点回家


道德 - 始终为 ZenCart 或任何其他 CMS 系统应用安全补丁。当安全更新发布时,全世界都意识到了这个漏洞。- 总是做备份,备份你的备份。- 雇用或安排在这种时候会在那里的人。防止任何人依赖服务器故障上的恐慌帖子。

Rob*_*oir 1034

很难从你在这里发布的内容中给出具体的建议,但我确实有一些基于我多年前写的一篇文章的通用建议,当时我仍然懒得写博客。

不要惊慌

首先,除了从入侵之前的备份恢复系统之外,没有“快速修复”,这至少有两个问题。

  1. 很难确定入侵何时发生。
  2. 它不会帮助您关闭上次允许他们闯入的“漏洞”,也不会帮助您处理可能发生的任何“数据盗窃”的后果。

黑客入侵他们的网络服务器的受害者不断地问这个问题。答案很少改变,但人们一直在问这个问题。我不知道为什么。也许人们只是不喜欢他们在寻求帮助时看到的答案,或者他们找不到他们信任的人来给他们建议。或者,也许人们阅读了这个问题的答案,并过多地关注了为什么他们的案例很特别并且与他们在网上找到的答案不同的 5% 并且错过了他们的案例足够接近的问题和答案的 95%正如他们在网上阅读的那样。

这让我想到了第一个重要的信息块。我真的很感激你是一片特别独特的雪花。我也很欣赏您的网站,因为它反映了您和您的企业,或者至少反映了您代表雇主的辛勤工作。但是对于外部的人来说,无论是计算机安全人员查看问题以尝试帮助您还是攻击者本人,您的问题很可能与他们遇到的所有其他情况至少有 95% 相同曾经看过。

不要把攻击个人化,也不要把这里遵循的建议或你从其他人那里得到的建议当作个人。如果您在成为网站黑客的受害者之后才阅读本文,那么我真的很抱歉,我真的希望您能在这里找到一些有用的东西,但这不是让您的自我妨碍您需要做的事情的时候做。

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

不要恐慌。绝对不要仓促行事,也绝对不要试图假装事情从未发生过,根本不采取行动。

第一:明白灾难已经发生。现在不是否认的时候;现在是接受已经发生的事情、现实地看待它并采取措施管理影响后果的时候了。

其中一些步骤会受到伤害,并且(除非您的网站包含我的详细信息的副本)我真的不在乎您是否忽略所有或部分这些步骤,这取决于您。但是正确地遵循它们最终会使事情变得更好。该药的味道可能很糟糕,但有时如果您真的希望治疗有效,您就必须忽略这一点。

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

  1. 您应该做的第一件事是断开受影响的系统与 Internet 的连接。无论您遇到什么其他问题,让系统连接到网络只会让攻击继续进行。我的意思是字面意思;如果需要的话,请某人亲自访问服务器并拔下网络电缆,但在尝试执行其他任何操作之前,请先断开受害者与其劫匪的连接。
  2. 更改与受感染系统位于同一网络的所有计算机上所有帐户的所有密码。不完全是。所有账户。所有电脑。是的,你是对的,这可能有点矫枉过正;另一方面,它可能不会。两种方式你都不知道,是吗?
  3. 检查您的其他系统。特别注意其他面向 Internet 的服务,以及那些持有金融或其他商业敏感数据的服务。
  4. 如果系统持有任何人的个人数据,请立即通知负责数据保护的人员(如果不是您)并敦促全面披露。我知道这个很难。我知道这个会很痛。我知道许多企业希望将此类问题隐藏在地毯下,但企业将不得不处理它 - 并且需要着眼于任何和所有相关的隐私法。

不管你的客户让你告诉他们一个问题有多恼火,如果你不告诉他们,他们会更加恼火,而且只有在有人使用他们的信用卡详细信息收取价值 8,000 美元的商品后,他们才会发现自己从您的网站窃取。

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

完全理解问题:

  1. 在这个阶段完全完成之前,不要让受影响的系统重新上线,除非你想成为那个帖子是我真正决定写这篇文章的引爆点的人。我不会链接到那个帖子,这样人们就可以得到廉价的笑声,但真正的悲剧是人们无法从错误中吸取教训。
  2. 检查“受攻击”系统以了解攻击如何成功危及您的安全。尽一切努力找出攻击“来自哪里”,以便您了解您遇到的问题以及需要解决的问题,以确保您的系统在未来安全。
  3. 再次检查“被攻击”的系统,这一次是为了了解攻击的去向,以便您了解哪些系统在攻击中遭到破坏。确保您跟进任何表明受感染系统可能成为进一步攻击您的系统的跳板的指示。
  4. 确保完全理解任何和所有攻击中使用的“网关”,以便您可以开始正确关闭它们。(例如,如果您的系统受到 SQL 注入攻击的危害,那么您不仅需要关闭它们侵入的特定有缺陷的代码行,还需要审核所有代码以查看是否存在相同类型的错误在别处制造的)。
  5. 了解攻击可能因不止一个缺陷而成功。通常,攻击的成功不是通过发现系统中的一个主要错误,而是通过将几个问题(有时本身是次要的和微不足道的)串在一起来破坏系统。例如,使用 SQL 注入攻击向数据库服务器发送命令,发现您正在攻击的网站/应用程序在管理用户的上下文中运行,并使用该帐户的权限作为踏脚石来破坏其他部分一个系统。或者正如黑客喜欢称之为:“在办公室利用人们犯的常见错误的另一天”。

为什么不“修复”您检测到的漏洞或rootkit 并让系统重新联机?

在这种情况下,问题是您无法再控制该系统。它不再是你的电脑了。

确定您已控制系统的唯一方法是重建系统。虽然查找和修复用于闯入系统的漏洞有很多价值,但一旦入侵者获得控制权,您就无法确定对系统还做了什么(实际上,对于招募新成员的黑客来说,这并非闻所未闻)系统进入僵尸网络以修补他们自己使用的漏洞,保护“他们的”新计算机免受其他黑客的攻击,以及安装他们的 rootkit)。

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

没有人愿意长时间离线。那是给定的。如果该网站是一种创收机制,那么将其快速恢复上线的压力将是巨大的。即使唯一受到威胁的是您/您公司的声誉,这仍然会产生很大的压力,需要迅速恢复原状。

但是,不要屈服于过快重新上线的诱惑。相反,尽快了解导致问题的原因并在您重新上线之前解决它,否则您几乎肯定会再次成为入侵的受害者,并记住,“被黑客攻击一次可以归类为不幸;之后再次被黑客攻击看起来很粗心”(向奥斯卡王尔德道歉)。

  1. 我假设您在开始本节之前已经了解了导致成功入侵的所有问题。我不想夸大这个案子,但如果你还没有先这样做,那么你确实需要这样做。对不起。
  2. 永远不要支付勒索/保护费。这是一个简单标记的标志,你不希望这个短语曾经用来描述你。
  3. 不要试图在没有完全重建的情况下将相同的服务器重新联机。在旧硬件上构建新盒子或“从轨道上核对服务器并进行全新安装”应该比审核旧系统的每个角落以确保它在放回之前是干净的要快得多又上线了。如果您不同意这一点,那么您可能不知道确保系统完全清理的真正含义是什么,或者您的网站部署程序是一团糟。您大概有站点的备份和测试部署,可以用来构建实时站点,如果没有,那么被黑客攻击不是您最大的问题。
  4. 重新使用黑客攻击时系统上“实时”的数据时要非常小心。我不会说“永远不要这样做”,因为你会无视我,但坦率地说,我认为当你知道你不能保证数据的完整性时,你确实需要考虑保留数据的后果。理想情况下,您应该从入侵之前的备份中恢复它。如果你不能或不会这样做,你应该非常小心这些数据,因为它被污染了。如果这些数据属于客户或网站访问者而不是直接属于您,您应该特别注意对他人的后果。
  5. 仔细监控系统。您应该决心在未来将其作为一个持续的过程来执行(更多内容见下文),但在您的网站重新上线后的这段时间里,您会格外小心地保持警惕。入侵者几乎肯定会回来,如果你能发现他们试图再次闯入,你肯定能够很快看到你是否真的关闭了他们之前使用的所有漏洞以及他们为自己制造的任何漏洞,并且你可能会收集到有用的信息您可以传递给当地执法部门的信息。

减少未来的风险。

您需要了解的第一件事是,安全性是您必须在设计、部署和维护面向 Internet 的系统的整个生命周期中应用的过程,而不是您可以像廉价一样在代码上打几层的东西画。为了确保安全,服务和应用程序的设计需要从一开始就将此作为项目的主要目标之一。我意识到这很无聊,而且您之前已经听过这一切,而且我“只是没有意识到让您的测试版 web2.0(测试版)服务在网络上进入测试版状态的压力人”,但事实是这一直保持被重复是因为它第一次说的时候是真的,而且还没有变成谎言。

你无法消除风险。你甚至不应该尝试这样做。但是,您应该做的是了解哪些安全风险对您很重要,并了解如何管理和减少风险的影响以及风险发生的可能性。

您可以采取哪些步骤来降低攻击成功的可能性?

例如:

  1. 允许人们闯入您网站的缺陷是否是供应商代码中的已知错误,有补丁可用?如果是这样,您是否需要重新考虑在面向 Internet 的服务器上修补应用程序的方法?
  2. 允许人们闯入您网站的缺陷是否是供应商代码中的未知错误,没有补丁可用?我当然不提倡在这样的事情困扰你时更换供应商,因为他们都有自己的问题,如果你采用这种方法,你最多会在一年内耗尽平台。但是,如果系统不断让您失望,那么您应该迁移到更强大的系统,或者至少重新构建您的系统,以便将易受攻击的组件包裹在棉绒中,并尽可能远离敌意。
  3. 该缺陷是您(或为您工作的承包商)开发的代码中的错误吗?如果是这样,您是否需要重新考虑如何批准将代码部署到实时站点的方法?是否可以通过改进的测试系统或更改您的编码“标准”来捕获该错误(例如,虽然技术不是万能药,但您可以通过使用有据可查的编码技术来降低成功 SQL 注入攻击的可能性)。
  4. 该缺陷是由于服务器或应用程序软件的部署方式存在问题造成的吗?如果是这样,您是否在可能的情况下使用自动化程序来构建和部署服务器?这些对于在所有服务器上保持一致的“基线”状态有很大帮助,最大限度地减少必须在每个服务器上完成的自定义工作量,从而有望最大限度地减少出错的机会。代码部署也是如此——如果你需要做一些“特殊”的事情来部署最新版本的 Web 应用程序,那么努力让它自动化并确保它始终以一致的方式完成。
  5. 通过更好地监控您的系统,是否可以更早地发现入侵?当然,为您的员工提供 24 小时监控或“随叫随到”系统可能不符合成本效益,但有些公司可以为您监控面向网络的服务,并在出现问题时提醒您。您可能会决定您负担不起或不需要它,这很好……考虑一下。
  6. 在适当的情况下使用tripwire和nessus等工具 - 但不要因为我说过就盲目使用它们。花时间学习如何使用一些适合您的环境的优秀安全工具,更新这些工具并定期使用它们。
  7. 考虑聘请安全专家定期“审核”您的网站安全。同样,您可能会决定您负担不起或不需要它,这很好……只是考虑一下。

您可以采取哪些步骤来减少成功攻击的后果?

如果您认为您家下层被淹的“风险”很高,但不足以保证搬家,您至少应该将不可替代的传家宝搬上楼。对?

  1. 你能减少直接暴露在互联网上的服务数量吗?您能否在内部服务和面向 Internet 的服务之间保持某种差距?这确保即使您的外部系统受到损害,将其用作攻击内部系统的跳板的机会也是有限的。
  2. 您是否正在存储不需要存储的信息?当这些信息可以在其他地方存档时,您是否“在线”存储此类信息。这部分有两点;显而易见的一点是人们不能从你那里窃取你没有的信息,第二点是你存储的信息越少,你需要维护和编码的就越少,因此错误进入的机会就越少您的代码或系统设计。
  3. 您是否在为您的 Web 应用程序使用“最少访问”原则?如果用户只需要从数据库中读取,那么请确保 Web 应用程序用于为其提供服务的帐户只有读取访问权限,不允许其写入访问权限,当然也不允许系统级访问权限。
  4. 如果您在某件事上不是很有经验,并且它对您的业务并不重要,请考虑将其外包。换句话说,如果您运行一个讨论编写桌面应用程序代码的小型网站,并决定开始从该站点销售小型桌面应用程序,那么请考虑将您的信用卡订单系统“外包”给像 Paypal 这样的人。
  5. 如果可能,将练习从受损系统恢复作为灾难恢复计划的一部分。这可以说只是你可能遇到的另一种“灾难场景”,只是一个有自己的一系列问题和问题,这些问题和通常的“服务器机房着火”/“被巨型服务器吃掉毛茸茸的东西入侵”之类的事情不同。

......最后

我可能没有遗漏其他人认为重要的东西,但是如果您不幸成为黑客的受害者,上面的步骤至少应该可以帮助您开始整理事情。

最重要的是:不要惊慌。三思而后行。一旦你做出决定,就坚定地采取行动,如果你有什么要添加到我的步骤列表中,请在下面发表评论。

  • +1“……但这不是让你的自我妨碍你需要做的事情的时候。” 有时,这对于系统管理员理解很重要。不管你的知识多么渊博,总有一些(有时是恶意的)比你更博学或更聪明。 (35认同)
  • 很好的答案。我不确定为什么每个人都将“呼叫执法”步骤视为可选步骤。如果您负责其他人的数据(并担心诉讼),这应该是您要做的事情清单上的第一件事。 (11认同)
  • +1 表示手头上有一个很好的帖子,可以让人们朝着一个方向开始。我知道业余服务器管理员在第一次遇到“黑客”事件时进入这种恐慌模式是多么普遍。在那个地方是一个*巨大的*错误,但它发生了。希望这不会发生在同一个人身上,两次。 (8认同)
  • 写得很好,只有一个问题 - “立即向可能受到影响的任何人进行全面而坦率的披露。” 可敬,但并不总是正确的。为了应对妥协,您可能需要削减一些治理方面的问题,而您的公司通常会为您减少一些松懈,但是……披露与否,特别是当存在数据保护影响时,很可能超出您的薪酬等级和可能会产生法律影响。建议您立即通知负责数据保护的人员(如果不是您)并敦促进行全面披露可能会更好。 (8认同)
  • @GilesRoberts 虚拟机主机通常有一个控制面板,可让您操纵其来宾的设置,甚至可以在不使用 RDP 或 SSH 实际登录来宾的情况下远程控制它们。您应该能够使用主机的控件隔离来宾,然后使用其远程查看工具在闲暇时调查来宾。 (5认同)
  • @Steven 除非您事先制定了计划,否则您不会在一小时内完成所有工作-即使那样也可能会很挣扎。制定这些计划的一部分是设定切合实际的目标;如果企业不能忍受离线一小时,你会为此做预算和计划——我非常同情那些在事情的尖端但对企业倾倒的人——好吧,如果它*那*重要到公司,那么他们就会考虑这种威胁并事先减轻它。 (3认同)
  • 好吧,我从 1977 年就开始玩这个游戏,从 1980 年开始担任系统管理员,是的,距今已经有 20 多年了,但有一天我看到了一个裂缝,知道该怎么做。(顺便说一句,媒体的说法是错误的;黑客是好人,破解者 - 就像保险箱破解者一样 - 是坏人!)我看到网络变得疯狂,知道这是不合适的,并立即断开了该死的网络!那天救了我们的屁股!是的,我们从头开始重建。我们的错误是让未知的笔记本电脑加入我们的内部网络!多啊!再也不!写得很好,谢谢! (2认同)

blu*_*ben 208

听起来好像有点过头了;没关系。打电话给你的老板,开始谈判紧急安全响应预算。10,000 美元可能是一个不错的起点。然后,您需要找人(PFY、同事、经理)开始致电专门从事安全事件响应的公司。许多人可以在 24 小时内做出回应,如果他们在您所在的城市设有办事处,有时甚至会更快。

您还需要有人来对客户进行分类;毫无疑问,已经有人这么做了。需要有人与他们通电话,以解释正在发生的事情、正在采取哪些措施来处理这种情况,并回答他们的问题。

那么,你需要...

  1. 保持冷静。如果您负责事件响应,那么您现在所做的工作需要表现出最大的专业精神和领导能力。记录您所做的一切,并让您的经理和执行团队了解您所采取的主要行动;这包括与响应团队合作、禁用服务器、备份数据以及重新上线。他们不需要血腥的细节,但他们应该每 30 分钟左右收到您的来信。

  2. 现实点。您不是安全专家,有些事情您不知道。没关系。登录服务器并查看数据时,您需要了解自己的限制。轻轻踩踏。在您的调查过程中,请确保您不会踩踏重要信息或更改以后可能需要的内容。如果您感到不舒服或您在猜测,这是停下来找一位经验丰富的专业人士接手的好地方。

  3. 获取干净的 U 盘和备用硬盘。您将在这里收集证据。备份您认为可能相关的所有内容;与您的 ISP 通信、网络转储等。即使执法部门没有介入,万一发生诉讼,您也会希望这些证据证明您的公司以专业和适当的方式处理了安全事件。

  4. 最重要的是止损。识别并切断对受损服务、数据和机器的访问。最好是拔掉他们的网线;如果你不能,那就拉电源。

  5. 接下来,您需要移除攻击者并关闭漏洞。据推测,攻击者不再具有交互式访问权限,因为您拉了网络。您现在需要识别、记录(使用备份、屏幕截图和您自己的个人观察笔记;或者甚至最好从受影响的服务器上移除驱动器并制作完整的磁盘映像副本),然后删除他留下的任何代码和进程. 如果你没有备份,下一部分会很糟糕;您可以尝试手动将攻击者从系统中解开,但您永远无法确定是否获得了他留下的一切。Rootkit 是恶性的,并不是所有的都可以检测到。最好的反应是找出他用来入侵的漏洞,制作受影响磁盘的映像副本,然后擦除受影响的系统并从已知良好的备份重新加载。大学教师' 不要盲目相信你的备份;验证一下!在新主机再次上线前修复或关闭漏洞,然后再上线。

  6. 将您的所有数据整理成一份报告。此时漏洞已关闭,您有时间喘口气。不要试图跳过这一步;它甚至比过程的其余部分更重要。在报告中,您需要确定出了什么问题、您的团队如何响应以及您为防止此类事件再次发生而采取的步骤。尽可能详细;这不仅适用于您,也适用于您的管理层,并作为潜在诉讼中的辩护。

这是对要做什么的高度评价;大多数工作只是文档和备份处理。不要惊慌,你可以做到这一点。我强烈建议您获得专业的安全帮助。即使您可以处理正在发生的事情,他们的帮助也将是无价的,而且他们通常会配备设备,使流程更轻松、更快捷。如果你的老板对成本犹豫不决,提醒他与处理诉讼相比,这是非常小的。

我对你的情况表示安慰。祝你好运。

  • +1 很好的答案。听起来 OP 没有预先定义的“紧急响应”,您的帖子以及其他好东西应该指向他们进行设置。 (20认同)

Zor*_*che 110

CERT 有一个很好的文档Steps for Recovering from an UNIX or NT System Compromise。本文档的具体技术细节有些过时,但很多一般性建议仍然直接适用。

基本步骤的快速总结是这样的。

  • 咨询您的安全策略或管理。
  • 获得控制权(使计算机脱机)
  • 分析入侵,获取日志,找出问题所在
  • 修理东西
    • 安装干净版本的操作系统!!!如果系统已被攻破,你就不能相信它了。
  • 更新系统以免再次发生
  • 恢复操作
  • 更新您的未来政策和文件

我想特别指出 E.1 部分。

E.1. 请记住,如果机器受到威胁,则该系统上的任何内容都可能被修改,包括内核、二进制文件、数据文件、正在运行的进程和内存。一般来说,相信机器没有后门和入侵者修改的唯一方法是重新安装操作系统

如果您还没有像tripwire这样的系统,则无法100%确定您已经清理了系统。

  • 即便如此,tripwire 也可能被内核模块之类的东西所愚弄。重新安装。 (27认同)

Jak*_*org 67

  1. 确定问题。阅读日志。
  2. 包含. 你已经断开了服务器的连接,这样就完成了。
  3. 根除。最有可能重新安装受影响的系统。不要擦除被黑的硬盘驱动器,使用新的。它更安全,您可能需要旧的来恢复未备份的丑陋黑客,并进行取证以找出发生了什么。
  4. 恢复。安装所需的任何内容并恢复备份以使您的客户在线。
  5. 跟进。找出问题所在,并防止它再次发生。


Mat*_*och 52

罗伯特的“苦丸”答案是准确但完全通用的(嗯,就像你的问题一样)。如果您有一台服务器和 600 个客户端,这听起来确实像是您遇到了管理问题并且迫切需要全职系统管理员,但这对您现在没有帮助。

我经营着一家托管公司,它在这种情况下提供了一些帮助,因此我处理了许多受感染的机器,但也为我们自己处理了最佳实践。我们总是告诉我们受到损害的客户重建,除非他们不能绝对确定妥协的性质。从长远来看,没有其他负责任的路线。

但是,您几乎可以肯定只是脚本小子的受害者,他们想要 DoS 攻击的跳板、IRC 保镖或与您客户的站点和数据完全无关的东西。因此,作为重建时的临时措施,您可能会考虑在您的机器上安装一个重型出站防火墙。如果您可以阻止所有对您的站点运行并非绝对必要的出站 UDP 和 TCP 连接,您就可以轻松地使您的受感染设备对向您借用它的人无用,并将对您的提供商网络的影响降低到零。

如果您以前没有这样做过,并且从未考虑过防火墙,这个过程可能需要几个小时,但可能会帮助您恢复您的客户服务,冒着继续让攻击者访问您的客户数据的风险。既然您说一台机器上有数百个客户端,我猜您是在为小型企业托管小型宣传册网站,而不是 600 个充满信用卡号的电子商务系统。如果是这种情况,这对您来说可能是一个可以接受的风险,并且让您的系统恢复在线状态比您恢复之前审核 600 个站点的安全漏洞更快。但是您会知道那里有哪些数据,以及您做出该决定时的舒适度。

这绝对不是最佳实践,但如果这不是您的雇主迄今为止发生的事情,请向他们挥手并要求特警队支付数万英镑,因为他们可能会认为是您的错(但这是不合理的! ) 听起来不像是实用的选择。

您的 ISP 在这里的帮助将非常重要 - 一些 ISP提供控制台服务器和网络引导环境(插入,但至少您知道要寻找什么样的设施),这将使您在与网络断开连接的情况下管理服务器。如果这是一个选项,请要求并使用它。

但从长远来看,您应该根据 Robert 的帖子和对每个站点及其设置的审核来计划系统重建。如果您无法将系统管理员添加到您的团队,请寻找托管主机交易,您可以向 ISP 支付系统管理帮助和 24 小时响应此类事情的费用。祝你好运 :)


Fil*_*erg 41

您需要重新安装。保存您真正需要的东西。但请记住,您的所有可运行文件都可能被感染和篡改。我在 python 中写了以下内容:http : //frw.se/monty.py 它在给定目录中创建所有文件的 MD5-sumbs,下次运行它时,它检查是否有任何更改,然后输出什么文件更改以及文件中更改的内容。

这对您来说可能很方便,可以查看是否定期更改奇怪的文件。

但是您现在唯一应该做的就是将您的计算机从互联网上移除。

  • 所以......你已经实现了tripwire。 (13认同)
  • 是的,有什么问题吗? (13认同)
  • 鉴于在匿名 Python 脚本和文档化的、(某种程度上)支持的、易于理解的标准解决方案之间进行选择,您是否希望他们会选择前者? (4认同)

Ale*_*huk 37

注意:这不是建议。我的特定事件响应协议可能不适用于 Grant unwin 的案例。

在我们的学术设施中,我们有大约 300 名只从事计算工作的研究人员。您有 600 个拥有网站的客户,因此您的协议可能会有所不同。

当服务器被入侵协议的第一步是:

  1. 确定攻击者能够获得 root(提升权限)
  2. 拔下受影响的服务器。网络还是电源?请参阅单独的讨论
  3. 检查所有其他系统
  4. 从 live cd 引导受影响的服务器
  5. (可选)使用以下命令抓取所有系统驱动器的映像dd
  6. 开始进行验尸取证。查看日志,找出攻击的时间,找到当时被修改的文件。尝试回答如何?题。

    • 同时,计划和执行您的恢复。
    • 在恢复服务之前重置所有 root 和用户密码

即使“所有后门和 rootkit 都已清除”,也不要相信该系统 - 从头开始​​重新安装。

  • -1 拔掉服务器的电源?您刚刚丢失了一半的取证数据! (25认同)
  • RAM 取证(例如 /dev/shm)可能会有所帮助。我更喜欢拔掉电源线(但尝试在之前登录和`rsync` /proc)。我们还可能会引入频繁的 VM 快照,以便 RAM 取证成为可能。走电源线的原因是(1)当你在一个被黑的系统中进行取证时,你是在“走遍犯罪现场”;(2) 根工具包继续运行 - 恶意在 **Network Link Down** 事件中执行某些操作(例如系统清除)并不难。Kyle Rankin 在他精彩的 Intro to Forensics 演讲 (http://goo.gl/g21Ok) 中建议拔掉电源线。 (5认同)
  • 没有一种适用于所有 IR 协议的方法——无论出于何种原因,某些组织可能需要让受感染的系统在线更长时间。(RAM 和临时日志取证、与入侵者交互等)我的观点是,最好推荐一种通用的 IR 协议(如上面的 Jakob Borgs),而不是以“拔下受感染服务器的电源插头”开头的协议。 ” (4认同)

sys*_*138 31

以我有限的经验,Linux 上的系统妥协往往比 Windows 上的更“全面”。根工具包更有可能包括用自定义代码替换系统二进制文件以隐藏恶意软件,并且对内核进行热修补的障碍要低一些。此外,它是许多恶意软件作者的家庭操作系统。一般指导总是从头开始重建受影响的服务器,这是有原因的一般指导。

格式化那只小狗。

但是,如果你不能重建(或者权力不会让你在你强烈坚持它需要它的情况下重建它),你在寻找什么?

既然发现入侵已经有一段时间了,并且已经进行了系统恢复,那么他们入侵的痕迹很可能已经在踩踏中被踩踏以恢复服务。不幸的。

异常的网络流量可能是最容易发现的,因为这不涉及在机器上运行任何内容,并且可以在服务器启动并执行任何操作时完成。当然,假设您的网络设备允许端口跨越。你所发现的可能是也可能不是诊断性的,但至少它是信息。获得异常流量将是系统仍然受到威胁并需要扁平化的有力证据。说服 TPTB 重新格式化确实值得停机可能就足够了。

如果失败,请复制系统分区的 dd 副本并将它们安装在另一个盒子上。开始将内容与与受感染服务器处于同一补丁级别的服务器进行比较。它应该可以帮助您识别看起来不同的地方(再次是那些 md5sum),并且可能指向受感染服务器上被忽视的区域。这是对目录和二进制文件的大量筛选,并且相当费力。它甚至可能比重新格式化/重建更加劳动密集型,并且可能是另一件事,以实际进行真正需要的重新格式化。

  • “格式化那只小狗。” - +1,贤哲的建议。另请参阅:“从轨道上核对它,这是确定的唯一方法。” (2认同)

小智 31

我想说@Robert Moir、@Aleksandr Levchuk、@blueben 和@Matthew Bloch 在他们的回复中都非常准确。

但是,不同的发帖人的答案各不相同——有些人更高级,谈论你应该有什么程序(一般来说)。

我更愿意将其分成几个单独的部分 1) 分类,又名如何处理客户和法律影响,并确定从那里去哪里(罗伯特和@blueben 很好地列出了 2)影响的缓解 3 ) 事件响应 4) 事后取证 5) 修复项目和架构更改

(在此处插入样板 SANS GSC 认证响应声明)根据过去的经验,我会说以下内容:

无论您如何处理客户响应、通知、法律和未来计划,我都更愿意关注手头的主要问题。OP 的原始问题实际上只与 #2 和 #3 直接相关,基本上,如何阻止攻击,让客户尽快以原始状态重新上线,这已在回复中得到了很好的涵盖。

其余的回应都很棒,涵盖了许多已确定的最佳实践和方法,以防止将来发生这种情况并更好地对其做出反应。

这实际上取决于 OP 的预算以及他们所在的行业领域,他们想要的解决方案是什么等等。

也许他们需要聘请专门的现场 SA。也许他们需要一个保安人员。或者他们可能需要一个完全托管的解决方案,例如 Firehost 或 Rackspace Managed、Softlayer、ServePath 等。

这真的取决于什么对他们的业务有用。也许他们的核心竞争力不在于服务器管理,他们尝试开发它没有意义。或者,也许他们已经是一个非常技术性的组织,可以做出正确的招聘决定并组建一支全职的敬业团队。


gun*_*win 27

在开始工作并查看服务器后,我们设法找出了问题所在。幸运的是,有问题的文件是在星期天上传到系统的,当时办公室关闭,除了日志和缓存文件外,不应创建任何文件。使用一个简单的 shell 命令找出当天创建了哪些文件,我们找到了它们。

所有有问题的文件似乎都在我们一些较旧的 zencart 网站上的 /images/ 文件夹中。似乎存在一个安全漏洞,允许(使用 curl)任何白痴将非图像上传到管理部分的图像上传部分。我们删除了有问题的 .php 文件,并修复了上传脚本以禁止任何非图像文件上传。

回想起来,这很简单,我在上班途中在 iPhone 上提出了这个问题。谢谢大家的帮助。

供以后访问此帖子的任何人参考。我建议拔掉电源插头。

  • 这应该是评论(或作为文本包含在您的问题中),而不是对您问题的回答。 (5认同)
  • @Techboy:看来他还没有关联他的 SO 和 SF 帐户,所以他不能编辑他的问题。@Grant:您可以通过用户页面上的“帐户”面板关联您的帐户。 (5认同)
  • 感谢您回来告诉我们您的进展情况 - 如您所见,您的问题引起了很多讨论。我很高兴您似乎并没有受到太大的打击,而且您的解决方案最终非常简单。 (3认同)

HBr*_*ijn 18

我对广泛的技术答案几乎没有贡献,但也请注意其中的一些:

非技术动作:

  • 内部报告事件。
    如果您还没有可能看起来像是 CYA 技术的事件响应计划,但 IT 部门并不是确定受感染服务器的业务影响的唯一场所,通常甚至不是最佳场所。
    业务需求可能胜过您的技术问题。不要说“我早就告诉过你了”,而且业务问题的优先级是您首先拥有此受损服务器的原因。(“把那个留给事后报告。 ”)

  • 掩盖安全事件不是一种选择。

  • 向地方当局报告。
    ServerFault 不是提供法律建议的地方,但这应该包含在事件响应计划中。
    在某些地方和/或受监管行业,必须向当地执法机构、监管机构报告(某些)安全事件或通知受影响的客户/用户。
    无论如何,报告的决定和实际报告都不是完全由 IT 部门做出的。期待管理层、法律和企业传播(营销)部门的参与。
    您可能不应该期望太多,互联网是一个边界没有意义的大地方,但是许多警察部门中存在的网络犯罪部门确实解决了数字犯罪并可能将罪犯绳之以法。


Aar*_*son 16

我认为这一切都归结为:

如果你重视你的工作,你最好有一个计划,并定期修改它。

不计划就是计划失败,这在系统安全领域是最真实的。当<redacted>受到欢迎时,你最好做好应对的准备。

还有一句(有些陈词滥调)在这里适用:预防胜于治疗

这里有很多建议可以让专家审计您现有的系统。我认为这是在错误的时间提出问题。这个问题应该在系统安装到位时提出,并记录答案。此外,问题不应该是“我们如何阻止人们闯入?” 应该是“为什么人们能够闯入?” 审计网络中的一堆漏洞只会在发现并利用新漏洞之前有效。另一方面,从头开始设计的网络仅以某些方式以精心编排的舞蹈对某些系统做出响应,根本无法从审计中受益,而且资金将被浪费。

在将系统放到互联网上之前,问问自己 - 这是否需要 100% 面向互联网?如果没有,不要。考虑把它放在防火墙后面,你可以决定互联网看到什么。更好的是,如果所述防火墙允许您拦截传输(通过反向代理或某种直通过滤器),请查看使用它来仅允许发生合法操作。

这已经完成了 - 某处有(或曾经)有一个网上银行设置,它有一个面向互联网的负载平衡代理,他们将用它来将攻击从他们的服务器池中引导出去。安全专家 Marcus Ranum 说服他们采取相反的方法,通过使用反向代理仅允许已知的有效 URL 通过并将其他所有内容发送到 404 服务器。它经受住了时间的考验,出奇地好。

一旦发生您没有预见到的攻击,基于默认许可的系统或网络就注定要失败。默认拒绝使您可以更好地控制进入和不进入的内容,因为除非非常需要,否则您不会让外部看到内部的任何东西。

也就是说,所有这些都不是自满的理由。在违规后的最初几个小时内,您仍然应该制定计划。没有系统是完美的,人类会犯错。


ah8*_*h83 16

一个不错的在线用户最近帮助我找出攻击者如何破坏系统。一些破解者试图通过伪造文件的修改时间来隐藏他们的踪迹。通过更改修改时间来更新更改时间 (ctime)。你可以用stat看到ctime。

这一行列出了按 ctime 排序的所有文件:

find / -type f -print0 | xargs -0 stat --format '%Z :%z %n' | sort -nr > /root/all_files.txt
Run Code Online (Sandbox Code Playgroud)

因此,如果您大致知道妥协的时间,您就可以看到更改或创建了哪些文件。