`
walksing
  • 浏览: 216966 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

构建安全的dDoS(拒绝分布式DoS攻击) dns服务

 
阅读更多
近日发现DNS bind9.9.1  存在严重的安全漏洞 .

tail -f dns.log 发现大量不同网段ip 请求whbl.com 域名 .打开该网站看了看是个国外新闻网站. 同过日志分析发现攻击者使用了DoS攻击,采用了大量僵死云向我们服务器发起dns请求,请求频率超过2次/秒. 网上查了,有的出来个补丁但是都是针对9.3.2以下版本的. 


 这些请求占用了带宽.在9.9.1P下服务还挺得住,CPU没升.但请求频繁也耗网络带宽,经过分析编写了反DoS拒绝服务.很好的解决了系统bug .dns垃圾请求被过滤.

 原理很简单. 用机器人检测到攻击者ip ,自动拦截填入 blackhole,然后系统自动reload. 则再次请求就被拒绝.有多少僵死,绑定多少,然后咱也吹嘘一番,不怕DoS.哈哈哈


1) 增加blackhole dosip
2)讲请求的目标dns 禁止transfer ,禁止query .虽然禁止了但仍然会传递到父级dns
zone "whbl.com" IN {
    type master;
    file "fuqit.zone";
    allow-update { none; };
    allow-query { none; };
    allow-transfer { none; };

};


完整的named.conf 如下

options {
 
    directory "C:\WINDOWS\system32\dns\etc";
  
    forwarders {
58.60.188.178;
58.60.188.179;

    };
   
    version "DDos SMG 2012";

    allow-query { any; };
    //allow-query-cache { any; };
    allow-recursion { none; };
   
    blackhole {
  
#SMG Robert added dosips automaticly,donot Remove the follow NOTE
#Robert Start
##DoS
176.31.228.8;
13.104.128.167;
209.105.239.166;
#Robert END


};


};

//DNS
zone "." {
    type hint;
    file "named.root";
};

// localhost
zone "localhost" IN {
    type master;
    file "localhost.zone";
    allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
        type master;    
        file "named.local"; 
        allow-update { none; };
};



zone "fuqit.net" IN {
    type master;
    file "fuqit.zone";
    allow-update { none; };
};


zone "59.61.37.121.in-addr.arpa" in { 
        type master; 
        file "fuqit.local";            
        allow-update { none; };
};


zone "whbl.com" IN {
    type master;
    file "fuqit.zone";
    allow-update { none; };
    allow-query { none; };
    allow-transfer { none; };

};


logging {
channel warning
{
file "C:\WINDOWS\system32\dns\log\warning.log" versions 3 size 1240k;
severity warning;
print-category yes;
print-severity yes;
print-time yes;
};
channel general_dns
{
file "C:\WINDOWS\system32\dns\log\dns.log" versions 3 size 1240k;
severity info;
print-category yes;
print-severity yes;
print-time yes;
};
category default { warning; };
category queries { general_dns; };
};



# Start of rndc.conf
key "rndc-key" {
algorithm hmac-md5;
secret "UBAzaol7wLYvsj/kKDaqlQ==";
};

controls {
        inet 127.0.0.1 port 953
                allow { 127.0.0.1; } keys { "rndc-key"; };
};


# End of rndc.conf
# End of named.conf


部分源码如下:因为挂接的SMG引擎 是java代码 仅供参考

思路在hole中添加一特标记 ##DoS
程序查找该标记 每次检测几组ip ,依次检测更新到named.conf .如果有更新就relaod 否则,休息. 以上代码编写打包测试我用了2个小时左右.


#file:HandleDDoSBindMap.java

package cpgmt;

import com.hotmail.walksing.module.file.Wfile;
import com.hotmail.walksing.module.string.Wregex;
import com.hotmail.walksing.module.string.wsString;

import app.HandleMap;
import app.PPGMain;
import app.Putter;
import app.Admin;

/*******************************************************************************
* HandleDDoSBindMap map request,response
*
* DenyDoS avaiable bind9.91
* parseDNSLog ,find request to whbl.com ,get DoSip ->store bindconf->reload named
* @author runus
* @version 1.0.0
* @date 20120708
*
*/

public class HandleDDoSBindMap implements HandleMap {

/***************************************************************************

* parseDNSLog ,get DoSip ->store bindconf->reload named
* @param p
* @return
*/
public static String dnslogfid=null;
public static String dnsconf=null;
public int mapRequest(Putter p) {
p=new Putter();
p.set("bindReload", PPGMain.props.getProperty("bindReload","rndc reload"));
if(dnslogfid==null){
dnslogfid=PPGMain.props.getProperty("bindlog","");
dnsconf=PPGMain.props.getProperty("bindconf","");
app.PPGMain.echo("MORNITORING dnslogfid {"+dnslogfid+"}");
app.PPGMain.echo("MORNITORING dnsconf {"+dnsconf+"}");
}
String retmsg = null;
String logcmd="tail -5 "+dnslogfid;
retmsg=Admin.exec(logcmd);

String dosIp=parseDoSIP(retmsg);
if(dosIp.length()==0){
try {
Thread.sleep(120000);
return 2;
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
app.PPGMain.echo("----parsed DoSips---\n"+dosIp);
boolean isupdated=setNamed(dnsconf,dosIp);
int rt=0;
String retcode = "2";
if(isupdated){
retmsg=Admin.exec(p.get("bindReload"));
PPGMain.echo("exec "+p.get("bindReload")+"|response===>" + retmsg);

if(Wregex.eregi("result 0|successful",retmsg ))
retcode="2";
else
retcode="3";
p.set("retcode", retcode);
PPGMain.echo("response:" + retcode);
p.set("retmsg", retmsg);
}else{
Wfile.dln("setNamed:"+isupdated);
rt=2;
}

if (Wregex.eregi("^[0-9]{1,}$", retcode)) {
return Integer.parseInt(retcode);
} else {
return -1;
}
}

//08-七月-2012 8:17:48.076 queries: info: client 24.180.162.231#16958 (whbl.com): query: whbl.com IN TXT +E (121.37.61.59)
public String parseDoSIP(String r){
String ip=null;
int st=0,ed=0;
String filter=PPGMain.props.getProperty("bindDoSFilter","whbl\\.com"); //whbl\\.com|xxx\\.net
String ptr=" client ";
if(!Wregex.eregi(filter, r))
return "";
StringBuffer ips=new StringBuffer();
String[] l = r.split("\n");

for(int i=0;i<l.length;i++){
if(l[i]==null||!Wregex.eregi(filter, l[i])) continue;

r=l[i];
st = r.indexOf(ptr);
if(st==-1) continue;
st+=ptr.length();
ed=r.indexOf("#",st);
if(ed>-1){
ip=r.substring(st,ed);
if(ips.indexOf(ip)==-1) ips.append(ip+";\n");
}

}
return ips.toString();
}

public boolean setNamed(String conf,String dosIp){

String s=Wfile.openToString(conf);

int st=0;
String ptr="##DoS";
Wfile.dln("bindconf length:"+s.length());
st = s.indexOf(ptr);
if(st==-1){
Wfile.dln("setNamed::error:: cannot find partner:"+ptr);
return false;
}
StringBuffer b=new StringBuffer();
st+=ptr.length()+1;//skip \n

b.append(s.substring(0, st));
s=s.substring(st);
String[] l=dosIp.split("\n");
for(int i=0;i<l.length;i++){
if(l[i]==null || s.indexOf(l[i])>-1) continue;
b.append(l[i]).append("\n");
}
b.append(s);
//Wfile.dln(s);
Wfile.writeFile(conf, b.toString());
b=null;
s=null;
return true;
}


}


系统配置如下smg3/conf/ppg.properties

cfgJobs=cpgmt.HandleDDoSBindMap:30000,

#DDoS bind Start
bindDoSFilter=whbl\\.com|xx\\.com
bindReload=rndc reload
bindlog=C:/WINDOWS/system32/dns/log/dns.log
bindconf=C:/WINDOWS/system32/dns/etc/named.conf
#DDoS bind End


该脚本支持多filter domain检测 .很容易扩展为自动根据访问频繁的记录进行绑定.
部署完成后,高枕无忧.管你什么dos随便来.

----------------------
以下为广告时间,不要走开,精彩在后头.

本站提供DDNS服务,速度快捷,不会断线.断线瞬间绑定;支持dDoS (防分布式拒绝DoS攻击)
年费:800 ,免安装程序url自动更新.可免7天试用.
网址:www.fuqit.net 不诚勿扰qq站内找

另外:本站提供云支付服务 smg-ves

转载,请保留链接版权 runusws AT gmail.com

广告之后继续...
------------
DoS攻击日志如下:
uery: whbl.com IN TXT +E (121.37.61.59)
08-七月-2012 20:11:48.395 queries: info: client 108.41.10.44#37760 (whbl.com): q
uery: whbl.com IN TXT +E (121.37.61.59)
08-七月-2012 20:11:50.364 queries: info: client 108.41.10.44#59190 (whbl.com): q
uery: whbl.com IN TXT +E (121.37.61.59)
08-七月-2012 20:11:50.535 queries: info: client 108.41.10.44#50452 (whbl.com): q
uery: whbl.com IN TXT +E (121.37.61.59)
08-七月-2012 20:11:50.598 queries: info: client 108.41.10.44#43158 (whbl.com): q
uery: whbl.com IN TXT +E (121.37.61.59)
08-七月-2012 20:11:52.364 queries: info: client 108.41.10.44#26214 (whbl.com): q
uery: whbl.com IN TXT +E (121.37.61.59)
08-七月-2012 20:11:52.535 queries: info: client 108.41.10.44#49879 (whbl.com): q
uery: whbl.com IN TXT +E (121.37.61.59)
08-七月-2012 20:11:52.582 queries: info: client 108.41.10.44#10113 (whbl.com): q
uery: whbl.com IN TXT +E (121.37.61.59)
08-七月-2012 20:12:04.332 queries: info: client 121.37.61.59#64838 (www.oanda.co
m): query: www.oanda.com IN A + (121.37.61.59)
08-七月-2012 20:12:14.598 queries: info: client 121.37.61.59#64030 (www.oanda.co
m): query: www.oanda.com IN A + (121.37.61.59)
08-七月-2012 20:12:16.332 queries: info: client 74.125.18.158#58000 (www.fuqit.n
et): query: www.fuqit.net IN A - (121.37.61.59)
08-七月-2012 20:12:44.207 queries: info: client 121.37.61.59#53088 (dx.ggsafe.co
m): query: dx.ggsafe.com IN A + (121.37.61.59)

--------------
看到攻击ip 108.41.10.44


smg03 引擎日志执行如下:

INFO   | jvm 1    | 2012/07/08 20:15:24 | 2012-07-08 20:15:24 ----parsed DoSips-
--
INFO   | jvm 1    | 2012/07/08 20:15:24 | 108.41.10.44;
INFO   | jvm 1    | 2012/07/08 20:15:24 |
INFO   | jvm 1    | 2012/07/08 20:15:24 | bindconf length:1938
INFO   | jvm 1    | 2012/07/08 20:15:24 | 2012-07-08 20:15:24 exec rndc reload|r
esponse===>#rndc reload
INFO   | jvm 1    | 2012/07/08 20:15:24 |
INFO   | jvm 1    | 2012/07/08 20:15:24 | server reload successful
INFO   | jvm 1    | 2012/07/08 20:15:24 | result:0
INFO   | jvm 1    | 2012/07/08 20:15:24 |
INFO   | jvm 1    | 2012/07/08 20:15:24 | 2012-07-08 20:15:24 response:2
------------

看到108.41.10.44 被拦截
写入成功;到此reload成功. 复观察dns.log该ip被拒绝.至此大功告成.
1
1
分享到:
评论

相关推荐

    构建分布式拒绝服务攻击

    分布式拒绝服务(DDoS,Distributed Denial of Service)攻击是一种网络攻击手段,它通过大量联网设备(僵尸网络)向目标服务器发送大量的请求,导致服务器过载无法正常为合法用户提供服务。这种攻击方式严重威胁了...

    详解ddos攻击手段及防护防御手段_极品全面.zip

    分布式拒绝服务(DDoS)攻击是一种网络攻击方式,其目的是通过大量请求使目标服务器或网络资源过载,导致正常的服务无法进行。这类攻击通常利用大量的傀儡机(僵尸网络)来发起,使得防御变得极其困难。本文将深入...

    DDoS防护思路演进

    在早期互联网架构中,由于封闭的网络环境,例如ARPANET和NSFNet,并没有考虑到服务拒绝攻击(DoS攻击)的存在,因此几乎所有基于互联网的服务都可能受到足够规模的DoS攻击的影响。随着时间的发展,2009年,全国DNS受...

    拒绝服务

    DoS攻击通常分为两种类型:分布式拒绝服务(Distributed Denial of Service, DDoS)和简单拒绝服务(Single Point Denial of Service)。在本场景中,我们主要关注的是DDoS攻击,因为标签为"C",这可能暗示我们将从...

    配置DNS服务器实验报告(1).doc

    6. **测试DNS服务**:在DOS命令行中使用`ping`命令,如`ping bb.teacher.school.edu`,验证DNS解析是否成功。 ### 实验小结 通过这次实验,你应能基本掌握DNS服务器的配置,包括安装、创建区域、添加资源记录、修改...

    互联网威胁管理体系.ppt

    2. DOS与DDoS攻击:拒绝服务攻击(DOS)是通过消耗目标系统资源使其无法正常服务,而分布式拒绝服务攻击(DDoS)则是在多台设备上发起协同攻击,规模更大,防御难度更高。构建强大的流量监控和清洗系统是防止DDoS...

    网络安全简答题1.docx

    6. DDoS攻击:分布式拒绝服务攻击,利用大量傀儡机发送流量,使目标服务器不堪重负,无法提供服务。常见类型有SYN Flood、ICMP Flood、UDP Flood等。CC攻击(Challenge Collapsar)针对Web服务器,通过模拟大量用户...

    网络安全实践和代码详解(实例代码哟!)

    - 拒绝服务攻击(DoS)与分布式拒绝服务攻击(DDoS):了解其原理、常见类型及防御策略。 - 钓鱼攻击:分析钓鱼邮件、仿冒网站的识别与防范。 - SQL注入与跨站脚本(XSS):学习如何防止数据库和Web应用程序遭受...

    网络安全技术概述.docx

    分布式拒绝服务攻击采用了一种比较特别的体系结构,从许多分布的主机同时攻击一个目标,从而导致目标瘫痪,简称DDoS(DistributedDenialofService)。 2.1.5对防火墙的攻击 网络安全技术概述全文共8页,当前为第3页...

    宁波房产场管理中心网络安全.pdf

    - 防护多种畸形报文攻击,包括SYN Flood和DNS Query Flood等DoS/DDoS攻击,以及端口扫描防护。 - 支持基于状态、精准的高性能攻击检测和防御,如SQL注入、跨站脚本攻击等。 - 支持实时攻击源阻断、IP屏蔽和攻击...

    网络安全技术期末复习总结.pdf

    网络攻击技术是网络安全的另一面,包括获取口令、欺骗技术、电子邮件攻击、网络嗅探、寻找系统漏洞、DoS攻击和缓冲区溢出攻击等。攻击者通常会利用常用端口如FTP、TELNET、SMTP、WWW以及DNS、SNMP、QQ等服务进行攻击...

    Java高级架构必备知识点

    **6.4 拒绝服务(DoS)攻击** 通过大量无效请求占用服务器资源,导致合法用户无法正常使用服务。 **6.5 架构师必备工具** - **操作系统**:Linux是最常用的服务器操作系统之一。 - **负载均衡**:DNS、F5、LVS、...

    软考信息安全工程师知识17.pdf

    - **DDoS(分布式拒绝服务)攻击**:攻击者通过大量请求使目标服务器瘫痪。了解DoS攻击的不同类型,如TCP/IP DoS和SYN Flood,以及相应的防御策略,如使用防火墙和流量清洗服务。 3. **操作系统安全** - **...

    windows中dos命令大全

    ### Windows中的DOS命令大全解析 #### 一、概述 在Windows系统中,DOS(Disk Operating System)命令行提供了一系列强大的工具,帮助用户管理和维护系统。这些命令不仅包括基本的文件操作,还涵盖了许多高级功能,...

    区块链在高校的多场景应用.pdf

    传统的DNS技术面临诸如反射放大攻击、DOS攻击、缓存中毒和域名劫持等威胁。区块链技术的去中心化特性,以及其不可篡改的特性,使得DNS系统的安全性得到显著提升。通过在区块链上记录域名和IP地址的对应关系,形成...

    软考信息安全工程师知识15.pdf

    常见的攻击类型包括DPI(深度包检查)、DDoS(分布式拒绝服务)、LAND、Fraggle、Smurf、Winnuke、Ping of Death、Tear Drop等。IPS通过分析TCP错误标志、HTTP洪水攻击等行为来防止攻击。 2. **深度包检查(Deep ...

    dos常用命令dos常用命令dos常用命令dos常用命令

    ### DOS常用命令详解 在计算机领域,特别是对于老一辈的电脑用户来说,了解和掌握DOS命令是非常重要的。DOS(磁盘操作系统)是一种基于命令行的操作系统环境,广泛应用于早期的个人计算机中。虽然现代操作系统如...

    2022年计算机三级数据库技术笔试试题及答案.doc

    6. **恶意软件**:逻辑炸弹、后门陷阱、僵尸网络属于恶意软件,而服务攻击通常是指拒绝服务攻击 (DoS) 或分布式拒绝服务攻击 (DDoS),并非恶意软件类别。 7. **数据结构**:数据结构的研究内容包括数据的逻辑结构...

    第04章 Internet服务及网站组建.pptx

    【第04章 Internet服务及网站组建】 ...总之,Windows 2000 Server凭借其稳定的性能、丰富的网络服务和灵活的管理工具,成为了构建Internet服务和网站的有力支持平台,尤其适合中小型企业进行网络部署和网站构建。

    dos命令大全txt

    根据提供的文件信息,这里将对涉及的DOS命令进行详细解释和分析,这些命令主要针对Windows操作系统中的管理和调试工具。 ### 1. winver:显示Windows版本信息 `winver`是一个简单的命令,用于查看当前运行的Windows...

Global site tag (gtag.js) - Google Analytics