防止 Apache 2 服务器记录敏感数据

jst*_*str 5 security linux apache-2.2

Apache 2 默认记录整个请求 URI,包括每个请求的查询字符串。

防止 Apache 2 Web 服务器记录敏感数据(例如密码、信用卡号等)但仍记录请求的其余部分的直接方法是什么?

我想记录所有登录尝试,包括默认情况下 Apache 所做的尝试用户名,并防止 Apache 直接记录密码。

我已经查看了 Apache 2 文档,除了完全阻止记录这些请求(使用 SetEnvIf)之外,似乎没有其他简单的方法可以做到这一点。

我怎样才能做到这一点?

mie*_*iek 13

您可以通过将 CustomLog 指令与一些 sed 魔法相结合(如/sf/answers/663176041/ 中的说明),在它们最终出现在 access.log 之前屏蔽密码:

这将取代所有出现password=secretpassword=[FILTERED]/your/path/access.log

CustomLog "|/bin/sed -u -E s/'param=[^& \t\n]*'/'param=\[FILTERED\]'/g >> /your/path/access.log" combined
Run Code Online (Sandbox Code Playgroud)

话虽如此,如果可能的话,最好避免将敏感数据放入查询字符串中。

  • 伟大的解决方案。谢谢你。我发现sed并没有立即刷新日志,最初我以为日志没有写入但是当我重新加载Apache服务时,我可以看到日志。所以我通过添加“-u”开关解决了刷新问题。CustomLog "|/bin/sed -u -E s/'param=[^& \t\n]*'/'param=\[FILTERED\]'/g >> /your/path/access.log" 合并 (2认同)

小智 6

Apache 2 默认记录整个请求 URI,包括每个请求的查询字符串。

防止 Apache 2 Web 服务器记录敏感数据(例如密码、信用卡号等)但仍记录请求的其余部分的直接方法是什么?

我没看错,您在 URI 中将敏感信息作为 QueryString 发送?我建议更改应用程序,以便它首先这样做。

然后,不需要更改 apache,因为默认情况下它不会做任何这样的事情。

  • 我不相信这真的回答了这个问题。虽然建议是合理的,但“你做错了”并不是一个完整的答案,并且假设问题是由于无知而不是通过必要性提出的(例如,也许 jstr 对应用程序/设计和作为负责任的系统管理员,他们只是试图为他们实施更好的日志记录实践)。 (7认同)