前段时间,Wordpress4.8发布之前,一天早上我打开自己一个网站,发现莫名多出两篇文章,英文一篇,另一篇应该是俄文,英文那篇大概是和某个不知名化妆品有关。
知道被黑了,于是去Google解决方法,删文章,重置管理员账号,装WordFence一扫,发现系统里多出一个文件,瞻仰其中代码,删之。升级Wordpress到4.8,重置主机所有Linux账号,重置ssh认证密钥,以防万一。
折腾了一阵,学到了东西,下面是Wordpress安全指南,参考了网上一些文章。
用靠谱主机
为什么
不靠谱的主机之所以不靠谱,是因为投入少或无投入。物理机放在低端机房,拿个裸机挣钱,要防火墙没防火墙,系统不更新,软件不更新,漏洞不补,找个月薪八百块的小孩儿维护,或者长期放羊,无人维护。
现在互联网上的Wordpress攻击已经高度自动化,再小的网站都是目标,主机公司更是大目标。世界上有哪些主机公司,位置,IP段,防护措施,黑客人手一份,主机公司一水,黑客自动脚本一扫,一死一大片。
怎么做
永远不用“免费”主机,这种服务商自己就是半个黑客。
用具备安全措施的主机,没钱就用基本款,对普通网站也够,如国外的 Fastcomet,SiteGround,有钱的大户就用全托主机如国外的WPEngine。
自动更新WordPress核心,插件和主题
为什么
WordPress安全吗?安全。WordPress完美吗?不完美。越流行,越容易被盯上,越被盯上暴露的问题越多,这既是坏事也是也是好事。
重要的是保持更新。
核心代码,流行插件和主题,几乎每天都在迭代,不少都是修复安全漏洞,曾经就有极速修复的例子。
长期不更新,版本落后会留下安全隐患,理论上被黑只是时间问题。保持核心,插件,主题自动更新,能防患于未然,更新不只填补漏洞本身,有时还强迫黑客程序重写,更改攻击机制,从而增加攻击难度。
怎么做
安装自动更新插件Companion Auto Update,可实现无人值守的WordPress核心,插件和主题自动更新。
配置自动备份
为什么
作最坏打算,定期自动备份整站,一旦网站被黑,至少有数据可以恢复,留得青山在。
最糟糕的情况是受了攻击,网站彻底变鸡,却发现无法备份,之前也没有留任何备份。
怎么做
安装自动备份插件 UpdraftPlus。
可设置日备,并将备份数据加密上传到多种第三方存储平台。
自动安全扫描
为什么
黑客程序搞定你的网站后,是不会发邮件通知你的。
网站有没有安全渗透,不能靠肉眼,因为很多渗透没有现象也没有征兆,更不能靠感觉。
安全渗透应该用专业的工具“扫”出来。
怎么做
装安全插件 如 WordFence。安全插件能做的事,除了自动扫描还有很多,可以仔细查看插件配置页面。
用扫描工具 如漏洞测试工具。
没事扫一扫。
过滤垃圾评论
为什么
多数垃圾评论的目的并非打广告这么简单,而是把评论内容写得像广告,实际嵌入了恶意代码进行XSS攻击,这样的评论如果流入正常用户的浏览器,就有可能带来危害,如果是权限较高的用户,网站就可能被渗透。
怎么做
装好WordPress立即打开Akismet插件。
审核用户评论,在设置->讨论中可以配置。
降低插件使用风险
为什么
非官方的插件危险系数高,不可随便下载安装,先确认插件源可信。
安装的插件不激活,不代表没有风险,因为代码漏洞不依赖插件是否激活。
怎么做
尽量从官网安装插件,避免从不明来历第三方网站下载插件。
及时删除不用的插件,尽量避免在生产环境测试插件,控制插件使用数量。
用安全性更高的管理员帐号
为什么
你的网站有了一点流量,每天几百IP,如果有请求监控,你会发现总有几个熟悉的IP反复访问/wp-admin,这些访问一般来自黑客的肉鸡,请求是肉鸡上的自动脚本在猜你的登陆帐号密码。
为什么这些自动脚本这么有信心有恒心?
这是我随便google到的地球上用得最多的密码组合,2016年“123456”的风头盖过了“password”:
怎么做
避免使用“admin”作为管理员账号,这是黑客程序必试的账号,用只有自己知道的账号名,这个小小的改变,能让猜密码的黑客程序头痛指数增加N倍,理论上猜账号和猜密码一样难。
用安全性更高的密码,不复用密码。
限制密码尝试次数,安装登陆重试次数限制插件Login LockDown。
保护wp-admin目录,再设一道密码保护,在你的虚拟主控制面板里找“目录密码保护”的选项。
替换默认登录入口
为什么
WordPress默认登录地址为 /wp-admin 和 /wp-login.php,网上大量黑客程序以它们为渗透目标。
怎么做
安装 WPS Hide Login 插件,可以禁止 /wp-admin 和 /wp-login.php 访问,并把登录入口修改成自定义URL。
强制用户使用https协议
为什么
后台登录输入的用户名密码不应明文传输,尤其当你使用代理时,敏感信息可能被中间人截获。
怎么做
配置web服务器,打开SSL证书,虚拟主机一般都提供免费SSL证书,点点鼠标就能搞定。如果用VPS也可以用Let’s Encrypt生成,把所有http流量自动重定向到https。
避免使用默认数据库前缀
为什么
有一类工具叫SQL注入,黑客利用某个插件输入框的安全漏洞,通过恶意SQL语句直接修改网站数据库。这类语句通常假设数据库表前缀为wp_,这是WordPress安装时的默认前缀。
怎么做
安装WordPress时,避免使用默认的wp_数据表前缀,可以使大量SQL注入工具失效。
关闭文件编辑
为什么
WordPress默认允许管理员帐号修改主题或插件源文件,一旦管理员帐号被渗透,理论上黑客可以通过这个功能修改这些文件,执行任何他想执行的代码,比如注入木马,留后门。
怎么做
彻底关闭这个功能,通过在wp-config.php中加入:
define('DISALLOW_FILE_EDIT', true);
关闭.php文件直接访问权限
为什么
一旦黑客发现某个php源文件有漏洞,就可以通过直接访问之反复尝试渗透,尤其是上传文件夹这样的敏感位置(/uploads)。如果关闭,那么即使漏洞存在,黑客也无能为力。
怎么做
在.htaccess文件里添加针对敏感目录的规则,禁止直接访问.php文件:
<Directory "/var/www/wp-content/uploads/"> <Files *.php> Order Allow, Deny Deny from all </Files> </Directory>
关闭XML-RPC
为什么
XML-RPC是WordPress向外暴露的调用,Pingback和Trackback功能依赖这组调用,但会被黑客程序拿来来做蛮力攻击或者DDos。
怎么做
安装Disable XML-RPC插件,可彻底关闭XML-RPC。普通网站Pingback和Trackback功能意义不大,所以关掉XML-RPC也没有关系,除非你确定它需要打开。
总结
WordPress安全最重要的事,
- 保持自动更新。
- 是使用安全插件定期扫描。
- 是备份。
做到这三点基本可保网站不被渗透。剩下的措施可以根据网站情况决定是否配置。