将NGINX中的403错误重定向为null或silent

时间:2015-11-18 21:51:52

标签: logging nginx error-handling

我没有在网上找到这方面的帮助,也找不到我需要做的文件...问题是解决方案几乎和问题一样多。现在我需要一个解决方案的解决方案。任何答案如何或链接到控制nginx错误输出的文档将是伟大的。

最初的解决方案和环境: 我有一个PCI安全的Web服务器。对它的攻击是常规的。一切都很好,处理负荷低,30-40MB日志文件,直到OpenVAS在网络上发布。

然后我的服务器流量飙升,nginx使用率上升了400%,PHP后端使用率上升了5000%。日志跃升至130 + MB。这一增长完全是许多新IPS使用新工具包探测盒子的结果。它冲到了后端,我不得不做出一些激烈的回应......

现在,cron会定期查看日志;任何IP请求> X00请求在一小时内,请求已知的URL黑客或其他逻辑;被添加到阻止列表中并重新加载nginx以消除攻击。此后大多数事情都恢复正常。

新问题:

我需要帮助,nginx是如何处理拒绝的。

当我以前访问我的错误日志时,我发现了10-100行错误或通知我需要检查,更正,并推高以保持盒子安全和整洁。

然而,Nginx认为每个拒绝错误...我的每周错误日志现在是300,000行:

2015/11/15 23:01:30 [error] 22040#0: *432212 access forbidden by rule, client: z.z.z.z, server: secure.mydomain.com, request: "GET /cadcd01153160add.aspx HTTP/1.1", host: "x.x.x.x"

有100行错误,有些地方我需要解决...

是的,我可以将它们过滤掉,但是此功能现在将访问日志中的条目复制到错误日志中,因此原始的35MB访问+ 100个错误行日志现在定期为270MB。如果这种情况继续下去,我可能需要为日志获得一个单独的驱动器! (因为攻击正在增加)所以单个框可以处理负载并阻止攻击,但创建了日志文件大小限制的致命弱点。

如何抑制或重定向" 403"因为没有错误并且阻止它充斥日志文件所以我可以减少重复条目,日志大小(错误日志)并更容易地完成我的例程?

3 个答案:

答案 0 :(得分:1)

server {
  listen 127.0.0.1:80;
  server_name 127.0.0.1;
# block access to "web.config"
  location ~ /web.config$ {deny all; error_log off;}
# block access to ".htaccess", ".git" and etc.
  location ~ /\. {deny all; error_log off;}
# single entry point to index.php?q={REQUEST_URI}
  location / {
    root %%_root;
    fastcgi_index index.php;
    fastcgi_pass 127.0.0.1:9000;
    include %%_include;
    fastcgi_param SCRIPT_NAME /index.php;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
  }
}

答案 1 :(得分:0)

我刚刚发现了这一点,看起来很有希望:https://www.nginx.com/resources/admin-guide/logging-and-monitoring/#syslog

我可以过滤记录哪些事件,或将某些错误状态定向到特定的日志文件。这可以将403与我需要审查的错误分开。

答案 2 :(得分:0)

您可以做的,并且过去曾为我工作,是重新定义过滤流量的块上的日志级别。 就我而言,我使用的是位置指令,所以我要做的就是:

  location ~* /lucee/ {
    error_log    /var/log/nginx/error.log emerg;
    deny all; # block access
  }

将日志级别设置为emerg将防止记录错误级别消息,并且仅适用于此特定位置,因此所有其他错误消息应保持不变。