DNS is probably one of the most important protocols on the internet. Everybody uses it countless times each day, usually without even noticing it. Every time somebody visits any website, every time somebody sends a mail, every time somebody wants to do literallly ANYTHING on the internet, a DNS server is involved.
What it does is fairly straightforward: It is a dictionary of domain names (like enbewe.de or example.com) and the associated IP address (like 203.0.113.17 or 2001:DB8::12). If a user wants to access a website at a certain domain, the browser first queries a DNS server for the IP address of the domain and then connects to the server with that address. Essentially it is a phonebook for the internet.
Sadly the protocol is about as ancient as it can be in the internet, being developed in 1983. During these early days, nobody designed protocols to be protected against malicious attacks. For this reason DNS is horribly insecure and a largs-scale attack on the internet could probably render the entire internet unusable (for some time). But it can also be compromised in more subtle ways, i.e. directing users to wrong servers for phishing attacks.
To improve the situation, the DNSSEC protocol has been developed. It could be argued that DNSSEC is far from perfect but at least it is a step in the right direction. For this reason I want to talk a bit about DNSSEC, what it does, how I use it on my server and how it can be used in clients.
But that will start in part 2 …