Security
     

使用 nginx 保护 wordpress 的5个提示

保护您的网站并不像编写内容那样令人愉快, 但它同样重要.
在互联网上搜索 “保护 wordpress”, 你会看到不缺少讨论各种插件的文章, 承诺使您的网站更加安全。你会发现很多东西都是有效的–我甚至使用了一些这样的插件。然而, 插件只能做这么多。有安全意识的 wordpress 管理员也应该警惕安装太多插件, 因为这样做增加了攻击的表面积。出于这些原因, 我更喜欢使用 nginx 作为我的 wordpress 网站的附加安全层。以下是5个有用的提示, 以硬化一个 wordpress 网站与 nginx。

1。使用 https

我希望你已经在这样做了, 但如果没有, 请用 ssl 证书保护你的 wordpress 网站。谷歌优先考虑 https 网站是有原因的–它们是安全的, 增强了浏览隐私。  ssl 证书是 cheap-1年证书的价格低于麦当劳的价值餐的成本, 你不能怪成本为你的原因没有保护你的网站。像 “让我们加密” 这样的服务也可用, 但你节省的成本可以很容易地及时弥补。所以, 虽然我个人使用让我们加密我的一些需求, 我不专门使用它, 我也不推荐给非技术的个人。相反, 看看 ssls.com. com (注册商 namecheap 拥有)。在那里, 你可以经常以每年5美元左右的价格找到 comodo 证书。现在你有了一个闪亮的新 ssl 证书, 你如何保护 wordpress?有了恩金克斯, 这很容易。 

上面的 nginx 配置看起来难以操作, 但幸运的是, 它几乎是您可以复制和粘贴的内容。其要点是, 尽管 ssl 中的第一个 s 表示 “安全”, 但并非所有 ssl 部署都是安全的。许多安全漏洞已被识别为较旧的密码和协议, 为了正确保护站点的安全, 您需要正确地限制服务器将使用的 ssl 方言。为了帮助可视化这个神秘的公式, 我喜欢使用由 qualys 的 ssl 服务器测试。这个免费测试将检查服务器的 ssl 配置, 并根据已知漏洞对其进行分析。最终的结果是一个易于阅读的记分卡和故障分析。截至撰写本文时, 上述配置将获得 a +

a + 评级, 但要多久?安全永远是一个移动的目标.

2。将 http 重定向到 https

步骤1完成后, 我们可以完全关闭 http!过去有一个论点, 即在必要时只使用 https (即登录屏幕、银行、电子商务结账等)。开发人员跳过复杂的圈, 以避免服务不安全 (例如, http) 安全页面上的内容, 以免用户的浏览器警告他们不安全的内容。所有这些都是以避免, 也就是当时的情况下, 对加密计算征税的名义进行的。幸运的是, 今年是 2019年, 而不是 1999年, 几乎没有理由再通过 http 提供内容。上面的示例配置大约和它得到的一样简单。所有 http 通信都将被重定向到 https, 同时保留任何 url 参数。如果用户直接在浏览器的地址栏中键入您的域名, 他们将无缝和自动重定向。通过使用 301-这是永久重定向的 http 代码-他们的浏览器将缓存此查找, 搜索引擎将完全忽略您的网站的 http 版本。双赢!

3。速率限制登录

一个面向公众的网站收到的自动黑客攻击尝试的数量是惊人的。其中大多数都是简单的自动脚本, 以查找愚蠢地启用默认用户帐户和密码的网站。您可能没有任何风险, 前提是您遵循正确的密码安全性 (例如, 使用密码管理器 (如 1docl), 而不在网站之间重复使用密码等), 但这些都是令人讨厌的。不只是烦人, 但他们可以快速填满服务器日志, 使其难以发现合法的黑客攻击企图。幸运的是, 有一个简单的方法来解决这个问题与 nginx-简单的速率限制登录页面。通过限制登录页面的速率, 可以有效地将上限设置为登录尝试次数, 一台计算机可以在特定时间范围内执行。简而言之, 它使野蛮的强迫尝试不切实际。由于这些都是自动大规模的黑客攻击企图, 他们很快就会厌倦缓慢的步伐, 转移到其他网站。 

此示例涉及两个不同的组件。第一个是在第1行, 其中定义了一个限制 _ req _ zone。有几个技术组件的这条线, 我不会深入到这里-对于那些好奇的, 请检查 nginx 文档的限制 _ req _ zone。只需指出, 此设置有点内存 (确切地说, 为5兆字节), 并使用它来存储有关最近访问网站的 ip 地址的信息。它还定义了每分钟不超过5个请求的可接受速率。此配置的第二部分位于第10行, 具有限制 _ req 配置。在位置块中指定限制 _ req 指令之前, 不启用速率限制。在本例中, 我们表示, 应使用称为 jason _ whitehorn _ us 的共享内存区域限制 wordpress 登录页面 (/wp-login. php)。其中最令人困惑的部分是第10行上的最后一位-burst确信第5条无延迟配置。nginx 的文档进入了所有的细节, 但除此之外, 这允许有人立即使用他们的所有5项请求。否则, 每分钟5次请求的费率限制被解释为 “任何请求都不应超过每20秒收到1个请求”。对于某些情况, 这可能是有意义的, 对于登录页面, 它没有意义。考虑使用的用例是, 您错误地键入了密码, 并且只有在点击提交后才意识到这一点–您会等待 20秒, 还是会立即重试?使用此附加配置, 我们允许更合理的方案, 前提是尝试的总数在1分钟内永远不会超过5次。

4。阻止 xml-rpc

如果你不知道 xml-rpc 是什么, 你并不孤单。这是 wordpress 的一个模糊的功能, 正在被弃用。然而, 在它被完全从 wordpress 中删除之前, 它代表了潜在黑客的虐待来源。除非你使用手机 wordpress 管理应用程序的 iphone 或 android, 没有理由保持它周围。幸运的是, nginx 可以通过简单的配置轻松阻止对它的所有访问。通过简单地从 nginx 返回404右, 我们关闭了对 xml-rpc 功能的所有访问。如果你对彻底阻止它犹豫不决–也许你喜欢移动管理应用程序–那么你可以很容易地使用前面提到的技术来限制这个编辑点。

5。用于登录的客户端证书

这种技术并不适合每个人, 但对于那些愿意在 nginx 设置客户端证书认证的人来说, 好处可能是值得的。本月初, 我写了一篇关于与 nginx 建立基于客户证书的认证的所有血淋淋的细节的文章, 所以我在这里不再重复这些细节。让我们来看看该技术如何应用于 wordpress。

上面你可以看到一个真实的例子, 我是如何使用这个技术在这个博客上。受客户端证书身份验证保护的登录 url。这适用于此网站, 因为我是唯一的作者, 没有其他人有登录名。对于允许帐户注册的站点, 这种技术是不切实际的。

大图

以上5种技术只是 nginx 如何保护网站安全的一个例子, 包括 wordpress。所有这些例子都是从为本网站提供动力的实际 nginx 配置中提取的–你可以在 github 上看到完整的内容。恩吉克斯可以做得更多, 所以不要犹豫去探索。我总是在寻找新的方法来调整我的 nginx 配置。

About Jason

Jason 是一位经验丰富的企业家兼软件开发人员,擅长领导力、移动开发、数据同步和 SaaS 架构。他获得了阿肯色州立大学计算机科学学士学位( 学士学位.
View all posts by Jason →

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注