WordPress被攻击了怎么办?从紧急止损到加固的完整应对流程
WordPress这个网站遭遇了网络攻击之后的核心应对路径就只有三步, 也就是要立刻去止损, 然后彻底地查原因, 最后再进行系统的加固。
大部分的这个站长在面临这个攻击发生的时候是最容易出现两种错误的做法的, 第一种是直接重装系统, 这个行为会导致证据丢失, 第二种是在没有把恶意代码全部清理干净的情况下就恢复了上线。以下的这些内容将按照时间来顺序给出的完整操作方案。
第一步:紧急止损(发现攻击后30分钟内)
1. 断网隔离的意思是, 你要在服务器的管理面板里或者防火墙设置中, 把网站的访问状态改成“维护模式”, 或者是让这个站点暂时下线。这样做的目的, 就是为了切断外部的所有访问通道。通过这种方式, 你就能够防止攻击者再去进行操作, 也能阻止恶意东西继续传播出去。
2. 备份现场这一步需要做的是, 在你去碰任何文件之前, 先把当前网站里面的那些所有文件做一个完整的备份, 还要把数据库、wp-config.php 这个配置文件, 以及服务器上面产生的访问日志和错误日志全都备份下来, 并且一定要把这些准备好的备份资料放到离当前位置很远的地方去存放, 绝对不要把它们只留在那个已经被黑客攻陷了的服务器上面。
3. 冻结账号: 立刻来修改那个数据库的管理员账号密码, 还有FTP的账号密码, SSH的连接密码, 以及面板的登录密码。去检查一下那个叫做wp_users的数据表里面有没有那些身份不明的管理员账号, 要是发现了就赶紧把它给删掉。
4. 检查计划任务: 执行代码块中的命令crontab -l, 以此去排查是不是有攻击者植入了恶意的定时任务。所谓恶意的定时任务, 指的是一些情况, 比如某个任务会每分钟都去执行curl这个操作, 目的是下载恶意的脚本文件。
第二步:排查入侵源(半天内完成)
从文件这一层面来看, 需要对比正常备份情况, 以便查找在最近48个小时以内被修改过的.php文件。
需要把重点放在检查 wp-content/themes/, wp-content/plugins/, 以及 wp-includes/ 这些目录下, 看是不是出现了那些来路不明的文件, 或者是出现了代码被注入的情形, 这种情形的典型表现是把像 base64_decode, eval, system 这样的函数给插进了本该是正常的代码里头。
从数据库层面出发, 我们需要导出wp_options表, 同时我们还得导出wp_posts表, 另外我们也必须导出wp_users表。接下来我们搜索这样的字符串, 并且我们要搜索这样的字符串, 最后我们还要搜索iframe这样的字符串。通过这些操作, 我们来识别哪些地方已经被写入了恶意代码。
在日志层面方面, 你要去看那个 Nginx 或者是 Apache 的访问日志, 然后去找到那个发起攻击的人用的 IP 地址是多少, 去搞清楚他访问的具体路径在哪里, 以及要确定下来那个攻击行为发生的时间范围大概是什么样子的。
组件层面: 检查一下, 当前正在使用的主题, 还有插件, 到底是不是那些已经发现了漏洞的旧版本。同时还要看看, 这些插件是不是破解版, 或者是来头不明、正路来源说不清楚的插件。
第三步:彻底清理与加固
1. 找到恶意代码, 然后把它们从文件里一个一个地清理干净。对于那些没办法确定是否安全的文件, 直接使用官方提供的版本来进行替换。
2. 更换密钥:重新生成 wp-config.php 中的 AUTH_KEY、SECURE_AUTH_KEY、LOGGED_IN_KEY、NONCE_KEY 等全部认证盐值,使所有已获取的登录 Cookie 失效。
3. 升级组件这一步骤的具体操作是, 把 WordPress 的核心程序以及目前使用的全部主题插件, 统统更新到官方推荐的、最新的且运行稳定的版本上面去, 对于那些已经不再派上用场、不再继续使用的旧主题和旧插件文件, 必须毫不留情地执行删除处理。
4. 安全配置:
关闭后台文件编辑:define('DISALLOW_FILE_EDIT', true);
你要把那个XML-RPC的访问给关掉, 或者是采取一个严格的限制措施。
把目录的权限设置为755, 把文件的权限设置为644, 坚决杜绝使用77。
在设置管理员用户名时不要使用admin这个名称, 同时要开启双因素认证功能。
配置Web应用防火墙(WAF)规则, 通过这种方式来限制登录失败的次数。
5. 重新上线: 在完成前述步骤之后, 要把网站的访问功能给恢复好, 并且要对前台、后台、表单填写以及支付这些功能是否正常运转, 逐一进行确认。
第四步:建立长效预防机制
更新节奏: 建议大家订阅 WordPress 安全公告。这样的话, 核心和插件可以在 7 天之内完成更新操作。
备份策略, 我们每周会自动进行一次的备份工作, 在重要的操作之前, 会采用手动的方式来做备份, 保留的备份数量至少要是 3 份, 而且这 3 份里面要有 1 份是存放在异地的, 另外每个月要做一次恢复演练。
监控告警: 把文件完整性的监控系统给部署上, 比如说像Wordfence这样的工具里面的检测文件变化功能, 然后也要设置好异常登录的告警信息。这样一来, 就可以确保在发现有入侵行为的时候, 能够在1小时之内被察觉和发现。
最小权限原则: 数据库的账号, 只给它必要的访问范围。对 FTP 账号, 把它的作用区域限制在站点根目录里面去。不要用 root 身份去做网站文件的相关操作。
常见攻击类型速查
攻击类型 |
典型表现 |
首要处理 |
|---|---|---|
暴力破解 |
大量 401/403 登录请求 |
限流 + 双因素认证 |
插件/主题漏洞利用 |
未知文件被写入、Webshell 出现 |
清理文件 + 升级组件 |
SQL 注入 |
数据库内容被篡改、页面出现异常脚本 |
备份数据库 + 修复漏洞 |
供应链投毒 |
破解插件/主题内置后门 |
删除来源,改用官方渠道 |
DDoS |
站点无法访问、带宽打满 |
启用 CDN 防护 + 联系服务商 |
当出现攻击情况的时候, 要先保住现场再去动手操作,先做止损处理再进行修复工作,先把环境清理干净然后再进行上线操作, 这个顺序是不能颠倒过来的。
把这个全流程的事情全部做完以后, 要到百度搜索资源平台以及Google Search Console里面去提交URL以申请重新收录, 万一有必要的话, 还得提交安全方面的申诉。
常见问题
《WordPress被攻击了怎么办?从紧急止损到加固的完整应对流程》主要讲什么?
WordPress这个网站遭遇了网络攻击之后的核心应对路径就只有三步, 也就是要立刻去止损, 然后彻底地查原因, 最后再进行系统的加固。
文章提到了哪些重点?
断网隔离的意思是, 你要在服务器的管理面板里或者防火墙设置中, 把网站的访问状态改成“维护模式”, 或者是让这个站点暂时下线;从文件这一层面来看, 需要对比正常备份情况, 以便查找在最近48个小时以内被修改过的.php文件
文章给出了哪些建议?
从数据库层面出发, 我们需要导出wp_options表, 同时我们还得导出wp_posts表, 另外我们也必须导出wp_users表。
第一步:紧急止损(发现攻击后30分钟内)怎么样?
1. 断网隔离的意思是, 你要在服务器的管理面板里或者防火墙设置中, 把网站的访问状态改成“维护模式”, 或者是让这个站点暂时下线。这样做的目的, 就是为了切断外部的所有访问通道。