nginx日志中如何识别攻击

497
2025/2/14 0:32:22
栏目: 网络安全
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在Nginx日志中识别攻击可以通过以下几种方法:

识别异常活跃的IP地址

  • 使用以下命令可以快速找出访问日志中异常活跃的IP地址:
cat access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -10

这条命令的作用是读取access.log文件,从每一行中提取出第一个字段(即客户端IP地址),对这些字段进行排序,统计每个字段出现的次数,并去除连续的重复项,按照出现次数从高到低排序,输出出现次数最多的前10个IP地址。

分析高频访问IP的行为

  • 通过上述命令找到频繁出现的IP地址后,可以进一步分析这些IP的具体行为,例如:
grep '104.28.229.11' /var/log/nginx/access.log-20240428

这条命令将目光聚焦在特定IP地址上,查看该IP在特定时间段内的访问记录,从而发现可能的攻击行为。

检测常见的攻击类型

  • SQL注入攻击:可以通过分析访问日志中的请求参数来识别SQL注入攻击。例如,搜索包含SQL关键字(如union, select, insert等)的请求。
  • XSS攻击:搜索包含JavaScript代码的请求,特别是那些通过URL参数注入的脚本。

使用脚本自动化分析

  • 可以编写shell脚本来自动化上述分析过程。例如,以下脚本用于搜索SQL注入和XSS攻击的关键字:
#!/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

封锁攻击IP

  • 找到攻击IP地址后,可以使用iptables或其他防火墙工具封锁这些IP的访问。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: centos安装redis的步骤是什么