nginx从包含特定值的access_log中删除POST

时间:2018-02-28 10:17:04

标签: linux nginx logging nginx-location access-log

如何从access_logs中删除包含敏感信息的某些行。该信息通过POST提供,并在$ request_body

中发送

以下方式失败:

1>

log_format filter             '[$time_iso8601] $remote_addr "$request" $status $body_bytes_sent $upstream_response_time "$http_referer" "$http_user_agent" $request_body';

      set $temp $request;
      if ($temp ~* '{\\x22username\\x22:\\x22*.*\\x22,\\x22password\\x22:\\*.*\\x22}') {
          set $temp $1password:****$2;
      }

      access_log /var/log/nginx/access_kibana.log filter if=$request;
      proxy_pass http://kibana;

结果:没有任何反应,敏感数据仍在access_log中

2 - ;

   set $sensitive $request;
      if ($sensitive ~ ("password")) {
           set $sensitive $1test:test$2;
      }
      access_log /var/log/nginx/access_kibana.log filter if=$request;
      proxy_pass http://kibana;

这种传统的方法可能在过去有效,但在我的情况下它并没有

3>作品。但完全删除所有$ request_body日志..

if ($sensitive ~ ("password")) {
           set $loggable 0;
      }

有没有人有解决此问题的文件/经验? 希望能够接受这个教育。提前谢谢你

1 个答案:

答案 0 :(得分:0)

在你们提出专业建议之前,我会分享决议。

访问日志中的日志条目如下所示:

2018-02-27T06:56:10-08:00] 10.10.10.10 - "POST /api/security/v1/login HTTP/1.1" 200 0 0.012 "http://10.10.10.10/login" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:57.0) Gecko/20100101 Firefox/57.0" {\x22username\x22:\x22user\x22,\x22}

为了从访问日志中仅删除此条目,我们必须搜索包含api安全登录和版本的POST条目,并在位置配置中进行设置。

 if ($request ~ "POST \/api\/security\/v1\/login HTTP\/{1,9}.{1,9}") {
    set $loggable 0;
  }

感谢您的帮助