通配符 DNS 记录是坏做法吗?

通配符 DNS 记录是坏做法吗?

我要求我的托管商添加三个子域名,所有子域名都指向 A 记录的 IP。他似乎只是添加了一个通配符 DNS 记录,因为现在任何随机子域名都会解析到我的 IP。从技术角度来看,这对我来说没问题,因为没有子域名指向其他地方。不过我不喜欢他不按我的要求做。所以我想知道是否还有其他理由让他改变这一点。有吗?

我发现的唯一缺点是有人可以使用 链接到我的网站http://i.dont.like.your.website.mywebsite.tld

答案1

如果您将计算机放在该域中,您将会遇到奇怪的 DNS 故障,当您尝试访问 Internet 上的某个随机站点时,您却到达的却是您自己的站点。

考虑一下:您拥有域名example.com。您设置了工作站并为其命名。...假设。yukon.example.com现在您会注意到其中/etc/resolv.conf有一行:

search example.com

这很方便,因为这意味着您可以查找主机名,例如,www它将www.example.com自动为您搜索。但它也有缺点:如果您访问 Google,它会搜索www.google.com.example.com,如果您有通配符 DNS,那么它将解析到您的网站,而您最终将无法到达 Google,而是进入您自己的网站。

这同样适用于服务器您正在运行您的网站!如果它必须调用外部服务,那么主机名查找可能会以同样的方式失败。例如,api.twitter.com突然变成api.twitter.com.example.com,直接路由回您的网站,当然会失败。

这就是为什么我绝不使用通配符 DNS。

答案2

通配符 DNS 记录是坏做法吗?

就我个人而言,我不喜欢它。尤其是当该域中有机器时。拼写错误得不到检查,错误不那么明显……但从根本上来说,它没有什么问题。

我发现的唯一缺点是有人可以使用以下方式链接到我的网站http://i.dont.like.your.website.mywebsite.tld

让您的 http 服务器将所有此类请求重定向到正确的、规范的地址,或者根本不响应。对于 nginx 来说,情况类似

server {
    listen 80;
    server_name *.mywebsite.tld;
    return 301 $scheme://mywebsite.tld$request_uri;
    }

然后是常规

server {
    listen  80;
    server_name mywebsite.tld;
    [...]
    }

答案3

这都是个人观点问题。对我来说,这不是坏习惯。

我正在创建一个多租户应用程序,每个租户使用一个数据库。然后它根据子域选择要使用的数据库。

例如milkman.example.com将使用tenant_milkman数据库。

像这样,我为每个租户分开了表格,比如tenant_milkman.users,,,,,在我看来,这对于这个特定的应用程序tenant_fisherman.users来说tenant_bobs_garage.users更容易维护,而不是将所有公司的所有用户都放在同一张表中。

[edit - Michael Hampton has a good point]

话虽如此,如果你有特定原因接受任何(可变)子域,就像我一样,那么您就不应该接受它们。

答案4

通配符 DNS 有一个相当重要且非常好的用途:通过 spf 阻止子域垃圾邮件!

除了配置其他内容之外,设置以下内容也非常重要:

*.example.com.      21599   IN      TXT     "v=spf1 -all"

为什么?因为没有这个,垃圾邮件发送者可以还会使用随机(不存在)的子域名欺骗您的主域名,发送数百万封电子邮件。

2023 年的真实世界数据(加上一年半前的全球研究)

  • 目前大约有 15 亿个电子邮件服务器拥有可响应 DNS 查询的域名
  • 大约 1/3 确实以某种方式使用/检查 spf(我忽略了此错误配置)
  • 约 0.03% 使用/检查 DMARC 和 DKIM。(DMARC 可以阻止无效的子域名电子邮件。)

那么:我们如何告诉十亿个电子邮件服务器,我们不会从各种不存在的子域发送电子邮件?使用通配符 TXT 子域条目。

当我们不这样做时会发生什么情况的真实世界数据......

  • 我有一个小型电子邮件服务器。它绝不使用自己的域名发送或接收电子邮件。它只为我们的其他域名提供服务。根据定义,使用其域名发送的任何电子邮件都是无效的。
  • 我已为该域正确配置了 SPF、DKIM 和 DMARC。来自[电子邮件保护]确实会在接收端被 spf 和/或 DMARC 阻止。

如果没有通配符 TXT spf 子域,会发生什么?

  • 根据 DMARC 报告,我们知道 0.03% 的具有 DMARC 功能的服务器每周拦截超过 4200 封垃圾邮件(主要来自亚洲)。这些邮件来自“[电子邮件保护]“...@clt.example.com...等等等等”
  • 由于这仅占服务器的 0.03%(并非所有服务器都会发送报告!),其余 99.97% 的服务器每周都会在我不存在的子域上收到超过 1400 万封垃圾邮件!
  • 并且,1/3 的服务器(大约 5 亿台)都有 SPF...他们批准了电子邮件,因为我没有每个可能的子域的 spf 记录。
  • 这意味着每周有 500 多万封垃圾邮件到达会检查 spf 的服务器!

通过设置如上所示的通配符 TXT,那一千万封垃圾邮件全部被拦截。是的,另外 2/3 的服务器没有被拦截,但这不是我们的问题。

数据源:

  • RedHunt Labs,“第六波互联网=广泛研究:SPF、DKIM 和 DMARC 现状” 2022 年 2 月 10 日
  • 真实世界的垃圾邮件捕获数据:我自己的一个域名的 DMARC 报告。

相关内容