117.info
人生若只如初见

如何用Nginx日志监控恶意访问

使用Nginx日志监控恶意访问可以通过以下几种方法实现:

1. 使用Nginx的limit_req模块限制访问频率

Nginx提供了limit_req模块,可以限制同一IP在一段时间内的访问总次数或并发请求次数。例如,可以配置每分钟请求不超过20次,超过则返回503错误。

http {
    limit_req_zone $binary_remote_addr zone=onelimit:10m rate=20r/m;

    server {
        ...
        location / {
            limit_req zone=onelimit burst=5 nodelay;
            limit_req_log_level warn;
        }
    }
}

2. 使用Nginx的deny模块禁止频繁访问的IP

对于limit_req模块无法控制的瞬时高请求次数,可以使用deny模块来禁止一天内访问次数超过指定次数的IP。需要编写一个监控脚本,定时更新禁止IP列表。

示例配置和脚本

  1. 创建blocksip.conf文件,包含需要屏蔽的IP。
  2. 编写监控脚本(如PHP脚本blocksip.php),定时分析Nginx访问日志,更新blocksip.conf文件,并重新加载Nginx配置。
 10) {
            file_put_contents($blockFile, "deny $ip;\n", FILE_APPEND);
        }
    }
}
?>

3. 使用日志分析工具

可以使用一些日志分析工具来更方便地监控和分析Nginx日志。

示例工具

  • GoAccess:一个开源的实时日志分析工具,支持多种格式,包括Nginx日志。
  • ELK Stack(Elasticsearch, Logstash, Kibana):通过Logstash将Nginx日志数据传输到Elasticsearch中,并使用Kibana进行可视化和监控。
  • Fluentd:一个开源的数据收集器,可以将Nginx日志推送到监控平台如Prometheus、Grafana等。

4. 编写自定义脚本分析日志并屏蔽恶意IP

可以编写一个Python脚本来分析Nginx访问日志,自动找出频繁访问的IP并屏蔽它们。

示例脚本

#!/bin/bash
DATE=$(date +%d/%b/%Y:%H:%M)
LOG_FILE=/usr/local/nginx/logs/access.log
ABNORMAL_IP=$(tail -n5000 $LOG_FILE | grep $DATE | awk '{a[$1]++} END {for(i in a) if(a[i]>10) print i}')

for IP in $ABNORMAL_IP; do
    if [ $(iptables -vnL | grep -c "$IP") -eq 0 ]; then
        iptables -I INPUT -s $IP -j DROP
        echo "$(date +'%F_%T') $IP" >> /tmp/drop_ip.log
    fi
done

总结

通过上述方法,可以有效地利用Nginx日志监控和防范恶意访问。结合使用limit_reqdeny模块和日志分析工具,可以更全面地识别和应对各种恶意访问行为。

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe5c9AzsKCARRBVA.html

推荐文章

  • Compton对Linux多屏支持如何

    Compton是一个轻量级的窗口管理器,专为Xorg和Wayland窗口系统设计,用于创建虚拟桌面和提供窗口特效。Compton本身并不直接管理多屏显示,但它可以与xrandr等工具...

  • Linux如何实现Hadoop高可用

    在Linux上实现Hadoop高可用性主要通过配置多个NameNode节点、使用ZooKeeper进行协调和控制、设置多个数据副本以及配置故障转移和监控系统来实现。以下是详细的步...

  • Linux下Zookeeper节点怎么创建

    在Linux下,使用Zookeeper客户端创建节点的步骤如下: 首先确保已经安装了Java和Zookeeper。如果还没有安装,请参考以下链接进行安装: Java: https://www.oracl...

  • Linux中GitLab的权限设置怎么做

    在Linux中,GitLab的权限设置主要涉及到用户、组和访问控制。以下是一些建议的步骤来设置GitLab的权限: 创建用户和组: 首先,你需要创建用户和组来管理GitLab的...

  • 如何在SecureCRT中配置Debian的防火墙规则

    在SecureCRT中配置Debian的防火墙规则可以通过以下步骤完成: 安装和启用UFW: 在Debian系统上安装UFW(Uncomplicated Firewall):sudo apt update
    sudo a...

  • Debian Yum软件包冲突怎么办

    首先,需要澄清一点:Yum 是 CentOS、RHEL(Red Hat Enterprise Linux)和 Fedora 等基于 RPM 的 Linux 发行版中使用的包管理器,而不是 Debian 系统使用的包管理...

  • Debian Java有哪些优化技巧

    在Debian系统上优化Java应用程序的性能和稳定性,可以从多个方面入手,包括JVM参数调整、代码层面的优化、系统资源优化等。以下是一些具体的优化技巧:
    JVM...

  • ubuntu中nodejs能卸载吗

    是的,在Ubuntu中可以卸载Node.js。以下是几种卸载Node.js的方法:
    方法一:使用APT包管理器卸载 更新APT包列表:
    sudo apt update 卸载Node.js及其相...