首页 > 系统相关 >Nginx日志分析- AWK命令快速分析日志--封禁访问请求最多、最频繁的恶意ip

Nginx日志分析- AWK命令快速分析日志--封禁访问请求最多、最频繁的恶意ip

时间:2023-08-11 11:34:14浏览次数:32  
标签:sort -- ip nginx awk conf IP 日志

Nginx日志常用分析命令示范(注:日志的格式不同,awk取的项不同。下面命令针对上面日志格式执行)

1.分析日志的方法

1)总请求数

cd /usr/local/nginx/logs/
wc -l  access.log |awk '{print $1}'
16625

2)独立IP数

awk '{print $1}' access.log|sort |uniq |wc -l
400

3)每秒客户端请求数 TOP5

awk '{print $6}' access.log|sort|uniq -c|sort -rn|head -5
   8766 "GET
   1854 "POST
      6 "CONNECT

4)访问最频繁IP Top5

awk '{print $1}' access.log|sort |uniq -c |sort -nr |head -5
   2838 27.184.246.180
   2268 172.26.189.214
    576 114.254.0.24
    332 223.72.43.2
    286 27.187.39.122

5)访问最频繁的URL TOP5

awk '{print $7}' access.log|sort |uniq -c |sort -nr |head -5

6)响应大于5秒的URL TOP5

awk '{if ($7 > 5){print $6}}' access.log|sort|uniq -c|sort -rn |head -5

7)HTTP状态码(非200)统计 Top5

awk '{if ($11 != 200){print $11}}' access.log|sort|uniq -c|sort -rn|head -5

8)分析请求数大于50000的源IP

cat access.log|awk '{print $NF}'|sort |uniq -c |sort -nr|awk '{if ($1 >50000){print $2}}'

9)访问次数最多的前十个IP

awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -n 10
   2937 27.184.246.180
   2296 172.26.189.214
    594 114.254.0.24
    332 223.72.43.2
    299 27.187.39.122
    174 218.12.19.65
    147 27.187.36.95
    146 27.186.124.88
    143 114.254.0.118
    125 101.18.141.71

sort -nr 按照数字进行降序排序
unqi -c 合并重复行,并记录重复次数。
sort:对IP部分进行排序
head -n 10:取排在前10位的IP

前面是ip的访问次数,后面是ip,很明显我们需要把访问次数多的ip并且不知道哪里的ip屏蔽掉,如下面结果, 如 27.184.246.180 为不知道是哪的则需要屏蔽:

2、屏蔽IP的方法:

在/usr/local/nginx/conf/目录下面,新建屏蔽ip文件,命名为guolv_ip.conf,以后新增加屏蔽ip只需编辑这个文件即可。
加入如下内容并保存:
deny 27.184.246.180;
在nginx的配置文件nginx.conf中加入如下配置,可以放到http, server, location语句块,需要注意相对路径,本例当中nginx.conf,guolv_ip.conf在同一个目录中。

include guolv_ip.conf;
保存nginx.conf文件,然后测试现在的nginx配置文件是否是合法的:

nginx -t
如果配置没有问题,就会输出:

the configuration file /opt/nginx/conf/nginx.conf syntax is ok
configuration file /opt/nginx/conf/nginx.conf test is successful
如果配置有问题就需要检查下哪儿有语法问题,如果没有问题,需要执行下面命令,重载 nginx 配置文件:

service nginx reload

3、注意:

屏蔽ip的配置文件既可以屏蔽单个ip,也可以屏蔽ip段,或者只允许某个ip或者某个ip段访问。

//屏蔽单个ip访问
deny IP;

//允许单个ip访问
allow IP;

//屏蔽所有ip访问
deny all;

//允许所有ip访问
allow all;

//屏蔽整个段即从123.0.0.1到123.255.255.254访问的命令
deny 123.0.0.0/8

//屏蔽IP段即从123.45.0.1到123.45.255.254访问的命令
deny 124.45.0.0/16

//屏蔽IP段即从123.45.6.1到123.45.6.254访问的命令
deny 123.45.6.0/24

//如果你想实现这样的应用,除了几个IP外,其他全部拒绝,
//那需要你在guolv_ip.conf中这样写
allow 1.1.1.1;
allow 1.1.1.2;
deny all;

单独网站屏蔽IP的方法,把include guolv_ip.conf; 放到网址对应的在server{}语句块,
所有网站屏蔽IP的方法,把include guolv_ip.conf; 放到http {}语句块。



作者:前浪浪奔浪流
链接:https://www.jianshu.com/p/68feb29abe49
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:sort,--,ip,nginx,awk,conf,IP,日志
From: https://www.cnblogs.com/gaoyanbing/p/17622594.html

相关文章

  • 使用awk分析nginx访问日志access.log
    1.awk简介awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk的处理文本和数......
  • 推出稳定代码:人工智能辅助编码的新视野
    推荐:使用NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景 在不断发展的软件开发环境中,对效率和可访问性的追求导致了各种工具和平台的创建。最新的创新之一是StableCode,这是StabilityAI的大型语言模型(LLM)生成AI产品。StableCode旨在帮助经验丰富的程序员和有抱负的开发......
  • keepalived安装及配置文件详解
    一、安装Keepalived服务两种安装方式:(1)yum方式安装yum-yinstallkeepalived#查看安装路径rpm-qlkeepalived(2)源码安装1)安装依赖yum-yinstallgccopenssl-devellibnfnetlink-devel2)下载源码wgethttps://www.keepalived.org/software/keepalived-1.4.5.tar.......
  • 时序分析:Python 中的 ARIMA 模型
    推荐:使用NSDT场景编辑器快速助你搭建可二次编辑的3D应用场景什么是ARIMA模型?ARIMA模型是用于分析和预测时间序列数据的统计模型。ARIMA方法明确迎合了时间序列中的标准结构,为制作熟练的时间序列预测提供了一种简单而强大的方法。ARIMA代表自回归积分移动平均线。它结合了三......
  • §2. 数集 ▪ 确界原理
    §2.数集▪ 确界原理掌握区间和邻域的概念。掌握有界集和无界集的定义,能够证明一个数集是否是有界集(例1)。掌握上(下)确界的定义,能够计算一个给定数集的上(下)确界(例2、例5)。确界原理。重点习题:习题2、4、5、6,习题2、5、6的结论需要背下来。  上确界的另一种定义:S是中的......
  • Django 标签未注册解决办法 Invalid block tag on line 9: 'ifequal'. Did you forget
     这是一个常见问题,但不要担心!一旦您了解了导致模板标记错误的原因,无论是拼写错误、语法还是忘记加载库,就可以轻松修复它。Django中的标签是什么?Django中的标签为Django模板添加了特殊功能,允许您在模板中执行操作。例如,使用标签,您可以以特定格式显示数据、循环访问上下文......
  • C++ 字符串拼接技巧(stringstream、字符串迭代器、字符串的加法运算符、std::accumulat
    在C++中,经常需要将多个字符串拼接成一个大字符串。这个过程很容易出错,但有一些技巧可以帮助我们轻松地实现这个目标。本文将介绍一些C++中join字符串的技巧。一、使用stringstreamstringstream是一个流。使用它可以将多个字符串连接起来,然后将它们转换为一个字符串。可......
  • Elasticsearch 快照管理
    准备共享目录mkdir/data/esbackupchown-Relasticsearch:elasticsearch /data/esbackupmount-tnfs192.168.1.110:/data/esbackup/data/esbackupvielasticsearch.yam添加配置:path.repo:["/data/esbackup"]注意:/home/esbackup这个路径必须确保集群所有节点都可以访问......
  • ES 常用查询语句
    配置查询_cluster/settings_cluster/settings?flat_settings_cluster/settings?include_defaults_cluster/settings?include_defaults&flat_settings/_stats/fielddata/_stats/fielddata?fields=*/_nodes/stats/indices/fielddata?fields=*/_nodes/stats/indices/fielddata?l......
  • ES 时间格式
    ES中的日期类型Elasticsearch在索引创建之前并不是必须要创建索引的mapping。关系型数据库的思维就是在于写入数据之前,并不强制创建表结构。我们不用事先声明字段名称,字段类型以及长度等属性就可以直接向一个不存在的表中直接写入数据。Elasticsearch把这种特性称之为dynamicm......