OSSEC与WordPress安全优化:实战配置与日志监控

本文详细介绍了如何配置OSSEC与Sucuri Security WordPress插件,实现WordPress活动日志的监控与分析,提升网站安全防护能力,包括日志导出、OSSEC规则配置及实战示例。

OSSEC与WordPress安全优化:实战配置与日志监控

背景介绍

之前的OSSEC文章涵盖了安装和分布式架构部署,本文重点介绍如何配置OSSEC以更好地理解WordPress活动。WordPress作为强大的开源内容管理系统(CMS),其最大的安全弱点也是其最大优势——可扩展性(如插件、主题等)。在Sucuri的工作经验表明,入侵后最重要的就是拥有良好的日志,它们是理解事件的关键,也是识别恶意行为意图的关键。

有趣的是,Sucuri Security插件的初衷几乎完全是为了这种可见性。多年来,我们添加了更多功能以提供更强大的应用安全工具集,但这始终是次要目标。事实上,该插件的前提是基于Daniel从OSSEC中学到的经验教训构建的。

其关键功能之一是日志聚合,它会收集日志并传输回主站,代表客户远程存储;这种设计为我们提供了入侵后取证的机制。

配置Sucuri Security WordPress插件导出日志

本文假设您已安装Sucuri Security WordPress插件(有可用指南)。导出日志的选项位于:Sucuri Security > Settings,向下滚动到“Log Exporter”部分。

选择文件路径时的几个专业提示:

  • 输入完整路径和文件名,例如:/var/www/logs/blog.log
  • 路径必须可写,请检查用户及相关权限
  • 避免将文件放在站点根目录,需要向上导航一个目录,否则插件不允许部署(这是为了防止外部访问文件,避免信息泄露)

完成后,注销并重新登录;如果一切顺利,您将在文件中看到新的日志条目:

1
2
3
# tail -f blog.log 
2018-12-01 01:59:40 WordPressAudit perezbox.com tony@perezbox.com : Notice: [your ip]; User authentication succeeded: administrator
2018-12-01 02:00:00 WordPressAudit perezbox.com tony@perezbox.com : Notice: administrator, [your ip]; Post was updated; ID: 80; name: OSSEC FOR WEBSITE SECURITY: PART III – Optimizing for WordPress Activity

您可以看到用户登录、来源IP以及帖子更新。这很重要,因为考虑到SEO垃圾邮件(SEP)攻击的工作原理,攻击者会更新现有文章。在此过程中,他们会更新帖子、文章和页面,而用户却毫不知情。作为网站管理员,看到帖子和页面的更新应视为危险信号——尤其是如果这些更新是意外的(例如,奇怪的时间、随机用户等)。这被认为是入侵指标(IoC)。

如果看到这些日志,请继续下一步配置OSSEC。

配置OSSEC使用Sucuri Security日志

在发布插件更新的同时,我们也更新了OSSEC WordPress规则。这些更新旨在让网站所有者无需编写新的解码器来解析和分析新日志。这意味着我们只需将上面创建的日志添加到ossec.conf文件中。

使用OSSEC提供的实用工具shell完成此操作。在终端中运行以下命令:

1
2
# /var/ossec/bin/util.sh addfile /var/www/logs/blog.log
/var/ossec/bin/util.sh: File /var/www/logs/blog.log added.

util.sh shell旨在帮助添加新日志文件,它会自动在ossec.conf文件中创建适当的配置。

示例配置更改应用于配置文件:

1
2
3
4
5
6
<ossec_config>
  <localfile>
    <log_format>syslog</log_format>
    <location>/var/www/logs/blog.log</location>
  </localfile>
</ossec_config>

专业提示:如果您运行自己的VPS并在同一服务器上管理多个站点,使用此过程添加每个日志文件可能非常繁琐。您可以使用SimonF在2013年我的文章中分享的以下脚本。将路径更新为您用于新WordPress日志的路径。

1
2
3
4
#!/bin/sh
for i in $( find /var/www/logs/ \( -iname "*.log" \) ); do
  /var/ossec/bin/util.sh addfile $i
done

最后一步是重启OSSEC服务器:

1
# /var/ossec/bin/ossec-control restart

如果您重新登录WordPress站点,监控alerts.log将显示以下警报:

1
2
3
4
2018 Dec 01 01:59:41 (pb.webserver1) any->/var/www/logs/blog.log
Rule:9502 (level 3): WordPress authentication succeeded.
IP:47.180.59.33 / USA / California
2018-12-01 01:59:40 WordPressAudit perebzox.com tony@perezbox.com : Notice: [your ip], User authentication succeeded: administrator

从这里,您可以调整和创建自己的警报。

OSSEC & WordPress规则速查表

OSSEC中为WordPress创建的规则并非包罗万象,但以下是快速速查表以理解它们:

ID Name Description
9501 User Authentication (Failure) WordPress用户认证失败。
9502 User Authentication (Success) WordPress用户认证成功。
9505 Comment Flood WordPress评论洪水尝试——有人在您的评论中留下大量不良内容(或试图这样做)。
9506 File Modification 文件被修改。
9507 Post (Private to Published) 帖子被发布。
9508 Post Updated 现有帖子被更新。
9509 Plugin Updated 插件被更新。
9510 IDS Triggered 入侵检测系统(IDS)识别出WordPress攻击。

我们有一段时间没有接触这些规则了,所以我正在考虑进行一些更新。目前,这应该有助于理解可用的内容。

希望这有所帮助,并一如既往地欢迎想法和反馈。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计