Block bad bots in Nginx

It’s simple to drop or block badbots like MJ12bot, AhrefsBot in Nginx without using Modsecurity. Step 1.) Create a badbot.conf in your Nginx directory. /etc/nginx/conf.d/badbot.conf Step 2.) Edit /etc/nginx/conf.d/badbot.conf and add the following content(modify highlighted part if you want to add or remove bots) map $http_user_agent $bad_bot { default 0; ~*^Lynx 0; # Let Lynx […]

Read More

WordPress托管最佳实践 – 安全

安全 该页面的目标是通知管理WordPress站点的用户关于一般安全最佳实践的环境级别项目(如文件权限)以及应用程序级别项目(如设置适当的用户角色),以便他们拥有比在没有额外配置的情况下设置WordPress更安全的基础。 WordPress安全性最重要的事情是保持WordPress本身以及所有安装的插件和主题的最新状态。确保您正在使用主动接收更新的主题和插件也很重要。 WordPress非常致力于为WordPress网站管理员及其用户提供安全的体验。有关WordPress官方对安全的立场以及关于WordPress安全总体目标的一般性讨论的更多信息,请参见WordPress.org关于WordPress本身的章节。 本指南的以下部分将提供有关如何保持WordPress安全的说明。本指南从WordPress Codex的Hardening WordPress指南中大量借鉴。虽然WordPress Codex和本指南都涵盖了安全性,但本指南应被视为WordPress安全性的权威最佳实践文档。 托管提供商通常会采取措施默认提供不同程度的安全环境;然而,你的WordPress网站的安全性最终是你的责任。保持任何系统,不仅仅是WordPress,安全是一项持续的工作。良好的安全性需要认真规划和定期维护。 安全主要包括减少风险和恢复计划。大多数安全计划都将重点放在最大限度地降低未经授权访问的风险上,但风险永远无法成功降至零。只要存在一定风险,您必须计划恢复,以便在发生问题时您的网站不会完全丢失,并且您的网站可以快速恢复正常运行。 安全性也超过WordPress。这也是关于确保您的托管环境是安全的,并且您的个人在线实践和行为可以保证您的安全。良好的安全性取决于正在使用的技术和使用该技术的人员。过时或过时的技术可能存在可能使WordPress网站处于危险中的错误或漏洞。人们不良的在线做法也可能会让您的WordPress网站面临风险。务必确保您不仅保持您使用的最新技术和维护的技术,而且确保您在使用互联网和使用WordPress网站或托管服务时的安全性。 禁止多次登录尝试 针对互联网服务的最常见类型攻击之一是强力登录攻击。由于计算机的威力,这次攻击非常简单。在这次攻击中,恶意用户试图猜测你的WordPress网站的管理员用户名和密码。恶意用户不需要知道任何关于您的WordPress网站或您的登录信息来执行此攻击。使用电脑,你可以做出每秒数千次的猜测。恶意软件开发人员也编写了一些可以为您猜测的程序,而这些程序使用了复杂的技巧和技巧,可以使得外观精美的密码非常容易被猜出。 针对这种攻击的最佳保护是使用真正的强密码。使用密码管理器可以让密码更加简单。如果您想了解更多关于密码管理器的信息,[维基百科有一篇关于密码管理器的文章](https://en.wikipedia.org/wiki/Password_manager)。它还有一个[密码管理器列表](https://en.wikipedia.org/wiki/List_of_password_managers),如果你想找到一个使用。 还有一些步骤可以保护WordPress免遭多次登录尝试。这些步骤主要归结为添加一个额外的认证层,并限制登录到WordPress管理仪表板。额外的身份验证和限制登录层可以在服务器级或通过WordPress插件实现。 下面的一些建议是从WordPress Codex的野蛮力量攻击指南中借用的。 关于用户名的说明 一些WordPress安全指南建议为WordPress管理员帐户使用唯一的用户名。尽管用户愿意,WordPress的REST API允许任何人查看您的WordPress网站的许多用户。您可以通过将/ wp-json / wp / v2 / users放置在您的WordPress网站网址的末尾来查看。输出将被格式化以供程序使用,但它应该仍然有点可读性。 服务器级别 密码保护wp-login.php 对于经历了持续和频繁的暴力登录攻击的个别WordPress网站,使用HTTP基本认证向wp-login.php添加第二个密码可以帮助保护网站,同时减少攻击对托管服务器的影响。如果您正在托管自己的WordPress网站,您的托管服务提供商可能会为您提供这样的工具,特别是在他们使用流行的Web面板软件(如cPanel或Plesk)时。这种方法并不适用于拥有大量网站的WordPress主机。其他安全方法(如ModSecurity规则或其他Web应用程序防火墙)可能更适合于更大规模地防止此类攻击。 通过IP地址限制对wp-login.php的访问 如果密码保护wp-login.php不适合单个WordPress网站,则可以限制对Wordpress管理仪表板登录到特定IP地址的访问。这可以完全锁定并阻止未经授权的用户登录到WordPress管理仪表板,但是这种限制可能使访问WordPress管理仪表板不太方便合法用户使用。像使用HTTP基本认证保护wp-login.php的密码一样,这种保护通常不适合托管公司跨整个平台或服务器应用。它通常最好单独应用于WordPress网站,这些网站正在经历持续且频繁的暴力攻击,这些攻击无法通过其他方式轻松解决。 许多互联网服务提供商经常更改其客户的IP地址。如果您的ISP更改您的IP地址,则必须先手动更新授权IP地址的白名单,然后才能登录到WordPress管理仪表板。 ModSecurity和多次登录尝试 ModSecurity是一种流行的Web应用程序防火墙,用于动态阻止恶意请求。 ModSecurity监视访问者为任何网站所做的请求,并阻止符合关于什么是和什么不是合法活动的特定规则的请求。如果您从现有的托管服务提供商处购买了托管服务,您的托管服务提供商可能已经配置了ModSecurity,通常会使用他们自己定制的规则。在这种情况下,请联系您的托管服务提供商以获取更多关于他们如何使用ModSecurity来保护您的WordPress网站的信息。 对于托管公司,ModSecurity是保护服务器的非常强大的工具。但是,它比较复杂,配置起来可能很困难。鉴于ModSecurity监控所有网络流量,对ModSecurity规则的更改很容易导致合法的Web活动被ModSecurity阻止。在对ModSecurity进行任何修改时建议小心。希望使用ModSecurity或更改其配置的主机提供商应进一步研究ModSecurity或咨询ModSecurity专家。 验证码 验证码是帮助防止僵尸程序能够完成网站表单的测试,例如WordPress管理仪表板登录。验证码通常是一种测试,需要一定程度的人力输入才能提交表格。有几个插件可以用来将验证码添加到WordPress表单以及WordPress管理仪表板登录页面。这些工具还可以帮助防止暴力登录攻击,同时为WordPress用户提供更方便的登录体验。 插件 有几个插件可以防止用最少的配置对WordPress进行暴力登录攻击。插件可以在WordPress插件中找到。 您应该在安装之前查看一个插件,以确保它由开发人员主动维护,并与当前版本的WordPress保持同步。您还应该了解插件在安装WordPress时对WordPress所做的更改。 双因素认证 双因素身份验证(也称为2FA或两步身份验证)是一种登录方案,当用户尝试使用启用双因素身份验证的登录服务时,使用单独的第二种身份验证方式。确切的双因素身份验证设置因服务而异,但通常涉及在尝试登录服务时输入代码或与智能手机上的应用程序进行交互。 WordPress默认情况下没有双因素身份验证;不过,有几个插件为自主托管的WordPress网站提供双因素身份验证。 双因素身份验证非常有用,因为如果有人获得您的账户的密码,他们仍然无法在没有第二个身份验证表单的情况下登录。例如,Google对用户帐户进行双因素身份验证。启用双因素身份验证后,Google会要求您输入发送到智能手机的一次性唯一代码,或者在尝试在以前没有使用过的设备或计算机上登录到您的Google帐户后与智能手机进行互动用于登录。如果某人以某种方式获得了您的Google帐户的密码,那么未经授权的用户将无法访问您的帐户,因为未经授权的用户无法提供代码或进行必要的交互,因为这些信息与您的智能手机有关。当有人访问您的Google帐户时,您也会立即收到通知,因为您会收到一次性使用的唯一代码或与智能手机进行登录交互的提示。 双因素身份验证可以使登录服务变得不太方便,因为需要登录第二种身份验证形式(您的智能手机,以Google为例)。但对于关键服务,双因素身份验证极大地提高了您帐户的安全性。 文件系统 您的主机帐户文件系统的设置可能会对WordPress的安全性产生重大影响。设置适当的文件保留和所有权对于确保未经授权的用户无法访问或修改WordPress文件非常重要。 文件权限 这部分的文件权限完全集中在Linux服务器上的文件权限。如果您使用Windows服务器,请咨询您的托管服务提供商或Windows服务器管理员以获取帮助,以设置适当的权限。 Linux文件权限主要由三个组件组成 – 文件或文件夹的所有者拥有的权限,拥有该文件或文件夹的组的权限成员以及其他任何人访问或修改文件和文件夹的权限。这三个权限组件通常使用三个数字按照所有者的权限级别,组的权限级别以及所有人的权限级别来表示。技术上讲有第四个组件,但这超出了我们需要知道的保护WordPress的安全。这里不会讨论。 每个用户,组和其他人有三种访问权限。它们是读访问,写访问和执行访问。读访问让你读取文件或目录的内容。写入权限允许您修改文件或目录。并且执行访问让您像运行程序或脚本一样运行文件。 […]

Read More

WordPress托管最佳实践 – 服务器设置

WordPress将在最低的服务器环境下运行。但是,WordPress不能满足最低系统要求。本节将介绍推荐的服务器环境,使WordPress更有效地运行。 PHP版本 强烈建议使用PHP 7.0或更高版本,但在PHP 5.6上,WordPress会以较慢的性能运行。基于这个原因,建议不要使用小于7的PHP版本。有关详细信息,请参阅WordPress和PHP7。 PHP扩展 WordPress核心使用PHP扩展。如果缺少首选扩展名,WordPress将不得不做更多的工作来完成模块帮助的任务,或者在最糟糕的情况下将删除功能。因此推荐下面列出的PHP扩展。 bcmath – 用于提高数学计算的性能。 卷曲 – 执行远程请求操作。 exif – 与图像中存储的元数据一起使用。 过滤器 – 用于安全过滤用户输入。 fileinfo – 用于检测文件上传的MIME类型 mod_xml – 用于生成XML,例如用于XML站点地图。 mysqli – 连接到MySQL进行数据库交互。 libsodium – 生成随机字节。 openssl – 允许基于SSL的连接到其他主机。 pcre – 提高了代码搜索中模式匹配的性能。 imagick – 为媒体上传提供更好的图像质量。 xml – 用于XML解析,例如来自第三方站点。 为了完整起见,以下是WordPress在某些情况下可能使用的其他PHP模块的列表,或者其他模块不可用的列表。这些都是回退,并且在最佳环境中不需要,但安装它们不会造成伤害。 gd – 如果未安装Imagick,GD图形库将用作图像操作的功能受限回退。 mcrypt – 当libsodium不可用时生成随机字节。 xmlreader – 用于XML解析。 zlib – […]

Read More

WordPress托管最佳实践 – 可靠性

一旦你的网站启动了,你如何保持这种状态?如果发生故障,你该怎么办? 备份 WordPress网站由3个主要组件组成: 代码 WordPress核心,零(0)或更多插件,以及一(1)个或更多主题_(但一次只有一个主题活动) 资产 图像,文档和其他用户上传文件,也可能是插件或主题缓存或配置文件 数据库 包含您的帖子,页面,评论,链接,设置等的MySQL数据库 您的WordPress数据库包含您的博客中的每篇文章,每条评论和每个链接。如果你的数据库被擦除或损坏,你会失去你写的所有东西。这可能发生的原因有很多,并不是所有的东西都可以控制。通过对WordPress数据库和文件的适当备份,您可以快速恢复正常状态。 来源:WordPress备份 定期复制或备份WordPress网站及其数据库是个好主意。这个安全网确保您可以在很短的时间内恢复备份以重新启动和运行。 最好的做法是将备份存储在与您的网站本身不同的位置,以便在服务器出现问题时不会丢失备份。让我们看看管理备份的几个选项。 手动备份 备份网站的最基本方法是手动创建其数据库和文件的副本,然后下载它们。您可以为文件创建.zip存档,为数据库创建.sql导出。它们可以直接下载到本地机器或存储在安全的地方,如在云存储中。创建手动WordPress备份 通过插件备份 有许多WordPress插件会自动为您创建备份,如果您不习惯手动完成备份。再一次,请记住一旦创建它们就从服务器上下载备份。 备份服务 还有一些服务可以为您创建,下载和存储备份文件。这些服务大部分都有成本,但通常可靠且易于使用。 监控 当您的网站工作不正常时,网站监控系统和服务可以通知您。在他们成为重大问题之前,他们通常可以纠正任何小问题,或帮助您这样做。 运行时间监视 正常运行时间监视传统上是通过定期检查站点上的一个或多个URL来确保它们正确响应。虽然这可以手动设置,但有很多服务,其中很多都是免费的,这将为您提供帮助。 性能监控 虽然您的网站可能会“起来”,但您怎么知道它表现良好?性能监控与正常运行时间监控类似,但它也记录了某些可能表明存在问题的指标。定期监控和报告“页面加载时间”和“交易次数”等指标,以帮助您提前解决性能问题。 版本控制 版本控制随着时间的推移管理对网站各个组件的更改。在WordPress网站的情况下,版本控制会保留代码文件的历史记录。除了定期备份之外,版本控制对于您的WordPress网站来说是一个很好的安全网。如果出现问题,您可以回到历史记录并将网站恢复到以前的状态,也许在安装了麻烦的插件之前。 很多WordPress主机提供版本控制,但也有第三方服务和自我托管选项。

Read More

WordPress托管最佳实践 – 性能

本节将介绍如何提高网站性能的基础知识。 高速缓存 WordPress可以处理很多复杂的功能,但这需要付出代价。诸如处理PHP,查询数据库和从外部API收集信息等任务都需要资源和时间。缓存只是简单地保存这些潜在的繁重任务的结果,并重用这些结果,而不是再次计算它们。缓存通常会在一段时间后过期并重新生成以显示最新的内容。当项目从缓存中提供时,它们的响应时间更快,通常来自内存,并从服务器上卸载。 全页面缓存 你的WordPress网站做了很多工作。他们处理PHP,创建外部API请求,从数据库获取内容等。 WordPress所做的所有工作都是输出HTML,CSS和JavaScript以供浏览器加载。生成此浏览器视图需要时间。 整页缓存只是简单地将所产生的HTML,CSS和JavaScript为一个页面生成并保存结果,因此无需为下一个网站访问者重复该工作。 如果您的WordPress网站上的页面没有针对每个访问者进行更改,则最好实践一个完整页面缓存。一些例子可能是关于页面或联系页面。如果您的网站是针对每个用户量身定制的,例如只显示对每个用户感兴趣的新消息的论坛,则整页缓存可能不是最合适的。 如果完整页面缓存正确实现,WordPress将不必进行任何工作,直到缓存过期,此时WordPress会为浏览器生成HTML,CSS和JavaScript – 整个页面缓存将保留这些新结果,直到指定为止时间到期。 在使用缓存时,根据网站的需求或个别页面的需求调整缓存持续时间非常重要。例如,显示最畅销产品的电子商务模板可能需要较短的缓存,因此列表每分钟更新一次。或者,单个产品页面不经常更改,可以有更长的缓存。 即使尚未过期,缓存也可以被清除。如果您发布新内容,应该这样做。如果可能的话,只清除缓存中的新内容效果,而不是清除整个缓存。 对象缓存 在2005年,WordPress引入了内部对象缓存 – 这是一种在PHP内存中自动存储来自数据库的任何数据(不仅仅是对象)的方式,以防止不必要的查询。然而,开箱后,WordPress会在请求结束时放弃所有这些对象,要求它们从头开始重新构建下一页加载。 来源:scalewp.io 这是什么意思?想想一个显示最新帖子的标准WordPress主页。这些帖子中的每一个都有很多与WordPress相关的信息,例如作者,类别,标签,摘录等等。开箱即用WordPress会在每次请求后将这些信息扔掉,然后再次抓取它访问者的网站。 持久对象缓存为WordPress提供了一个存储数据以供重用的地方。像其他形式的缓存一样,这些数据将在给定时间后过期。然而,当这些对象被缓存时,PHP执行时间得到了改善,同时减轻了数据库的负担。 由于对象高速缓存存储完整对象,因此高速缓存的项目可在多个页面之间重复使用,并用于验证流量 – 整页缓存无法提供此功能。 通过缓存插件,瞬态会自然加速,而正常的选项则不是。例如,一个memcached插件可以让WordPress将瞬态值存储在快速内存中而不是数据库中。出于这个原因,应该使用瞬变来存储任何预计到期的数据,或者可能随时过期的数据。瞬变也不应该假设在数据库中,因为它们可能根本不存储在那里。 来源:WordPress Codex 社交媒体小部件就是一个很好的例子。一个插件可能会呼叫第三方API来获取最新的社交内容。而不是在每次加载页面时都会将结果存储在瞬态中。 WordPress将在数据库中存储瞬态信息,这些形式的过期选项。在大多数情况下,从数据库获取最新的社交帖子比向社交媒体API发出调用要快,但对象缓存可以进一步提高这一点。而不是将这些项目存储在数据库中WordPress将使用持久对象缓存,通常是快速内存存储。 持久对象缓存可以加速WordPress,并提供我的许多托管WordPress主机或可以独立设置。您还需要一个插件来将WordPress连接到对象缓存。插件目录中有许多可用的 操作码缓存(又名服务器端缓存) 正如整页缓存部分所述,WordPress将PHP脚本处理为生成HTML,CSS和JavaScript以供浏览器加载的一部分。 Web服务器需要花时间阅读WordPress需要的每个PHP脚本,编译脚本并运行PHP脚本。默认情况下,Web服务器必须为每一次访问每一页都执行此过程。完整页面缓存可以减少Web服务器执行此操作所需的时间,具体取决于所使用的完整页面缓存类型,但仍可能有一些PHP脚本必须在每次访问时都被读取,编译和运行。例如,WordPress缓存插件仍然需要检查是否需要重建缓存。 PHP脚本也必须被读取,编译和运行,才能生成任何动态的,未缓存的内容,如评论或WooCommerce商店的页面,以及用于显示管理仪表板的WordPress。使用操作码缓存可以帮助加快服务器速度,因为它可以运行WordPress,而无需为每一次访问页面读取和编译PHP脚本。 Op-code缓存将每个PHP脚本的编译副本存储在服务器的内存(RAM)中。当Web服务器开始处理WordPress的PHP脚本时,Web服务器会检查操作码缓存中的PHP脚本的缓存副本。如果存在缓存副本,则Web服务器可以直接跳过使用缓存副本运行PHP脚本,而不必再次读取和编译脚本。跳过阅读和编译PHP脚本可以极大地提高Web服务器的资源使用率,并使WordPress能够提供比其他方式更多的请求。 运行代码缓存可以使Web服务器在运行WordPress时使用更少的资源;然而,就像整页缓存一样,操作码缓存可能会导致WordPress的更改,例如安装或移除插件和主题或更新WordPress,从而立即显示。在对构成WordPress的PHP文件进行任何更改后,手动清除操作码缓存会很有用。 PHP PHP(PHP:超文本预处理器)是互联网上流行的编程语言。 PHP将动态内容(如WordPress中的内容)转换为Web浏览器可以读取的HTML,CSS和JavaScript。 WordPress是用PHP编写的。它的所有核心文件和脚本都是PHP脚本,并且服务器必须具有PHP以便WordPress能够运行。 PHP是一种解释型语言。用PHP编写的WordPress和其他程序不必提前编译,然后才能运行。这意味着相同的PHP代码可以运行在任何可以运行PHP的平台上。解释型语言的性能往往比编译语言要慢;然而,在这方面已经做了很多工作来改进PHP。 PHP的配置对WordPress运行的程度以及WordPress是否可以运行都有非常大的影响。例如,许多旧版本的PHP不再与WordPress兼容。另外,正确配置PHP对确保WordPress能够正常运行至关重要。 版本 目前PHP的主要版本是PHP 7.如果可能的话,应该使用PHP 7来运行WordPress。在撰写本文档时,PHP 7是唯一仍在接受主动开发和支持的PHP主要版本。 PHP的制造商最终退出了PHP版本,因为他们继续向PHP添加新功能。有时添加的功能使得新版本的PHP与旧版本显着不同。它是PHP成长为编程语言的一部分。较新版本的PHP也具有性能改进和安全补丁,而旧版本的PHP没有并且可能永远不会收到。 如果可能的话,运行旧版本PHP的服务器应该升级到最新版本的PHP。但是,升级PHP版本时必须格外小心。构建为使用旧版本PHP的旧版网站通常也不易与新版PHP兼容。如果使用的是最新版本的WordPress,则不应该与WordPress存在任何兼容性问题;但是,第三方插件或主题可能与最新版本的PHP不兼容。 如果可能,请始终在非生产环境中测试您的PHP网站。在非生产环境中进行测试可以让您发现任何问题,而不会导致您的网站在用户访问您的网站时不可用或出现错误。 根据托管服务器的配置,升级PHP可能是一个相当耗时的过程,如果在升级后发现问题,升级也往往不能轻易逆转。 如果您对PHP不熟悉或不知道如何升级,请联系您的托管服务提供商。主机提供商通常可以帮助升级到更新版本的PHP。 如果不能立即升级到PHP 7,应尽快升级到PHP 5.6。 PHP […]

Read More