主题
WordPress的安全性是被认真对待但与任何其他系统一样,如果不采取一些基本的安全防范措施,可能会出现潜在的安全问题。本文将介绍一些常见的漏洞形式,以及如何确保WordPress安装的安全。
本文并不是解决您的安全问题的最终快速解决方案。如果您有特定的安全问题或疑虑,您应该与您信任的对计算机安全和WordPress有足够知识的人讨论。
什么是安全?
从根本上讲,安全不是关于完全安全的系统。这样的东西很可能是不切实际的,或者不可能找到和/或维护。安全是减少风险,而不是消除风险。这是关于在合理的范围内使用所有你可以使用的适当控制,让你改善你的整体姿势,减少你成为目标的几率,然后被黑客攻击。
网站主机
通常,当涉及到网站安全时,一个很好的起点是您的托管环境。今天,您可以有很多选择,虽然主机在一定程度上提供了安全性,但重要的是要了解他们的责任在哪里结束,您的责任在哪里开始。这是一篇很好的文章,解释了两者之间的复杂动态网络主机和您网站的安全性.安全服务器保护服务器管理员控制下的资源的私密性、完整性和可用性。
受信任的网络主机可能包括:
- 随时讨论您的安全问题,以及它们的主机提供哪些安全特性和进程。
- 提供所有服务器软件的最新稳定版本。
- 提供可靠的备份和恢复方法。
通过确定需要保护的软件和数据,确定服务器上需要哪种安全性。本指南的其余部分将帮助您做到这一点。
网站应用程序
人们很容易把网络主机的安全责任推卸给他们,但也有大量的安全责任落在网站所有者身上。网络主机通常负责你的网站所在的基础设施,他们不负责你选择安装的应用程序。
要理解这在哪里以及为什么重要,你必须了解网站是如何被黑客攻击的它很少被归因于基础设施,而最常被归因于应用程序本身(即,您负责的环境)。
安全主题
在考虑系统各个方面的安全性时,请记住一些一般的想法:
限制访问
做出明智的选择,减少恶意分子的可能入口。
容器
您的系统应该配置为在系统被破坏的情况下,最大限度地减少可能造成的损害。
准备和知识
保持备份并定期了解WordPress安装的状态。制定一个在灾难发生时备份和恢复安装的计划,可以帮助您在出现问题时更快地恢复在线。
受信任的来源
不要从不可信的来源获取雷竞技插件/主题。把自己限制在WordPress.org知识库或知名公司。尝试从外部获取插件/主题雷竞技可能会导致问题.
您的电脑上的漏洞
确保你使用的电脑没有间谍软件,恶意软件和病毒感染。如果你的电脑上有键盘记录程序,那么WordPress或你的web服务器上再多的安全也无济于事。
经常更新你的操作系统和软件,特别是你的网页浏览器,以保护你免受安全漏洞。如果您浏览的是不受信任的网站,我们也建议您在浏览器中使用像no-script(或禁用javascript/flash/java)这样的工具。
WordPress中的漏洞
像许多现代软件包一样,WordPress会定期更新,以解决可能出现的新的安全问题。改进软件安全性始终是一个持续关注的问题,为此目的也是如此你应该经常更新WordPress的最新版本.旧版本的WordPress没有使用安全更新进行维护。
WordPress更新
主要文章:WordPress更新.
最新版本的WordPress总是可以从WordPress主网站//www.kotonoha369.com上获得。官方版本无法从其他网站获得-从来没有从除//www.kotonoha369.com以外的任何网站下载或安装WordPress。
从3.7版本开始,WordPress就有了自动更新的功能。使用此功能可以简化保持更新的过程。你也可以使用WordPress仪表板来保持更新的信息。阅读仪表板或WordPress开发者博客中的条目,以确定必须采取哪些步骤来更新并保持安全。
如果在WordPress中发现了一个漏洞,并且发布了一个新版本来解决这个问题,那么利用该漏洞所需的信息几乎肯定是公开的。这使得旧版本更容易受到攻击,这也是你应该始终保持WordPress更新的主要原因之一。
如果您是负责多个WordPress安装的管理员,请考虑使用颠覆使管理更容易。
报告安全问题
如果你发现了WordPress的安全漏洞,你可以报告这个问题。看到安全常见问题解答有关如何报告安全问题的信息。
如果你认为你发现了一个错误,报告它。看到提交缺陷如何做到这一点。您可能已经发现了一个漏洞,或一个可能导致漏洞的bug。
Web服务器漏洞
运行WordPress的网络服务器和上面的软件可能存在漏洞。因此,确保你运行的是安全稳定版本的网络服务器和软件,或者确保你使用的是一个值得信任的主机,它会为你处理这些事情。
如果你使用的是共享服务器(除了你自己的网站,还有其他网站),而同一服务器上的一个网站被入侵,即使你遵循了本指南中的所有内容,你的网站也可能被入侵。一定要问你的网络主机他们采取了什么样的安全防范措施。
网络漏洞
两端的网络——WordPress服务器端和客户端网络端——应该是可信的。这意味着更新你的家庭路由器的防火墙规则,并注意你使用的网络。你通过无线或其他未加密的连接发送密码的网吧就是这样不一个可靠的网络。
你的网络主机应该确保他们的网络没有被攻击者破坏,你也应该这样做。网络漏洞可以使密码和其他敏感信息被拦截。
密码
通过良好的安全习惯,可以避免许多潜在的漏洞。强密码是其中一个重要方面。
你设置密码的目的是让别人很难猜到,也让你的密码很难被破解蛮力攻击成功。许多自动密码生成器,可用于创建安全密码。
WordPress还有一个密码强度计,当你在WordPress中修改密码时,它会显示出来。在更改密码时使用此选项,以确保其强度足够。
选择密码时要避免的事情:
- 任何您自己的真实姓名,用户名,公司名称,或您的网站名称的排列。
- 任何语言的字典里的一个词。
- 短密码。
- 任何只包含数字或字母的密码(最好是两者的混合)。
一个强大的密码是必要的,不仅仅是为了保护你的博客内容。获得管理员帐户访问权限的黑客能够安装恶意脚本,从而可能危及您的整个服务器。
除了使用强密码外,启用它也是个好主意两步验证作为额外的安全措施。
FTP
当连接到你的服务器,你应该使用SFTP加密,如果你的网络主机提供它。如果你不确定你的网络主机是否提供SFTP,就问他们。
使用SFTP和FTP是一样的,除了你的密码和其他数据是加密的,因为它在你的电脑和你的网站之间传输。这意味着你的密码永远不会被发送,也不会被攻击者拦截。
文件权限
WordPress的一些整洁的特性来自于允许web服务器可写各种文件。但是,允许对文件进行写访问是潜在的危险,特别是在共享宿主环境中。
最好尽可能锁定您的文件权限,并在需要允许写访问的情况下放松这些限制,或者创建限制较少的特定文件夹,以便进行诸如上传文件之类的操作。
下面是一种可能的许可方案。
所有的文件都应该属于您的用户帐户,并且应该是可写的。任何需要从WordPress写访问的文件都应该可以被web服务器写,如果你的主机设置需要这样做,这可能意味着这些文件需要由web服务器进程使用的用户帐户组拥有。
/
WordPress根目录:所有文件应该只能由你的用户帐户写,除了. htaccess
如果你想让WordPress自动为你生成重写规则。
/ wp-admin /
WordPress管理区域:所有文件应该只能由你的用户帐户写。
/ wp-includes /
WordPress应用程序逻辑的主体:所有文件应该只能由你的用户帐户写。
/ wp-content /
用户提供的内容:旨在由您的用户帐户和web服务器进程写入。
在/ wp-content /
你会发现:
/ / wp-content /主题
主题文件。如果你想使用内置的主题编辑器,所有的文件都需要web服务器进程可写。如果您不想使用内置的主题编辑器,则所有文件只能由您的用户帐户写入。
/ wp-content雷竞技 /插件/
插件文件:所有的文件应该只能由你的用户帐户写。
可能出现的其他目录/ wp-content /
应该被任何插件或主题需要的文档化。权限可能有所不同。
更改文件权限
如果你有shell访问你的服务器,你可以用下面的命令递归地修改文件权限:
目录:
查找/path/to/your/wordpress/install/ -type d -exec chmod 755 {} \;
的文件:
查找/path/to/your/wordpress/install/ -type f -exec chmod 644 {} \;
关于自动更新
当你告诉WordPress执行自动更新时,所有文件操作都是以拥有文件的用户的身份执行的,而不是web服务器的用户。所有的文件都设置为0644,所有的目录都设置为0755,并且只有用户可以写,其他人都可以读,包括web服务器。
数据库安全
如果在同一台服务器上运行多个博客,明智的做法是考虑将它们保存在不同的数据库中,每个数据库由不同的用户管理。这最好在执行初始化时完成WordPress的安装.这是一种遏制策略:如果入侵者成功破解了一个WordPress安装,这将使更改其他博客变得更加困难。
如果您自己管理MySQL,请确保您理解了MySQL配置,并禁用了不需要的特性(例如接受远程TCP连接)。看到安全MySQL数据库设计这是一个很好的介绍。
限制数据库用户权限
对于正常的WordPress操作,如发布博客、上传媒体文件、发表评论、创建新的WordPress用户、安装WordPress插件等,MySQL数据库用户只需要对MySQL数据库具有数据读写权限;雷竞技选择,插入,更新和删除。
因此,可以撤销任何其他数据库结构和管理特权,如DROP、ALTER和GRANT。通过取消这些特权,您还可以改进遏制政策。
注意:一些插件、雷竞技主题和主要的WordPress更新可能需要对数据库结构进行更改,比如添加新表或更改模式。在这种情况下,在安装插件或更新软件之前,您需要临时允许数据库用户获得所需的特权。
警告:当数据库模式发生更改时,不具有这些特权的更新尝试可能会导致问题。因此,它是不建议撤销这些特权。如果出于安全原因,您确实觉得有必要这样做,那么请首先确保您有一个可靠的备份计划,定期进行完整的数据库备份,您已经测试过这些备份是有效的,并且可以很容易地恢复。数据库升级失败的解决方法通常是将数据库恢复到旧版本,授予适当的权限,然后让WordPress再次尝试数据库更新。恢复数据库将使其返回到旧版本,WordPress管理屏幕将检测到旧版本,并允许您在其上运行必要的SQL命令。大多数WordPress升级不会改变模式,但有些会。只有主要的点升级(例如3.7到3.8)才会改变模式。小的升级(3.8到3.8.1)通常不会。尽管如此,保持定期备份.
确保wp-admin
添加服务器端密码保护(例如BasicAuth)/ wp-admin /
在您的博客管理区域、登录屏幕和您的文件周围添加第二层保护。这迫使攻击者或机器人攻击第二层保护,而不是您的实际管理文件。许多WordPress攻击是由恶意软件机器人自动执行的。
只需将wp-admin /
目录可能还会破坏一些WordPress功能,例如AJAX处理程序atwp-admin / admin-ajax.php
.看到资源部分的更多文档,如何密码保护您的wp-admin /
正确的目录。
对WordPress博客最常见的攻击通常分为两类。
- 向服务器发送专门制作的HTTP请求,其中包含针对特定漏洞的特定利用有效负载。这些包括旧的/过时的插件和软件。雷竞技
- 试图通过“暴力破解”密码猜测进入你的博客。
这种“第二层”密码保护的最终实现是需要一个HTTPS SSL加密连接进行管理,这样所有通信和敏感数据都是加密的。看到SSL管理.
确保wp-includes
当脚本通常不打算被任何用户访问时,可以添加第二层保护。一种方法是在.htaccess文件中使用mod_rewrite阻止这些脚本。注意:要确保下面的代码不被WordPress覆盖,请将其放在#开始WordPress
而且#结束WordPress
标记在。htaccess文件中。WordPress可以覆盖这些标签之间的任何内容。
#阻止只包含文件。RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/lang /.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L] # BEGIN WordPress
注意这在Multisite上不能很好地工作,因为RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
将阻止ms-files.php文件生成图像。省略这一行将允许代码工作,但提供了较低的安全性。
确保wp-config.php
你可以移动wp-config.php
文件到WordPress安装上面的目录。这意味着对于一个安装在你的网站空间根目录下的网站,你可以进行存储wp-config.php
在web-root文件夹外。
注意:有些人断言移动wp-config.php带来的安全好处最小而且,如果操作不当,实际上可能会引入严重的漏洞。其他人不同意.
请注意,wp-config.php
可以存储在WordPress(其中wp-includes驻留)安装目录之上的一个目录层。另外,确保只有你(和web服务器)可以读取这个文件(这通常意味着400或440的权限)。
如果你使用一个带有。htaccess的服务器,你可以把这个放在那个文件中(在最上面)来拒绝任何浏览它的人的访问:
order allow,deny deny from all .php
禁用文件编辑
WordPress仪表板默认允许管理员编辑PHP文件,如插件和主题文件。如果能够登录,这通常是攻击者使用的第一个工具,因为它允许代码执行。WordPress有一个常量来禁用从仪表板进行编辑。将这一行放在wp-config.php中相当于删除所有用户的' edit_themes ', ' edit_plugins '和' edit_files '功能:雷竞技
定义(“DISALLOW_FILE_EDIT”,真正的);
这不会阻止攻击者向您的站点上传恶意文件,但可能会阻止一些攻击。
雷竞技
首先,确保你的插件总是更新。雷竞技此外,如果你不使用特定的插件,从系统中删除它。
防火墙
有很多插件和服务可以作为你网站雷竞技的防火墙。其中一些通过修改你的。htaccess来工作
在它被WordPress处理之前,在Apache级别限制一些访问。一个很好的例子是iThemes安全或All in One WP Security.有些防火墙插件是WordPr雷竞技ess级别的,比如WordFence而且盾,并尝试在WordPress加载时过滤攻击,但在它被完全处理之前。
除了插件,你还可雷竞技以在你的web服务器上安装一个WAF(网络防火墙),在内容被WordPress处理之前对其进行过滤。最流行的开源WAF是ModSecurity。
一个网站防火墙也可以添加作为中介之间的流量从互联网和您的托管服务器。这些服务都具有反向代理的功能,它们接受初始请求并将它们重新路由到您的服务器,去除所有恶意请求。他们通过修改你的DNS记录来实现这一点,通过A记录或完全DNS交换,允许所有的流量首先通过新的网络。这将导致所有流量在到达您的站点之前被防火墙过滤。一些公司提供这样的服务,比如CloudFlare,Sucuri而且Incapsula.
此外,这些第三方服务提供商默认充当内容分发网络(cdn),引入了性能优化和全球覆盖。
雷竞技需要写访问的插件
如果一个插件想要对你的WordPress文件和目录进行写访问,请阅读代码以确保它是合法的,或者与你信任的人进行检查。可以检查的地方是支持论坛而且IRC频道.
代码执行插件雷竞技
正如我们所说,加固WordPress的部分目标是在成功攻击时包含所造成的损害。雷竞技允许从数据库条目执行任意PHP或其他代码的插件,在成功攻击的情况下,有效地放大了破坏的可能性。
避免使用这种插件的一种方法是使用自定义页面模板调用函数。这提供的部分安全性只有在您禁止在WordPress内编辑文件.
通过晦涩实现安全性
通过晦涩实现安全性通常是不合理的主要策略。然而,在WordPress中有一些模糊信息的区域可能帮助处理安全问题:
- 重命名管理帐户:在创建管理帐户时,避免容易猜测的术语,如
管理
或网站管理员
作为用户名,因为它们通常首先受到攻击。在现有的WordPress安装中,您可以在MySQL命令行客户端中使用如下命令重命名现有的帐户SET user_login = 'newuser' WHERE user_login = 'admin';
,或者使用MySQL前端phpMyAdmin. - 修改table_prefix:许多发布的特定于wordpress的sql注入攻击都假定table_prefix为
wp_
,默认值。改变这一点至少可以阻止一些SQL注入攻击。
数据备份
定期备份数据,包括MySQL数据库。见正文:备份数据库.
数据完整性对于可信备份至关重要。对备份进行加密,为每个备份文件保留一个独立的MD5哈希记录,和/或将备份放在只读媒体上,可以增加数据未被篡改的信心。
一个可靠的备份策略可以包括在一个可信的位置保存一组定时的整个WordPress安装的快照(包括WordPress核心文件和数据库)。想象一个每周做快照的网站。这种策略意味着,如果一个网站在5月1日被入侵,但直到5月12日才被检测到,网站所有者将有入侵前备份,可以帮助重建该网站,甚至可能有入侵后备份,这将有助于确定该网站是如何被入侵的。
日志记录
当你要了解你的网站发生了什么时,日志是你最好的朋友,特别是当你试图执行取证时。与普遍的看法相反,日志允许您查看做了什么,由谁和什么时候做的。不幸的是,日志不会告诉您是谁、用户名、登录了,但它将允许您识别IP和时间,更重要的是,识别攻击者可能采取的行动。您将能够通过日志看到任何这些攻击—跨站点脚本(XSS)、远程文件包含(RFI)、本地文件包含(LFI)和目录遍历尝试。您还可以看到蛮力尝试。有很多示例和教程可用于帮助指导您完成解析和分析原始日志的过程。
如果你习惯使用你的日志,你就能看到主题和插件编辑器什么时候被使用,什么时候有人更新你的小部件,什么时候添加了帖子和页面。所有在您的web服务器上进行取证工作时的关键元素。有一些WordPress安全插件可以帮助你做到这一点,比如雷竞技Sucuri审计工具或者是审计跟踪插件。
从安全的角度来看,有两个关键的开源解决方案是你想要在你的web服务器上使用的,这是一种分层的安全方法。
OSSEC可以在任何NIX发行版上运行,也可以在Windows上运行。如果配置正确,它是非常强大的。这个想法是关联和聚合所有的日志。您必须确保将其配置为捕获所有access_logs和error_logs,如果您的服务器帐户上有多个网站。你也要确保过滤掉噪音。默认情况下,你会看到很多杂音,你会想要配置它真正有效。
监控
有时预防是不够的,你仍然可能被黑客攻击。这就是为什么入侵检测/监控非常重要。它将使您反应更快,找出发生了什么,并恢复您的网站。
监视您的日志
如果您在专用的或虚拟的私有服务器上,在其中您拥有根访问权限,那么您可以轻松地进行配置,以便查看正在发生的情况。OSSEC很容易做到这一点,这里有一个小的记录可能会帮助你网站安全的OSSEC -第一部分.
监视文件的更改
袭击发生时,总会留下痕迹。在日志上或在文件系统上(新文件、修改的文件等)。如果你正在使用OSSEC例如,它将监视您的文件,并在文件更改时提醒您。
目标
文件系统跟踪的目标包括:
- 监视器更改并添加了文件
- 记录更改和添加
- 恢复粒度变化的能力
- 自动警报
的一般方法
管理员可以通过通用技术监控文件系统,例如:
- 系统实用程序
- 版本控制
- 操作系统/内核级监视
特定的工具
文件系统监控选项包括:
- diff-建立干净的测试副本你的网站,并与生产比较
- Git-源代码管理
- inotify而且incron—操作系统内核级文件监控服务,可以在文件系统事件上运行命令
- 观察家- Python inotify库
- OSSEC-基于主机的开源入侵检测系统,可执行日志分析、文件完整性检查、策略监控、rootkit检测、实时报警和主动响应。
注意事项
在配置基于文件的监视策略时,需要考虑很多因素,包括以下几点。
以root身份运行监控脚本/service
这将使攻击者难以禁用或修改您的文件系统监视解决方案。
在定期维护/升级期间禁用监视
这将防止在站点上执行常规维护时发生不必要的通知。
只监视可执行文件类型
只监视可执行文件类型(如.php文件等)可能是相当安全的。过滤掉非可执行文件可以减少不必要的日志条目和警报。
使用严格的文件系统权限
阅读有关保护文件权限和所有权的内容。一般来说,避免允许执行而且写尽可能的使用权限。
外部监控您的web服务器
如果攻击者试图破坏您的网站或添加恶意软件,您也可以使用基于web的完整性监控解决方案来检测这些更改。这在今天有很多形式,使用你最喜欢的搜索引擎,寻找网络恶意软件检测和补救,你可能会得到一个长长的服务提供商的列表。
资源
- 如何提高WordPress的安全性(信息图)
- 安全插件雷竞技
- WordPress安全削减废话
- 电子书:锁定WordPress
- wpsecure.net有一些关于如何锁定WordPress的指南。
- 加固WordPress的初学者指南
- Brad Williams:把它锁起来(视频)
- 21种方法保护你的WordPress网站
- 官方文档介绍了如何用。htaccess文件对目录进行密码保护
- 关于如何密码保护WordPress管理员区和修复404错误的简单教程
这篇文章有帮助吗?如何改进呢?
你一定是登录提交反馈。