当前位置: > Linux服务器 > nginx >

分析 nginx / apache 日志,干掉攻击的IP

时间:2015-06-28 20:30来源:linux.it.net.cn 作者:IT
最近有骚扰!!不间断会在某个时间突然被海量 IP 袭击,导致宽带耗尽而挂。因此写了个脚本!用于分析 Nginx / Apache 日志,识别出一定记录行数内超过某个数量的IP。然后用 Nginx 的 deny 拒绝访问。

[Shell/批处理]代码

#!/bin/sh
########################################

nginx_home="/opt/nginx/conf"            #你的nginx配置目录
log_path="/data/logs/web_log/www_gznow_cn_access.log"    #你的日志路径

########################################

tail -100 ${log_path} \
|grep -i -v -E "dnspod|google|yahoo|baidu|msnbot|FeedSky|sogo" \
|awk '{print $1}' |sort |uniq -c|sort -nr|head \
|awk '{if($1>80)print "deny "$2";"}' > ${nginx_home}/safe_block_deny.conf

#关键变量解释
#tail -100 ${log_path} 读取日志中最近100行记录
#|grep -i -v -E "dnspod|google|yahoo|baidu|msnbot|FeedSky|sogo" 搜索引擎等蜘蛛除外
#|awk '{print $1}' |sort |uniq -c|sort -nr|head 合并重复记录,并计算数量
#|awk '{if($1>80)print "deny "$2";"}' > ${nginx_home}/safe_block_deny.conf
#多于80行的IP将在nginx配置目录生成 Nginx deny 语法的配置文件给予调用。 
#以上变量大家使用的时候根据需要修改吧。
(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容