设为首页 收藏本站
查看: 893|回复: 0

[经验分享] shell脚本处理iis日志和网络蜘蛛的应付方法(待续)

[复制链接]

尚未签到

发表于 2018-12-10 12:37:57 | 显示全部楼层 |阅读模式
最近一段时间,公司的web遭受到sql注入和网络蜘蛛抓取数据的威胁,因为要对iis日志进行分析和查找,我想用linux 文本处理可能会快捷些,小弟shell脚本非常非常的菜,这里记录下部分的处理过程,以备后忘。关于爬虫的处理可以使用网上的终极方法或者给某段时间访问超过特定次数的ip加上动态验证码,我们暂时使用的方法是封掉并发超过50的ip,封掉一分钟内访问超过50的ip,根据我们的实际流量情况封掉日访问量超过10000的ip(排除搜索引擎)。可以将iis数据导入到linux中或者在windows上面自己装个linux的平台,如msys等:

1.查找iis日志中包含可能的sql注入字串(不区分大小写,一般的注入字串都是被加密的,我这里只说方法):
awk 'BEGIN {IGNORECASE=1 ;}$7~/update|cast|varchar/||$8~/%/{print }' ex090526_press210.log   > result.txt
2.查找某一个特定ip访问的静态文件
awk '{if($7~/jpg|gif|bmp|png/ && $11='222.73.173.11')print $0 }' ex090608.log |grep -v '222.730.1730.11
2.查找日访问量高于10000的ip (排查蜘蛛的可能)
awk '{print $11 }' ex090608.log |sort |uniq -c |sort -k1 -n -r |awk '{if($1>10000) print $2 }' > result.txt
3.因为公司做了静态的缓冲,所以封并发超过限定次数的ip地址等操作可以在squid上做,高手是这样写的(关于如何在系统上做并发的限制,本菜鸟尚在琢磨中,高手指点下啊):

#限制同一IP客户端的最大连接数
acl OverConnLimit maxconn 16
http_access deny OverConnLimit
#防止天涯盗链,转嫁给百度
acl tianya referer_regex -i tianya
http_access deny tianya
deny_info http://www.baidu.com/logs.gif tianya

#防止被人利用为HTTP代理,设置允许访问的IP地址
acl myip dst 192.168.1.1
http_access deny !myip ..

#防止百度机器人爬死服务器
acl AntiBaidu req_header User-Agent Baiduspider
http_access deny AntiBaidu
#允许本地管理
acl Manager proto cache_object
acl Localhost src 127.0.0.1 192.168.1.1
http_access allow Manager Localhost
http_access deny Manager
#仅仅允许80端口的代理
acl Safe_ports port 80 # http
http_access deny !Safe_ports
http_access allow all

4.据江湖传言,以下方法可以在iis本身上做限定,本鸟没有试验成功,原因是无论我怎么改,丫就是不执行,又不知道如何联系文章的作者,郁闷中。。。
http://bbs.huochepiao.com/html/150/125996.htm

5.关于如何在windows上封ip超过特定值的ip,待我试验下自己写的批处理后给出源码。
方法一:
今天有时间过来把这个问题整理下,因为是在windows平台上,所以要安装个linux的模拟环境,比如,wingw32等。还需要批量封ip的工具ipseccmd,下载地址:http://www.amdidc.cn/donghua/pc.rar
脚本1实现的功能是:定时访问当日的iis日志(格式:ex090618.log)截取每日访问量超过10000的ip地址,然后同搜索引擎的蜘蛛地址做对比,如果该ip不属于搜索引擎的范围,则直接把结果发送给待封的ip地址列表。。。。尽管还不是很合情理,但是目前没有实现动态验证也只能对付啦。其中ip2.txt中是搜索引擎的支柱地址,ip.txt中存放当日访问量超过10000的ip列表。代码2自然就是批量封ip的代码了。

代码1如下:(感谢cu高手指点)
#!/bin/bash
DATE=`date +%y%m%d`
FILE="ex${DATE}.log"
awk '{print $11}' ../../../$FILE |sort |uniq -c |sort -k1 -n -r |awk '{if( $1>10000)  print $2 " \t "}' > ip.txt
awk -F . 'NR==FNR{a[$1"."$2"."$3];next}!($1"."$2"."$3 in a)'  ip2.txt ip.txt > ../../../pc/result.txt
或者
#!/bin/bash
DATE=`date +%y%m%d`
FILE="ex${DATE}.log"
awk '{print $11}' ../../$FILE |sort |uniq -c |sort -k1 -n -r |awk '{if( $1>10000)  print $2 " \t "}' > ip.txt
awk -F'.' 'NR==FNR{a[$1"."$2"."$3]++;b[$1"."$2"."$3]=$4}NR>FNR{a[$1"."$2"."$3]++;}END{for(i in b)if(a==1)print i"."b}' ip.txt ip2.txt >../../../pc/result.txt

代码2:
注意这里面的result.txt就是代码1生成的文件 所以代码1中的result.txt 路径你需要根据自己的情况更改。首先是建立一个批处理文件内容如下:
@for /f %%i in (result.txt) do (ipseccmd -w REG -p "CCstop" -r "%%i" -f %%i/255.255.255.255=0/255.255.255.255:: -n BLOCK -x)
然后就是建立一个任务计划,每天定时进行封ip,关于ipseccmd的语法自己看看吧,the end
方法二:
这个方法是我现在用的,这个条件性约束很大,如果在你的局域网内有装了linux的机器的话或者本地安装虚拟机也行,可以使用samba挂载windows,然后在linux上面做脚本,这个简单多了,方法如下:
首先,把你windows上面的log日志文件夹共享,安全使用默认,然后在linux下面建立共挂载的文件夹,使用mount -t cifs -o username=rest,password=alice'!@#$' //192.168.0.55/logs   /home/www
下面的脚本供参考,不明白的请交流:
#!/bin/bash
DATE=`date +%y%m%d -d "1 day ago"`
FILE="ex${DATE}.log"
logs=(222logs 210logs/W3SVC1967578155 210logs/W3SVC2132521828 203logs/W3SVC1545867998)
for ((i=0;i ip.txt
awk -F . 'NR==FNR{a[$1"."$2"."$3];next}!($1"."$2"."$3 in a){print $0 "\r"}'  ip2.txt ip.txt > ${logs[$i]}/pc/ip.txt
done
这段代码只是实现功能,写的极笨拙,欢迎大家给我个简写版本的,哈哈,哪里不明白,回复即可
6.如何封在某一段时间访问量超过限制数值的ip









运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-649782-1-1.html 上篇帖子: IIS的配置 下篇帖子: IIs与php搭建
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表