AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 817524
Accepted
SoabTI
SoabTI
Asked: 2016-11-29 08:53:12 +0800 CST2016-11-29 08:53:12 +0800 CST 2016-11-29 08:53:12 +0800 CST

如何阻止来自多个 dns 的目标 ip 拒绝使用 iptables 回复

  • 772

如何阻止 iptables 从绑定发送到同一 IP 地址的拒绝数据包序列?

我考虑过使用字符串扩展名来寻找“拒绝”。这会保护 dns 免受 DoS 攻击吗?

我的尝试:

iptables -A INPUT -p udp -m udp --sport 53 -m string --string "Refused" --algo bm -m recent --set --name block-dns --rsource
iptables -A INPUT -p udp -m udp --sport 53 -m string --string "Refused" --algo bm -m recent --rcheck --seconds 10 --hitcount 1 --name block-dns --rsource -j DROP
domain-name-system iptables
  • 3 3 个回答
  • 513 Views

3 个回答

  • Voted
  1. HBruijn
    2016-11-29T09:05:41+08:002016-11-29T09:05:41+08:00

    我无法完全理解您想要实现的目标,但它失败的原因很简单,因为 DNS 响应实际上并不包含 string REFUSED。

    RFC 1035定义了一个响应标头,其中在该标头中将 4 位字段设置为RCODE; 响应代码,其中的值5代表“拒绝”:

    4.1.1. Header section format
    
    The header contains the following fields:
    
                                    1  1  1  1  1  1
      0  1  2  3  4  5  6  7  8  9  0  1  2  3  4  5
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                      ID                       |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |QR|   Opcode  |AA|TC|RD|RA|   Z    |   RCODE   |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    QDCOUNT                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    ANCOUNT                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    NSCOUNT                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    |                    ARCOUNT                    |
    +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
    

    RCODE 5- 名称服务器出于策略原因拒绝执行指定的操作。例如,名称服务器可能不希望向特定请求者提供信息,或者名称服务器可能不希望对特定数据执行特定操作(例如,区域传输)。

    • 6
  2. Best Answer
    Andrew B
    2016-12-02T15:27:56+08:002016-12-02T15:27:56+08:00

    不要这样做。

    1. 您正在创建拒绝服务向量。由于 DNS 查询很容易被欺骗,这种策略为攻击者打开了大门,可以训练您的 DNS 服务器忽略来自特定 IP 地址的流量。他们所要做的就是欺骗会产生 的响应的查询REFUSED,并且这个“智能”防火墙会很高兴地开始忽略来自受害者的流量。

    2. REFUSED响应一开始对攻击者没有用处。希望利用 DNS 进行肮脏工作的攻击者通常是在寻找某种形式的放大效应,而这些查询不会产生这种效应。大多数 DNS 专业人士会认为这是不必要的过度设计。

    log2ban 样式策略仅在您处理具有已确认源 IP 的流量时才有效。TCP 通过 3 次握手内置了这种保护,但 UDP 没有。

    • 3
  3. A.B
    2016-11-29T11:07:05+08:002016-11-29T11:07:05+08:00

    利用 HBruijn 的回答,这里将是,在 DNS 服务器上,如何使用 u32 匹配丢弃任何带有 REFUSED RCODE 的 UDP DNS 回复

    iptables -I OUTPUT -p udp --sport 53 -m u32 --u32  '0>>22&0x3C@8 & 0x800F=0x8005' -j DROP
    

    它跳过 IP 报头,然后为 UDP 报头再跳过 8 个字节,并在有效负载开始时检查第一个 u32 数据的内容:第 1 位是 1(回复),最后 4 位值 = 5(拒绝)。

    正如我被提醒的那样,禁止源 IP 进行 UDP 查询是个坏主意,因为使用欺骗性 IP,这就是 DoS。没有收到拒绝回复似乎不是一个真正的问题。我刚刚从这个答案中删除了“最近的”规则。

    • 2

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve