这是关于服务器安全的典型问题 – 响应违规事件(黑客)
也可以看看:
- 保护LAMP服务器的技巧
- 重新安装根妥协后?
规范版本
我怀疑我的一台或多台服务器受到黑客,病毒或其他机制的危害:
原始版本
2011.01.02 – 周日晚上9点30分我正在上class,因为我们的服务器已经被攻破,导致我们的供应商遭到DOS攻击。 访问互联网的服务器已经closures,这意味着超过5-600的客户端网站已经closures。 现在,这可能是一个FTP黑客,或者在某处代码的一些弱点。 我不知道,直到我到达那里。
我怎样才能快速追踪到这一点? 如果我没有尽快恢复服务器,我们会面临很多诉讼。 任何帮助表示赞赏。 我们正在运行Open SUSE 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有两个问题。
这个问题不断被黑客的受害者闯入他们的networking服务器。 答案很less改变,但人们不断问这个问题。 我不知道为什么。 也许人们不喜欢他们在寻求帮助时看到的答案,或者找不到他们信任的人给他们build议。 或者,也许人们阅读这个问题的答案,并过分关注为什么他们的情况是特殊的,不同于他们可以在网上find的答案的5%,错过95%的问题和答案,他们的情况是接近相同作为他们在网上阅读的一个。
这使我获得了第一个重要的信息。 我真的很感激你是一个特殊的独特的雪花。 我很欣赏你的网站,因为这反映了你和你的企业,或者至less是你代表雇主的努力。 但是对于外部的人来说,看看这个问题的计算机安全人员是否会尝试帮助你,甚至是攻击者本人,那么你的问题很可能会与其他所有情况至less有95%的相同曾经看过。
不要亲自采取攻击,也不要采取这里提出的build议,也不要采取其他人的build议。 如果您在成为网站黑客的受害者之后阅读本文,那么我真的很抱歉,我真的希望您能在这里find有用的东西,但是这不是让自我克服需要的方式的时候做。
你刚发现你的服务器被黑了。 怎么办?
不要惊慌。 绝对不要匆忙行事,绝对不要试图假装从未发生过的事情,也不要做任何事情。
首先:了解这场灾难已经发生。 这不是拒绝的时候; 现在是接受发生的事情的时候了,要现实一点,并采取措施来pipe理影响的后果。
其中一些步骤将会受到伤害,并且(除非您的网站拥有我的详细信息)我真的不在乎您是否忽略了所有或部分步骤,这取决于您。 但是正确地遵循它们最终会让事情变得更好。 药物可能会味道糟透了,但有时你必须忽略,如果你真的想要治愈的工作。
阻止问题变得比现在更糟糕:
不过,如果你不告诉他们,让你的客户恼火,可能是你告诉他们一个问题,他们会更加恼火,他们只有在使用信用卡详细信息收取价值8,000美元的商品后才发现问题。从您的网站偷走。
还记得我之前说过的吗? 坏事已经发生了。 现在唯一的问题是你如何处理它。
充分了解问题:
为什么不只是“修复”你检测到的exploit或rootkit,并把系统重新联机呢?
在这样的情况下,问题是您再也无法控制该系统。 这不是你的电脑了。
确信你已经掌握了系统的唯一方法就是重build系统。 虽然find并修复用于攻击系统的漏洞很有价值,但是一旦入侵者获得了控制权,就不能确定系统还做了什么(事实上,这对于黑客来说并不是没有听说过的系统到僵尸networking来修补他们自己使用的漏洞,保护他们的新计算机免受其他黑客攻击,以及安装他们的rootkit。
制定恢复计划并将您的网站重新上线并坚持下去:
没有人想要离线的时间超过他们必须。 这是一个给定的。 如果这个网站是一个创收机制,那么迅速恢复在线的压力将会非常激烈。 即使唯一的事情是你/公司的声誉,这仍然会产生很大的压力,使事情迅速恢复。
但是,不要太放弃回到网上的诱惑。 而是要尽可能快地了解是什么原因引发了这个问题,并在你回到网上之前解决它,否则你几乎肯定会再次成为入侵的受害者,并且记住:“一次黑客攻击可以归类为不幸;直到再次遭到黑客攻击,看起来像是粗心“(向奥斯卡·王尔德道歉)。
降低未来的风险。
首先你需要了解的是,安全是一个过程,你必须在devise,部署和维护一个面向Internet的系统的整个生命周期中应用,而不是你可以在你的代码之后挨过几层,如便宜涂料。 为了保证安全,从一开始就需要devise一个服务和一个应用程序,作为项目的主要目标之一。 我意识到这很无聊,而且你之前听说过这一切,我只是没有意识到让你的testingweb2.0(testing版)服务进入testing状态的压力的人,但事实是,这样做因为这是第一次被说出来,而且还没有成为谎言,所以重复。
你不能消除风险。 你甚至不应该这样做。 但是,您应该做的是了解哪些安全风险对您至关重要,并了解如何pipe理和降低风险的影响以及风险发生的可能性。
你可以采取哪些措施来降低攻击成功的可能性?
例如:
你可以采取哪些措施来减less成功攻击的后果?
如果你认为你家的水浸较低楼层的“风险”很高,但是不够高,不能移动,你至less应该把不可替代的家庭传家宝搬到楼上。 对?
…最后
我可能没有留下别人认为重要的东西,但上面的步骤至less应该帮助你开始分类,如果你不幸成为黑客的受害者。
最重要的是:不要惊慌。 在行动之前思考。 一旦你做出决定,坚决行动,如果你有什么要添加到我的步骤列表,请在下面留言。
这听起来像是在你的头上, 没关系。 打电话给你的老板,开始谈判紧急安全响应预算。 10,000美元可能是一个很好的开始。 然后,你需要find一个人(一个PFY,一个同事,一个经理),开始致力于专门从事安全事件响应的公司。 许多人可以在24小时内回复,有时如果他们在你的城市有办公室,他们甚至可以更快。
你也需要有人分stream客户; 毫无疑问,有人已经是。 有人需要与他们通电话,解释发生了什么事情,正在做什么来处理这种情况,并回答他们的问题。
那么,你需要…
保持冷静。 如果你负责事件响应,你现在所做的就是展现出最大的专业精神和领导力。 logging你所做的一切,并让你的经理和高pipe团队知道你采取的主要行动; 这包括与响应团队合作,禁用服务器,备份数据以及再次联机。 他们不需要血淋淋的细节,但是他们应该每隔30分钟就听到你的消息。
现实点。 你不是一个安全专业人员,有些事情你不知道。 没关系。 login到服务器并查看数据时,您需要了解您的限制。 轻轻地踩。 在调查过程中,请确保您不要踩踏重要信息,也不要改变以后可能需要的信息。 如果您感到不舒服或者您在猜测,那么这是停下来让一位有经验的专业人员接pipe的好地方。
获得一个干净的USB棒和备用硬盘。 你会在这里收集证据。 备份你觉得可能相关的所有东西; 与您的ISP进行通信,networking转储等。即使执法不涉及,如果发生诉讼,您也需要此证据certificate您的公司以专业和适当的方式处理了安全事件。
最重要的是要止损。 确定并切断对受损服务,数据和机器的访问。 最好,你应该拉他们的networking电缆; 如果不行,那就拉动力量。
接下来,您需要删除攻击者并closures洞。 据推测,攻击者不再具有互动访问,因为你拉networking。 您现在需要识别,logging(包括备份,截图以及您自己的个人观察logging;或者最好甚至通过从受影响的服务器中移除驱动器并制作完整的磁盘映像副本),然后删除他遗留的任何代码和stream程。 如果你没有备份,下一部分将会吸引你; 你可以尝试从系统中手动解开攻击者,但是你永远不能确定你有什么他留下的东西。 Rootkit是恶毒的,并不是所有的都是可以检测到的。 最好的回应是识别他用来获取的漏洞,制作受影响磁盘的镜像副本,然后擦除受影响的系统,并从已知的良好备份中重新加载。 不要盲目信任你的备份; validation一下! 在新主机再次上网之前修复或closures漏洞,然后使其联机。
将所有数据组织到报告中。 此时此漏洞已closures,您有时间喘口气。 不要试图跳过这一步; 这比其他的过程更重要。 在报告中,您需要确定发生了什么问题,您的团队如何回应以及您为防止此事件再次发生而采取的措施。 尽可能详细; 这不仅仅是为了你,而是为了你的pipe理,作为一个潜在诉讼的辩护。
这是对做什么的全面审查; 大部分工作只是文档和备份处理。 不要惊慌,你可以做那些东西。 我强烈build议您获得专业的安全帮助。 即使你可以处理发生的事情,他们的帮助也是非常宝贵的,他们通常会带着设备来使这个过程变得更加简单快捷。 如果你的老板不惜代价,提醒他这件事与处理诉讼相比是非常小的。
你有我的安慰你的情况。 祝你好运。
CERT有一个文件从UNIX或NT系统妥协恢复的步骤是好的。 这个文件的具体技术细节有点过时了,但是一般的build议仍然直接适用。
基本步骤的简要概述是这样的。
我想特别提一下E.1节。
E.1。 请记住,如果一台机器遭到破坏,系统上的任何内容都可能被修改,包括内核,二进制文件,数据文件,正在运行的进程和内存。 一般来说,信任机器没有后门和入侵者修改的唯一方法是重新安装操作
如果你没有像tripwire那样的系统,你不可能100%确定你已经清理了系统。
罗伯特的“苦药”答案是现货,但是完全通用(就像你的问题一样)。 这听起来像是你有一个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个网站的客户,所以你的协议可能会有所不同。
当服务器获取妥协协议的第一步是:
dd
所有系统驱动器的映像 开始进行验尸取证。 看看日志,找出攻击的时间,find那个时候修改过的文件。 尝试回答如何? 题。
即使“所有后门和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。