当前位置:   article > 正文

强化Nginx安全防线:深度日志分析脚本揭示潜在威胁与异常行为_nginx 日志分析是否被攻击

nginx 日志分析是否被攻击

以下是一个示例脚本,采用bash shell编写,并包含了详细的代码注释。这个脚本旨在帮助管理员快速识别潜在的安全威胁,如SQL注入、XSS攻击、异常请求频率等,通过分析Nginx的访问日志(access.log)。请注意,实际使用时,请根据您的Nginx日志路径和特定安全规则进行相应调整。

 

Bash

  1. #!/bin/bash
  2. # 定义脚本参数和常量
  3. LOG_DIR="/var/log/nginx" # Nginx日志目录
  4. ACCESS_LOG="access.log" # 访问日志文件名
  5. REPORT_DIR="/tmp/nginx_logs_analysis" # 报告保存目录
  6. REPORT_FILE="security_report.txt" # 报告文件名
  7. # 创建报告目录(如果不存在)
  8. mkdir -p "$REPORT_DIR"
  9. # 定义安全规则关键词
  10. SQL_INJECTION_KEYWORDS=("select" "union" "and" "or" "drop" "update" "insert" "delete" "' OR '" "' AND '" "'--'")
  11. XSS_ATTACK_KEYWORDS=("script" "eval" "document.write" "innerHTML")
  12. FREQ_THRESHOLD=100 # 单个IP访问频率阈值(单位时间内)
  13. # 定义辅助函数:检查日志中是否存在指定关键词
  14. function check_for_keywords {
  15. local LOG_FILE="$1"
  16. local KEYWORDS=("$@")
  17. while read -r LINE; do
  18. for KEYWORD in "${KEYWORDS[@]}"; do
  19. if [[ $LINE =~ $KEYWORD ]]; then
  20. echo "$LINE" >> "$REPORT_DIR/$REPORT_FILE"
  21. echo "Potential security issue found: $KEYWORD" >> "$REPORT_DIR/$REPORT_FILE"
  22. fi
  23. done
  24. done < "$LOG_FILE"
  25. }
  26. # 分析Nginx日志,查找SQL注入和XSS攻击迹象
  27. echo "Searching for SQL injection attempts..."
  28. check_for_keywords "$LOG_DIR/$ACCESS_LOG" "${SQL_INJECTION_KEYWORDS[@]}"
  29. echo "Searching for XSS attack attempts..."
  30. check_for_keywords "$LOG_DIR/$ACCESS_LOG" "${XSS_ATTACK_KEYWORDS[@]}"
  31. # 分析日志中的IP访问频率
  32. echo "Analyzing IP access frequency..."
  33. cat "$LOG_DIR/$ACCESS_LOG" | awk '{print $1}' | sort | uniq -c | sort -rn | awk -v threshold="$FREQ_THRESHOLD" '$1 > threshold {print $2, $1}' >> "$REPORT_DIR/$REPORT_FILE"
  34. # 输出完成提示和报告位置
  35. echo "Nginx log security analysis complete. Report available at: $REPORT_DIR/$REPORT_FILE"

脚本解释与注释:

  1. 脚本开头:定义脚本的执行环境为bash,并指定了Nginx日志目录、访问日志文件名、报告保存目录和报告文件名。

  2. 定义安全规则关键词:列举了用于识别SQL注入和XSS攻击的关键词列表。可以根据实际情况扩展或调整这些关键词。

  3. 辅助函数check_for_keywords:接受一个日志文件名和一组关键词作为参数。它逐行读取日志文件,对每一行检查是否包含任意关键词。如果找到匹配项,则将该行日志和对应的关键词写入报告文件,表明存在潜在安全问题。

  4. 分析Nginx日志:分别调用check_for_keywords函数,针对SQL注入和XSS攻击关键词进行日志扫描。

  5. 分析IP访问频率:使用awk、sort和uniq组合命令,从访问日志中提取IP地址,计算每个IP的访问次数,并按访问次数降序排列。设定一个阈值(如100),仅列出访问次数超过该阈值的IP及其访问次数,将结果追加到报告文件中。这有助于识别异常或潜在恶意的高频访问IP。

  6. 输出完成提示和报告位置:脚本执行完毕后,告知用户分析已完成,并提供报告文件的完整路径。

使用此脚本时,请确保脚本具有读取Nginx日志文件的权限,并根据实际环境调整日志路径和安全规则。运行脚本后,生成的报告将包含所有潜在的安全问题(SQL注入和XSS攻击)以及访问频率异常的IP列表,供管理员进一步调查和采取相应防护措施。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/702616
推荐阅读
相关标签
  

闽ICP备14008679号