过滤nginx日志并添加防火墙拒绝访问 centos7

#/bin/bash
#日志文件
logfile=‘/var/log/nginx/access.log‘

hours=1

#开始时间
start_time=date -d "-$hours hour" +"%H:%M:%S"
#echo $start_time

#结束时间
stop_time=date +"%H:%M:%S"

#echo $stop_time
#过滤出单位之间内的日志并统计最高ip数
array=($(tac $logfile | awk -v st="$start_time" -v et="$stop_time" ‘{t=substr($4,RSTART+14,21);if(t>=st && t<=et) {print $0}}‘ \
| awk ‘{print $1}‘ | sort | uniq -c | sort -nr |awk ‘{if($1 > 5000){print $0}}‘|awk ‘{print $2}‘))

wait

for each in ${array[@]}
do

echo $each

firewall-cmd --permanent --add-rich-rule="rule family=‘ipv4‘ source address=‘$each‘ reject"

done

firewall-cmd --reload

原文地址:http://blog.51cto.com/1054054/2295942

时间: 2024-10-16 06:27:13

过滤nginx日志并添加防火墙拒绝访问 centos7的相关文章

nginx日志不记录静态文件访问和缓存

nginx访问日志nginx和apache的访问日志一样可以记录的指定信息,如记录服务器时间,访问的客户端ip.访问的url和访问状态码等信息,这些信息会规律的记录到访问日志中主配置文件中定义的日志格式,记录的格式参数解释如下 $remote_addr ? ? ? ? ? ? ? ? ? 客户端访问IP(公网IP) $http_x_forwarded_for ? ? ? ? ? 记录代理服务器的IP $time_local ? ? ? ? ? ? ? ? ? ? 日志中服务器本地时间 $host

绑定网关IP和MAC地址时显示“ARP项添加失败:拒绝访问”的处理方法

绑定网关IP和MAC地址时显示"ARP项添加失败:拒绝访问" Win7系统,用arp -s命令在绑定网关IP和MAC地址时,总是提示 ARP 项添加失败: 拒绝访问.( 用管理员身份运行cmd也无效.)未找到原因. 后来google找到了另一个命令,搞定! 具体操作如下: 1.CMD中输入: netsh i i show in 然后找到本地连接对应 我的是Win7系统,今天用arp -s命令在绑定网关IP和MAC地址时,总是提示"ARP 项添加失败: 拒绝访问."(

nginx访问日志、Nginx日志切割、 静态文件不记录日志和过期时间

一:nginx访问日志 日志格式vim /usr/local/nginx/conf/nginx.conf //搜索log_format$remote_addr 客户端ip(公网ip)$http_x_forwarded_for 代理服务器的ip$time_local 服务器本地时间$host 访问主机名(域名)$request_uri 访问的url地址$status 状态码$http_referer referer$http_user_agent user_agent除了在主配置文件nginx.c

ELK实践(二):收集Nginx日志

Nginx访问日志 这里补充下Nginx访问日志使用的说明.一般在nginx.conf主配置文件里需要定义一种格式: log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for&qu

Nginx日志变量说明

# Nginx日志变量说明|   |   || ------------ | ------------ ||  $remote_addr |  记录访问网站的客户端ip地址. ||  $http_x_forwarded_for |  当前端有代理服务器时,设置Web节点记录客户端地址的配置,此参数生效的前提是代理服务器上也要进行相关的x_forwarded_for设置. ||$remote_user|远程客户端用户名称||$time_local|记录访问时间和时区||$request|用户的ht

nginx 日志过滤网络爬虫访问日志

nginx里面有很多的爬虫日志,会影响到后期的数据分析,所以一般会去掉. nginx排除配置: location / {                           #去掉爬虫 Start                           if ($http_user_agent ~* "bot|spider") {                                  access_log off;                            }   

Nginx日志过滤 使用ngx_log_if不记录特定日志

ngx_log_if是Nginx的一个第三方模块.它在Github上的描述是这样介绍的:ngx_log_if是一个独立的模块,允许您控制不要写的访问日志,类似于Apache的"CustomLog env = XXX" 第一步: 先到Github下载ngx_log_if地址https://github.com/cfsego/ngx_log_if/ 第二步: 安装第三方模块到Nginx.第三方模块的安装可以参考http://wiki.nginx.org/3rdPartyModules 使用

Logstash收集nginx日志之使用grok过滤插件解析日志

grok作为一个logstash的过滤插件,支持根据模式解析文本日志行,拆成字段. nginx日志的配置: log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"'; logst

nginx日志之错误日志及访问日志及日志分割

一.nginx错误日志 nginx软件会把自身运行的故障信息及用户访问的日志信息记录到指定的日志文件里 一般在nginx.conf配置文件第二行添加:error_log    logs/error.log    error : ↓                  ↓                  ↓ 关键字             日志文件       日志级别 其实如果不添加这行的话,默认就是这样 关于日志级别: 错误日志常见的级别有 :debug | info|notice | war