AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 6190
Accepted
Zoredache
Zoredache
Asked: 2009-05-09 01:32:30 +0800 CST2009-05-09 01:32:30 +0800 CST 2009-05-09 01:32:30 +0800 CST

根妥协后重新安装?

  • 772

在阅读了关于服务器入侵的这个问题后,我开始想知道为什么人们似乎仍然相信他们可以使用检测/清理工具恢复被入侵的系统,或者只是修复用于入侵系统的漏洞。

鉴于所有各种 root 工具包技术和黑客可以做的其他事情,大多数专家建议您应该重新安装操作系统。

我希望能更好地了解为什么更多的人不只是从轨道上起飞和核爆系统。

这里有几点,我希望得到解决。

  • 是否存在格式化/重新安装无法清理系统的情况?
  • 您认为在哪些类型的条件下可以清理系统,以及何时必须进行完全重新安装?
  • 你有什么理由反对完全重新安装?
  • 如果您选择不重新安装,那么您使用什么方法可以合理地确信您已清洁并防止再次发生任何进一步的损坏。
security hacking
  • 6 6 个回答
  • 5566 Views

6 个回答

  • Voted
  1. Best Answer
    K. Brian Kelley
    2009-05-09T01:58:42+08:002009-05-09T01:58:42+08:00

    安全决策最终是关于风险的商业决策,就像关于将什么产品推向市场的决策一样。当您在这种情况下构建它时,不调平和重新安装的决定是有道理的。当您从技术角度严格考虑时,事实并非如此。

    以下是该业务决策通常涉及的内容:

    • 我们的停机时间将给我们造成多少可衡量的损失?
    • 当我们不得不向客户透露一些我们失败的原因时,它可能会花费我们多少成本?
    • 我还需要进行哪些其他活动才能让人们远离以进行重新安装?费用是多少?
    • 我们是否有合适的人知道如何正确启动系统?如果没有,在他们解决错误时我会花多少钱?

    因此,当您将这些成本加起来时,可能会认为继续使用“可能”仍然受损的系统比重新安装系统要好。

    • 31
  2. Rob Moir
    2009-06-15T13:00:45+08:002009-06-15T13:00:45+08:00

    基于我很久以前写的一篇文章,当时我还懒得写博客。

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

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

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

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

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

    第一:了解灾难已经发生。现在不是否认的时候;是时候接受已经发生的事情,以现实的态度对待它,并采取措施管理影响的后果。

    其中一些步骤会受到伤害,并且(除非您的网站包含我的详细信息的副本)我真的不在乎您是否忽略所有或部分这些步骤,但这样做最终会使事情变得更好。这种药的味道可能很糟糕,但有时如果你真的想让治疗起作用,你就不得不忽略这一点。

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

    1. 您应该做的第一件事是将受影响的系统与 Internet 断开连接。无论您遇到什么其他问题,让系统连接到网络只会让攻击继续进行。我的意思是字面意思;如果需要的话,让某人亲自访问服务器并拔下网络电缆,但在您尝试做任何其他事情之前断开受害者与抢劫者的连接。
    2. 更改与受感染系统位于同一网络的所有计算机上所有帐户的所有密码。不完全是。所有帐户。所有电脑。是的,你是对的,这可能是矫枉过正;另一方面,它可能不会。两种方式你都不知道,是吗?
    3. 检查您的其他系统。特别注意其他面向 Internet 的服务,以及那些持有金融或其他商业敏感数据的服务。
    4. 如果系统持有任何人的个人数据,请立即向任何可能受到影响的人进行全面、坦诚的披露。我知道这个很难。我知道这个会很痛。我知道很多企业都想把这类问题隐藏起来,但恐怕你只需要处理它。

    还在犹豫是否要迈出这最后一步?我明白,我愿意。但是这样看:

    在某些地方,您可能有法律要求通知当局和/或此类隐私泄露的受害者。无论您的客户如何让您告诉他们一个问题,他们可能会生气,如果您不告诉他们,他们会更加生气,并且他们只有在有人使用他们的信用卡详细信息收取价值 8,000 美元的商品后才会自己发现从你的网站偷来的。

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

    充分理解问题:

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

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

    没有人希望离线时间超过他们必须的时间。这是给定的。如果该网站是一个创收机制,那么快速使其重新上线的压力将是巨大的。即使唯一危在旦夕的是您/您公司的声誉,这仍然会产生很大的压力来迅速恢复。

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

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

    降低未来的风险。

    您需要了解的第一件事是,安全是一个过程,您必须在设计、部署和维护面向 Internet 的系统的整个生命周期中应用它,而不是像廉价的那样在代码上贴几层之后画。为了获得适当的安全性,需要从一开始就设计服务和应用程序,并将其作为项目的主要目标之一。我意识到这很无聊,而且你以前都听过,而且我“只是没有意识到让你的 beta web2.0 (beta) 服务在网络上进入 beta 状态的压力”,但事实是这一直被重复,因为它第一次被说是真的,它还没有成为谎言。

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

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

    例如:

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

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

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

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

    ...最后

    我可能没有遗漏其他人认为重要的内容,但是如果您不幸成为黑客的受害者,上述步骤至少应该可以帮助您开始解决问题。

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

    • 31
  3. Avery Payne
    2009-06-15T12:50:50+08:002009-06-15T12:50:50+08:00

    始终从轨道上对其进行核打击。这是唯一确定的方法。

    替代文字
    (来源:flickr.com)

    大多数系统都是具有内在隐含信任的整体实体。信任受损系统是一种隐含的声明,即您信任从一开始就破坏了您的系统的人。换句话说:

    你不能相信它。不要为清洁而烦恼。立即断开并隔离机器。在继续之前了解违规的性质,否则你会再次邀请同样的事情。如果可能,请尝试获取违规的日期和时间,以便您有一个参考框架。你需要这个,因为如果你从备份中恢复,你需要确保备份本身没有妥协的副本。恢复前先擦除 - 不要走捷径。

    • 19
  4. womble
    2009-05-09T01:40:30+08:002009-05-09T01:40:30+08:00

    实际上,大多数人不这样做是因为他们认为这将花费太长时间或太具有破坏性。我已经告知无数客户可能会继续出现问题,但是由于其中一个原因,决策者经常拒绝重新安装。

    话虽如此,在我确信我知道进入方法和损坏的全部程度的系统上(可靠的机器外日志,通常带有 IDS,可能是 SELinux 或类似限制入侵范围的东西),我已完成清理而无需重新安装而不会感到内疚。

    • 6
  5. Oskar Duveborn
    2009-05-09T01:59:27+08:002009-05-09T01:59:27+08:00

    很可能他们没有经过足够测试的灾难恢复例程,无法让他们对重建充满信心,或者不清楚需要多长时间或会产生什么影响……或者备份不可靠,或者他们的风险分析师不了解受损系统的范围。我能想到很多原因。

    我想说这主要是基本程序和政策中的一些问题,这不是你想公开承认的——而是你采取防御立场。至少无论您从哪个角度看,我都无法看到或捍卫不擦除受损系统。

    • 2
  6. littlegeek
    2009-05-09T03:16:52+08:002009-05-09T03:16:52+08:00

    我以前没有对系统进行过核对,以便我可以对它们进入的向量进行一些分析,然后对使用进行分析,并查看它们进入的位置。

    一旦你被扎根——你就有了一个活的蜜罐,它可以提供的不仅仅是破解。- 特别是对警察。

    • 也就是说,我已经预先获得了能够在热备用状态下获得干净的系统,并能够提供快速增强的网络安全性来隔离有根的盒子。
    • 2

相关问题

  • 为什么使用authorized_keys通过ssh自动登录不起作用?

  • 如何启用与 SQL Server 实例的加密连接?

  • 从多个位置保护远程服务器/工具访问的最佳方法是什么?

  • 在 SOHO 环境中实施的最佳 VPN 技术是什么?[关闭]

  • 保护新的 Ubuntu 服务器 [关闭]

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve