跳到内容

应用程序日志记录词汇备忘单

本文档提出了一个用于记录安全事件的标准词汇表。其目的是简化监控和警报,假定开发人员使用此词汇表捕获并记录错误,则通过简单地以这些术语为关键词,可以改进监控和警报。

概述

IBM Security 每年委托 Ponemon Institute 调查全球公司有关安全漏洞、缓解措施以及相关成本的信息;其结果被称为《数据泄露成本报告》。

除了因泄露造成的数百万美元损失外,报告还发现,识别泄露的平均时间仍然徘徊在200天左右。显然,我们监控应用程序并对异常行为发出警报的能力将缩短我们识别和缓解针对应用程序的攻击所需的时间。

IBM Cost of Data Breach Report 2020

IBM 2020年数据泄露研究报告,图4,第10页,[https://www.ibm.com/security/data-breach]

此日志记录标准旨在定义特定的关键词,当它们在软件中一致应用时,将允许各组简单地监控所有应用程序中的这些事件术语,并在发生攻击时迅速响应。

假设

  • 可观察性/SRE 团队必须支持使用此标准并鼓励开发人员使用它。
  • 事件响应必须摄取这些数据,或者提供一种方式让其他监控团队能够发送警报通知,最好是通过编程方式。
  • 架构师必须支持、采纳并为此标准做出贡献。
  • 开发人员必须接受此标准并开始实施(这需要了解潜在攻击并有意在代码中捕获这些错误)。

入门

提醒一下,日志记录的目标是能够针对特定的安全事件发出警报。当然,记录这些事件的第一步是良好的错误处理,如果你不捕获事件,你就没有事件可记录。

识别事件

为了更好地理解安全事件日志记录,对威胁建模有高层次的理解会很有帮助,即使它只是一个简单的方法,比如:

  1. 可能会出什么问题?
  • 订单:有人可以代他人下订单吗?
  • 认证:我可以登录成其他人吗?
  • 授权:我能看到别人的账户吗?
  1. 如果真的发生了会怎样?
  • 订单:我代他人下了订单...到一个新泽西州的废弃仓库。糟糕。
  • 然后我在4chan上吹嘘这件事。
  • 然后我把这件事告诉了《纽约时报》。
  1. 谁可能有这种意图?
  • 黑客的蓄意攻击。
  • 一名员工“测试”系统如何运作。
  • 一个编码不正确的API做了作者无意的事情。

格式

注意:所有日期都应以 ISO 8601 格式记录,并附带 UTC 偏移量,以确保最大的可移植性。

{
    "datetime": "2021-01-01T01:01:01-0700",
    "appid": "foobar.netportal_auth",
    "event": "AUTHN_login_success:joebob1",
    "level": "INFO",
    "description": "User joebob1 login successfully",
    "useragent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
    "source_ip": "165.225.50.94",
    "host_ip": "10.12.7.9",
    "hostname": "portalauth.foobar.com",
    "protocol": "https",
    "port": "440",
    "request_uri": "/api/v2/auth/",
    "request_method": "POST",
    "region": "AWS-US-WEST-2",
    "geo": "USA"
}

词汇表

以下是应捕获的各种事件类型。对于每种事件类型,都有一个前缀,如“authn”,以及可能包含在该事件中的额外数据。

此处包含完整日志记录格式的部分示例,但完整的事件日志应遵循上述格式。

关于数据隐私的注意事项

事件类型之后记录的所有字段都应被视为可选。实施此日志记录方法的企业应权衡记录字段的价值与作为数据管理员对所记录数据承担的责任。例如:记录用户IP地址可能有助于检测和响应,但当与其他数据结合时,可能被视为个人身份信息,并受法规或删除请求的约束。


认证 [AUTHN]

authn_login_success[:userid]

描述 所有登录事件,包括成功事件,都应被记录。

级别: 信息 (INFO)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "authn_login_success:joebob1",
    "level": "INFO",
    "description": "User joebob1 login successfully",
    ...
}

authn_login_successafterfail[:userid,retries]

描述 用户在之前失败后成功登录。

级别: 信息 (INFO)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "authn_login_successafterfail:joebob1,2",
    "level": "INFO",
    "description": "User joebob1 login successfully",
    ...
}

authn_login_fail[:userid]

描述 所有登录事件,包括失败事件,都应被记录。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "authn_login_fail:joebob1",
    "level": "WARN",
    "description": "User joebob1 login failed",
    ...
}

authn_login_fail_max[:userid,maxlimit(int)]

描述 所有登录事件,包括失败事件,都应被记录。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "authn_login_fail_max:joebob1,3",
    "level": "WARN",
    "description": "User joebob1 reached the login fail limit of 3",
    ...
}

authn_login_lock[:userid,reason]

描述 当存在在x次重试或其他条件后锁定账户的功能时,应记录锁定事件及相关数据。

级别: 警告 (WARN)

原因

  • maxretries:达到最大重试次数
  • suspicious:账户上观察到可疑活动
  • customer:客户请求锁定其账户
  • other:其他

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "authn_login_lock:joebob1,maxretries",
    "level": "WARN",
    "description": "User joebob1 login locked because maxretries exceeded",
    ...
}

authn_password_change[:userid]

描述 每次密码更改都应被记录,包括更改所针对的用户ID。

级别: 信息 (INFO)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "authn_password_change:joebob1",
    "level": "INFO",
    "description": "User joebob1 has successfully changed their password",
    ...
}

authn_password_change_fail[:userid]

描述 尝试更改密码失败的事件。也可能触发其他事件,例如 authn_login_lock

级别: 严重 (CRITICAL)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "authn_password_change_fail:joebob1",
    "level": "CRITICAL",
    "description": "User joebob1 failed to change their password",
    ...
}

authn_impossible_travel[:userid,region1,region2]

描述 当用户从一个城市登录,然后突然出现在另一个无法在合理时间内到达的城市时,这通常表明可能存在账户盗用。

级别: 严重 (CRITICAL)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "authn_impossible_travel:joebob1,US-OR,CN-SH",
    "level": "CRITICAL",
    "description": "User joebob1 has accessed the application in two distant cities at the same time",
    ...
}

authn_token_created[:userid, entitlement(s)]

描述 当为服务访问创建令牌时,应记录该事件。

级别: 信息 (INFO)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "aws.foobar.com",
    "event": "authn_token_created:app.foobarapi.prod,create,read,update",
    "level": "INFO",
    "description": "A token has been created for app.foobarapi.prod with create,read,update",
    ...
}

authn_token_revoked[:userid,tokenid]

描述 给定账户的令牌已被撤销。

级别: 信息 (INFO)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "aws.foobar.com",
    "event": "authn_token_revoked:app.foobarapi.prod,xyz-abc-123-gfk",
    "level": "INFO",
    "description": "Token ID: xyz-abc-123-gfk was revoked for user app.foobarapi.prod",
    ...
}

authn_token_reuse[:userid,tokenid]

描述 尝试重用之前已撤销的令牌。

级别: 严重 (CRITICAL)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "aws.foobar.com",
    "event": "authn_token_reuse:app.foobarapi.prod,xyz-abc-123-gfk",
    "level": "CRITICAL",
    "description": "User app.foobarapi.prod attempted to use token ID: xyz-abc-123-gfk which was previously revoked",
    ...
}

authn_token_delete[:appid]

描述 令牌被删除时应被记录。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "authn_token_delete:foobarapi",
    "level": "WARN",
    "description": "The token for foobarapi has been deleted",
    ...
}

授权 [AUTHZ]


authz_fail[:userid,resource]

描述 尝试访问未经授权的资源。

级别: 严重 (CRITICAL)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "authz_fail:joebob1,resource",
    "level": "CRITICAL",
    "description": "User joebob1 attempted to access a resource without entitlement",
    ...
}

authz_change[:userid,from,to]

描述 用户或实体权限发生变更。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "authz_change:joebob1,user,admin",
    "level": "WARN",
    "description": "User joebob1 access was changed from user to admin",
    ...
}

authz_admin[:userid,event]

描述 特权用户(如管理员)的所有活动都应被记录。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "authz_admin:joebob1,user_privilege_change",
    "level": "WARN",
    "description": "Administrator joebob1 has updated privileges of user foobarapi from user to admin",
    ...
}

加密/解密 [CRYPT]

crypt_decrypt_fail[userid]

描述 执行加密和解密失败可能仅仅是系统错误,也可能与用户对相关数据缺乏权限的授权失败有关。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "crypt_decrypt_fail:joebob1",
    "level": "WARN",
    "description": "User joebob1 was unable to perform decryption" + err,
    ...
}

crypt_encrypt_fail[userid]

描述 执行加密和解密失败可能仅仅是系统错误,也可能与用户对相关数据缺乏权限的授权失败有关。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "crypt_encrypt_fail:joebob1",
    "level": "WARN",
    "description": "User joebob1 was unable to perform encryption" + err,
    ...
}

过度使用 [EXCESS]

excess_rate_limit_exceeded[userid,max]

描述 预期的服务限制上限应建立并超出时发出警报,即使仅仅是为了管理成本和扩展。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "excess_rate_limit_exceeded:app.foobarapi.prod,100000",
    "level": "WARN",
    "description": "User app.foobarapi.prod has exceeded max:100000 requests",
    ...
}

文件上传 [UPLOAD]

upload_complete[userid,filename,type]

描述 成功文件上传后,验证过程的第一步是上传已完成。

级别: 信息 (INFO)

示例

    {
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "upload_complete:joebob1,user_generated_content.png,PNG",
    "level": "INFO",
    "description": "User joebob1 has uploaded user_generated_content.png",
    ...
}

upload_stored[filename,from,to]

描述 良好文件上传验证的一个步骤是移动/重命名文件,并且在将内容提供回最终用户时,永远不要在下载中引用原始文件名。这在使用文件系统存储和块存储时都适用。

级别: 信息 (INFO)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "upload_stored:user_generated_content.png,kjsdhkrjhwijhsiuhdf000010202002",
    "level": "INFO",
    "description": "File user_generated_content.png was stored in the database with key abcdefghijk101010101",
    ...
}

upload_validation[filename,(virusscan|imagemagick|...):(FAILED|incomplete|passed)]

描述 所有文件上传都应进行一些验证,既包括正确性(是否确实是文件类型x),也包括安全性(是否不包含病毒)。

级别: 信息 (INFO)|严重 (CRITICAL)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "upload_validation:filename,virusscan:FAILED",
    "level": "CRITICAL",
    "description": "File user_generated_content.png FAILED virus scan and was purged",
    ...
}

upload_delete[userid,fileid]

描述 当文件因正常原因被删除时,应记录下来。

级别: 信息 (INFO)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "upload_delete:joebob1,",
    "level": "INFO",
    "description": "User joebob1 has marked file abcdefghijk101010101 for deletion.",
    ...
}

输入验证 [INPUT]

input_validation_fail:[(fieldone,fieldtwo...),userid]

描述 当服务器端输入验证失败时,原因可能是:a) 客户端未提供足够的验证,或者 b) 客户端验证被绕过。无论哪种情况,这都是攻击的机会,应迅速缓解。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "input_validation_fail:(zip,date_of_birth),joebob1",
    "level": "WARN",
    "description": "User joebob1 submitted data that failed validation.",
    ...
}

恶意行为 [MALICIOUS]

malicious_excess_404:[userid|IP,useragent]

描述 当用户频繁请求不存在的文件时,这通常表明试图“强制浏览”可能存在的文件,并且通常是恶意意图的行为指示器。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "malicious_excess404:123.456.789.101,M@l1c10us-Hax0rB0t0-v1",
    "level": "WARN",
    "description": "A user at 123.456.789.101 has generated a large number of 404 requests.",
    ...
}

malicious_extraneous:[userid|IP,inputname,useragent]

描述 当用户向后端处理程序提交了意料之外的数据时,可能表明正在探测输入验证错误。如果你的后端服务接收到它不处理或没有输入的字段数据,这表明很可能存在恶意滥用。

级别: 严重 (CRITICAL)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "malicious_extraneous:[email protected],creditcardnum,Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0",
    "level": "CRITICAL",
    "description": "User [email protected] included field creditcardnum in the request which is not handled by this service.",
    ...
}

malicious_attack_tool:[userid|IP,toolname,useragent]

描述 当通过签名或用户代理识别出明显的攻击工具时,应记录下来。

例如,工具“Nikto”默认会留下其用户代理字符串,例如 "Mozilla/5.00 (Nikto/2.1.6) (Evasions:None) (Test:Port Check)"

级别: 严重 (CRITICAL)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "malicious_attack_tool:127.0.0.1,nikto,Mozilla/5.00 (Nikto/2.1.6) (Evasions:None) (Test:Port Check)",
    "level": "CRITICAL",
    "description": "Attack traffic indicating use of Nikto coming from 127.0.0.1",
    ...
}

malicious_cors:[userid|IP,useragent,referer]

描述 当来自未经授权的源的尝试被阻止时,当然也应尽可能地记录下来。即使我们阻止了一个非法的跨域请求,该请求正在被发出的事实也可能表明存在攻击。

注意:你知道“referer”一词在最初的HTTP规范中拼写错误吗?正确的拼写应该是“referrer”,但最初的打字错误一直沿用至今,这里是故意使用的。

级别: 严重 (CRITICAL)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "malicious_cors:127.0.0.1,Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0,attack.evil.com",
    "level": "CRITICAL",
    "description": "An illegal cross-origin request from 127.0.0.1 was referred from attack.evil.com"
    ...
}

malicious_direct_reference:[userid|IP, useragent]

描述 一种常见的针对认证和授权的攻击是未经凭据或适当访问权限直接访问对象。未能阻止此缺陷曾经是OWASP十大漏洞之一,称为不安全的直接对象引用。假设你已正确阻止此攻击,记录尝试对于识别恶意用户很有价值。

级别: 严重 (CRITICAL)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "malicious_direct:joebob1, Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0",
    "level": "CRITICAL",
    "description": "User joebob1 attempted to access an object to which they are not authorized",
    ...
}

权限变更 [PRIVILEGE]

本节主要关注对象权限的变更,例如读/写/执行权限或数据库中对象的授权元信息变更。

用户/账户的变更在用户管理部分中涵盖。


privilege_permissions_changed:[userid,file|object,fromlevel,tolevel]

描述 跟踪对受访问控制限制的对象的更改可以发现未经授权用户试图提升这些文件权限的尝试。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "permissions_changed:joebob1, /users/admin/some/important/path,0511,0777",
    "level": "WARN",
    "description": "User joebob1 changed permissions on /users/admin/some/important/path",
    ...
}

敏感数据变更 [DATA]

无需记录或警报所有文件的更改,但在高度敏感的文件或数据的情况下,监控和警报更改非常重要。


sensitive_create:[userid,file|object]

描述 当创建一块新数据并将其标记为敏感或放置在存储敏感数据的目录/表/存储库中时,应记录该创建事件并定期审查。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "sensitive_create:joebob1, /users/admin/some/important/path",
    "level": "WARN",
    "description": "User joebob1 created a new file in /users/admin/some/important/path",
    ...
}

sensitive_read:[userid,file|object]

描述 所有标记为敏感或放置在存储敏感数据的目录/表/存储库中的数据都应记录其访问事件并定期审查。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "sensitive_read:joebob1, /users/admin/some/important/path",
    "level": "WARN",
    "description": "User joebob1 read file /users/admin/some/important/path",
    ...
}

sensitive_update:[userid,file|object]

描述 所有标记为敏感或放置在存储敏感数据的目录/表/存储库中的数据,其数据更新都应被记录并定期审查。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "sensitive_update:joebob1, /users/admin/some/important/path",
    "level": "WARN",
    "description": "User joebob1 modified file /users/admin/some/important/path",
    ...
}

sensitive_delete:[userid,file|object]

描述 所有标记为敏感或放置在存储敏感数据的目录/表/存储库中的数据,其删除都应被记录并定期审查。文件不应立即删除,而应标记为待删除,并且应根据法律/隐私要求维护文件的存档。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "sensitive_delete:joebob1, /users/admin/some/important/path",
    "level": "WARN",
    "description": "User joebob1 marked file /users/admin/some/important/path for deletion",
    ...
}

序列错误 [SEQUENCE]

也称为业务逻辑攻击,如果系统中预期有一个特定的路径,并且有人试图跳过或改变该路径的顺序,则可能表明存在恶意意图。


sequence_fail:[userid]

描述 当用户以非预期顺序到达应用程序的某个部分时,可能表明对业务逻辑的故意滥用,应进行跟踪。

级别: 严重 (CRITICAL)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "sequence_fail:joebob1",
    "level": "CRITICAL",
    "description": "User joebob1 has reached a part of the application out of the normal application flow.",
    ...
}

会话管理 [SESSION]

session_created:[userid]

描述 当创建新的认证会话时,该会话可以被记录并监控其活动。

级别: 信息 (INFO)

示例

    {
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "session_created:joebob1",
    "level": "INFO",
    "description": "User joebob1 has started a new session",
    ...
}

session_renewed:[userid]

描述 当用户被警告会话即将过期/被撤销并选择延长其会话时,应记录该活动。此外,如果相关系统包含高度机密数据,则延长会话可能需要额外验证。

级别: 信息 (INFO)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "session_renewed:joebob1",
    "level": "INFO",
    "description": "User joebob1 was warned of expiring session and extended.",
    ...
}

session_expired:[userid,reason]

描述 当会话过期时,特别是在认证会话或涉及敏感数据的情况下,应记录会话过期事件并包含澄清数据。原因代码可以是任何类型,例如:登出、超时、撤销等。会话不应被删除,而是在需要撤销时使其过期。

级别: 信息 (INFO)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "session_expired:joebob1,revoked",
    "level": "INFO",
    "description": "User joebob1 session expired due to administrator revocation.",
    ...
}

session_use_after_expire:[userid]

描述 如果用户尝试使用已过期的会话访问系统,记录该事件可能会有帮助,特别是如果它与随后的登录失败结合发生。这可以识别恶意用户试图劫持会话或直接访问他人机器/浏览器的情况。

级别: 严重 (CRITICAL)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "session_use_after_expire:joebob1",
    "level": "CRITICAL",
    "description": "User joebob1 attempted access after session expired.",
    ...
}

系统事件 [SYS]

sys_startup:[userid]

描述 当系统首次启动时,记录启动事件可能很有价值,即使系统是无服务器或容器,尤其是在可能记录启动系统的用户时。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "sys_startup:joebob1",
    "level": "WARN",
    "description": "User joebob1 spawned a new instance",
    ...
}

sys_shutdown:[userid]

描述 当系统关闭时,记录该事件可能很有价值,即使系统是无服务器或容器,尤其是在可能记录启动系统的用户时。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "sys_shutdown:joebob1",
    "level": "WARN",
    "description": "User joebob1 stopped this instance",
    ...
}

sys_restart:[userid]

描述 当系统重启时,记录该事件可能很有价值,即使系统是无服务器或容器,尤其是在可能记录启动系统的用户时。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "sys_restart:joebob1",
    "level": "WARN",
    "description": "User joebob1 initiated a restart",
    ...
}

sys_crash[:reason]

描述 如果可能捕获导致系统崩溃的不稳定条件,记录该事件可能会有帮助,特别是如果该事件是由攻击触发的。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "sys_crash:outofmemory,
    "level": "WARN",
    "description": "The system crashed due to Out of Memory error.",
    ...
}

sys_monitor_disabled:[userid,monitor]

描述 如果你的系统包含负责文件完整性、资源、日志记录、病毒等的代理,那么了解它们是否被停止以及由谁停止尤为重要。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "sys_monitor_disabled:joebob1,crowdstrike",
    "level": "WARN",
    "description": "User joebob1 has disabled CrowdStrike",
    ...
}

sys_monitor_enabled:[userid,monitor]

描述 如果你的系统包含负责文件完整性、资源、日志记录、病毒等的代理,那么了解它们在停止后是否再次启动以及由谁启动尤为重要。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "sys_monitor_enabled:joebob1,crowdstrike",
    "level": "WARN",
    "description": "User joebob1 has enabled CrowdStrike",
    ...
}

用户管理 [USER]

user_created:[userid,newuserid,attributes[one,two,three]]

描述 创建新用户时,记录用户创建事件的详细信息很有帮助,特别是当新用户可以被授予管理权限时。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "user_created:joebob1,user1,admin:create,update,delete",
    "level": "WARN",
    "description": "User joebob1 created user1 with admin:create,update,delete privilege attributes",
    ...
}

user_updated:[userid,onuserid,attributes[one,two,three]]

描述 更新用户时,记录用户更新事件的详细信息很有帮助,特别是当用户可以被更新为管理权限时。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "user_updated:joebob1,user1,admin:create,update,delete",
    "level": "WARN",
    "description": "User joebob1 updated user1 with attributes admin:create,update,delete privilege attributes",
    ...
}

user_archived:[userid,onuserid]

描述 除非有要求,否则最好是归档用户而不是删除用户。归档用户时,记录用户归档事件的详细信息很有帮助。恶意用户可能会利用此功能拒绝合法用户服务。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "user_archived:joebob1,user1",
    "level": "WARN",
    "description": "User joebob1 archived user1",
    ...
}

user_deleted:[userid,onuserid]

描述 除非有要求,否则最好是归档用户而不是删除用户。删除用户时,记录用户删除事件的详细信息很有帮助。恶意用户可能会利用此功能拒绝合法用户服务。

级别: 警告 (WARN)

示例

{
    "datetime": "2019-01-01 00:00:00,000",
    "appid": "foobar.netportal_auth",
    "event": "user_deleted:joebob1,user1",
    "level": "WARN",
    "description": "User joebob1 has deleted user1",
    ...
}

排除项

与你记录什么同样重要的是你不记录什么。私密或机密信息、源代码、密钥、证书等绝不应被记录。

有关应从日志记录中排除的项目的全面概述,请参阅 OWASP 日志记录备忘单