不管肉鸡,还是代理,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
`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识别就封杀!的更多相关文章
- 核武器代理CC工具V3.42最新版本!
软件说明 !!!有新版本更新,请移步到更新地址:https://www.cnblogs.com/cnhacker/p/10878688.html ########################### ...
- 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使用了 ...
- cc攻击技术
攻击者借助代理服务器生成指向受害主机的合法请求,实现DOS,和伪装就叫:cc(ChallengeCollapsar). CC主要是用来攻击页面的.大家都有这样的经历,就是在访问论坛时,如果这个论坛比较 ...
- 如何防范CC攻击
服务器如何防范CC攻击CC攻击是DDOS(分布式拒绝服务)的一种,相比其它的DDOS攻击CC似乎更有技术含量一些.这种攻击你见不到虚假IP,见不到特别大的异常流量,但造成服务器无法进行正常连接,听说一 ...
- CC攻击网站和游戏如何针对性预防?
1:CC攻击原理 CC = Challenge Collapsar,其前身名为Fatboy攻击,是利用不断对网站发送连接请求致 使形成拒绝服务的目的, CC攻击是DDOS(分布式拒绝服务)的一种,相比 ...
- CC攻击原理及防范方法和如何防范CC攻击
一. CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃.CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数 ...
- CC攻击原理及防范方法
一. CC攻击的原理: CC攻击的原理就是攻击者控制某些主机不停地发大量数据包给对方服务器造成服务器资源耗尽,一直到宕机崩溃.CC主要是用来消耗服务器资源的,每个人都有这样的体验:当一个网页访问的人数 ...
- trackingjs+websocket+百度人脸识别API,实现人脸签到
在公司做了个年会的签到.抽奖系统.用java web做的,用公司的办公app扫二维码码即可签到,扫完码就在大屏幕上显示这个人的照片.之后领导让我改得高大上一点,用人脸识别来签到,就把扫二维码的步骤改成 ...
- Nginx防御CC攻击
CC攻击可以归为DDoS攻击的一种.他们之间都原理都是一样的,即发送大量的请求数据来导致服务器拒绝服务,是一种连接攻击.CC攻击又可分为代理CC攻击,和肉鸡CC攻击.代理CC攻击是黑客借助代理服务器生 ...
随机推荐
- BZOJ3314: [Usaco2013 Nov]Crowded Cows
3314: [Usaco2013 Nov]Crowded Cows Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 86 Solved: 61[Subm ...
- AngularJS和ReactJS对比
Angular的特点: 优势: AngularJS是一套完整的框架,angular有自带的数据绑定.render渲染.angularUI库,过滤器,$filter,$directive(模板),$se ...
- Django之路由系统
一.路由系统介绍 在django程序中,可以通过urls.py文件对所有的url进行任务的分配,根据路由规则的定义选择不同的业务处理函数进行处理 二.路由规则定义 1.路由规则代码如下,mysite/ ...
- Could not Build module ImageIO
错误提示:Could not Build module ImageIO: 原因:修改了XCode API 源文件 措施:从一个干净的未曾修改过的XCode中拷贝一份相应的文件添加到发生错误的XCode ...
- Javascript:getElementsByClassName
背景: 由于原生的getElementsByClassName不支持在指定标签中查找指定元素为指定class的情况,所以,这里舍弃了原生的方法调用 方法一: function getElement ...
- Menu( 菜单)
一. 加载方式菜单组件通常用于快捷菜单,在加载方式上,通过 class 或 JS 进行设置为菜单组件.然后,再通过 JS 事件部分再响应.//class 加载方式<div id="bo ...
- asp.net(C#)利用QRCode生成二维码---.NET菜鸟的成长之路
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="QRCode.aspx.cs&q ...
- 【转】C++中的位拷贝与值拷贝
[转]http://blog.csdn.net/liam1122/article/details/1966617 为了便于说明我们以String类为例: 首先定义String类,而并不实现其成员函数. ...
- linux int to string 方法
最近从windows 移植程序的时候发现to_string()函数在linux 中不能用,网上找了几种方法,觉得使用stringstream对象来实现类型转化比较好一点. 你只需在你工程中加入下面的t ...
- [Leetcode][001] Two Sum (Java)
题目在这里: https://leetcode.com/problems/two-sum/ [标签]Array; Hash Table [个人分析] 这个题目,我感觉也可以算是空间换时间的例子.如果是 ...