DNSCrypt – A protocol to improve DNS security
dnscrypt.org
dnscrypt.org
This was the original.
Other than having to modify their ksh script, it is painless to set up.
In my opinion, authoritative nameservers, and therefore DNSCurve forwarders like CurveDNS, are more important than recursive resolvers/caches such as OpenDNS and DNSCrypt.
A recursive resolver should be authoritative for nothing. They are middlemen. Companies that offered this "service", such as OpenDNS, had to pander to advertisers, or were run by advertising companies themselves, e.g., Google.
The "rules" of DNS are easily broken. This applies to caches. One does not need to look very far to find resolvers that someone has designated as "authoritative". dnsq: "weird ra". This often means an open resolver IME.
A while back some companies including the ones named above if I am not mistaken were pushing for extensions in DNS to put at least part of user IP addresses into DNS packets so cache operators could track them. The reason? Advertising. (Although maybe they would cite other reasons.) Not sure what ever happened with that. BIND had started to implement it. Thankfully djbdns will never support this garbage.
This kind of nonsense is why I cannot get excited about the latest extensions to internet protocols anymore.
Too often they are for the benefit of web companies and advertisers, not users.
The "encrypted DNS revolution", if it ever comes, is not going to be initiated by companies running recursive resolvers. (Unless they also run authoritative nameservers.)
Note: When the user runs their own cache on localhost there is no need to determine nearest POP.
Here is some background and setup instructions:
https://markbrown778.wordpress.com/2014/08/08/dns-privacy-us...
Or the ability to accurately direct users to the nearest POP.
After that, there are many options. But the GP was specifically mentioning a valid use case where this is applicable and not shady.
I am one of those companies running a recursive DNS service, DNSFilter.com
We are not advertising driven. OpenDNS cut the ads a few years ago.
We do not run open resolvers, we just have paying customers who wish to use our service.
The DNS extensions you are referring to are the EDNS0 Client Subnet extension. It is in wide use by authoritative servers for major CDNs and is supported by a number of recursive DNS providers. See the spec here: https://tools.ietf.org/html/draft-ietf-dnsop-edns-client-sub... Section 11 addresses your concerns about IP addresses being shared: It is encouraged to provide only as much granularity as is necessary based on network architecture. At no time is there a reason to share the last octect of an address (since Internet BGP routing is limited to a /24)
We do not run an authoritative DNS service, yet are working to improve encrypted communications... in coordination with industry authoritative partners. Very early stages, but we are driven to protect our customers and the Internet at large. Every time I hear someone misunderstanding what DNSSEC is, and why they think they want it, I'm encouraged to work on solutions such as dnscrypt or DNS over TLS: https://tools.ietf.org/html/rfc7858
Thanks for your hard work.
My client embeds information I need into the host part and the custom DNS server always returns NXDOMAIN.
So it's suggested that DNS providers and ISPs use only a portion of the IP address but they aren't forced to do so (and how could they be forced anyway?). Then it says that users that don't want to send their IP address should configure their software accordingly, but again only "if possible" so again no guarantee that it would be possible. Now a question: I don't see why a DNS packet would contain the client's IP address and a (I admit too quick) look at the draft didn't provided any information. Could you please elaborate on the supposed advantages of this practice?
"But .. caching", well, the performance of resolvers is perhaps not as clear cut as that. Performance would suffer for some, but they can clearly handle it, and does it really matter?
Some real world testing would surely be beneficial. In the mean time, I'm not sure about solutions to the resolver data leak problem. It is a solution to a problem we should not have.
If a site is https then even if an attacker is MITM-ing DNS to their own site they presumably won't have a valid cert for the site they're intercepting, although it has happened many times before, and 50% of the internet is still unencrypted. But even assuming that doesn't happen it's still a huge privacy/data leak.
Kinda. It still can add a CNAME there, and make you go into another site for what it has a valid cert.
In most DNS stacks when an application asks for thing1. the usual way (something like gethostbyname), the resolver side will quietly follow a CNAME answer and resolve thing2. without telling the application anything happened. It's not part of the usual APIs, but that's not to say applications can't find out if desired. Same story with symlinks, where one uses a different API to read the link instead of the target. So for the browser case mentioned, a naive resolver wouldn't even be aware of the CNAME, hence the CN not changing for TLS purposes and the address bar staying the same. No modern browser has a naive resolver, just saying.
People trip up on this a lot, just clarifying.
Edit: Nvm, DNSSEC still has to trust the validating resolver, DNSCrypt solves this.
DNSCrypt has been designed to both authenticate, authorize and encrypt the channel.
Using both in conjunction means that you have a private connection with authenticated data coming from the upstream resolver. Now the obvious issue is you don't know what the upstream resolver does with that...
https://sockpuppet.org/blog/2015/01/15/against-dnssec/
In the real world, for privacy, there are essentially two competing approaches: DNSCrypt and DNS-Privacy. Both are unrelated to DNSSEC. DNSCrypt uses a custom protocol to encrypt DNS transactions, and DNS-Privacy uses TLS. Neither require, or even benefit from, deployment of DNSSEC.
DNSSec => Authenticity of resource records
DNSCrypt, DNSoverTLS => Privacy of the connectionI still see DNSSec as providing value before the entire graph of DNSCrypt or DNSoverTLS exists.
DNSSEC provides no value at all until graph coverage is reached, and even then provides absolutely no privacy.
Meh, if an attacker can sniff your packets, they can already tell what IP addresses you're talking to, which certainly narrows down which domain names you're talking to.
I'm far more concerned with the possibility of intercepting or hijacking http traffic. Sure, an attacker could do this with any non-TLS connection in theory, but it's way way easier to hijack that one DNS response and change the A record.
The extension is sent unencrypted, even when using TLS 1.3. So everyone sniffing the traffic can tell where you are surfing to, even without DNS.
There is little reason to support clients that do not support SNI. By supporting those clients you are likely putting your entire encrypted infrastructure at risk. SSL3 should be disabled by now. XP clients are legacy and should be taken out back and shot. Older mobile phones are enormous security risks.
http://blog.trendmicro.com/trendlabs-security-intelligence/d...
Honest question: with an increasing amount of sites being hosted via cloud infrastructure, does an IP really let you know if you are talking to Amazon, Google, or Microsoft vs the multitude of sites hosted by AWS, GCP, or Azure?
I'm assuming they use their own infrastructure, but I could be wrong.
https://www.ietf.org/proceedings/94/slides/slides-94-tls-8.p...
https://tools.ietf.org/html/rfc7858
Probably more likely that that one will succeed. DNScrypt has been around for a long time and hasn't really seen any significant adoption.
https://kb.isc.org/article/AA-01386/30/DNS-over-TLS.html
This article shows how to set it up according to ISC with stunnel.
I was hoping for a native implementation in Bind but maybe it's coming.
bind is a software that is only 80% finished. The missing 20% that take 80% of the time will only be implemented via CVEs.
It also has an OK, if not great, API for integrating with, e.g., your provisioning system, inventory system, etc.
If you have some ssh server somewhere (who hasn't), you can very easily create a 'VPN over ssh' by calling:
sshuttle -r user@remote_host 0.0.0.0/0 --dns
It works nicely together with dnscrypt
Of course, that could change if everyone starts using homebrew VPNs. That's a bit hard to imagine, but stranger things and all that.
You could re-point your DNS resolver to one of the public DNSCrypt resolvers, but by doing so, all you're doing is making it so that another party gets to see your traffic. Your ISP still knows what you're doing, but now your DNS provider knows too.
From their own front page:
Please note that DNSCrypt is not a replacement for a VPN,
as it only authenticates DNS traffic, and doesn't prevent
third-party DNS resolvers from logging your activity. By
design, the TLS protocol, as used in HTTPS and HTTP/2,
leaks websites host names in plain text, so DNSCrypt is
not enough to hide this information.You also have to make sure your ISP isn't transparently capturing your DNS packets, which they probably are.
The OpenDNS page on DNSCrypt does state that traffic is encrypted.
Confusing...
To me, DNS is the current primary weakness of the internet in it's modern form, mainly due to centralization. I think we should also be focused more on secure connection techniques independent of the DNS system.
By default, with Ubuntu's dnscrypt-proxy package - the resolver is "cisco".
That's right, you're encrypting your DNS traffic just so Cisco can read it...
There are alternate resolvers but most people wouldn't change it out of the box.
If it conflicts then that means you're putting multiple services on your server. Don't.
Personally I've put dnscrypt on my regular dns servers, they only listen on 53.
Putting it on 443 forces a choice between letting people manage their own DNS or blocking every store on the planet.
I would also say that most DNSCrypt-capable providers I know of can also do it on port 53.
Use --script-security and --up if you'd like to script the DNS update and have it run everytime after you connect
pull-filter ignore "dhcp-option DNS"