很难从您在此处发布的内容中给出具体的建议,但是基于我很久以前写的帖子,我确实有一些通用的建议,那时我仍然很不喜欢写博客。
不要惊慌
首先,除了从入侵之前进行的备份还原系统之外,没有“快速修复”的方法,这至少有两个问题。
- 很难确定入侵发生的时间。
- 它无助于您关闭上一次使他们陷入困境的“漏洞”,也无法应对可能也发生的任何“数据盗窃”的后果。
黑客入侵他们的Web服务器的受害者不断重复问这个问题。答案很少改变,但人们不断提出问题。我不知道为什么。也许人们只是不喜欢他们在寻求帮助时所看到的答案,或者找不到可以信任的人来提供建议的人。或者,人们阅读了该问题的答案,而过多地关注了为什么他们的案例与众不同的5%,而不是他们在网上找到的答案,而错过了95%的问题,而他们的案例足够接近相同的答案作为他们在线阅读的内容。
这使我进入了第一个重要的信息领域。我真的很感谢您是一个特别的独特雪花。我也很欣赏您的网站,因为它反映了您和您的业务,或者至少反映了您代表雇主的辛勤工作。但是对于外面的某人来说,无论是计算机安全人员正在查看问题以尝试帮助您,还是攻击者本人,您的问题很可能与他们遇到的其他所有案例至少具有95%的相同性曾经看过。
不要亲自进行攻击,也不要遵循此处提出的建议或您从其他人那里得到的建议。如果您只是在成为网站黑客的受害者后才读这篇文章,那么我真的很抱歉,我真的希望您能在这里找到有用的东西,但这不是时候让您的自我阻碍您的需要做。
您刚刚发现服务器被黑客入侵。怎么办?
不要惊慌。绝对不要仓促行事,绝对不要试图假装从未发生过的事情,甚至根本没有采取任何行动。
第一:了解灾难已经发生。现在不是拒绝的时候。现在是时候接受发生的事情,对之现实,并采取措施管理影响的时机。
其中一些步骤会很受伤害,并且(除非您的网站保留我的详细信息的副本),否则我真的不在乎是否忽略所有或部分这些步骤,这完全取决于您。但是,正确地遵循它们将最终使事情变得更好。这种药可能很难吃,但有时如果您真的想治愈该药,就不得不忽略它。
阻止问题变得比现在更严重的问题:
- 您应该做的第一件事是将受影响的系统与Internet断开连接。无论您有任何其他问题,使系统保持与网络的连接都只会使攻击继续进行。我的意思是从字面上看。如果需要的话,请有人亲自访问服务器并拔下网络电缆,但在尝试执行其他操作之前,先将受害者从其抢劫犯中断开。
- 更改与受感染系统在同一网络上的所有计算机上所有帐户的所有密码。不完全是。所有帐户。所有计算机。是的,您是对的,这可能太过分了;另一方面,可能不会。你都不知道,是吗?
- 检查您的其他系统。特别注意其他面向Internet的服务,以及那些拥有财务或其他商业敏感数据的服务。
- 如果系统拥有任何人的个人数据,请立即通知负责数据保护的人(如果不是您),并敦促其进行全面披露。我知道这很艰难。我知道这会很疼。我知道许多企业都希望在地毯下解决此类问题,但企业将不得不对其进行处理-并且需要在处理所有相关隐私法的同时进行处理。
但是,让您的客户感到烦恼的可能是让您告诉他们有关问题的信息,如果您不告诉他们,他们将更加烦恼,并且只有在有人使用他们的信用卡详细信息向他们收取了价值8,000美元的商品后,他们才会自己发现从您的网站上偷了。
还记得我以前说的话吗?坏事已经发生了。现在唯一的问题是您处理得如何。
充分理解问题:
- 在此阶段完全完成之前,请勿使受影响的系统重新联机,除非您想成为其职位实际上是我决定撰写本文的引爆点的人员。我不会链接到该帖子,这样人们就可以大笑一场,但是真正的悲剧是人们无法从错误中吸取教训。
- 检查“受攻击”的系统,以了解攻击如何成功破坏了您的安全性。尽一切努力找出攻击的“发源地”,以便您了解要解决的问题,以确保将来系统安全。
- 这次再次检查“受攻击”的系统,以了解攻击发生的位置,以便您了解攻击中哪些系统受到了攻击。确保跟踪所有表明受感染系统可能成为进一步攻击系统的跳板的指针。
- 确保完全理解任何攻击中使用的“网关”,以便您可以开始正确关闭它们。(例如,如果您的系统受到SQL注入攻击的危害,那么不仅需要关闭破解它们的特定缺陷代码行,还需要审核所有代码以查看是否存在相同类型的错误在其他地方制作)。
- 了解攻击可能会因多个缺陷而成功。通常,攻击不会通过发现系统中的一个主要错误而成功,而是将几个问题(有时是次要的和琐碎的问题)放在一起构成系统漏洞。例如,使用SQL注入攻击将命令发送到数据库服务器,发现要攻击的网站/应用程序是在管理用户的上下文中运行的,并使用该帐户的权限作为踏脚石来破坏其他用户的网站一个系统。或像黑客那样称呼它:“另一天在办公室利用人们常犯的错误”。
为什么不仅仅“修复”您检测到的漏洞利用程序或rootkit并使系统恢复在线状态?
在这种情况下,问题是您不再拥有该系统的控制权。不再是您的计算机了。
只有这样,才能有一定的,你已经得到了系统的控制来重建系统。尽管找到并修复用于入侵系统的漏洞有很多价值,但是一旦入侵者获得控制权,您就无法确定对系统做了哪些其他事情(事实上,对于招募黑客的黑客来说,这并非闻所未闻)将系统整合到僵尸网络中,以修补他们自己使用的漏洞,以保护“他们”的新计算机免受其他黑客的攻击,并安装他们的rootkit。
制定恢复计划,并使您的网站恢复在线并坚持使用:
没有人想拥有更长的离线时间。那是给定的。如果该网站是一种创收机制,那么将其迅速恢复在线的压力将非常巨大。即使您/公司的声誉受到威胁,这仍然会给您带来很大的压力,要求您迅速恢复工作。
但是,不要屈服于太快地上网的诱惑。而是尽可能快地移动,以了解引起问题的原因并在重新上网之前解决问题,否则您几乎肯定会再次成为入侵的受害者,并记住:“一旦被黑客入侵,可被视为不幸;再次被黑客入侵看起来像是粗心”(对奥斯卡·王尔德表示歉意)。
- 我假设您在开始本节之前就已经了解了导致成功入侵的所有问题。我不想高估这个案子,但是如果您没有先做那件事,那么您确实需要这么做。抱歉。
- 切勿支付敲诈/保护金。这是一个简单标记的标志,您不希望使用该短语来形容您。
- 不要试图在不进行完全重建的情况下使同一台服务器重新联机。与在旧系统上审核每个系统的每个角落以确保其干净之前,在旧硬件上构建新盒子或“从轨道上将服务器核对并进行全新安装”要快得多。再次在线。如果您不同意这一点,那么您可能不知道确保完全清洁系统的真正含义是什么,否则您的网站部署过程将是一团糟。您大概拥有站点的备份和测试部署,可以用来构建实时站点,如果不这样做,那么被黑不是您的最大问题。
- 在重用被黑客入侵时“活”在系统上的数据时要非常小心。我不会说“从不做”,因为您只会无视我,但是坦率地说,当您知道无法保证数据的完整性时,您确实需要考虑保留数据的后果。理想情况下,您应该从入侵之前进行的备份中还原它。如果您不能或不会这样做,则应格外小心,因为它已污染。如果此数据属于客户或站点访问者而不是直接属于您,则您应该特别注意对他人的后果。
- 仔细监视系统。您应该下定决心,将其作为未来的一个持续过程(在下文中进行更多介绍),但是在网站重新上线后的这段时间内,您要付出更多的努力来保持警惕。入侵者几乎肯定会回来,并且如果您能发现他们试图再次闯入,您肯定可以很快看到您是否真的已经关闭了他们以前使用过的所有漏洞以及他们自己制造的任何漏洞,并且您可能会收集到有用的信息。您可以传递给当地执法部门的信息。
减少未来的风险。
您需要了解的第一件事是,安全性是您必须在设计,部署和维护面向Internet的系统的整个生命周期中应用的一个过程,而不是像廉价的那样之后可以在代码上打几层涂料。为了获得适当的安全,需要从一开始就设计服务和应用程序,并将其作为项目的主要目标之一。我意识到这很无聊,并且您之前已经听到了所有消息,并且我“只是没有意识到让您的Beta Web2.0(beta)服务成为Web上Beta状态的压力人”,但是事实是,这种情况一直存在被重复,因为它是第一次被说成是真的,但还没有成为谎言。
您无法消除风险。您甚至都不应该尝试这样做。但是,您应该做的是了解哪些安全风险对您很重要,并了解如何管理和减少风险的影响以及风险发生的可能性。
您可以采取哪些步骤来降低攻击成功的可能性?
例如:
- 该漏洞是否可以使人们闯入您的站点,这是供应商代码中一个已知的错误,并且已有可用的补丁程序?如果是这样,您是否需要重新考虑如何在面向Internet的服务器上修补应用程序的方法?
- 导致人们入侵您网站的漏洞是供应商代码中一个未知的错误,而该补丁没有可用的补丁?我绝对肯定不提倡每当遇到这样的问题时更换供应商,因为它们都会遇到问题,如果采用这种方法,您最多将在一年内用尽平台。但是,如果系统不断让您失望,那么您应该迁移到更可靠的系统,或者至少重新架构系统,以使易受攻击的组件包裹在棉绒中,并尽可能远离敌对的眼睛。
- 该缺陷是您(或为您工作的承包商)开发的代码错误吗?如果是这样,您是否需要重新考虑如何批准将代码部署到实时站点的方法?是否可以通过改进的测试系统或对代码“标准”的更改来捕获该错误(例如,虽然技术不是灵丹妙药,但您可以通过使用有据可查的编码技术来降低成功进行SQL注入攻击的可能性。 )。
- 该缺陷是由于服务器或应用程序软件的部署方式存在问题吗?如果是这样,您是否在可能的情况下使用自动化过程来构建和部署服务器?这些对于在所有服务器上保持一致的“基准”状态,最大程度地减少必须在每台服务器上进行的自定义工作量以及因此希望最大程度地减少犯错的机会很有帮助。代码部署也是如此-如果您需要执行“特殊”操作来部署Web应用程序的最新版本,则请尝试使其自动化并确保始终以一致的方式进行。
- 可以通过更好地监视系统来尽早发现入侵吗?当然,为您的员工提供24小时监控或“通话”系统可能并不划算,但是有些公司可以为您监控面向Web的服务,并在出现问题时提醒您。您可能会决定自己负担不起或不需要它,这就很好了……只需考虑一下。
- 在适当的地方使用tripwire和nessus等工具,但不要盲目使用它们,因为我是这么说的。花时间学习如何使用一些适合您的环境的良好安全工具,保持这些工具的更新并定期使用它们。
- 考虑雇用安全专家来定期“审核”您的网站安全。再次,您可能会决定自己负担不起或不需要它,这很好...只考虑它。
您可以采取哪些步骤来减少成功攻击的后果?
如果您确定家庭洪水较低楼层的“风险”很高,但又不足以保证搬家,则至少应将不可替代的家庭传家宝搬到楼上。对?
- 您可以减少直接暴露给Internet的服务量吗?您能否在内部服务和面向Internet的服务之间保持某种距离?这样可以确保即使您的外部系统受到损害,使用它作为跳板攻击内部系统的机会也会受到限制。
- 您是否在存储不需要存储的信息?您是否在“在线”存储此类信息,而该信息可能会在其他地方存档。这部分有两点:显而易见的一个原因是人们无法从您那里窃取您没有的信息,第二点是您存储的内容越少,维护和编写代码所需要的内容就越少,因此出现错误的机会就越少您的代码或系统设计。
- 您是否在Web应用程序中使用“最少访问”原则?如果用户仅需要从数据库中读取,则请确保该Web应用程序用于为其提供服务的帐户仅具有读取访问权限,不允许其进行写访问,当然也不允许其进行系统级访问。
- 如果您对某些事情不太有经验,并且对您的业务不是很重要,请考虑将其外包。换句话说,如果您经营一个讨论编写桌面应用程序代码的小型网站,并决定开始从该站点销售小型桌面应用程序,则可以考虑将您的信用卡订购系统“外包”给Paypal这样的人。
- 尽可能将灾难恢复计划中的从受感染的系统中进行恢复作为工作的一部分。可以说,这只是您可能会遇到的另一种“灾难情况”,只是其自身存在的问题和问题与通常的“服务器机房着火了” /不同,而是被巨型服务器吃狂子的东西所入侵。
...最后
我可能没有遗漏其他人认为重要的东西,但是如果您不幸倒霉而成为黑客的受害者,那么上述步骤至少应该可以帮助您开始进行分类。
最重要的是:不要惊慌。三思而后行。做出决定后,请立即采取行动,如果有什么需要补充的话,请在下面留下评论。