我如何处理受损的服务器?

这是关于服务器安全的典型问题 – 响应违规事件(黑客
也可以看看:

  • 保护LAMP服务器的技巧
  • 重新安装根妥协后?

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

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

原始版本

2011.01.02 – 周日晚上9点30分我正在上class,因为我们的服务器已经被攻破,导致我们的供应商遭到DOS攻击。 访问互联网的服务器已经closures,这意味着超过5-600的客户端网站已经closures。 现在,这可能是一个FTP黑客,或者在某处代码的一些弱点。 我不知道,直到我到达那里。

我怎样才能快速追踪到这一点? 如果我没有尽快恢复服务器,我们会面临很多诉讼。 任何帮助表示赞赏。 我们正在运行Open SU​​SE 11.0。


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

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

我们首先试图确定服务器上的来源,考虑到我们在服务器上有超过500个站点,我们预计会有一段时间的出现。 但是,仍然使用SSH访问,我们运行了一个命令来查找攻击开始时编辑或创build的所有文件。 幸运的是,这个有问题的文件是在冬季假期创build的,这意味着当时在服务器上创build的文件并不多。

然后,我们能够识别ZenCart网站上传的图像文件夹中的有问题的文件。

经过短暂的rest后,我们得出的结论是,由于文件的位置,它必须通过一个file upload工具上传,而这个file upload工具并不安全。 经过一些Googlesearch之后,我们发现存在一个安全漏洞,允许在ZenCartpipe理面板中上传文件以获取唱片公司的照片。 (它从来没有真正使用过的部分),张贴这个表单只是上传了任何文件,没有检查文件的扩展名,甚至没有检查用户是否login。

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

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


道德 – 始终为ZenCart或任何其他CMS系统应用安全补丁。 当安全更新发布时,整个世界都意识到了这个漏洞。 – 总是进行备份,并备份您的备份。 – 雇用或安排在这样的时间在那里的人。 防止任何人依赖服务器故障的panicypost。

    很难从你在这里发布的内容给出具体的build议,但是我有一些通用的build议,基于我很久以前写了一篇文章,当我仍然可以困扰博客。

    不要惊慌

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

    1. 很难确定什么时候入侵发生。
    2. 它并不能帮助你closures上次允许它们打破的“漏洞”,也不能处理可能发生的任何“数据盗窃”的后果。

    这个问题不断被黑客的受害者闯入他们的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理用户的上下文中运行,并使用该帐户的权限作为跳板来危害其他部分一个系统。 或者像黑客喜欢称之为:“利用人们常犯的错误,在办公室的另一天”。

    为什么不只是“修复”你检测到的exploit或rootkit,并把系统重新联机呢?

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

    确信你已经掌握了系统的唯一方法就是重build系统。 虽然find并修复用于攻击系统的漏洞很有价值,但是一旦入侵者获得了控制权,就不能确定系统还做了什么(事实上,这对于黑客来说并不是没有听说过的系统到僵尸networking来修补他们自己使用的漏洞,保护他们的新计算机免受其他黑客攻击,以及安装他们的rootkit。

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

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

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

    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. 如果可能的话,从灾难恢复计划的一部分恢复受损系统。 这可以说是您可能遇到的另一个“灾难场景”,仅仅是一个与自己的问题和问题不同,通常的“服务器房间着火”被大型服务器吃掉了。

    …最后

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

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

    这听起来像是在你的头上, 没关系。 打电话给你的老板,开始谈判紧急安全响应预算。 10,000美元可能是一个很好的开始。 然后,你需要find一个人(一个PFY,一个同事,一个经理),开始致力于专门从事安全事件响应的公司。 许多人可以在24小时内回复,有时如果他们在你的城市有办公室,他们甚至可以更快。

    你也需要有人分stream客户; 毫无疑问,有人已经是。 有人需要与他们通电话,解释发生了什么事情,正在做什么来处理这种情况,并回答他们的问题。

    那么,你需要…

    1. 保持冷静。 如果你负责事件响应,你现在所做的就是展现出最大的专业精神和领导力。 logging你所做的一切,并让你的经理和高pipe团队知道你采取的主要行动; 这包括与响应团队合作,禁用服务器,备份数据以及再次联机。 他们不需要血淋淋的细节,但是他们应该每隔30分钟就听到你的消息。

    2. 现实点。 你不是一个安全专业人员,有些事情你不知道。 没关系。 login到服务器并查看数据时,您需要了解您的限制。 轻轻地踩。 在调查过程中,请确保您不要踩踏重要信息,也不要改变以后可能需要的信息。 如果您感到不舒服或者您在猜测,那么这是停下来让一位有经验的专业人员接pipe的好地方。

    3. 获得一个干净的USB棒和备用硬盘。 你会在这里收集证据。 备份你觉得可能相关的所有东西; 与您的ISP进行通信,networking转储等。即使执法不涉及,如果发生诉讼,您也需要此证据certificate您的公司以专业和适当的方式处理了安全事件。

    4. 最重要的是要止损。 确定并切断对受损服务,数据和机器的访问。 最好,你应该拉他们的networking电缆; 如果不行,那就拉动力量。

    5. 接下来,您需要删除攻击者并closures洞。 据推测,攻击者不再具有互动访问,因为你拉networking。 您现在需要识别,logging(包括备份,截图以及您自己的个人观察logging;或者最好甚至通过从受影响的服务器中移除驱动器并制作完整的磁盘映像副本),然后删除他遗留的任何代码和stream程。 如果你没有备份,下一部分将会吸引你; 你可以尝试从系统中手动解开攻击者,但是你永远不能确定你有什么他留下的东西。 Rootkit是恶毒的,并不是所有的都是可以检测到的。 最好的回应是识别他用来获取的漏洞,制作受影响磁盘的镜像副本,然后擦除受影响的系统,并从已知的良好备份中重新加载。 不要盲目信任你的备份; validation一下! 在新主机再次上网之前修复或closures漏洞,然后使其联机。

    6. 将所有数据组织到报告中。 此时此漏洞已closures,您有时间喘口气。 不要试图跳过这一步; 这比其他的过程更重要。 在报告中,您需要确定发生了什么问题,您的团队如何回应以及您为防止此事件再次发生而采取的措施。 尽可能详细; 这不仅仅是为了你,而是为了你的pipe理,作为一个潜在诉讼的辩护。

    这是对做什么的全面审查; 大部分工作只是文档和备份处理。 不要惊慌,你可以做那些东西。 我强烈build议您获得专业的安全帮助。 即使你可以处理发生的事情,他们的帮助也是非常宝贵的,他们通常会带着设备来使这个过程变得更加简单快捷。 如果你的老板不惜代价,提醒他这件事与处理诉讼相比是非常小的。

    你有我的安慰你的情况。 祝你好运。

    CERT有一个文件从UNIX或NT系统妥协恢复的步骤是好的。 这个文件的具体技术细节有点过时了,但是一般的build议仍然直接适用。

    基本步骤的简要概述是这样的。

    • 请参阅您的安全策略或pipe理。
    • 获取控制权(使计算机脱机)
    • 分析入侵,获取日志,确定出了什么问题
    • 修理东西
      • 安装一个干净的操作系统版本! 如果系统已经被破坏,你就不能相信它。
    • 更新系统,这样不会再发生
    • 恢复操作
    • 更新您的未来政策和文件

    我想特别提一下E.1节。

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

    如果你没有像tripwire那样的系统,你不可能100%确定你已经清理了系统。

    1. 确定问题。 阅读日志。
    2. 包含 。 你已经断开服务器,这样就完成了。
    3. 根除 很有可能重新安装受影响的系统。 不要抹去被黑客的硬盘,使用新硬盘。 这样更安全一些,你可能需要老的来恢复那些没有备份的丑陋的黑客,并且做法医学来查明发生了什么。
    4. 恢复 。 安装所需的任何东西,并恢复备份,让您的客户在线。
    5. 后续 。 找出问题所在,并防止它再次发生。

    罗伯特的“苦药”答案是现货,但是完全通用(就像你的问题一样)。 这听起来像是你有一个pipe理问题,如果你有一个服务器和600个客户端,但是现在对你没有帮助,那么迫切需要一个全职的系统pipe理员。

    我经营了一家托pipe公司,在这种情况下提供了一些手工操作,所以我处理了大量被盗用的机器,同时也为我们自己处理最佳实践。 我们总是告诉我们的妥协客户重build,除非他们不能绝对确定妥协的性质。 从长远来看,没有其他负责任的路线。

    然而,你几乎可以肯定只是一个脚本kiddy的受害者,他们想要一个DoS攻击的启动平台,或者IRC保护者,或者是与你的客户的站点和数据完全无关的东西。 因此,作为重build时的临时措施,您可能会考虑在您的盒子上增加一个大量的出站防火墙。 如果您可以阻止所有出站的UDP和TCP连接,而这些连接对于您的网站运行并不是绝对必要的,那么您可以轻松地让您的受感染的方框对向您借用的任何人无用,并将对您的提供商networking的影响降至零。

    如果以前没有这样做,这个过程可能需要几个小时,并且从来没有考虑过防火墙,但是可能会帮助您恢复客户端服务,以使攻击者可以继续访问客户端数据 。 既然你说你在一台机器上有数百个客户端,那么我猜你正在为小型企业托pipe小型的小册子网站,而不是整个信用卡号码的600个电子商务系统。 如果是这样的话,这对您来说可能是一个可以接受的风险,并且让您的系统恢复上网的速度要快于审核600个安全漏洞网站, 然后才能恢复。 但是你会知道那里有什么数据,你会很自信地做出这个决定。

    这绝对不是最好的做法,但如果到目前为止您的雇主没有发生这种情况,您可以用手指着他们,向SWAT团队索要成千上万英镑,以获得他们可能感觉到的错误(不过没有道理! )听起来不像实际的select。

    您的ISP在这里的帮助将非常重要 – 有些ISP 提供了一个控制台服务器和networking启动环境 (插件,但至less您知道要查找哪种设施),这将允许您在与networking断开连接的情况下pipe理服务器。 如果这是一个选项,请求并使用它。

    但从长远来看,您应该根据罗伯特的职位计划进行系统重build,并对每个站点及其设置进行审计。 如果您的系统pipe理员不能添加到您的团队,寻找一个托pipe的托pipe交易,您向ISP支付系统pipe理帮助和24小时响应这种事情。 祝你好运 :)

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

    这可能会方便你,看看怪异的文件是否经常更改。

    但是现在你唯一需要做的就是从互联网上删除你的电脑。

    注:这不是一个build议。 我的具体事件响应协议可能不会适用于未经修改的Grant unwin案件。

    在我们的学术设施中,我们有大约300名只做计算的研究人员。 你有600个网站的客户,所以你的协议可能会有所不同。

    当服务器获取妥协协议的第一步是:

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

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

    即使“所有后门和rootkit都被清理干净”,也不要相信这个系统 – 从头开始​​重新安装。

    在我有限的经验中,Linux上的系统妥协往往比在Windows上更“全面”。 根套件更有可能包括用自定义代码replace系统二进制文件以隐藏恶意软件,热补内核的障碍则有点低。 另外,这是许多恶意软件作者的家庭操作系统。 一般指导始终是从头重build受影响的服务器,这是一般性的指导原因。

    格式化小狗。

    但是,如果你不能重build(或者说权力不会让你重build它,以反对你所需要的艰苦坚持),那么你在寻找什么?

    由于发现入侵事件已经有一段时间了,系统还原已经完成,很有可能在踩踏事件中踩踏了他们的痕迹以恢复服务。 不幸的。

    不寻常的networkingstream量可能是最容易find的,因为这不涉及在盒子上运行任何东西,而可以在服务器启动并执行任何操作时完成。 当然,假设你的networking设备允许端口跨越。 你发现可能或不可能是诊断,但至less它是信息。 获得不寻常的交通将是强有力的证据表明,该系统仍然是妥协,需要扁平化。 说服TPTB真的确实值得停机时间,这可能就足够了。

    如果没有,请取出系统分区的dd副本,并将其挂载到另一个盒子上。 开始比较内容与服务器在相同的补丁级别与受损的服务器。 它应该帮助你识别看起来不同的东西(那些MD5sum再次),并可能指向被忽略的服务器上的区域。 这是通过目录和二进制文件进行筛选的很大一部分,并且将是相当劳动密集型的。 它甚至可能比重新格式化/重build更劳动密集,可能是TPTB实际上需要重新格式化的另一件事。

    我会说@Robert Moir,@Aleksandr Levchuk,@blueben和@Matthew Bloch在他们的回应中都非常出色。

    然而,不同海报的答案是不同的 – 有些更高层次,谈论你应该有什么程序(一般)。

    我更愿意把它分成几个独立的部分1)分类,AKA如何处理客户和法律影响,并确定从哪里去(罗伯特和@blueben 2很好地列出)减轻影响3 )事件响应4)验尸取证5)修复项目和架构变更

    (在这里插入样板SANS GSCauthentication的回应声明)根据以往的经验,我会说:

    无论您如何处理客户的反应,通知,法律和未来计划,我都希望把重点放在眼前的主要问题上。 OP的原始问题实际上只是直接涉及#2和#3,基本上是如何阻止攻击,让客户尽快恢复到原来的状态,这已经得到了很好的回应。

    其余的回应是很好的,涵盖了很多确定的最佳做法和方法,以防止它在将来发生,以及更好地做出回应。

    这实际上取决于OP的预算和他们在哪个行业,他们想要的解决scheme是什么等等。

    也许他们需要聘请一个专门的现场SA。 也许他们需要一个安全人员。 或者,也许他们需要一个完全托pipe的解决scheme,如Firehost或Rackspace Managed,Softlayer,ServePath等。

    这真的取决于什么对他们的业务有效。 也许他们的核心能力不在服务器pipe理中,他们试图去开发这个能力是没有意义的。 或者,也许他们已经是一个非常技术化的组织,可以做出正确的招聘决策,并且全职带上一个专门的团队。

    上class后,看看服务器,我们设法找出问题。 幸运的是,这个有问题的文件在星期天上传到系统上,当办公室closures时,除了日志和caching文件以外,不应该创build任何文件。 用一个简单的shell命令找出那天创build的文件,我们find它们。

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

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

    以供将来访问此帖的任何人参考。 我不会推荐拔电源插头。

    我无力为广泛的技术答案作出贡献,但请注意以下几点:

    非技术性行为:

    • 内部报告事件。
      如果您还没有一个事件响应计划,可能会出现CYA技术,但IT部门并不是唯一的,而且往往不是确定受损服务器的业务影响的最佳位置。
      业务需求可能超过你的技术问题。 不要说“我已经告诉过你了”,并且商业关注的优先级是你首先使用这台服务器的原因。 (“ 请留下行动后的报告”。

    • 掩盖安全事件不是一个选项。

    • 向地方当局报告。
      ServerFault不是法律咨询的地方,但这是事件响应计划中应包含的内容。
      在某些地方和/或受pipe制的行业,必须向当地的执法机构,监pipe机构报告(某些)安全事件,或通知受影响的客户/用户。
      无论如何,报告的决定和实际报告都不在IT部门单独制作。 期望pipe理层和法律和公司通讯(营销)部门的参与。
      你可能不应该期望太多,互联网是一个边界没有多大意义的大地方,但是许多警察部门存在的networking犯罪部门确实解决了数字化犯罪,并可能将罪犯绳之以法。

    我想这一切都归结为:

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

    计划失败的计划是失败的,除了系统安全性之外,其他任何地方都不是这样。 当<编辑者>击中粉丝时,最好准备好处理它。

    还有另外一个(有些陈词滥调)的说法适用于此: 预防胜于治疗

    在这里有很多build议让专家来审计你现有的系统。 我想这是在错误的时间提问。 这个问题本来应该被问到系统何时到位,并且答案有logging。 另外,这个问题不应该是“我们如何阻止人们进入?” 应该是“为什么人们可以打进来呢?” 对networking中的一堆漏洞进行审计只有在发现并利用新的漏洞之后才能起作用。 另一方面,从根本上devise的networking只能以某种方式以精心devise的舞蹈对特定的系统做出响应,并不会从审计中受益,而且资金将是浪费。

    在互联网上build立系统之前,问问自己 – 这是否需要100%的互联网? 如果没有,不要。 考虑把它放在防火墙后面,你可以决定什么是互联网。 更好的是,如果所说的防火墙允许你拦截传输(通过反向代理或者某种传递filter),那么就只能使用它来允许合法的动作发生。

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

    基于默认许可的系统或networking注定会在您未预见到的攻击发生时失败。 默认的拒绝让你更好地控制什么进入和什么不进行,因为除非它需要,否则你不会从外部看到任何内部的东西。

    这就是说,这一切都没有理由得到满足。 在违约后的头几个小时,你仍然应该有一个计划。 没有一个系统是完美的,人类犯错误。

    一个不错的在线人员最近帮助我了解了攻击者如何可能危害系统。 一些cookies试图通过伪造文件上的修改时间来隐藏它们的痕迹。 通过改变修改时间,更新时间被更新(ctime)。 你可以看到ctime和stat。

    这一个class轮列出所有按ctimesorting的文件:

     find / -type f -print0 | xargs -0 stat --format '%Z :%z %n' | sort -nr > /root/all_files.txt 

    所以,如果你大致知道妥协的时间,你可以看到哪些文件被更改或创build。