pythonddos防御_python写一个防御DDos的脚本(请安好环境否则无法实验)

起因:

居然有ddos脚本,怎么可以没防御ddos的脚本!

开始:

1.请执行 install.py安装好DDos-defalte,会在root目录下多出这个文件夹

1174022-20180125162452006-944446117.png

代码:

1174022-20180125162553037-1070461041.png

2.然后执行fyddos.py

1174022-20180125162647365-1850927378.png

第一个让你设置IP白名单

第二个让你设置一个ip超过100个连接数,自动封掉

第三个封ip,自动发送邮件,设置好你的邮件

默认封600秒

4.然后输入这条命令

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

就可以查询谁DDos你了

DDos-defalte

DDOS defalte是一款免费的用来防御和减轻DDoS攻击。它通过netstat监测跟踪创建大量网络连接的IP地址,在检测到某个结点超过预设的限制时,该程序会通过APF或iptables禁止或阻挡这些IP.

#该版对原版进行了错误修复,而且进行了本地化不需要安装的时候下载文件。

#安装步骤

下载 ddos-defalte.tar.gz

tar zxfv ddos-defalte.tar.gz

cd ddos-defalte

./install.sh

安装完毕。

配置文件位于 /usr/local/ddos/ddos.conf

ip白名单文件位于 /usr/local/ddos/ignore.ip.list ,格式:一行一个ip

配置完毕之后执行命令 ddos 可以看到一行行的输出,每行:第一个是连接数 第二个是对应ip

/usr/local/sbin/ddos命令是脚本/usr/local/ddos/ddos.sh的一个软链接

安装完毕。 然后只需要计划任务周执 ddos 命令即可。ddos每执行一次都会检测配置里面的设置监测系统网络连接情况封ip。

比如root帐号下,执crontab -e 可以这样执行计划任务 */1 * * * * /usr/local/ddos/ddos.sh >/dev/null 2>&1

命令ddos有一些带参数的用法,可以通过ddos -h 了解用法。

配置文件/usr/local/ddos/ddos.conf的一些简要说明:

PROGDIR="/usr/local/ddos"

PROG="/usr/local/ddos/ddos.sh"

IGNORE_IP_LIST="/usr/local/ddos/ignore.ip.list" #ip的白名单

APF="/etc/apf/apf"

IPT="/sbin/iptables"

##### How many connections define a bad IP? Indicate that below.

NO_OF_CONNECTIONS=100 #一个ip超过100个连接数,自动封掉

##### APF_BAN=1 (Make sure your APF version is atleast 0.96)

##### APF_BAN=0 (Uses iptables for banning ips instead of APF)

APF_BAN=0 #这里我使用iptables封ip

##### KILL=0 (Bad IPs are'nt banned, good for interactive execution of script)

##### KILL=1 (Recommended setting)

KILL=1

##### An email is sent to the following address when an IP is banned.

##### Blank would suppress sending of mails ,设置为 root 则不发邮件

EMAIL_TO="root" #封ip,自动发送邮件

##### Number of seconds the banned ip should remain in blacklist.

BAN_PERIOD=600

所有代码:

import os

import time

def fyddos():

IGNORE_IP_LIST = "/usr/local/ddos/ignore.ip.list"

PGOPDIR="/usr/local/ddos/ddos.conf"

PROG = "/usr/local/ddos/ddos.sh"

if os.path.exists(PROG):

print '[+]The execution file exists to continue the program.'

else:

print '[-]The execution file does not exist, the closing procedure.'

exit()

if os.path.exists(PGOPDIR):

print '[+]The configuration file exists to start the execution of the program.'

else:

print '[-]There is no exit procedure for the configuration file.'

exit()

if os.path.exists(IGNORE_IP_LIST):

print '[+]The IP white list file exists to continue the program.'

else:

print '[-]IP white list file does not exist, end the program.'

exit()

time.sleep(1)

print '[+]Start configuring the IP white list.'

IPlist=raw_input('Please enter your white list IP, and if not, enter q to enter the next step:')

if IPlist=='q':

try:

import dy1

except Exception , g:

print '[-]Catch the error cause:',g

print '[+]It has been added to it.'

time.sleep(3)

try:

import dy2

except Exception , r:

print '[-]Catch the error cause:',r

time.sleep(3)

try:

import dy3

except Exception , p:

print '[-]Catch the error cause:',p

print '[+]Query information,Please input: netstat -ntu | awk ''{print $5}'' | cut -d: -f1 | sort | uniq-c | sort -n command view.'

isd=os.system('ddos')

sda=os.system('service iptables status')

print isd

print sda

else:

list=open('/usr/local/ddos/ignore.ip.list','w')

list.write(IPlist+"\n")

print '[+]It has been added to it:',IPlist

time.sleep(3)

try:

import dy1

except Exception , w:

print('[-]Catch the error cause:',w)

time.sleep(3)

try:

import dy2

except Exception , d:

print '[-]Catch the error cause:',d

time.sleep(3)

try:

import dy3

except Exception ,z:

print '[-]Catch the error cause:',z

print '[+]Query information,Please input: netstat -ntu | awk ''{print $5}'' | cut -d: -f1 | sort | uniq-c | sort -n command view.'

isds = os.system('ddos')

sdas= os.system('service iptables status')

print isds

print sdas

fyddos()

conf=input('Please enter an IP number more than how many connections will be blocked:')

data = ''

with open('/usr/local/ddos/ddos.conf', 'r+') as f:

for line in f.readlines():

if (line.find('NO_OF_CONNECTIONS') == 0):

line = 'NO_OF_CONNECTIONS={}'.format(conf) + '\n'

data += line

with open('/usr/local/ddos/ddos.conf', 'r+') as f:

f.writelines(data)

lv=raw_input('Use APF or iptables to seal IP. It is recommended to use iptables to change the value of APF_BAN to 0:')

data=''

with open('/usr/local/ddos/ddos.conf','r+') as f:

for line in f.readlines():

if(line.find('APF_BAN')==0):

line='APF_BAN={}'.format(lv)+'\n'

data+=line

with open('/usr/local/ddos/ddos.conf','r+') as f:

f.writelines(data)

原理:通过DDos-defalte的设置来帮助我们防御DDos(如果愿意请自行加设置代码)

一篇有关DDos-defalte的文章:http://blog.csdn.net/fly2749/article/details/51354696

ddos-defalte的Github下载地址:https://github.com/snail007/ddos-defalte

我的Github:https://github.com/422926799/python

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值