如何保护您的 Web 应用程序免受密码破解Part 1
导语:在本文中,我们讨论了密码破解的危险,并提供了减少恶意身份验证尝试的最佳实践。
恶意行为者通常以用户和管理员凭据为目标,因为黑客希望使用它们来访问敏感数据。据 Verizon 称,在 2021 年受到社会工程攻击的数据中,凭据攻击占高达 85%。为了窃取用户凭据,黑客可以使用恶意软件或各种密码破解方法。
密码策略薄弱和密码破解缺乏保护是导致帐户泄露的两个最常见的漏洞。
在本文中,我们讨论了密码破解的危险,并提供了减少恶意身份验证尝试的最佳实践。我们还探讨了 Fail2ban 服务如何帮助您保护对用户帐户的访问,并提供有关如何配置 Fail2ban 的分步指南,并分享我们自己在 Viber 聊天机器人中配置 Fail2ban 通知的经验。
什么是密码破解?
要访问 Web 应用程序,用户需要在系统内创建配置文件。为此,用户通常会创建一个登录名和密码作为保护帐户访问的凭据。根据应用程序类型,他们可能还必须提供其他数据,例如个人信息、消息和银行账户。所有这些数据对威胁参与者都很有价值,他们可以尝试使用各种密码窃取方法从不同的应用程序访问用户配置文件。
在开发 Web 应用程序时,必须牢记密码被盗的风险并实施强大的安全机制来减轻这些风险。否则,如果攻击者设法访问用户帐户并暴露个人信息,Web 应用程序提供商可能会面临客户流失和声誉受损等后果。如果用户决定将案件告上法庭,他们也可能承担经济损失。
密码破解的后果
窃取用户数据的一种方法是密码破解。
这种方法的主要目标是猜测应用程序或计算机服务的密码。该技术本身并不一定是恶意的,它可以作为一种目标漏洞验证技术用于安全测试。
密码破解是从存储在计算机系统中或通过网络传输的密码哈希中恢复密码的过程。它通常在评估期间执行,以识别密码较弱的帐户。
——NIST SP 800-115信息安全测试和评估技术指南
在应用密码破解技术时,黑客经常使用特殊的应用程序和工具来应用多种凭证变体,直到找到正确的配对。密码破解应用程序每秒用于猜测密码的凭据数量取决于攻击者计算机的性能。此外,猜测用户密码所需的时间取决于密码强度。
有多种密码破解方法:
密码破解攻击的类型
字典攻击是一种通过系统地输入字典中的每个单词作为密码来访问 IT 资源的方法。黑客经常使用破解字典,其中存储了常用的密码和熟悉的单词,例如不同语言的名称和地点。此类字典还可以包括黑客收集和添加的先前被盗的用户凭据。字典攻击是猜测弱密码的一种快速方法,但通常对于不常见的强密码它们不会成功。
蛮力攻击是一种简单的试错法,专注于生成所有可能的密码,直到一定长度。黑客检查所有密码组合,包括所有字母、数字和特殊符号的组合,从可能的最小密码长度开始。可能的组合数量取决于密码的长度。理论上,这种破解方法的成功率是100%。这只是时间问题,因为短密码可以在几分钟内猜出,而非常长且复杂的密码可能需要数十年才能破解。
彩虹攻击。大多数应用程序使用哈希对用户密码进行加密,并以加密形式存储它们。黑客使用存储预先计算的密码哈希的彩虹表来破解数据库中的密码哈希。
网络钓鱼。通过网络钓鱼,攻击者诱骗用户单击电子邮件附件或 URL 链接,导致他们登录到虚假版本的 Web 应用程序并泄露他们的密码。
反向蛮力。恶意行为者对多个用户名使用通用密码来访问帐户。
凭证填充。如果黑客知道被盗帐户的用户名和密码,他们可以尝试在该用户可能拥有帐户的多个系统中使用此组合。根据Security eMagazine的数据,53% 的人承认为不同的帐户使用相同的密码。
希望攻击者无法破解您的 Web 应用程序用户的密码不是一种选择。因此,让我们探讨如何保护用户数据免遭密码破解并减轻帐户泄露的网络安全风险。
保护您的 Web 应用程序免受密码破解的 7 种方法
为了保护您的产品的用户帐户不被盗用,您需要实施一种综合方法。下面,我们将讨论缓解密码破解的七种最必要的网络安全实践。
保护您的 Web 应用程序免受密码破解的 7 种方法
1. 引入严格的密码管理政策
密码越复杂,黑客破解它们的难度就越大。确保您的开发人员配置您的应用程序的密码规则,以防止用户创建弱凭据。
创建密码规则列表时,请考虑研究顶级技术组织推荐和使用的内容。例如,您可以查看NIST 特别出版物 800-63-3 数字身份指南中的密码策略建议,并了解Microsoft 365和IBM Security Privileged Identity Manager等可靠产品推荐的密码安全性。
密码策略的常见最佳实践包括:
· 密码应包含特殊符号、数字以及小写和大写字母。
· 最小密码长度应为八个符号。越长越好。
· 密码应在指定时间段内过期和更改:每月一次、每三个月一次、每年两次等。
· 您的应用程序应该有密码历史记录,以便当用户更改密码时,它可以根据所有以前的密码检查新密码。只有当它实际上是新密码时,才应批准新密码。
2.更改管理帐户名称
避免使用“administrator”、“admin”或“root”等管理帐户的明显用户名。此类用户名很可能成为威胁行为者发起密码破解攻击时的第一个目标。
3.启用多因素身份验证
使用多重身份验证 (MFA) 保护用户对您的应用程序的访问。此类身份验证工具使用户在登录应用程序之前执行两个或多个步骤。
第一步通常需要传统的登录名和密码。在以下步骤中,可能会要求用户输入 SMS 中的安全代码、使用令牌、提供指纹等。
即使威胁者成功猜出凭据,MFA 也将成为访问用户帐户的另一个障碍。
4.建立用户活动监控
考虑将用户活动监控解决方案作为 Web 应用程序安全性的一部分。此类解决方案会收集有关您的基础架构内所有用户活动的信息,因此如果发生可能是密码破解攻击迹象的异常用户行为,您可以发现它。
用户监控解决方案通常与人工智能驱动的访问控制工具等复杂软件一起使用,这些软件可以分析收集的用户活动数据、检测异常情况,并阻止可疑的登录尝试或通知安全工程师潜在的威胁。
例如,此类解决方案可以保存设备详细信息和用户机器的 IP 地址。如果有人尝试从不同的 IP 地址或设备登录,访问控制工具可以应用其他 MFA 方法或限制访问。
5. 将对服务器的远程访问限制为受信任的 IP
您的管理员和工程师帐户也可能遭受密码破解攻击。因此,请确保仅对受信任的 IP 地址启用对服务器的远程访问。
例如,您可以提供对在日常工作中需要访问服务器的工程师的 IP 地址的访问权限。为此,您可以使用防火墙(如果您使用云提供商服务,则可以使用安全组)。
6.为工程师启用安全密钥
需要远程访问服务器的工程师应该生成安全密钥。例如,这些可能是用于 SSH 访问的SSH 密钥。这样,管理员可以安全地远程连接到服务器或其他机器,而无需使用登录名和密码。SSH 密钥身份验证可保护对服务器的访问并加密客户端和服务器之间传输的流量。
另一种无密码访问服务器的方法是使用硬件安全密钥,如FIDO2或Google Titan。这些是可以用来代替常见身份验证方法的 USB 设备。
在这种情况下,应禁用使用登录名和密码访问服务器。应仅允许密钥持有者访问。如果密码不存在,则无法破解密码。
7.使用密码破解保护服务
最后但并非最不重要的一点是,有一些特殊工具旨在保护服务免受密码破解。
通常,此类工具会自动扫描登录尝试并阻止显示恶意迹象的 IP 地址,例如密码失败次数过多。这些工具中最受欢迎的是:
· SSH卫士
· IPBan Pro
· 间谍日志
· Fail2ban
在 Apriorit,我们更喜欢使用 Fail2ban,因为它使用方便并且可以有效阻止潜在的恶意身份验证尝试。让我们仔细看看 Fail2ban 并讨论如何在实践中配置和使用它。
本文讲述了保护您的 Web 应用程序免受密码破解的几种方法,下文我们将介绍什么是 Fail2ban,以及它是如何工作的?
发表评论