赞
踩
以下是一个示例脚本,采用bash shell编写,并包含了详细的代码注释。这个脚本旨在帮助管理员快速识别潜在的安全威胁,如SQL注入、XSS攻击、异常请求频率等,通过分析Nginx的访问日志(access.log)。请注意,实际使用时,请根据您的Nginx日志路径和特定安全规则进行相应调整。
Bash
- #!/bin/bash
-
- # 定义脚本参数和常量
- LOG_DIR="/var/log/nginx" # Nginx日志目录
- ACCESS_LOG="access.log" # 访问日志文件名
- REPORT_DIR="/tmp/nginx_logs_analysis" # 报告保存目录
- REPORT_FILE="security_report.txt" # 报告文件名
-
- # 创建报告目录(如果不存在)
- mkdir -p "$REPORT_DIR"
-
- # 定义安全规则关键词
- SQL_INJECTION_KEYWORDS=("select" "union" "and" "or" "drop" "update" "insert" "delete" "' OR '" "' AND '" "'--'")
- XSS_ATTACK_KEYWORDS=("script" "eval" "document.write" "innerHTML")
- FREQ_THRESHOLD=100 # 单个IP访问频率阈值(单位时间内)
-
- # 定义辅助函数:检查日志中是否存在指定关键词
- function check_for_keywords {
- local LOG_FILE="$1"
- local KEYWORDS=("$@")
- while read -r LINE; do
- for KEYWORD in "${KEYWORDS[@]}"; do
- if [[ $LINE =~ $KEYWORD ]]; then
- echo "$LINE" >> "$REPORT_DIR/$REPORT_FILE"
- echo "Potential security issue found: $KEYWORD" >> "$REPORT_DIR/$REPORT_FILE"
- fi
- done
- done < "$LOG_FILE"
- }
-
- # 分析Nginx日志,查找SQL注入和XSS攻击迹象
- echo "Searching for SQL injection attempts..."
- check_for_keywords "$LOG_DIR/$ACCESS_LOG" "${SQL_INJECTION_KEYWORDS[@]}"
- echo "Searching for XSS attack attempts..."
- check_for_keywords "$LOG_DIR/$ACCESS_LOG" "${XSS_ATTACK_KEYWORDS[@]}"
-
- # 分析日志中的IP访问频率
- echo "Analyzing IP access frequency..."
- 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"
-
- # 输出完成提示和报告位置
- echo "Nginx log security analysis complete. Report available at: $REPORT_DIR/$REPORT_FILE"

脚本解释与注释:
脚本开头:定义脚本的执行环境为bash,并指定了Nginx日志目录、访问日志文件名、报告保存目录和报告文件名。
定义安全规则关键词:列举了用于识别SQL注入和XSS攻击的关键词列表。可以根据实际情况扩展或调整这些关键词。
辅助函数check_for_keywords
:接受一个日志文件名和一组关键词作为参数。它逐行读取日志文件,对每一行检查是否包含任意关键词。如果找到匹配项,则将该行日志和对应的关键词写入报告文件,表明存在潜在安全问题。
分析Nginx日志:分别调用check_for_keywords
函数,针对SQL注入和XSS攻击关键词进行日志扫描。
分析IP访问频率:使用awk、sort和uniq组合命令,从访问日志中提取IP地址,计算每个IP的访问次数,并按访问次数降序排列。设定一个阈值(如100),仅列出访问次数超过该阈值的IP及其访问次数,将结果追加到报告文件中。这有助于识别异常或潜在恶意的高频访问IP。
输出完成提示和报告位置:脚本执行完毕后,告知用户分析已完成,并提供报告文件的完整路径。
使用此脚本时,请确保脚本具有读取Nginx日志文件的权限,并根据实际环境调整日志路径和安全规则。运行脚本后,生成的报告将包含所有潜在的安全问题(SQL注入和XSS攻击)以及访问频率异常的IP列表,供管理员进一步调查和采取相应防护措施。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。