亚洲国产第一_开心网五月色综合亚洲_日本一级特黄特色大片免费观看_久久久久久久久久免观看

Hello! 歡迎來到小浪云!


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


avatar
小浪云 2025-03-12 56

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

本文介紹幾種利用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;         }     } }

方法二:使用deny模塊屏蔽高頻訪問IP

針對瞬時高并發攻擊,deny模塊結合監控腳本可有效阻止特定IP。腳本定時分析日志,更新需要屏蔽的IP列表,并重新加載nginx配置。

示例配置及腳本(php):

  1. 創建blocksip.conf文件,存儲需屏蔽的IP地址。
  2. 使用php腳本(例如blocksip.php)分析Nginx日志,將訪問次數超過閾值的IP添加到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(" ", $data);     foreach($lines as $line) {         list($ip, $count) = explode(" ", $line);         if ($count > 10) {             file_put_contents($blockFile, "deny $ip; ", FILE_APPEND);         }     } } ?>

方法三:借助日志分析工具

專業的日志分析工具能更有效率地監控和分析Nginx日志。

示例工具

  • GoAccess: 開源實時日志分析工具,支持多種日志格式。
  • elk Stack (Elasticsearch, Logstash, Kibana): 強大的日志分析和可視化平臺。
  • Fluentd: 開源數據收集器,可將日志推送到監控平臺如Prometheus、grafana

方法四:自定義腳本分析日志并屏蔽惡意IP

可編寫Python等腳本自動識別并屏蔽高頻訪問IP。

示例腳本(bash):

#!/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

總結:

合理運用以上方法,結合limit_req、deny模塊和日志分析工具,可以有效監控和防御惡意訪問,保障服務器安全。 選擇何種方法取決于實際需求和技術能力。

相關閱讀