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

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
         `ps -ef | grep "tail -f" | grep -v grep | awk '{print $2}' | xargs` > /dev/null

        one=` url.txt | awk '{print $4}'`
        two=` url.txt | awk '{print $4}'`
        #|column -t
        url_max=`|column -t | awk '{if ($1 > 500) print $2}' | xargs`
        echo $url_max >> url.log
        for i in $url_max
        do
            ipaddress=`|column -t | awk '{if ($1 > 100) print $2}'|xargs`
            for ip in $ipaddress
            do
                iptables -L -n | grep "$ip"
                 ]
                then
                    echo $ip >> url.log
                    iptables -I INPUT -s $ip -j DROP
                fi
            done
        done
#done

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

  1. 核武器代理CC工具V3.42最新版本!

    软件说明 !!!有新版本更新,请移步到更新地址:https://www.cnblogs.com/cnhacker/p/10878688.html ########################### ...

  2. DDOS工具合集---CC 2.0(僵尸网络proxy,单一url,可设置cookie,refer),传奇克星(代理+单一url,可设置cookie),NetBot_Attacker网络僵尸1.0(僵尸网络,HTTP NO-Cache Get攻击模式,CC攻击,HTTP空GET请求攻击),傀儡僵尸VIP1.4版(僵尸网络,动态单一url)、上兴网络僵尸2.3、中国制造网络僵尸、安全基地网络僵尸==

    DDOS工具合集 from:https://blog.csdn.net/chinafe/article/details/74928587 CC 著名的DDOS CC工具,效果非常好!CC 2.0使用了 ...

  3. cc攻击技术

    攻击者借助代理服务器生成指向受害主机的合法请求,实现DOS,和伪装就叫:cc(ChallengeCollapsar). CC主要是用来攻击页面的.大家都有这样的经历,就是在访问论坛时,如果这个论坛比较 ...

  4. 如何防范CC攻击

    服务器如何防范CC攻击CC攻击是DDOS(分布式拒绝服务)的一种,相比其它的DDOS攻击CC似乎更有技术含量一些.这种攻击你见不到虚假IP,见不到特别大的异常流量,但造成服务器无法进行正常连接,听说一 ...

  5. CC攻击网站和游戏如何针对性预防?

    1:CC攻击原理 CC = Challenge Collapsar,其前身名为Fatboy攻击,是利用不断对网站发送连接请求致 使形成拒绝服务的目的, CC攻击是DDOS(分布式拒绝服务)的一种,相比 ...

  6. CC攻击原理及防范方法和如何防范CC攻击

    一. CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃.CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数 ...

  7. CC攻击原理及防范方法

    一. CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃.CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数 ...

  8. trackingjs+websocket+百度人脸识别API,实现人脸签到

    在公司做了个年会的签到.抽奖系统.用java web做的,用公司的办公app扫二维码码即可签到,扫完码就在大屏幕上显示这个人的照片.之后领导让我改得高大上一点,用人脸识别来签到,就把扫二维码的步骤改成 ...

  9. Nginx防御CC攻击

    CC攻击可以归为DDoS攻击的一种.他们之间都原理都是一样的,即发送大量的请求数据来导致服务器拒绝服务,是一种连接攻击.CC攻击又可分为代理CC攻击,和肉鸡CC攻击.代理CC攻击是黑客借助代理服务器生 ...

随机推荐

  1. vmware-vdiskmanager

    vmware workstation可以用自带的程序vmware-vdiskmanager分成多个2G大小的文件. vmware-vdiskmanager -r Mavericks.vmdk -t 1 ...

  2. 【转】三星8552 手机提示升级系统 完成后重启 开机画面一直停留在三星的LOGO 一闪一闪 怎么办

    原文网址:http://ask.zol.com.cn/q/309501.html 楼主你好,手机出现这种情况的话,可以先将电池取下来重新安装,如果不能的话,可以在关机状态下按住电源键+音量下键之后进入 ...

  3. HDU_2021——最少RMB问题

    Problem Description 作为杭电的老师,最盼望的日子就是每月的8号了,因为这一天是发工资的日子,养家糊口就靠它了,呵呵但是对于学校财务处的工作人员来说,这一天则是很忙碌的一天,财务处的 ...

  4. Scala-函数

    package com.mengyao.scala.function /** * Scala函数的声明和使用 * * @author mengyao */object Test1 { //主程序的ma ...

  5. C#系列教程——lock语句定义及使用

    代码如下: using System; using System.Threading; class Thread_Test { public void Run() { Console.WriteLin ...

  6. openfire连接登陆优化方案

    client登陆openfire,大概总共须要9个来回才完毕登录. 在2G情况下.就表现为client登录特别慢,所以,为解决问题,对openfire进行了例如以下优化 openfire的连接.登陆过 ...

  7. 解决Wamp 开启vhost localhost 提示 403 Forbbiden 的问题!

    非常奇怪的一个问题.我曾经从来都没有这样过!訪问 http://localhost/ 提示  403 Forbbiden. 我之前的设置一直都是这种: httpd.conf <Directory ...

  8. JAVA学习篇--javaweb之Filter具体解释

    在DRP项目中,多次提到了Filter,它攻克了字符集的统一设置以及统一控制简单WebCache,从中我们能够体会到.它给我们带来的优点不不过降低代码量这么简单,它的出现避免了我们每一个页面反复的编写 ...

  9. Android RatingBar自定义替换系统图片

    1.自定义替换提醒☆图片,准备两个图片添加到系统中去:如下:        在drewable下定义一个图片资源ratingbar_drawable.xml 1 2 3 4 5 6 7 8 9 10 ...

  10. Windows下用Caffe跑自己的数据(遥感影像)

    1 前言 Caffe对于像我这样的初学者来说是一款非常容易上手的深度学习框架.关于用Caffe跑自己的数据这样的博客已经非常多,感谢前辈们为我们提供的这么好的学习资源.这里我主要结合我所在的行业,说下 ...