不管肉鸡,还是代理,CC识别就封杀!

这几天的心得,汇成代码。

PYTHON版,我编的。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os,sys,time
import commands,logging

#以下为手工命令时的动作
#time format 17/Oct/2014:10:00:00
#time format Sat Oct 18 12:35:43 2014
#awk '$4>"[17/Oct/2014:14:00:00"&&$4<"[17/Oct/2014:14:02:00"' xxx.log|awk '{a[$7]++}END{for(i in a)print a[i],i}'|sort -n|tail -n 10|column -t | 500
#awk '$4>"[17/Oct/2014:14:00:00"&&$4<"[17/Oct/2014:14:02:00"' xxx.log|grep 'uc_server/images/noavatar_small.gif'|awk '{a[$1]++}END{for(i in a)print a[i],i}'|sort -n|tail -n 10|column -t | 100

#定义预警触发时的CC访问数及IP访问CC网址的次数
urlAlert = 500
ipAlert = 50
print 'urlAler is:',urlAlert, ', ipAlert is:', ipAlert
#定义LOG文件地址
logPath = "xxx.log"

#120秒的处理间隔
endtime = time.time()
strEndTime = time.ctime(endtime).split()
strBeginTime = time.ctime(endtime-120).split()
#规整格式,使PYTHON时间格式对应NGINX的日志时间格式
endTime = "%s/%s/%s:%s"%(strEndTime[2],strEndTime[1],strEndTime[4],strEndTime[3])
beginTime = "%s/%s/%s:%s"%(strBeginTime[2],strBeginTime[1],strBeginTime[4],strBeginTime[3])
#LOGGIN记录功能
logging.basicConfig(level=logging.INFO,
                format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                datefmt='%a, %d %b %Y %H:%M:%S',
                filename='XXX.log',
                filemode='a')

#通用的命令处理函数

def exec_Cmd(Cmd):
    (status,output) = commands.getstatusoutput(Cmd)
    try:
        if int(status) == 0:
            print Cmd + " is OK!"
            logging.info(Cmd + " ---is OK!")
            return output
        else:
            logging.info(Cmd + " cant't finish...")
            print Cmd + " can't finish...."
            sys.exit(1)
    except:
        logging.info(Cmd + " is Wrong")
        print Cmd + " is Wrong!"
        sys.exit(1)
#获取最可能的CC的URL列表
def CCDef_url():
    global urlAlert, logPath, beginTime, endTime
    #封装BASH SHELL命令,搜索日志为当前时间前两分钟内,也可以用TAIL -F,省时间,AWK语法我有些搞不懂,运维兄弟提供
    urlCmd = "awk '$4>\"[" + beginTime + "\"&&$4<\"[" + endTime + "\"' " + logPath + "|awk '{a[$7]++}END{for(i in a)print a[i],i}'|sort -n|tail -n 10|column -t"
    urlOutput = exec_Cmd(urlCmd)
    urlList = []
    #规范输出格式并获取大于预警的URL地址列表
    for line in (urlOutput.split('\n')):
    urlCountList = line.split()
    if int(urlCountList[0]) > urlAlert:
        urlList.append(urlCountList[1])
        #logging.info("cc's url is:", urlCountList[1])
    return urlList
#获取访问过这些URL的IP地址列表
def CCDef_ip(urlList):
    global ipAlert, logPath, beginTime, endTime
    ipList = []
    for url in urlList:
        #更改一下AWK,获取
        ipCmd = "awk '$4>\"[" + beginTime + "\"&&$4<\"[" + endTime + "\"' " + logPath + "|grep " + url + "|awk '{a[$1]++}END{for(i in a)print a[i],i}'|sort -n|tail -n 10|column -t"
    ipOutput = exec_Cmd(ipCmd)
    #规范输出格式并获取大于预警的IP地址列表
        for line in (ipOutput.split('\n')):
            ipCountList = line.split()
            if int(ipCountList[0]) > ipAlert:
                ipList.append(ipCountList[1])
                #logging.info("cc's url is:", urlCountList[1])
    return ipList
#将最可以疑的攻击IP加入防火墙
def dropIptables(ipList):
    drop_ip_list = []
    #先列出已有的IPTABLES的IP,达到过滤,去重的目的
    iptablesOutput = exec_Cmd('iptables -vnL')
    for line in iptablesOutput.split('\n'):
    line = line.split()
    if not line[0].isdigit():
            continue
    drop_ip_list.append(line[7])

    for ip in ipList:
    if ip in drop_ip_list:
        continue
    dropCmd = "iptables -I INPUT -s " + ip + " -j DROP"
    print dropCmd
    #干之!!!
    exec_Cmd(dropCmd)

def main():
    urlList = CCDef_url()
    ipList = CCDef_ip(urlList)
    print ipList
    dropIptables(ipList)
    pass

if __name__=="__main__":
    main()

BASH SHELL版,运维兄弟写的,真的省好多行。要好好攻一下SHELL脚本了。

#!/bin/bash
#while true
#do
        tail -f XXX.log > url.txt &
        echo "wait 120s"
        sleep 120s
        kill -9 `ps -ef | grep "tail -f" | grep -v grep | awk '{print $2}' | xargs` > /dev/null
        sleep 1
        one=`head -1 url.txt | awk '{print $4}'`
        two=`tail -1 url.txt | awk '{print $4}'`
        #awk -v one=$one -v two=$two '$4>one&&$4<two' url.txt|awk '{a[$7]++}END{for(i in a)print a[i],i}'|sort -n|tail -n 10|column -t
        url_max=`awk -v one=$one -v two=$two '$4>one&&$4<two' url.txt|awk '{a[$7]++}END{for(i in a)print a[i],i}'|sort -n|tail -n 10|column -t | awk '{if ($1 > 500) print $2}' | xargs`
        echo $url_max >> url.log
        for i in $url_max
        do
            ipaddress=`awk -v one=$one -v two=$two '$4>one&&$4<two' url.txt|grep "$i"|awk '{a[$1]++}END{for(i in a)print a[i],i}'|sort -n|tail -n 10|column -t | awk '{if ($1 > 100) print $2}'|xargs`
            for ip in $ipaddress
            do
                iptables -L -n | grep "$ip"
                if [ $? != 0 ]
                then
                    echo $ip >> url.log
                    iptables -I INPUT -s $ip -j DROP
                fi
            done
        done
#done

 

时间: 2024-11-01 14:15:08

不管肉鸡,还是代理,CC识别就封杀!的相关文章

【反欺诈专栏】互联网黑产剖析——代理和匿名

一.技术原理 定义 :代理,英文:Proxy,在这里特指网络代理. 代理是一种网络服务,用于为客户端和服务端提供非直接的链接. 一般的,根据代理所使用的协议,可以对代理做如下分类: 代理类型 代理协议 用途 HTTP代理 HTTP 转发HTTP请求,一般是web访问 HTTPS代理 HTTPS 转发HTTPS请求,一般HTTPS代理,也能够进行HTTP代理 Socks代理 Socks4/5 可以转发任意类型的请求 VPN PPTP/L2TP/OpenVPN/SSL VPN/IPSec VPN 可

防CC攻击的案例

名称起源 CC = Challenge Collapsar,其前身名为Fatboy攻击,是利用不断对网站发送连接请求致使形成拒绝服务的目的, CC攻击是DDOS(分布式拒绝服务)的一种,相比其它的DDOS攻击CC似乎更有技术含量一些.这种攻击你见不到真实源IP,见不到特别大的异常流量,但造成服务器无法进行正常连接.最让站长们忧虑的是这种攻击技术含量低,利用工具和一些IP代理一个初.中级的电脑水平的用户就能够实施攻击.因此,大家有必要了解CC攻击的原理及如果发现CC攻击和对其的防范措施.   CC

Nginx简单防御CC攻击的两种方法

CC攻击可以归为DDoS攻击的一种.他们之间都原理都是一样的,即发送大量的请求数据来导致服务器拒绝服务,是一种连接攻击.CC攻击又可分为代理CC攻击,和肉鸡CC攻击.代理CC攻击是黑客借助代理服务器生成指向受害主机的合法网页请求,实现DOS,和伪装就叫:cc(ChallengeCollapsar).而肉鸡CC攻击是黑客使用CC攻击软件,控制大量肉鸡,发动攻击,相比来后者比前者更难防御.因为肉鸡可以模拟正常用户访问网站的请求.伪造成合法数据包.防御CC攻击可以通过多种方法,禁止网站代理访问,尽量将

win2003的Web服务器 防CC攻击详细图文教程

1.攻击原理 CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃.CC主要是用来攻击页面的,每个人都有这样的体验:当一个网页访问的人数特别多的时候,打开网页就慢了,CC就是模拟多个用户(多少线程就是多少用户)不停地进行访问那些需要大量数据操作(就是需要大量CPU时间)的页面,造成服务器资源的浪费,CPU长时间处于100%,永远都有处理不完的连接直至就网络拥塞,正常的访问被中止. 2.攻击症状 CC攻击有一定的隐蔽性,那如何确定服务器正在遭受或者曾

360指百度封杀其浏览器 百度称系安全升级

中介交易 SEO诊断 淘宝客 云主机 技术大厅 昨日,360安全浏览器高级总监陶伟华介绍百度"美杜莎偷拍插件". 360与百度"战火"再燃 360称百度推"偷拍插件",封杀其浏览器;百度称系安全升级,竞争对手歪曲事实 新京报讯 (记者 林其玲 刘夏) 360和百度公司之间再次走火.昨天下午,360公司向媒体披露,百度通过"凤巢"系统的插件,对用户电脑屏幕截图,并上传到百度服务器,百度服务器对上传数据判断后,就会屏蔽360浏览器

爬虫需谨慎!那些你不知道的爬虫反爬虫套路 学起来

前言 爬虫与反爬虫,是一个很不阳光的行业. 这里说的不阳光,有两个含义. 第一是,这个行业是隐藏在地下的,一般很少被曝光出来.很多公司对外都不会宣称自己有爬虫团队,甚至隐瞒自己有反爬虫团队的事实.这可能是出于公司战略角度来看的,与技术无关. 第二是,这个行业并不是一个很积极向上的行业.很多人在这个行业摸爬滚打了多年,积攒了大量的经验,但是悲哀的发现,这些经验很难兑换成闪光的简历.面试的时候,因为双方爬虫理念或者反爬虫理念不同,也很可能互不认可,影响自己的求职之路.本来程序员就有"文人相轻&quo

360称百度凤巢部署偷拍插件收集用户信息

360称http://www.aliyun.com/zixun/aggregation/37756.html">百度凤巢部署偷拍插件收集用户信息 TechWeb配图 [TechWeb报道]1月28日消息,上周末360指责百度推广后台禁用360浏览器一事继续发酵.360今日召开媒体发布会,称百度凤巢正在大规模部署"偷拍插件",收集用户信息,并针对360浏览器进行不兼容提示. 360安全浏览器产品总监陶伟华表示,百度对其插件注册名称为Baidu.Medusa(美杜莎),该插

百度奇虎对撞“美杜莎”

中介交易 SEO诊断 淘宝客 云主机 技术大厅 杨阳 一个注册名为美杜莎的插件,引起了搜索巨头百度和奇虎之间又一次正面对撞. 1月28日,360安全中心发布公告称,注册名称为Baidu.Medusa(美杜莎)的百度插件一旦被用户在电脑上安装,百度就能够轻易判断出用户正在使用哪款浏览器上网,再专门针对360浏览器进行不兼容提示.而这一插件日前被应用在百度凤巢(广告系统)入口上. 奇虎的公告让人们想起几年前腾讯让用户"二选一"那个"艰难的决定".不过,此次不同的是,百度

3B大战再起硝烟:百度“家规”引发360不满

中介交易 SEO诊断 淘宝客 云主机 技术大厅 ■本报记者 贺 骏 临近春节,百度和360的硝烟领先于除夕夜的烟花,再度弥漫起来. 1月26日起,不少百度推广系统的商家在使用360浏览器登录百度管理后台时,被百度要求必须安装一个安全插件,该插件禁止用户使用360浏览器登录,并建议使用IE.火狐.谷歌或者百度浏览器登录后台. 360如临大敌 虽然百度此举只是针对其商户,但也旋即引发360的强烈不满. 1月28日,奇虎360紧急召开发布会,相关负责人指出,百度正在大规模部署"偷拍插件".它