溫馨提示×

如何用Nginx日志監控惡意訪問

小樊
63
2025-03-11 08:26:04
欄目: 編程語言

使用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配置。
<?php
$blockFile = "/etc/nginx/blocksip.conf";
$logs = ["/var/log/nginx/access-site1.log", "/var/log/nginx/access-site2.log"];
$blocks = file_get_contents($blockFile);
$n = 0;
foreach($logs as $log) {
    $data = shell_exec("cat $log | awk -F ' ' '{print $1}' | sort | uniq -c | sort -n -r | head -n 20");
    $lines = explode("\n", $data);
    foreach($lines as $line) {
        list($ip, $count) = explode(" ", $line);
        if ($count > 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_req、deny模塊和日志分析工具,可以更全面地識別和應對各種惡意訪問行為。

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女