V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
leavic
V2EX  ›  DNS

DNSSEC 对于直接插入虚假数据的攻击是不是无效?

  •  
  •   leavic · 2014-07-04 20:45:54 +08:00 · 2993 次点击
    这是一个创建于 3590 天前的主题,其中的信息可能已经有所发展或是发生改变。
    例如用Google DNS解析twitter.com的时候,Google本身是不会返回被污染的数据的,其实DNS缓存攻击已经失效,除了2010年那次缓存污染泄露影响到全球以外,基本上境外DNS是不受DNS缓存投毒影响的.
    但GFW的做法似乎是抢先在Google返回的解析结果之前返回一条错的解析结果给你,我测试下来Dnsmasq开启DNSSEC之后对这种攻击毫无办法,从DNSSEC的描述来看,似乎也只是能解决DNS Cache Poison的问题.

    有谁清楚GFW这种对境外DNS的干扰的原理吗?不知道是否有这方面的比较详尽的分析可以参考.
    除了用iptables防火墙规则规律直接排除掉被插入的解析结果,或者通过VPN直接访问DNS服务器,还有别的方法对付这种攻击吗?

    下面我的dnsmasq dnssec配置部分,是否还有漏掉什么呢?我确定DNSSEC是在工作的,因为如果我再加入dns-check-unsigned,114这类DNS就完全无法工作了.
    =====================================
    dnssec
    trust-anchor=.,19306,8,2,49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5
    第 1 条附言  ·  2014-07-04 22:06:02 +08:00
    好吧,原来这种攻击叫DNS劫持,和DNS缓存污染是两种完全不同的攻击方式,我就说为什么以前不走VPN的时候,用Google DNS解析twitter都是错的.
    第 2 条附言  ·  2014-07-04 22:49:23 +08:00
    似乎加上:
    dnssec-no-timecheck就OK了,DNSSEC还是有用的.
    第 3 条附言  ·  2014-07-04 22:50:54 +08:00
    晕,其实起作用的不是DNSSEC,而是之前设置的IPTABLES防火墙过滤规则,DNSSEC还是没挡住劫持.
    第 4 条附言  ·  2014-07-04 23:54:02 +08:00
    原因似乎是我同时设置了GoogleDNS和OpenDNS,而OpenWRT默认用了OpenDNS的缘故,莫非OpenDNS还不支持DNSSEC?
    第 5 条附言  ·  2014-07-05 00:51:12 +08:00
    6 条回复    2014-07-06 10:07:17 +08:00
    deddey
        1
    deddey  
       2014-07-04 22:58:21 +08:00
    dnssec能够确定返回的请求包是否来自那个真正的服务器,从这点来看,是能够对付dns劫持的。
    deddey
        2
    deddey  
       2014-07-04 23:41:15 +08:00   ❤️ 1
    我也简单测试了一下,没有开启dnssec是会返回错误地址,开启后能判断返回的地址是错的,蛋疼的dns服务器就说,那个什么错的哦,然后,就没有然后了
    leavic
        3
    leavic  
    OP
       2014-07-04 23:53:23 +08:00
    @deddey 嗯,我想我大概知道问题了:
    我在OpenWRT中设置了Google DNS和OpenDNS,但OpenDNS似乎还没有支持DNSSEC,而OpenDNS的速度稍微快一点,OpenWRT也许就默认用了OpenDNS解析,没有服务器端的支持肯定是完蛋的.

    删掉OpenDNS之后似乎可以正常过滤投毒IP了,不过,速度真tm慢啊,不通过VPN的话,8.8.8.8的Ping延时400多毫秒....

    我觉得还是把DNSSEC作为VPN断线后的防御手段来用吧,毕竟这个比用iptables规则要更广谱一些.
    leavic
        4
    leavic  
    OP
       2014-07-04 23:56:58 +08:00
    @deddey 不过话说回来,用iptables过滤投毒IP,还只是丢弃了第一个错误结果,最终还能挺快的找到正确IP.

    DNSSEC这直接就把被污染的解析数据彻底丢掉了,结果就像你说的:

    然后,就没有然后了.....
    deddey
        5
    deddey  
       2014-07-06 08:29:45 +08:00 via Android
    测试显示openerDNS开启了dnssec,这个功能会一直保留吧
    @leavic
    leavic
        6
    leavic  
    OP
       2014-07-06 10:07:17 +08:00
    @deddey 我测试的结果是OpenerDNS并不支持DNSSEC啊:

    =============
    root@OpenWrt:~# dig www.dnssec-validator.cz +dnssec +short @8.8.8.8
    217.31.205.55
    A 5 3 7200 20140719093534 20140705135505 60537 dnssec-validator.cz. fo8tMjwnYGCt86UllwrDLwG9PIEtAu/nhkchlpjuLqP69TTVEdvc1FQh Pzk2gXl4jaBXS2dK7jAtcI5rhJBKjCDA+7BFzLeLSkDqpo0h5CwI7dmb WZ+VhwwcFI0jrdcOG/BJwa/1NqmPfLjZVeCD//y1lDnrykNllQTxFrbI 3x4=

    root@OpenWrt:~# dig www.dnssec-validator.cz +dnssec +short @42.120.21.30
    217.31.205.55
    root@OpenWrt:~#
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2080 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 01:51 · PVG 09:51 · LAX 18:51 · JFK 21:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.