通配符DNS是否记录了不良做法?


18

我要求托管人添加三个都指向A记录IP的子域。似乎他只是添加了通配符DNS记录,因为任何随机子域现在都可以解析为我的IP。从技术的角度来看,这对我来说是可以的,因为没有子域指向其他任何地方。再说一次,我不喜欢他没有按照我的要求做。因此,我想知道是否还有其他原因要告诉他进行更改。有吗

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


8
有人可以使用“ i.dont.like.your.website.mywebsite.tld ” 链接到您的服务器,但是除非将服务器配置为通过主机头或虚拟主机对其进行响应,否则您的服务器不应响应。
joeqwerty

6
在某些情况下,可能需要通配符。例如,可以将多租户Web应用程序(如Wordpress)配置为使用子域(例如site1.blog.example.com,site2.blog.example.com)自动生成新实例,并为*.blog.example.com您添加通配符无需分别配置每个。
jscott

Answers:


16

如果您曾经将计算机放在该域中,则会遇到奇怪的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。


3
@ChrisLively指责现代Linux系统“有用”并添加了它。顺便说一句,使用“ .local”确实是不好的做法,而不仅仅是在Windows环境中。
迈克尔·汉普顿

6
我实际上是在Windows环境下写过关于此的博客。更不用说,由于ICANN正在将它们出售给钱包足够大的任何人,因此至少有三组竞标了.local TLD。.local不保留也不应该使用。这样做违反了RFC,根本没有必要。最佳做法是对内部资源(如)使用委派的第三级子域internal.company.com。仅仅因为看到很多东西并不能解决问题。
MDMarra

2
您能否指出RFC 2606中保留的部分.local?我已经与在此参数中使用它的人们一起阅读了至少十几次RFC,我可以肯定地告诉您它不存在。
MDMarra

2
@Zypher实际上,Microsoft从来没有推荐过它(在我的博客文章中也对此进行了揭穿。请.local仔细阅读,这是一个很好的选择),但是默认情况下使用SBS出厂的事实确实使MS在这方面看起来像是一团糟。SBS附带该配置,因为它是为那些技术知识较低的非技术客户提供的。这是阻力最小的路径,但实际的AD文档建议在W2K时代一直建议使用第三级子域。
MDMarra 2013年

3
哦,再过几年,要获取.local的证书将非常困难,这意味着Lync / Exchange的UCC / SAN证书必须由内部CA签署,如果您加入了外部非域,则将很痛苦用户。
MDMarra 2013年

14

通配符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;
    [...]
    }

7

这都是意见问题。对我来说,这不是一个坏习惯。

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

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

像这样的我已经分居表为每个租户一样,tenant_milkman.userstenant_fisherman.userstenant_bobs_garage.users,这在我看来是一个巨大的很多更容易维护,而不必在同一表中所有公司的所有用户对于此特定的应用程序。

[edit - Michael Hampton has a good point]

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


4
您有充分的技术理由使用通配符DNS。大多数人没有。
迈克尔·汉普顿

1
实际上,这对我来说非常危险-它允许您通过更改域名来访问任意数据库。我认为这是一种注入漏洞。诚然,它不一定能被利用-但是为什么要冒险?
sleske

1
@sleske不是,因为用户必须针对该子域(针对该数据库)进行身份验证。如果他切换,则将需要再次进行身份验证,因为这被视为完全不同的“站点”。
Pedro Moreira

@PedroMoreira:是的,这减少了攻击面。但是,提供对任意数据库的访问似乎仍然很危险。例如,如果有一个具有相同凭据的备份数据库,但是数据已从主数据库中清除,该怎么办-这将允许任何人访问知道该名称的人。尽管如此,我意识到安全始终是一种折衷-只是想指出固有的危险。
sleske '17

1
@sleske这就是为什么所有可访问的数据库都带有前缀的原因tenant_。我确保该应用程序甚至无法连接到它们。
Pedro Moreira

2

SEO是这里的另一个问题:如果所有*.example.com内容都显示相同的内容,至少Google会严重引用您的网站(https://support.google.com/webmasters/answer/66359)。


两个点都是正交的。即使所有名称都指向相同的IP,Web服务器也会获得请求的名称,并且可以传递完全不同的内容。
Patrick Mevzek

这就是为什么我要声明“如果所有* .example.com都显示相同的内容”的原因... SEO风险对我来说听起来很有趣。
克莱门特红磨坊- SimpleRezo

“对于我来说,SEO风险听起来有些有趣。” 也许可以,但是它们与是否使用通配符完全无关。您可以使用许多单独的名称来解析为一个IP地址,而无需使用任何通配符,因此可能会(或不会)您所说的SEO风险。在这里,使用通配符不会对任何方向产生任何影响。
Patrick Mevzek

0

假设您要在一个Web服务器中托管一个子域a.company.com,而在另一Web服务器中托管b.company.com,则这可能是另一个ISP,这是一个坏主意。你会做什么 ?。因此,通配符DNS不是一个选择,应该精确,为每个子域创建A记录并指向相关IP。有可能将您的Web服务器从一个ISP移至另一ISP,在这种情况下,您会怎么做?


0

我知道这是一个老问题,但是我想分享一个真实的例子,说明使用通配符域可能会导致问题。但是,我将更改域名并隐藏完整的SPF记录,以免尴尬。

我一直在帮助DMARC遇到问题的人,作为检查的一部分,我总是用DIG查找DMARC记录

;; ANSWER SECTION:
_dmarc.somedomain.com. 21599 IN      CNAME   somedomain.com.
somedomain.com.      21599   IN      TXT     "v=spf1 <rest of spf record> -all"

查找他们的DKIM记录时,我也得到了相同的结果。

因此,从该域发送的电子邮件将获得DKIM失败,因为DKIM模块将尝试解析DKIM密钥的SPF记录并失败,并且出于相同的原因,还将获得针对DMARC的Permerror。

通配符域似乎是一个好主意,但设置错误会导致各种问题。


-2

通配符DNS是否记录了不良做法?

不,与其他人相反,我认为这是一种好习惯。

大多数互联网用户有时会使用DNS名称。他们将输入ww.mycompany.comwwe.mycompany.com 您宁愿发生“糟糕,我们找不到该网站”还是让他们拉起您的主要主页?最好不要让他们拉起您的主要主页。很多人在做什么。

即使有人放置了链接,i.dont.like.your.website.whatever.com它仍然会拉出您的主页,这实际上是您想要的。毕竟,他们不能使该i.dont....站点转到其服务器,您仍然可以控制DNS路由,以便将其转到您的服务器。


5
我使用这种推理的问题是:1.它破坏了错误处理,2.它完全以www为中心,而通配符记录也会影响其他协议。结果是您破坏了其他事情的错误处理,而您没有努力修补这些事情。
哈坎·林奎斯特

-2

我认为首先没有通配符DNS记录的最佳原因是避免将您的服务器IP地址泄露给潜在的攻击者,并减少对DDOS攻击的威胁。Cloudflare也建议您进行以下设置:https : //blog.cloudflare.com/ddos-prevention-protecting-the-origin/


2
使用通配符域不会改变遭受此类攻击的风险。并且该链接不支持您的不正确声明。所有链接都表明,Cloudflare恰好对通配符域收取更高的价格。这仅说明了Cloudflare的业务模型,而没有说明使用通配符域的做法。
卡巴斯德(Kasperd),

如果您将通配符dns与cloudflare一起使用,因为通配符dns不会通过cloudflare(除非您向企业付款,大多数情况下不会这样做),所以任何人都可以ping任何组成的子域并找到您的真实IP。没有通配符,他们就不能。这里的所有都是它的。
迈克尔·罗杰斯

是的,如果需要此类服务,他们可能会向您收取更多通配符保护费用。尽管此问题与那些类型的服务无关,但与通配dns以及在正常情况下是否应该执行通配符有关。
克里斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.