在Nginx日志中识别攻击可以通过以下几种方法:
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10
这条命令的作用是读取access.log文件,从每一行中提取出第一个字段(即客户端IP地址),对这些字段进行排序,统计每个字段出现的次数,并去除连续的重复项,按照出现次数从高到低排序,输出出现次数最多的前10个IP地址。
grep '104.28.229.11' /var/log/nginx/access.log-20240428
这条命令将目光聚焦在特定IP地址上,查看该IP在特定时间段内的访问记录,从而发现可能的攻击行为。
union
, select
, insert
等)的请求。#!/bin/bash
if [ "$1" == "sql" ]; then
grep -E ' (200302301500) ' access.log | grep -i -E "('and and%20and\and-and@and\(or or%20or\or-or@or\(--selectif\(case whenmake_setelt extractvalueupdatexmlcast\(sleep\(benchmarkgenerate_seriesunionorder by).*?HTTP/1.1"
elif [ "$1" == "xss" ]; then
grep -v ' (200302301500) ' access.log | grep -i -E "(javascriptdata:vbscriptexpressioned2konerroronmouseroveronloadonclickonbluronfocuseval\(fromCharCode%3E%3C%25%27%0a).*?HTTP/1.1"
fi