我正在开发一个使用 SSO 的安全身份验证系统。到目前为止,我一直在使用日志框架来生成有助于调试应用程序的日志。我想知道是否有在 Web 应用程序中实现日志记录的指南。
例如,假设 Web 应用程序受到攻击,安全专业人员来分析日志,那么他将试图找出什么?如何让日志分析更简单?
我正在开发一个使用 SSO 的安全身份验证系统。到目前为止,我一直在使用日志框架来生成有助于调试应用程序的日志。我想知道是否有在 Web 应用程序中实现日志记录的指南。
例如,假设 Web 应用程序受到攻击,安全专业人员来分析日志,那么他将试图找出什么?如何让日志分析更简单?
如果是我,我想要以下内容:
X_FORWARDED_FOR)对于通过非透明代理进行跟踪是强制性的。在某些情况下,这些信息可能很庞大。通过每天拆分日志并以压缩格式归档它们,应该可以存储合理的日志历史记录。几周后删除更详细的信息(例如完整的 POST 数据)也是可以接受的,但这可能会限制事件响应和对日后检测到的攻击的取证的有效性。
除了多项式的建议之外,我建议特别注意身份验证尝试。即记录整个请求(包括用户代理 - 不是唯一标识符,而是有用的指示符)可能会以机器可读格式(*)隐藏密码。还有尝试是否成功。
由于您应该在尝试身份验证时更改会话 ID,因此您需要记录这两者(无论是否成功)。跟踪身份验证页面的相关内容(jss、css、图像)也是一种有用的措施,实际上,您甚至可以考虑在页面中添加不可缓存的内容。测量页面上的停留时间对于检测某些类型的攻击很方便。
测量生成 html 的时间以及将其卸载到客户端所需的时间,可以提供分析信息和对 sloloris 类型攻击的检测。
对于身份验证页面以外的页面,请参阅多项式列表,并且(其中用户 ID 与会话相关联,然后是用户 ID - 例如,请参阅mod_auth_memcookie)。
(*) 即字段分隔且易于解析