日志记录和日志分析对于保护基础设施安全来说至关重要,尤其是当我们考虑到通用漏洞的时候。这篇文章基于我在 FOSDEM'19 上的闪电秀《 Let's use centralized log collection to make incident response teams happy 》,目的是提高大家对日志匮乏这种安全问题的重视,提供一种避免风险的方法,并且倡议更多的安全实践(利益声明: 我为 NXLog 工作)。
为什么要收集日志?为什么要集中日志记录?
确切的说,日志是写入磁盘的仅追加的记录序列。在实际生活中,日志可以在你尝试寻找异常的根源时帮助你调查基础设施的问题。当你有多个使用自己的标准与格式的日志的异构系统,并且想用一种可靠的方法来接收和处理它们的时候,挑战就来临了。这通常以元数据为代价的。集中日志记录解决方案需要共性,这种共性常常会去除许多开源日志记录工具所提供的丰富的元数据。
日志记录与监控匮乏的安全风险
开源 Web 应用程序安全项目(Open Web Application Security Project)( OWASP )是一个为业界贡献了许多杰出项目(包括许多专注于软件安全的 工具 )的非营利组织。OWASP 定期为应用开发人员和维护者报告最危险的安全挑战。在最新一版《 10 项最严重的 Web 应用程序安全风险 》中,OWASP 将日志记录和监控匮乏加入了列表中。OWASP 警告下列情况会导致日志记录、检测、监控和主动响应的匮乏:
- 未记录重要的可审计性事件,如:登录、登录失败和高额交易。
- 告警和错误事件未能产生、产生不足或不清晰的日志信息。
- 日志信息仅在本地存储。
- 对于实时或准实时的主动攻击,应用程序无法检测、处理和告警。
可以通过集中日志记录(例如,不仅将日志本地存储)和结构化日志数据以进一步分析来缓解上述情形(例如,在告警仪表盘和安全套件中)。
举例来说, 假设一个 DNS 查询会导向名为 hacked.badsite.net 的恶意网站。通过 DNS 监控,管理员监控并且主动的分析 DNS 请求与响应。DNS 监控的效果依赖于充足的日志记录与收集来发现潜在问题,同样也依赖于结构化 DNS 日志的结果来进一步分析。
- 2019-01-29
- Time (GMT) Source Destination Protocol-Info
- 12:42:42.112898 SOURCE_IP xxx.xx.xx.x DNS Standard query 0x1de7 A hacked.badsite.net
你可以在 NXLog 社区版 中自己尝试一下这个例子,也可以尝试其他例子和代码片段。 (再次声明:我为 NXLog 工作)
重要的一点:非结构化数据与结构化数据
花费一点时间来考虑下日志数据格式是很重要的。例如,让我们来考虑以下日志消息:
- debug1: Failed password for invalid user amy from SOURCE_IP port SOURCE_PORT ssh2
这段日志包含了一个预定义的结构,例如冒号前面的元数据关键词(debug1)然而,余下的日志字段是一个未结构化的字符串(Failed password for invalid user amy from SOURCE_IP port SOURCE_PORT ssh2)。因此,即便这个消息是人类可轻松阅读的格式,但它不是一个计算机容易解析的格式。
非结构化的事件数据存在局限性,包括难以解析、搜索和分析日志。重要的元数据通常以一种自由字符串的形式作为非结构化数据字段,就像上面的例子一样。日志管理员会在他们尝试标准化/归一化日志数据与集中日志源的过程中遇到这个问题。
接下来怎么做
除了集中和结构化日志之外,确保你收集了正确的日志数据——Sysmon、PowerShell、Windows 事件日志、DNS 调试日志、ETW、内核监控、文件完整性监控、数据库日志、外部云日志等等。同样也要选用适当的工具和流程来来收集、汇总和帮助理解数据。
希望这对你从不同日志源中集中日志收集提供了一个起点:将日志发送到仪表盘、监控软件、分析软件以及像安全性资讯与事件管理(SIEM)套件等外部源。