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


601

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

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

  • 我的第一步是什么?当我到达现场时,应该断开服务器的连接,保留“证据”,还有其他初始注意事项吗?
  • 如何使服务恢复在线?
  • 如何防止同一件事再次发生?
  • 是否有最佳实践或方法可用于从此事件中学习?
  • 如果我想将突发事件响应计划放在一起,该从哪里开始呢?这应该是我的灾难恢复或业务连续性计划的一部分吗?

原始版本

2011.01.02-我周日晚上9.30上班,因为我们的服务器已经受到某种程度的破坏,并导致对我们的提供程序的 DOS攻击。服务器对Internet的访问已关闭,这意味着我们有超过5-600个客户站点已关闭。现在,这可能是FTP hack或某个地方的代码弱点。我不确定直到到达那里。

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


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

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

考虑到我们服务器上有500多个站点,我们首先尝试确定这是从哪里来的服务器,我们希望在一段时间内会变得越来越亮。但是,在仍然使用SSH访问的情况下,我们运行了一条命令,以查找攻击开始时编辑或创建的所有文件。幸运的是,有问题的文件是在寒假期间创建的,这意味着当时在服务器上没有创建太多其他文件。

然后,我们可以识别出有问题的文件,该文件位于ZenCart网站的上载图像文件夹中。

短暂抽烟后,我们得出结论,由于文件的位置,该文​​件必须已通过不适当保护的文件上传工具进行了上传。经过一番谷歌搜索后,我们发现存在一个安全漏洞,该漏洞允许在ZenCart管理面板中上传文件以录制唱片公司的照片。(它从未真正使用过的部分),发布此表单只是上传了任何文件,它没有检查文件的扩展名,甚至没有检查用户是否已登录。

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

这项工作完成了,我早上2点回到家


道德问题 –始终为此应用ZenCart或任何其他CMS系统的安全补丁。在发布安全更新时,全世界都已意识到该漏洞。-始终进行备份,并备份您的备份。-雇用或安排在这样的时间出现的人。为了防止任何人依赖于Server Fault上的紧急情况。


7
我知道您的感觉-我们很高兴在该站点上与“有用的”黑客合作,他们在这里告诉我们他们做了什么!我期待着这个问题的好答案,以防万一我们将来收到“不太帮助”的客人。
Jarrod Dixon

186
致电专业人士寻求帮助!
marcog 2011年

103
我不想听起来很聪明,也不想同情(我也不是),当然我也不了解您的情况的详细信息,但是如果您是负责500-600个站点设置的唯一人员,则可能是该服务器运行方式的根本缺陷。一些公司雇用了专门的系统管理员,他一整天不做任何事情,而是维护服务器- 尽管看起来是那样,但这项任务并非自动在程序员的范围之内。危机结束后,也许值得考虑一下。无论如何,就目前而言,能很好地解决当前的情况非常幸运。
Pekka웃2011年

不一定要假设您拥有完整的内核root工具包,并且root密码已被盗用。它可能只是一个不方便的bash / perl脚本,它可以在不格式化清除它,尽管什么唱诗班竖琴关于这里... serverfault.com/questions/639699/...
海登思林

Answers:


1015

很难从您在此处发布的内容中给出具体的建议,但是基于我很久以前写的帖子,我确实有一些通用的建议,那时我仍然很不喜欢写博客。

不要惊慌

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

  1. 很难确定入侵发生的时间。
  2. 它无助于您关闭上一次使他们陷入困境的“漏洞”,也无法应对可能也发生的任何“数据盗窃”的后果。

黑客入侵他们的Web服务器的受害者不断重复问这个问题。答案很少改变,但人们不断提出问题。我不知道为什么。也许人们只是不喜欢他们在寻求帮助时所看到的答案,或者找不到可以信任的人来提供建议的人。或者,人们阅读了该问题的答案,而过多地关注了为什么他们的案例与众不同的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的系统的整个生命周期中应用的一个过程,而不是像廉价的那样之后可以在代码上打几层涂料。为了获得适当的安全,需要从一开始就设计服务和应用程序,并将其作为项目的主要目标之一。我意识到这很无聊,并且您之前已经听到了所有消息,并且我“只是没有意识到让您的Beta Web2.0(beta)服务成为Web上Beta状态的压力人”,但是事实是,这种情况一直存在被重复,因为它是第一次被说成是真的,但还没有成为谎言。

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

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

例如:

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

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

如果您确定家庭洪水较低楼层的“风险”很高,但又不足以保证搬家,则至少应将不可替代的家庭传家宝搬到楼上。对?

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

...最后

我可能没有遗漏其他人认为重要的东西,但是如果您不幸倒霉而成为黑客的受害者,那么上述步骤至少应该可以帮助您开始进行分类。

最重要的是:不要惊慌。三思而后行。做出决定后,请立即采取行动,如果有什么需要补充的话,请在下面留下评论。


8
+1是个不错的信息,可以帮助人们朝着正确的方向开始。我知道业余服务器管理员在第一次遇到“ hack”时进入这种紧急模式是多么普遍。到达那个位置是一个巨大的错误,但是确实发生了。希望这不会两次发生在同一个人身上。
Andrew Barber

33
+1“ ...但这不是让您的自我阻碍您要做的事情的时候。” 这对于系统管理员有时要理解很重要。无论您多么有知识,总会有一些人(有时是恶意的)比您知识或智慧更高。
Grahamux 2011年

11
好答案。我不确定为什么每个人都将“致电执法”步骤视为可选步骤。如果您负责其他人的数据(并担心诉讼),那么这应该是要做的事情中的第一件事。
wds

8
写得很好,只有一个陷阱-“对可能立即受到影响的任何人进行全面而坦率的披露”。值得尊敬,但并不总是正确的。在做出妥协时,您可能需要削减一些管理上的失误,而您的公司通常会减少一些懈怠,但是...是否公开,特别是在涉及数据保护的情况下,可能远远超出您的薪酬等级,可能有法律影响。建议您立即通知负责数据保护的人员(如果不是您的话),并敦促您进行全面披露。
TheoJones 2013年

5
@GilesRoberts虚拟机主机通常具有一个控制面板,可让您操纵其访客的设置,甚至无需使用RDP或SSH实际登录访客即可对其进行远程控制。您应该能够使用主机的控件隔离来宾,然后使用其远程查看工具在闲暇时调查来宾。
罗伯·摩尔

204

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

您还需要有人对客户进行分类。毫无疑问,已经有人在。有人需要与他们通电话,以解释发生的事情,正在处理的情况以及回答他们的问题。

然后,您需要...

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

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

  3. 获取干净的USB记忆棒和备用硬盘驱动器。您将在此处收集证据。备份您认为可能相关的所有内容;与您的ISP进行通信,网络转储等。即使不参与执法,在发生诉讼的情况下,您也将需要此证据来证明您的公司以专业,适当的方式处理了安全事件。

  4. 最重要的是止损。识别并切断对受损服务,数据和计算机的访问。最好您拉一下他们的网线;如果不能,请拉电源。

  5. 接下来,您需要移除攻击者并关闭漏洞。据推测,由于您拉动了网络,攻击者不再具有交互式访问权限。现在,您需要标识,记录文档(包括备份,屏幕截图和您自己的个人观察笔记;或者甚至最好通过从受影响的服务器中删除驱动器并进行完整的磁盘映像副本),然后删除他留下的所有代码和进程。如果没有备份,那么下一部分会很烂;您可以尝试手动从系统中解开攻击者,但您永远无法确定自己是否拥有一切。Rootkit是恶意的,并非所有都可以检测到。最好的应对方法是确定他用来进入的漏洞,对受影响的磁盘进行映像副本,然后擦除受影响的系统并从已知的良好备份中重新加载。不要 不要盲目地信任您的备份;验证一下!在新主机再次进入网络之前,修复或关闭漏洞,然后将其联机。

  6. 将所有数据整理成报告。至此,漏洞已关闭,您可以喘口气了。不要试图跳过这一步。它比其余过程更重要。在报告中,您需要确定出了什么问题,团队的反应以及为防止再次发生此事件而采取的步骤。尽可能详细;这不仅为您服务,还为您的管理层和潜在诉讼提供辩护。

那是做什么工作的空前回顾;大部分工作只是文档和备份处理。别着急,你可以做到。我强烈建议您获得专业的安全帮助。即使您能够处理发生的事情,他们的帮助也将是无价的,而且他们通常会配备一些设备,以使过程变得更轻松,更快捷。如果您的老板不愿为此付出代价,请提醒他,与处理诉讼相比,这很小。

你有我的安慰。祝好运。


19
+1好答案。听起来OP并没有预先定义的“紧急响应”,您的帖子除其他外,还应指出如何进行设置。
罗伯·摩尔

109

CERT的文档很好,它介绍了从UNIX或NT系统恢复的步骤。本文档的具体技术细节有些过时,但是许多常规建议仍然直接适用。

这是基本步骤的快速摘要。

  • 请咨询您的安全策略或管理。
  • 获得控制权(使计算机脱机)
  • 分析入侵,获取日志,找出问题所在
  • 维修东西
    • 安装操作系统的全新版本!!!如果系统遭到入侵,您将无法信任它。
  • 更新系统,这样就不会再次发生
  • 恢复操作
  • 更新您的未来政策并记录

我想特别指出您到E.1节。

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

如果您还没有像Tripwire这样的系统,则不可能100%确定您已清理系统。


26
即使那样,tripwire仍然可以被内核模块之类的东西欺骗。重新安装。
reconbot

有关如何应对危机的相关问题这里也可能有用。
Zoredache

67
  1. 找出问题所在。阅读日志。
  2. 包含。您已断开服务器的连接,至此完成。
  3. 消除。最有可能重新安装受影响的系统。但是不要擦除被黑客入侵的硬盘,而要使用新的硬盘。这样比较安全,您可能需要旧的工具来找回没有备份的丑陋的hack,并进行取证以找出发生的情况。
  4. 恢复。安装所需的一切并恢复备份,以使您的客户端联机。
  5. 后续行动。找出问题所在,并防止再次发生。

52

罗伯特(Robert)的“苦药”答案是现成的,但完全是通用的(嗯,就像你的问题一样)。听起来确实存在管理问题,并且如果您有一台服务器和600个客户端,则急需一位专职sysadmin,但这现在对您没有帮助。

我经营着一家托管公司,在这种情况下可以提供一些帮助,因此我处理许多受到感染的计算机,同时也为自己提供最佳实践。我们总是告诉受感染的客户进行重建,除非他们不能绝对确定受害的性质。从长远来看,没有其他负责任的途径。

但是,您几乎可以肯定只是脚本小子的受害者,他们想要启动DoS攻击或IRC跳弹或与客户的站点和数据完全无关的启动板。因此,作为重建时的临时措施,您可以考虑在机箱上设置一个沉重的出站防火墙。如果您可以阻止对站点正常运行并非绝对必要的所有出站UDP和TCP连接,则可以轻松地使受感染的盒子对向您借用它的任何人都毫无用处,并将对提供商网络的影响降低为零。

如果您以前没有做过,则此过程可能要花费几个小时,并且从未考虑过防火墙,但可能会帮助您恢复客户端服务,但有继续向攻击者提供访问客户端数据的风险。因为您说在一台计算机上有数百个客户,所以我猜您正在为小型企业托管小型小册子网站,而不是拥有信用卡号码的600个电子商务系统。如果真是这样,对您来说这可能是一个可接受的风险,并且比将600个站点进行安全性缺陷审核之前,使系统恢复联机状态的速度更快。但是您会知道那里有什么数据,以及做出该决定的舒适程度。

这绝对不是最佳实践,但是到目前为止,如果那不是您的雇主正在发生的事情,请您用手指指着他们,并向特警队索取数万英镑,他们可能会觉得这是您的错(但是,没有道理! )听起来并不实用。

您的ISP的帮助将非常关键-一些ISP 提供控制台服务器和网络引导环境(即插即用,但至少您知道要寻找哪种设备),这将使您可以在断开网络连接的情况下管理服务器。如果完全可以选择,请索取并使用它。

但是从长远来看,您应该基于Robert的职位以及对每个站点及其设置的审核来计划系统重建。如果您无法将sysadmin添加到您的团队中,请寻找托管托管协议,您需要向ISP支付ISP的sysadmining帮助以及此类事情的24小时响应。祝好运 :)


41

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

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

但是,您现在唯一要做的就是从互联网上删除计算机。


13
所以...您已经实现了Tripwire。
womble

13
是的,这有什么问题吗?
菲利普·埃克伯格

1
+1拔出电源,进行分析(让某人对其进行真正的取证)并擦拭
Oskar Duveborn

4
在匿名Python脚本和已证明的(某种程度上)受支持的,易于理解的标准解决方案之间做出选择之后,您希望他们会选择前者吗?
2014年

37

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

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

我们的《服务器受到威胁的协议》中的第一步是:

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

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

即使“所有后门程序和rootkit都已清理”,也不信任该系统-从头开始重新安装。


23
-1断开服务器电源?您刚刚丢失了一半的取证数据!
乔什·布劳

@Josh,我调整了答案-现在在“拔掉什么”问题上保持中立。
2011年

5
RAM取证(例如/ dev / shm)可能会有所帮助。我更喜欢拔下电源线(但尝试在之前登录和rsync/ proc)。我们还可能会引入频繁的VM快照,以便可以进行RAM取证。使用电源线的原因是:(1)在被黑的系统中进行取证时,您是“跨整个犯罪现场”;(2)根工具包一直在运行-恶意软件在Network Link Down事件上执行某些操作(例如,系统清除)并不难。凯尔·兰金(Kyle Rankin)在他的《取证入门》演讲中(goo.gl/g21Ok)建议拉扯电源线。
2011年

4
没有一个适合所有IR协议的规模,无论出于何种原因,某些组织可能都需要使受感染的系统保持在线一段时间。(RAM和临时日志取证,与入侵者进行交互等)我的观点是,最好推荐一种通用的IR协议(例如上述的Jakob Borgs),而不是以“拔下受感染服务器的电源插头”开头的协议。 ”
乔什·布劳

31

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

格式化那只小狗。

但是,如果您无法重建(或者强大的力量不能让您在需要它的艰苦坚持下重建它),您会寻找什么?

似乎自从发现入侵以来已经有一段时间了,并且已经完成了系统还原,所以很有可能在踩踏中踩踏了它们进入的痕迹以恢复服务。不幸的。

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

如果失败,请对系统分区进行dd复制,然后将它们安装在另一个盒子上。开始在与受感染服务器相同的补丁程序级别上与服务器比较内容。它应该可以帮助您识别看起来不同的内容(再次是那些md5sums),并且可能指向受感染服务器上被忽略的区域。这在目录和二进制文件中进行了大量筛选,并且会占用大量人力。它可能比重新格式化/重建的劳动强度更大,并且对TPTB进行实际需要的重新格式化可能是另一回事。


2
“格式化那只小狗。” -+1,明智的建议。另请参阅:“从轨道上将其核弹,这是确定的唯一方法。”
艾利·佩恩

31

我想说@Robert Moir,@ Aleksandr Levchuk,@ blueben和@Matthew Bloch在他们的回应中几乎都是现场的。

但是,不同发布者的答案有所不同-一些更高层次的发布者会谈论您应该执行哪些程序(通常)。

我希望将其分成几个单独的部分1)Triage,AKA如何与客户打交道和法律含义,并确定从那里去哪里(Robert和@blueben很好地列举了2)减轻影响3 )事件响应4)验尸取证5)修复项目和体系结构更改

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

无论您如何处理客户的反馈,通知,法律和未来计划,我都希望重点关注当前的主要问题。OP的原始问题实际上仅直接与#2和#3有关,基本上,如何阻止攻击,如何使客户以其原始状态尽快恢复在线状态,已在响应中进行了详细介绍。

其余的响应都很好,涵盖了许多已确定的最佳实践和方法,既可以防止它在未来发生,也可以对其做出更好的响应。

这实际上取决于OP的预算以及它们所处的行业领域,所需的解决方案等。

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

这实际上取决于什么对他们的业务有效。也许他们的核心能力不在服务器管理上,因此他们尝试开发这种能力没有任何意义。或者,也许他们已经是一个相当专业的技术组织,可以做出正确的招聘决定,并专职工作。


1
是的,这取决于我们知道。这么说并没有多大帮助。
DOK

27

开始工作并查看服务器之后,我们设法找出了问题所在。幸运的是,有问题的文件在星期天关闭了办公室,并且除了日志和缓存文件之外,没有其他文件可以上传到系统中。通过一个简单的shell命令,可以找出当天创建了哪些文件。

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

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

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


格兰特(Grant),我很高兴为您解决这个问题。这是小事-比我们许多人想象的要严重得多。这次讨论教给我一个关于交流的课程,并提供了许多不错的技巧和不道德的回应方面的思考。
2011年

3
感谢您回来并告诉我们您的情况-您可以看到,您的问题引起了很多讨论。我很高兴您对此似乎并没有受到太大的打击,并且最终您的解决方案非常简单。
罗伯·摩尔

5
这应该是评论(或在问题中以文字形式包含),而不是问题的答案。
Techboy 2011年

5
@Techboy:似乎他尚未关联自己的SO和SF帐户,因此他无法编辑问题。@Grant:您可以通过用户页面上的“帐户”面板关联您的帐户。
河马

1
没有基准配置,您怎么知道不运行rootkit?
Unix管理员,

18

我对广泛的技术答案无能为力,但也请注意其中一些:

非技术措施:

  • 内部报告事件。
    如果您还没有一个可能似乎是CYA技术的事件响应计划,但是IT部门不是确定受感染服务器的业务影响的唯一且通常不是最佳的场所。
    业务需求可能胜过您的技术顾虑。不要说“我告诉过你”,而业务问题的优先考虑才是您首先拥有此受损服务器的原因。(“将其保留为事后报告。 ”)

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

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


16

我认为这可以归结为:

如果您珍惜工作,则最好制定一个计划,并定期进行修订。

不进行计划就是要计划失败,在系统安全性方面,这无所不及。当<redacted>引起轰动时,您最好准备好应对它。

这里还有另一句话(有点陈词滥调):预防胜于治疗

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

在将系统连接到Internet之前,请先问问自己-这是否需要100%面向互联网?如果没有,那就不要。考虑将其放在防火墙后面,您可以在其中决定互联网的外观。更好的是,如果所说的防火墙允许您(通过反向代理或某种类型的通过过滤器)拦截传输,请查看使用它来仅允许发生合法操作。

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

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

就是说,所有这些都没有理由让人沾沾自喜。违规后的最初几个小时内,您仍然应该有一个计划。没有系统是完美的,人类会犯错误。


15

最近,一个不错的在线帮助我了解了攻击者如何破坏系统。一些破解者试图通过伪造文件的修改时间来隐藏其痕迹。通过更改修改时间,可以更改更改时间(ctime)。您可以看到带有统计信息的ctime。

此衬板列出了按ctime排序的所有文件:

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

因此,如果您大致了解入侵的时间,则可以查看更改或创建的文件。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.