WordPress 的 wp-config.php 文件中保存了重要的配置信息

WordPress 的 wp-config.php 文件中保存了重要的配置信息,包括 MySql 数据库用户名、密码及连接地址等信息。一旦该文件中的内容泄露,网站所有的管理权限将暴露。本文以一个真实的被入侵案例来阐述如何防范此类风险。

内容

  • 案例解析
  • 防范措施
    • 一、WordPress 文件权限设置
    • 二、关闭 MySql 远程连接权限

案例解析

今日,经过分析 MySql 日志发现,数据库被人篡改,并添加了一个拥有超级管理员权限的新用户,然后在网站页面中加入了恶意代码。

据此推断应该是数据库密码被泄露。查看 wp-config.php 文件权限,果然设置为755。PS:755 权限的意思是:所有者、用户组、公共用户均可读、可执行,所有者可写入,如下表:

所有者 用户组 公共组
读取√ 读取√ 读取√
写入√ 写入× 写入×
执行√ 执行√ 执行√
775权限详细情况

这样的权限设置非常不安全,很容易被人获取文件中的信息。(具体的攻击方法这里不介绍,以防别有用心者利用。)

攻击者取得 wp-config.php 文件中的 MySql 连接信息后,可轻松修改网站数据库内容。包括创建管理员权限的用户,或者直接修改默认超级管理员的密码。

值得庆幸的是这位站长设置了数据库自动备份,在恢复了数据库且重新上传了一遍WordPress文件及主题插件文件后,网站恢复了正常。

防范措施

通过以上案例,至少有两处是网站需要整改的。

一、WordPress 文件权限设置

wp-config.php建议设置成440权限,也就是去掉公共组的读取与执行权限,另外去掉所有者的执行权限。如下示例:

所有者 用户组 公共组
读取√ 读取√ 读取×
写入× 写入× 写入×
执行× 执行× 执行×
440权限详细情况

这样设置之后,如果要修改该文件,需要将所有者的写入权限暂时开启,权限变成640,完成修改后再改回440权限。

除了 wp-config.php 文件之外,WordPress 其它的文件均建议设置成644,即取消所有用户的执行权限。但目录得保持755或750权限,否则会导致 WordPress 无法上传附件、插件与主题无法安装/更新,甚至网站运行出错等问题。

如果安装了服务器管理面板的,可参照以上建议在面板中设置相应的目录及文件权限。如未使用管理面板,可以参考chmod命令教程进行设置。

注意任何情况下,均不要将目录或文件设置成777权限(全开放)。

二、关闭 MySql 远程连接权限

如果 MySql 与网站属同一服务器,则强烈建议关闭远程连接权限。如果不在同一服务器,也应仅授权网站服务器IP对 MySql 的连接权限。

「点点赞赏,手留余香」

为你点赞 0 为你赞赏

给作者赞赏,鼓励TA抓紧创作!

微信微信 支付宝支付宝

快来当第一个赞赏的人吧!如果内容对您有帮助,欢迎打赏作者!赞赏不用多,心意到了即可。谢谢!

发表回复

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