加强 WordPress 安全性 - 保护 WordPress 网站的完整指南

已发表: 2021-03-28

当您完成这篇文章后,我会保证您的 WordPress 网站将免受黑客攻击和攻击。

等等,我不能保证。 这么说吧,您将掌握必要的知识,以确保您的网站相对安全。

没有万无一失的安全性。 您可以采取一些具体措施来大大降低您的网站成为黑客或攻击受害者的机会。

我之前写了一篇关于 WordPress 网站如何受到攻击以及为什么应该投资于良好的安全实践的小文章。 您可以在这里阅读它,或者在我们讨论加强您的 WordPress 网站的具体措施之前,我会给您一个 WordPress 漏洞的小摘要。

WordPress 本身几乎没有漏洞,当它们被发现时,它们会通过更新迅速修补。 但是,当您考虑到您的网络主机的安全措施或缺乏安全措施以及通常在 WordPress 网站上运行的第三方软件时,您的网站更有可能因其他人的错误而成为黑客攻击的受害者。

2021 年所有被黑网站中有 51% 受到它们运行的​​主题或插件的危害。 41% 被利用是因为他们选择了错误的网络主机,结果他们的网站被黑客入侵。

运行一个普通的 WordPress 网站并确保其安全并不太难。 但是,当您添加第三方软件的混合物并且必须使用正确的主机维护您的域时,它变得有点困难。

我读过很多成功的网络企业家的博客文章,他们基本上是在网上开展业务的商人。 当他们的在线企业取得成功时,他们就成了目标。 尽管如此,您的网站不一定要成功,甚至不需要一定的流量才能成为目标。

黑客网站的人使用自动化工具,使他们能够搜索成百上千的网站以查找漏洞。 您的网站可能是这数百个网站之一。 因此,即使您的网站不受欢迎,您仍然可能成为目标。

现在,许多网络企业家都了解保持其网站和在线业务安全所需的必要安全标准和措施。 但是今天关于 WordPress 和网络的伟大之处在于,您不再需要成为技术专家或网络开发人员来创建网站。 创建一个网站一点也不难,非常容易,我什至在 Colorlib 上写了一篇关于它的文章(对于那些在构建第一个 WordPress 网站时寻求帮助的人)。

创建一个网站并不太难,让它受欢迎是一个稍微复杂的命题。 但是要确保它的安全,特别是对于那些主要关注非基于 Web 的产品/服务的非技术型 Web 企业家而言,这是相当具有挑战性的。

当然,他们可以聘请网络开发人员来帮助他们。 但是,许多小型网络企业之所以蓬勃发展,肯定与其保持低成本的能力直接相关。 雇用一个每小时收费 100 美元的网络开发人员,并不会因为他们的财务能力而下降。

网络安全专业人员始终是首选,但不幸的是,并非每个人都有必要的业务收入来支付这笔费用。 也许这没关系,也许不是。 但关键的事实是我们必须认识到,即使是小型企业也会收集敏感的个人信息,包括您的居住地址、信用卡详细信息、电话号码和电子邮件 ID。

由于可能疏忽的安全实践,不仅您的客户信息面临风险,而且您已经建立或将花费大量时间建立的业务也将面临风险。 在线开展业务是一项相当艰巨的工作,您的成功取决于多种因素,其中包括品牌声誉和 Google 对您网站的看法。 相信我,如果您的网站关闭或成为攻击/黑客攻击的受害者,那么没有人会对您的业务或服务有好感。

鉴于所有这些以及所涉及的风险,作为网络企业家的“您”可以采取哪些步骤来确保您的网站安全?

这篇文章主要面向主要职业不是经营在线业务的人。 它针对的是来自各行各业的创业者,他们部分或严重依赖在线业务。 由于超过 65% 的网络由 WP 运行,而 WordPress 是精通技术的网络企业家的首选 CMS,我将集中精力为您提供知识,以确保您的 WordPress 网站安全可靠.

#1. 选择合适的主机服务提供商

由于网站服务器端产生的问题,存在很大一部分漏洞。 我发现这个事实相当令人惊讶,您的托管服务可能是您网站漏洞的最大来源。

使用第三方主机,您无法修补保护您的网站。

因此,您可以做的下一件最好的事情是选择合适的网络托管服务提供商。

有太多的网络主机提供商在过时的软件或当前未维护的软件上运行他们的系统。 不再维护的软件的问题是,虽然过去可能不存在漏洞,但无法保证未来的安全。 如果检测到几乎可以肯定的漏洞,则可能不再修补它,因为核心团队没有积极维护旧版本的软件。

当我谈到软件时,我指的是在您的服务器上运行以保持您的站点活跃和正常运行的任何东西。

  • 阿帕奇
  • PHP
  • MySQL
  • 玛丽亚数据库
  • PostgreSQL
  • PHPMyAdmin
  • SSL 证书

即使他们在发布软件补丁时稍有延迟地更新了他们的软件。 黑客利用仅在最近的更新中修补的漏洞的机会窗口扩大并使您的网站面临风险。

共享托管是大多数新开始的在线业务的托管选择,但确实存在一些问题,

  • 对服务器上任何一个 IP 的 DOS 攻击都可能影响该特定服务器上托管的所有网站。
  • 共享 IP 地址是一个大问题。 与您相邻的 IP 地址会影响您的网站,如果共享 IP 被列入黑名单,您的网站将遭受后果。
  • 共享服务器上加载的某些软件总是有可能危及整个服务器,即使共享托管服务提供商确实采取措施防止这种情况发生。

我选择共享主机,

  • 共享主机 – SiteGround – 它们提供帐户隔离,保护您免受同一服务器上可能易受攻击的网站的侵害。 WP 核心和插件的自动更新、免费 SSL 证书和 Grow Big Plan 及更高版本的每日备份、通过过滤系统、防火墙、入侵防御系统和实时监控防止垃圾邮件。 使用 CloudFlare 等 CDN 系统将保护您的网站免受 DDoS 攻击。

SiteGround 在对过去暴露的漏洞做出快速而敏锐的响应方面有着良好的历史。 2013 年,当从超过 90,000 个 IP 地址实施暴力攻击时,SiteGround 甚至阻止了请求到达他们的服务器。

蛮力攻击可能会使服务器负载不堪重负,但如果您无法向服务器发送足够数量的请求,则无法影响它。 在攻击期间,在不到 12 小时内对他们服务器上的网站进行了超过 1500 万次尝试,但他们的服务器都没有遇到任何性能问题。

事实上,一些人在自己客户的网站上进行暴力破解后,发现服务器上的许多网站都使用了弱密码和不安全的密码。 他们通过强制执行强密码来跟进,并通过邮件通知他们的客户。 他们似乎真的很关心他们的安全性,即使在受到攻击的情况下也能确保其共享服务器环境的性能。 对于一些最大的共享网络托管公司来说,情况并非如此。

如果您想要 SiteGround 共享托管的替代选项,我在上一篇文章中列出了很多。

但是,如果您不想担心 WordPress 安全性以及几乎任何其他有关创建、维护和发展网站的远程技术,那么使用托管的 WordPress 主机会更好。 我更喜欢托管托管,但成本要高得多。

一个月的托管托管价格也将为您购买为期 8 个月的共享托管。 如果您经营一家现金拮据的企业,这将对您企业的可持续性产生非常重大的影响。 但是如果他们负担得起的话,任何人都会愚蠢地忽视托管 WordPress 主机的好处。

WPEngine 安全措施-

  • 磁盘写保护,任何创建可被利用的漏洞的恶意代码都受到磁盘写限制的严重限制。 使用带有漏洞的插件和主题突然变得更安全,因为它们无法将代码写入您的服务器,从而使您的 WP 不再容易受到攻击。
  • 登录到 WP dash 的用户的磁盘写入权限扩展到标准功能,例如编写和编辑帖子、主题添加新样式表以及激活/禁用插件。
  • 要删除和写入新文件,您需要通过 SFTP 客户端登录。
  • 不允许添加通用 PHP 代码。
  • 无法将具有已知漏洞的脚本添加到 WordPress。
  • 某些插件可能会被禁止甚至禁用,如果它们的扫描仪在插件代码中发现了一些使您的网站不那么安全的东西。
  • WPEngine 中的基本计划仍然会涉及一些服务器共享。 在任何专用托管计划中,主机都会提供一个完整的服务器,专门为您的网站提供资源。
  • 通过 Amazon S3 备份,您无权访问它们。 即使您尝试过,您也无法破坏备份。 您网站的保险单始终到位。
  • 对服务器的物理访问仅限于必要人员。 他们的数据中心听起来就像 Fort Knox 刚刚读到的。
  • 他们专注于 WP,了解创建安全 WordPress 网站的来龙去脉。
  • 在帐户被黑的情况下恢复很容易,并且可以免费保证。
  • WP 安全解决方案提供商——Sucuri 的定期代码审计。

以这种方式考虑 WPEngine,它会花费您一颗炸弹,但比被黑客入侵的网站花费的要少得多。 它使成本合理化变得更加容易。

请不要忽视这样一个事实,即使用 WPEgnine 您的网站不仅会更安全,而且很可能会更快。 即使像 Colorlib 这样使用虚拟专用服务器的网站也发现很难与 WPEngine 运行网站的速度相匹配。

如果您仍然有疑问并且无法在共享 Web 主机和托管 WP 主机之间进行选择,那么这本身就是一个巨大的话题。 请阅读我不久前写的一篇文章。 希望这将回答您有关网站托管计划适用性的所有问题。

#2. 使用受信任的第三方软件 - 高级主题和插件

插件和主题总是令人怀疑,要持怀疑态度,尤其是当它们维护不善且很少更新时。 现在,您可以通过基于安全漏洞来区分插件来采取多种措施,但始终需要通过 WP 安全审核日志记录您的插件所采取的操作。

安全日志对 Web 开发非常有帮助,安全专业人员在处理客户需求时会在多站点的基础上跟踪更改。 每个用户的每一个动作都可以用插件来解释。 日志还有助于密切关注插件、主题和其他第三方软件行为。 此插件可能无法防止安全问题,但如果出现问题,您会发现很容易追踪问题的根源。

另一个好的做法是让安全专家审核插件。 如果您负担不起,请寻找 Sucuri(Sucuri 是 WordPress 用户安全解决方案的领先供应商)对插件的信心印记。 许多插件/主题自愿提交他们的产品进行代码审计。

优雅的主题已经审核了他们的旗舰主题 Divi。 Elegant Themes 是 WP 细分市场中最大的主题屋之一,即使不是最大的主题屋,但他们的旗舰主题已针对安全问题进行了审核。

迪维接受严格的安全审计

远离没有大量下载的免费插件和主题。 有时,下载次数和收视率极高的插件会吸引更多恶作剧者。 数字保护并不真正适用。 更多的人使用插件使其成为更大的目标,但同时拥有数千名用户可能会通过快速更新帮助识别和防止零日漏洞。

使用高级插件和主题并不意味着可以保证您网站的安全。 但您可以肯定,如果发现任何零日漏洞,响应通常会很快。 主题屋和插件开发商对他们的产品有很大的依赖,他们最不想要的就是漏洞的出现。

坚持使用 WordPress.org 目录中列出的免费插件。 更高的评级和下载次数在某种程度上使该插件成为更安全的赌注。 查看过去由同一作者创建的插件的历史,这是程序员血统的一个很好的指标。 您还会看到某些作者特别注意确保他们的插件/主题的安全性。

最后更新日期是另一个值得考虑的因素。 确保插件的最新版本与 WordPress 的最新版本兼容是在安装和激活插件之前勾选检查清单上的另一个要点。

正如您可能已经猜到,插件也适用于主题。 在使用插件和主题时要记住一些事情。

  • 高级插件在某种意义上更好,他们的团队可能比免费插件更快地响应任何安全漏洞。
  • 使用 WP 安全审计日志并跟踪在您的网站引擎盖下运行的所有内容。
  • 数量肯定是安全的,因为安全威胁更有可能被报告和处理。 但我不禁觉得这是一把双刃剑,插件/主题下载量大也更容易成为黑客的目标。
  • 可以操纵 WP.org 的插件目录,为下载量和评分较少的插件提供出色的评分。
  • 查看插件的作者、他们的历史和以前的产品。 如果他们过去遇到过安全问题,他们不一定表示他们的插件/主题很糟糕,但这不是一个好兆头。
  • 无情地歧视插件/主题,阅读评论,尤其是那些在 Envato 等市场上为产品提供不良评级的评论(一定要调查这些产品评级不佳的原因),即使是高级插件也是如此。 从插件和主题的产品评论中阅读评论部分。 在撰写有关特定 WordPress 产品的评论或创建主题列表帖子时,我总是查看评论部分,了解已下载/购买该产品的用户的投诉。 这个练习总是富有成效的,您几乎总能学到一些关于您打算购买或下载的产品的信息。
  • 如果插件/主题的代码已由 Sucuri 或其他信誉良好的 WP 安全解决方案提供商审核,则增加了产品在安全性方面非常可靠的可能性。
  • 您可以使用 Wordfence 或 iThemes Security 等安全插件来保护自己免受流氓插件的侵害。 此外,您可以使用 Sucuri 免费站点扫描功能,该功能可通过您的 WP 代码查找恶意脚本。

上述步骤都不能保证您永远不会下载坏插件或主题,但它确实减少了您受到安全问题影响的机会。

现在,假设您使用了正确的主机、主题和插件。 我将描述和解释您需要采取的必要安全措施,以确保您的网站安全。

在描述个别安全措施时,请注意,我推荐为特定安全应用程序设计的独立插件。

在这篇文章的后面,我将讨论 Wordfence 一个成熟的免费增值安全插件以及 Sucuri 的安全解决方案。 您应该知道,两者都完成了之前可能在帖子中讨论过的几乎所有安全功能,在某些情况下还可以完成更多功能。

因此,除非您想详细了解各个安全措施,否则您可以跳到最后一部分,我将讨论安全插件的功能和 Sucuri 等安全解决方案提供商。

但是,如果您是 WordPress 的第一次用户,我强烈建议您通读整篇文章,以充分了解每种不同安全措施的重要性。

#3. 保护您的登录页面

WordPress 登录页面是暴力攻击的主要目标。 如果您没有采取适当的安全措施来阻止攻击者,您的登录页面绝对是您网站的一个易受攻击的部分。

我将讨论使用多种安全措施维护强大且安全的登录页面的重要性,这些措施使您的站点安全并防止暴力攻击。

强密码和不寻常的用户名

Admin 不是一个好的用户名。 WordPress 以前将 admin 作为主管理员帐户的默认用户名。 然而,今天,当您安装 WordPress 时,您可以选择不同的用户名。 但是当人们开始使用 WordPress 时,尤其是第一次使用时,许多人仍然坚持使用 admin 作为用户名。 “admin”是一个非常可预测的用户名,它使您的网站更容易被入侵。

您还可以尝试 Admin Renamer Extended 插件,它可以更改您的用户名。

密码,选择不寻常的随机字符串将有助于创建第一道防线,以防止那些有意损害您的网站或获取存储在您网站服务器上的敏感信息的人。

由 SpashData 编译的 5 个最常见密码的列表。

  1. 123456
  2. 密码
  3. 12345
  4. 12345678
  5. 质量

一个积极进取的 13 岁孩子可以猜出 admin 和 123456。使用上述密码,您的网站尤其会消失,如果您收到任何体面的流量。

最好的密码是带有标点符号和特殊字符的大写和小写的混合体。 最好使用没有任何意义的东西,并确保它至少超过 10 个字符。 10 个字符没有特别的原因,但请记住,如果密码更长,破解它们的难度会成倍增加。

如果您的密码没有任何意义,并且您的密码背后没有逻辑原因或情感原因,那么猜测显然要困难得多。 请记住,Sherlock 是如何猜测 Irene Addler 的手机密码的——“I AM _ _ _ _ LOCKED”。 好吧,即使是 Sherlock 也很难猜出一个无法推理的密码!

如果您在确定要使用的密码时遇到困难,请尝试使用 Strong Password Generator 或 Secure Password Generator 等工具,它们都是免费提供的在线工具,可以为您的网站管理员登录找出合适的密码。

安全插件还为管理员和所有用户强制使用强密码。 这很重要,即使您的用户没有管理员身份和随附权限,在 WordPress 上可以访问受损编辑器级别帐户的人也可能会做很多恶作剧。

另一个永远记住的好提示,经常更改您的密码。 如果您很难记住所有密码,请使用密码管理器。 您可以尝试使用 One Password、Last Pass、KeePass 或 DashLane 来安全地存储所有密码。

就用户名和密码而言,它们的意义越小,随机性越大,它们为您的网站提供的安全性就越好。

限制登录尝试次数

蛮力攻击针对 WordPress 网站的登录页面。 如果您不知道,大多数蛮力攻击都涉及尝试不同的字母数字组合来破解特定用户名的站点密码。

现在,即使您假设暴力攻击不成功,您也需要认识到它会消耗大量服务器内存和处理能力的事实。 这几乎肯定会减慢您的网站速度并使其陷入困境。 许多主机还提供防止暴力攻击的保护。 这是因为在共享服务器上,您的站点消耗过多资源可能会影响到每个人。

但是,抵御蛮力攻击的最简单技术是限制登录尝试的次数。 如果有人不能用多个用户名和密码组合重复攻击您的服务器,那么暴力攻击将不起作用。

登录锁定、登录安全解决方案和暴力登录保护都旨在防止通过暴力破解尝试访问您的网站。 Brute Protect 已被 Automattic 团队收购,现在是 Jetpack 的一部分,它提供针对蛮力攻击的保护。

几乎所有的登录保护插件都有类似的界面。

登录保护

所有这些插件基本上都是通过跟踪反复尝试登录但无法登录的 IP 地址来工作的。 在多次登录尝试失败后,特定 IP 将无法访问您网站的登录页面。

如果确定当前登录的用户相当可疑,登录安全解决方案会强制通过电子邮件进行 WordPress 电子邮件身份验证和密码更改。

该插件可以强制执行强密码并要求用户频繁更改密码。 此外,黑客尝试通过 IP 范围进行跟踪,这些 IP 范围反复尝试非法获取访问权限,被锁定更长时间以阻止他们尝试闯入您的网站。

两步登录认证

除了强密码、不寻常的用户名和有限数量的失败登录尝试之外,验证登录还增加了额外的安全层。

两步登录身份验证过程使您的网站不仅仅是双重安全。 登录您的 WordPress 站点需要一个只能通过移动消息接收的身份验证代码。 鉴于此,您的手机不太可能在准备过程中被黑客窃取,您的网站将保持安全,以防止暴力破解和其他依赖于通过您网站登录页面的黑客技术。

Google Authenticator 是一个有用的插件,它依赖于安装在您的 Android/iPhone/Blackberry 上的应用程序,该应用程序为您提供必要的身份验证代码以在您的网站上成功登录。 您可以仅为管理员权限级别启用此应用程序,也可以按用户使用它。

我非常喜欢下一个插件,他们打算将尝试在没有身份验证代码的情况下登录的人发送到具有可自定义 URL 的重定向。 隐形登录页面也完全阻止了机器人。

登录认证

如果用户未能遵守完整的登录顺序,则登录尝试将被拒绝。 另一种可用于阻止机器人的技术是在登录页面上使用验证码,您可以使用 Login No Captcha reCaptcha 来阻止机器人登录。

更改您的 WordPress 登录页面 URL

我们已经讨论了限制登录尝试、验证登录以及使用强密码和不寻常用户名的重要性。

现在我们要隐藏或更改登录页面,这种类型的安全模块也称为隐匿性安全。 我知道这似乎有点矫枉过正。 但请留在这里,因为这一步并不比之前建议的保护登录页面的安全措施更困难。

蛮力攻击只有在他们可以找到登录页面时才有效。 让您的登录页面保持不变,黑客会找到您的登录页面。

WPSHide登录

让我们尝试对他们隐藏登录页面。 您可以通过使用 WPS 隐藏登录更改登录页面的 URL 来实现此目的。 该插件并没有真正改变任何东西,它只是拦截页面请求并使 wp-admin 目录和 wp-login.php 页面无法访问。 您需要记住在激活插件期间设置的新登录页面。

更改登录页面 URL 的替代选项包括另外两个插件,Protect Your Admin 和 Rename wp-login.php。

安全证书

虽然,我在保护您的登录页面时提到了 SSL,但 SSL 是您处理敏感信息的任何页面的极其重要和必要的功能。 这几乎包括许多网站上的每个页面,好像所有网页上都有博客订阅表格。

如果您或您的访客/客户曾与您分享敏感的私人信息,如地址、信用卡详细信息,甚至与您分享他们的电子邮件 ID。 那么你应该保护他们的信息。

SSL 是一个额外的保护层(安全套接字层),它将 http 转换为 https,并在此过程中使所有共享的信息更加安全。

这就是我处理的编辑帖子页面的方式,因为 Colorlib 使用 SSL 看起来。 注意到 URL 栏上的绿色“https:”了吗?

HTTPS

SSL 基本上是将您的信息打乱为无法像我们处理纯文本那样读取的内容。 因此,当信息在您的服务器和任何浏览器之间传输时,任何能够访问它的人都无法理解它。 有一个私钥和一个公钥。 一旦 SSL 使信息流动变得有趣和难以辨认,我们需要在浏览器端再次理解它。 这就是私钥的用武之地,使事情再次可读。 游戏中的机制与数学锁和钥匙非常相似。

SiteGround,我们推荐的共享主机免费提供 SSL 保护。 您还可以从证书颁发机构购买 SSL 证书。 如果您运行 Wordfence 等安全插件,则可以启用 SSL。

我建议使用站点范围的 SSL,包括 ColorLib 在内的许多 WordPress 站点都使用站点范围的 SSL。 如果不是站点范围的 SSL,您绝对应该至少为登录页面强制使用 SSL。

像 Chrome 这样的浏览器甚至会阻止对 SSL 证书错误/过期的网站的访问。

过期安全证书

您可能需要弄清楚您的 CDN 是否可以轻松地通过 SSL 提供内容,有时广告网络在通过 SSL 提供服务时可能会出现问题。 在站点范围内添加 SSL 可能会带来很大的困难,您应该阅读这篇关于启用站点范围 SSL 的困难的非常有见地的文章。

如果您在网站上使用 SSL,Google 会让您的搜索排名略有提升 (1%)。 这一事实本身就应该保证使用 SSL。 为什么 ? 谷歌和大多数网络开发专业人士一样理解确保读者/访问者数据安全的重要性。

SSL 也可以通过 Wordfence 安全插件在您的登录屏幕上强制执行。 预计安全证书将在 2015 年的某个时候免费提供。

在 WordPress.org 上阅读有关 SSL 管理的更多信息。

#4. 保护您的 WP 核心、数据库和使用正确的文件权限

在许多这些安全措施中,我们将修改您的 WP 核心,您需要熟悉如何使用和 FTP 客户端进行更改和上传。 而且由于这些安全提示中的大多数都涉及更改或修改您的 WP 核心,因此它可能只会破坏您的网站。 在继续之前备份您的 WordPress 核心及其所有内容,通过备份可以轻松消除错误。

WordPress 安全密钥

WordPress 使用 cookie 来识别和验证登录用户以从 WP dash 进行评论和进行更改。

这些 cookie 包含登录信息和您的身份验证详细信息。 密码被散列,这意味着应用了数学公式使其难以辨认,并且如果不再次应用数学使其可读就无法读取。

我们可以使用 WP 安全密钥为这个 cookie 添加额外的保护层。 这些是一组随机变量,可提高存储在用户 cookie 上的信息的安全性。 有 4 个键,分别是 AUTH_KEY、SECURE_AUTH_KEY、LOGGED_IN_KEY 和 NONCE_KEY。

如果有人可以重建身份验证 cookie,那么 WordPress 或 12345 等未加密的密码很容易被破解。 但是使用 WP 安全密钥加密使这变得更加困难。

您如何添加 WP 安全密钥?

  1. 打开 wp-config.php 文件。
  2. 搜索“身份验证唯一键和盐”。
  3. 使用在线自动密钥生成器工具。
  4. 从在线工具复制密钥并替换现有的密钥集,在 wp-config.php 中覆盖它。
  5. 保存。
  6. 您可以每个月左右重复相同的过程。

请记住,每次更改安全密钥时,用户都将被注销,他们将不得不再次登录他们的帐户。

iThemes Security 提供了从 WP dash 执行此操作所需的工具。 他们还会每个月提醒您更改安全密钥。

密码保护您的 WP 目录

这可以从您的 cPanel 或任何网络主机的仪表板完成。 在 cPanel 中,打开安全 > 密码保护目录。 您将找到站点上所有文件夹的列表。 从一个重要的文件夹开始,比如 wp-admin。

您将找到一个对话框,要求通过提供用户名和密码来创建用户。 现在创建新用户。 此后,如果您需要访问您网站上的 wp-admin 文件夹,则需要输入用户名和密码才能访问该网站。

这为您网站最重要的部分增加了一层额外的基于密码的保护。

使用安全 FTP (SFTP)

当您添加要合并的新更改时,需要文件传输系统将您网站的数据传送到您的网络主机。 使用普通的文件传输协议或 FTP,有人可能会拦截并发现漏洞来利用您的网站的机会增加。

您需要合适的客户端才能使用 SFTP 连接上传新文件和修改后的代码。 您可以使用 FileZilla 来帮助您入门。

此外,您还需要有关您的网络托管帐户的一些特定详细信息。 通常,每个主机都会提供特定信息来帮助您设置安全的文件传输协议。 您通常会拥有一个由主机生成的 SSH 密钥,必须将此密钥添加到您的 SFTP 客户端(如 FileZilla),并且从那里设置文件传输的安全连接很简单。

使用正确的文件权限

访问您的文件需要有正确的权限。 可以从 Web 服务器在您的 WordPress 上进行编写。 当您与多个网站共享该环境时,问题就出现了,这些网站的网站也可能位于共享服务器上。

通常,WordPress 文件夹和 WordPress 文件在不同的主机上具有特定的权限。 通过 shell 访问,您可以运行以下两个命令,以确保您的 WordPress 文件夹和文件安全并且只有正确的用户才能访问。

 find /path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;
find /path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;

Protecting WordPress using .htaccess

While editing .htaccess file, please add code before # BEGIN WordPress or after # END WordPress. Any code added within these two hashtags can be overwritten by WordPress and we wouldn't want any new security protocols we've added to disappear. So when you add any code to the .htaccess file, please remember to stay out of the section starting with # BEGIN and ending with # END.

The wp-includes contains files that aren't necessary for any user, but it contains files necessary for running WP. We can protect it by preventing access and adding some text to the .htaccess file. Keeping in mind to stay out of the code within hashtags.

Add this little snippet of code to the .htaccess file.

 # Block the include-only files.
<IfModule mod_rewrite.c>
重写引擎开启
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>


# BEGIN WordPress <-- Always add code outside, before this line in your .htaccess file -->

This wouldn't work for wp multi sites. Remove this line – RewriteRule ^wp-includes/[^/]+\.php$ – [F,L], this will offer less security but it will work for multisite.

Your wp-config.php file contains sensitive information about your connection details and the WP security keys we previously discussed. Modifying your .htaccess will protect your website against hackers, spammers and significantly beef up your website's protection.

This process involves moving your .htaccess file out of your WP install and to a location accessible only with an FTP client or cPanel or from the web server.

Add this to the top your .htaccess file.

 <files wp-config.php>
order allow,deny
deny from all
</files>

This will essentially prevent access to anyone who surfs for the wp-config.php file and only access from the web server space will be permitted.

All this added protection is great, but remember all of this was accomplished from your .htaccess file. That means if someone can access your .htaccess file, all your added security isn't helpful.

Add the following to the top of your. htaccess file. It will prevent access to your .htaccess file.

 <files .htaccess>
order allow,deny
deny from all
</files>

You can add more modifications to .htaccess file, if you'd like.

You could, restrict files, by file types and extension. This piece of code will not only restrict access to your wp-config but it will prevent access to ini.php and your log files.

 <FilesMatch "^(wp-config\.php|php\.ini|php5\.ini|install\.php|php\.info|readme\.html|bb-config\.php|\.htaccess|\.htpasswd|readme\.txt|timthumb\.php|error_log|error\.log|PHP_errors\.log|\.svn)">
拒绝所有人
</FilesMatch>
#Code courtesy - WPWhiteSecurity

Next we can disallow browsing of the WP directory contents.

 Options All -Indexes

Apart from that we can add a few other changes to improve security by making changes to the .htaccess file in WordPress.

  1. Block IPs and IP ranges. You can limit access to your login pages by IP range, I would have covered it in the Login section but login page protection plugins already block IP ranges which try to access login pages through brute forcing techniques.
  2. Keep bad bots at bay.
  3. Prevent hot linking.

This is quite extensive and we are starting to get off point. If you'd like to do the other stuff as well, for which I haven't presented the code here, you can use this piece of custom code from WP White Security.

Please remember to keep track of which files you have moved to root directory of WP. You'll need to be aware of where each file/folder is, so that you can not only edit them but also be sure not create multiple copies in different locations which again jeopardizes the point of the entire exercise.

Turn Off PHP Error Reporting & PHP execution

PHP executions need to be kept to a minimum. 为什么 ? A good example of a hack would be the Mailpoet Newsletter hack which could be used to add files which are run from the wp-content/uploads folder.

To prevent such vulnerabilities, we can deny PHP any room to run on WordPress. Add this code snippet to the .htaccess file.

https://gist.github.com/puikinsh/c8bf229921dbf6af4625

This code detects PHP files and denies access. You need to add it to the following wp folders.

  • wp-includes
  • wp-content/uploads
  • wp-content

You'll need to create a .htaccess in the other folders. By default, it may be available in the root directory but to prevent PHP execution the .htaccess file needs to be created and added to the aforementioned folders. The three folder mentioned are primarily folders where content is uploaded and is particularly vulnerable to a PHP script that can cause a lot of problems.

PHP error reporting is a signal to all hackers who are looking for vulnerabilities that there is something not working on your website.

Adding these two lines of code to your wp-config.php file should resolve the problem.

 error_reporting(0);
@ini_set('display_errors', 0);

Although having read multiple threads and discussions about PHP error reporting, it may not work. In which case your best option is to contact your web host and ask for instructions on how you can accomplish the same.

Change the wp_ table Prefix

All WordPress tables begin with a wp_ prefix. Change this wp table prefix across your entire website and make it more difficult for a hacker to infiltrate your website.

In your wp-config.php, you'll find this line of code.

 $table_prefix  = 'wp_';

Change that to something completely random,

 $table_prefix  = 'jrbf_';

Now every table like, wp_posts, wp_users, etc will change to jrbf_posts, jrbf_users and so on.

Almost all security plugins do this for you and furthermore changing wp table prefixes may be time consuming. You can do this with PHPMyAdmin or other database managers, but I'd much rather use a security plugin like iThemes Security to accomplish it.

Similarly, you can take it a step further by changing the name of your WordPress database. This way, not only do you change the prefix but you will also be changing the names of what follows the prefix. This will make it nearly impossible for hackers to randomly guess your database name and you can not access what you can not find.

Disable XMLRPC

Generally, DDOS attacks target all web pages of WordPress websites indiscriminately. But this particular part of WordPress can become a target for DDOS attacks. I'll explain, XMLPRC is used for pingbacks and trackbacks. But it has, in the past been exploited to launch DDOS attacks on websites.

You can use a plugin like Disable XMLPRC. But you will not need it, if you use security plugins or a login protection plugin. They generally provide protection against this particular vulnerability.

#5. Security Plugin – Wordfence/iThemes Security/ Sucuri

An effective security plugin is absolutely essential in ensuring your WordPress site's security, for the non-tech savvy at least. Security plugins perform the various functions many of which have already been discussed here, all of these added security measures add up to build a fortress around your website and its contents.

文字围栏

Wordfence performs a number of functions crucial to site security on a WordPress powered site,

  • Real time blocking of attackers, blocking entire malicious networks and certain countries.
  • Limit crawlers, bots and scrapers.
  • Block users who trespass on your security rules.
  • Two factor authentication via SMS, greatly improves security on login pages.
  • Strong password enforcement for all users (non-admins).
  • Protect against brute force attacks.
  • Scan site for malicious scripts, back doors and phishing URLs on your site masquerading as comments on your website.
  • Compare plugin/theme core files with files of the same listed on WordPress.org's directory.
  • Run heuristics for Trojans, suspicious scripts and other potentially security endangering activities on your site.
  • Firewall to block fake Google bots sent by hackers to scan for vulnerabilities.
  • Real time awareness and live content access monitoring to enhance situational awareness.
  • Geo-located down to a city level the threats to your website to find out the point of origin of threats to site security.
  • Monitor DNS for unauthorized access.
  • Keeps an eye on disk space consumption to prevent and react to Denial of Service attacks.
  • It is multisite compatible.
  • Falcon caching system to reduce server load.
  • Full IPv6 compatibility for WHOIS lookup, location and security functions.

Some features are restricted to the premium version of the plugin. The premium version of the plugin is priced at $3.25/mo.

WordFencePremiumFeatures

That being said, the free version of this plugin is a very capable site defender for your WordPress website. And you shouldn't be too apprehensive about the free version of the plugin, given that it has a rating of 4.9 on a five point scale and has been downloaded nearly a million times.

Security plugins require configuring and this can be an elaborate and long process. With Wordfence, you can to an extent at least customize all your security settings from Options under WordFence on your WordPress site menu.

Other options you can consider, if you still haven't settled on a security plugin for your WordPress site.

  • Bullet Proof Security
  • iThemes Security (Previously known as Better WP Security)
  • Sucuri Security & Sucuri Cloudproxy For Firewall
  • 多合一 WP 安全和防火墙

I do not think Wordfence is the best overall security system out there. What I mean by this is, there are better security solution providers/ managed hosting services that offer better overall security solutions for WordPress sites. But when it comes to simple security plugins that enforce good protection and security protocols, Wordfence is certainly one of the best. The not too distant second position would probably go to iThemes Security.

In the coming weeks, I'll probably write a post about all the security solutions available for WordPress, so stay tuned to Colorlib But right now, we'll stick to Wordfence as the recommended security plugin.

#6. 更新 ! 更新! 更新! And not just your WordPress

There are hundreds of WordPress vulnerabilities in the previous/non-current versions of WordPress.

Websites tend to be slow, when it comes to updating their WordPress platform. For example, in February of 2015 only 7.4% of websites had updated to WordPress 4.1, despite the fact that it had been released more than two months prior to February.

Whenever a software vulnerability is discovered, typically the vulnerability is reported to the software vendor. The software vendor then modifies the software and adds some added protection or merely deletes some unnecessary code. This is released as a software update or a patch. This is the best possible case, but if someone with less than noble intentions discovers a vulnerability in any web based or non web based software, then he/she is likely to exploit it to the fullest.

July 2014, Mail Poet Newsletters previously known as Wysija Newsletters, a plugin which had been downloaded over 2 million times was compromised as a result of which 50,000 websites were made vulnerable to attack. An automated attack where in, an injected PHP backdoor would allow for eventual control of the site by the hacker.

December 2014, 100,000+ websites were compromised by the Revolution Slider plugin which was targeted by the SoakSoak.ru campaign. This particular malware injected JavaScript into the wp template-loader.php file. A thousand themes were affected as they had been sold with this plugin as an add-on via Envato and other WordPress marketplaces.

The XSS vulnerability in WP Super Cache, a plugin I included in my round up for the Top 6 Caching Plugins. The list of vulnerabilities in top notch free plugins is quite concerning. But there are a number of steps you can take to decrease your chances of using a vulnerable piece of code theme or plugin on your website.

You should know that most plugins with vulnerabilities have been patched. But you need to stay fully updated at all times. Updating your site to the latest versions is an extremely important part of your site defense strategy. All the previously mentioned security measures are useless, unless you update as and when the updates for WordPress and other third party software are available.

Enable Automatic Updates For Your WordPress, Plugins & Themes.

You do not want your website's update page looking like this page on a test site.

WpUpdates
Well, at least it has the latest WordPress version.

WordPress introduced automatic background updates with the release of WordPress version 3.7.

You can enable auto updates for WP, by making a change to the WP_AUTO_UPDATE_CORE constant. This change needs to be made in the wp-config.php file.

 define( 'WP_AUTO_UPDATE_CORE', true );

This will ensure that all updates major or minor are updated as soon as they are made available.

Change the update core constant to “false” and you will disable all updates. Changing it to “minor” will enable auto updates for minor changes, normally includes security patches.

You can update plugins and themes in the same manner, by editing the auto_update$type filter.

For automatic plugin updates,

 add_filter( 'auto_update_plugin', '__return_true' );

And to enable automatic theme updates,

add_filter( 'auto_update_theme', '__return_true' );

如果您不喜欢摆弄代码,可以使用插件来帮助自己。 您还有另一种选择,即插件形式,以确保您的 WP 和网站上所有主题/插件的顺利更新。 高级自动更新允许您单独启用主要更新和次要/安全更新。 并且该插件还提供了主题和插件的自动更新解决方案。

对于多站点更新解决方案,如果您需要帮助处理 WordPress 插件和主题的更新,您可以试用 Easy Updates Manager。 WP Updates 还提供高级服务,为高级插件和主题提供自动更新解决方案。

使用 ManageWP 之类的插件或 WPEngine 之类的托管 WP 主机也将有助于解决更新 WordPress 和您在网站上使用的第三方软件的问题。

当事情开始出现问题时,更新 WordPress 核心会自动成为问题。 这可能是因为自定义代码在更新过程中被删除或第三方软件(插件和主题)出现的兼容性问题。 这是可能让您暂停的一个原因,也许启用次要更新可能是一个更好的主意。

如果您的 WordPress 自动更新有问题,那么我建议您尝试使用后台更新测试器。 该插件会检查并解释任何兼容性问题。

在更新之前始终运行备份。 总是! 这是为了保护您的网站免受严重错误的影响,在这种情况下,您最终会将您的网站弄得一团糟。 一个值得遵循的好习惯,以防止自动更新因插件、主题和 WP 核心上的有时自定义代码的兼容性问题而造成严重破坏。

#7. 关于 WP Security 的更多信息 - 防火墙、审计日志和恶意软件扫描程序

我还没有讨论过 WordPress 的防火墙。 一个好的防火墙将完成很多工作并减轻对您网站的最常见的攻击形式。

  • 减轻 DDoS 攻击的影响。
  • 蛮力攻击停止在他们的轨道上。
  • 防止软件漏洞。
  • 阻止代码注入攻击,如 SQL 或 XSS 攻击。
  • 修补和防御零日漏洞。

只是为了说明,这里是 Sucuri 防火墙为 WordPress 网站所做的快照。

Sucuri_ CloudProxy 网站防火墙

防火墙不是 Sucuri 用来描述其保护系统的术语,他们将其称为 CloudProxy,它是 Web 应用程序防火墙和入侵检测系统的组合。 过滤掉所有恶意流量并监控异常活动。

防火墙传统上是为了监控连接而开发的,但是 Sucuri 的 CloudProxy 不仅可以阻止坏人,而且还可以针对漏洞创建虚拟补丁。 一旦来自访客的请求通过防火墙,它就会到达入侵防御和检测系统,在那里系统会筛选可能的攻击模式的请求。

我认为保护您免受漏洞侵害的虚拟修补功能对于任何定制过多的网站来说都是一种高效且无价的资产(意味着当出现兼容性问题时,很多网站可能会出错)。 最好在暂存区将更新应用到 WordPress 并检查您的网站是否运行顺利。 如果是这样,您可以使用网站的更新版本。 但在此期间,您的网站确实处于危险之中。 只有通过更新修复漏洞才能防止零日攻击,但是在使用 Sucuri CloudProxy 时并非必须如此。

除此之外,他们还维护您网站上所有活动的日志,并寻找可能的恶作剧迹象。

将防火墙视为最后的措施,它是黑客需要突破以访问您网站的敏感内容的墙。 良好的实践在很大程度上旨在使您不需要过多地使用防火墙。

恶意软件扫描软件或诸如 Sucuri SiteCheck 之类的网站可以扫描您的网站以查找漏洞和可能的安全漏洞。 安全插件还具有恶意软件扫描软件,可跟踪任何看起来异常且是潜在安全问题来源的更改。

我之前也提到过 WP 安全审核日志,同时指出它是跟踪您网站上所有更改的必要插件。 我想重申这一点,它是一个非常有用的插件,不仅可以跟踪受主题和插件影响的更改,还可以跟踪其他用户的操作。 使用 WP Security Audit Log 或运行其他一些数据记录插件来跟踪所有更改非常重要。

日志记录也是 Sucuri 保护系统的一个关键功能。 尽管他们为确保安全做出了过分热心的尝试,但有时还是会发生不好的事情并且网站被黑客入侵。 当这种情况发生时,他们的日志系统对于帮助挖掘网站摆脱困境非常有用。

防火墙、恶意软件扫描程序和审计日志对于应对无法预测的威胁和零日漏洞利用非常方便。 它们不能替代良好的 WordPress 安全实践。

#8. 隐藏您的 WordPress 版本 – 有必要吗?

我在一些网站上读到,隐藏您的 WordPress 版本会增加您对恶意黑客的安全性。 问题是,有一种假设是,对与特定 WordPress 相关的漏洞的了解,使有人更有可能利用它们。 这不一定是真的。 通常,从网站窃取信息的人会使用自动化工具来扫描网站以查找已知漏洞。 如果您的 WordPress 版本易受攻击,那么他们就会知道。 这不像黑客一次检查一个站点并按 WordPress 版本对其进行排序。

如前所述,请尽快更新您的 WordPress、主题和插件。 黑客不会区分显示 WordPress 版本的网站和不显示 WordPress 版本的网站。

万一黑客手动访问每个网站并检查 WordPress 版本,然后尝试查找漏洞,您可能会发现隐藏 WordPress 版本很有成效。

使用删除版本插件删除您的 WordPress 版本。 如果这对您不起作用,那么您需要进行一些小的修改,这篇博文应该会对您有所帮助。

#9. 备份 – 网站安全的最后一道防线

尽管您采取了所有安全措施,但您应该始终为 WordPress 网站遭到破坏的可能性做好准备。 如果发生这种情况,您需要介入并解决问题。 现在有多种方法可以完成站点恢复。 假设安全漏洞或漏洞已经修复,一键恢复的备份对于受损网站来说是一种简单的修复。

自动备份是每个 WordPress 网站安全库中必不可少的一部分。 将安全插件视为您的剑,将备份视为您的盾牌。 如果你的进攻失败了,你的盾牌在这种情况下备份,成为你的最后一道防线。

请记住,我假设只有您的 WordPress 受到威胁,而不是您的服务器,这是一个完全不同的蠕虫袋。 但大多数托管服务提供商都拥有强大的安全团队,不断保护他们的服务器免受恶意元素的侵害,尤其是在全球攻击期间。 如果您有兴趣,我在几周前写了一篇关于共享托管服务的不同提供商的帖子。

备份 - 如果您决定想要一个免费插件而无需为备份服务支付一毛钱,那么我想说您可以从 Updraft Plus 开始,它是一个免费增值插件。

上升气流

使用此插件,您可以备份网站副本并将其保存在许多不同服务提供的存储中。 它包括 Google Drive、Amazon S3、Dropbox、Rackspace Cloud、FTP 和 SFTP 以及电子邮件。 您还应该注意,免费插件只允许在任何一个位置进行备份。 如果您希望利用该插件将您的网站保存在多个位置,则您需要一个高级插件。

这个插件像大多数 WordPress 备份的备份提供商一样,保存所有内容,包括您的内容、主题和插件设置,它还可以运行与您的正常备份分开的 WordPress 数据库备份。

如果您想使用高级 WordPress 备份服务,我建议您查看 BackUp Buddy、VaultPress 或 BlogVault(我过去曾与他们合作过,他们的服务很棒)。

保留一份以上的网站副本,并始终在不依赖互联网连接的物理驱动器上保留一份。 即使从非安全的角度来看,备份也是一个好主意。 当您尝试主题和插件时,当您更新主题、插件或 WordPress 时,总是存在出现兼容性问题并破坏您网站的可能性。

根据我在自动备份方面的经验,您需要以与不断添加新内容和不断制作备份副本的频率一致的方式不断删除备份副本。

谈到我的 PC,我总是更喜欢提供增量/差异备份的备份解决方案,而不是完整备份,但您也注意到,使用前者进行恢复需要更长的时间。 这同样适用于 WordPress 备份系统。 虽然,除非您的备份提供商对数据存储限制有严格限制而收取额外费用,否则您不必担心。

结论

我忍不住了,哈利波特系列中的这句话似乎很贴切。

“时刻保持警惕!” – 疯眼汉穆迪

如果您想知道,穆迪是该系列中的黑巫师捕手。

正如我之前已经提到的那样,网络上没有完全证明安全性这样的东西。 您可以采取多种安全措施,但您的网站仍然会被黑客入侵。 但是,确保您的网站在 SSL 上运行、您的登录页面得到强化、您的密码和用户名非常陌生、您的网站完全更新并抵御已知威胁并每天进行全面备份,这大大提高了对您有利的几率.

如果您想要一个完整的 hack/exploit free WordPress,遵循上述所有安全措施将确保您的网站具有严密的安全性。 但即便如此,您也无法防范零日漏洞攻击或一心想破坏您网站的聪明黑客,尽管这是极不可能发生的事件。

这么想吧。 如果我的网站被黑客入侵,我会损失多少业务和收入? 我会让我的客户信息处于危险之中吗? 这会让我承担诉讼责任吗? 当您发现网站被黑的成本相当高时,我建议您使用托管的 WordPress 托管服务或以 Sucuri 安全服务形式提供的真正大型网络保镖。

您的网站不一定需要流行才能成为目标。 如果它不断成为黑客和攻击的受害者,它永远不会成为高流量网站。

正如我之前所说的关于托管。 如果您相当确定自己有能力创建一个能够支付最佳托管/安全服务费用的创收网站,那么请选择最好的。 如果您能够负担得起最好的网络托管/安全服务,那么从长远来看,这将是值得的,假设您不是专业的网络开发人员。

如果您负担不起最佳管理的虚拟主机或一流的安全性,请采取上述安全措施。 很有可能,您的网站将是安全的。

如果您对 WordPress 安全有一些额外的了解,或者对如何保护您的 WordPress 网站有不同的想法,我很乐意在下面的评论中听到您的想法。 干杯