Practical Domain Name System Security: A Survey of Common Hazards and Preventative Measures Nicholas A. Plante |
[email protected] College of Computer and Information Science Northeastern University, Boston MA I. Introduction The Domain Name System (DNS) is a hierarchical database distributed around the world whose primary function is to translate human-readable domain names to numerical IP addresses for network lookup and communication. The current system was designed in 1984 by Paul Mockapetris to eliminate scalability problems that had become apparent with the previous name-to-IP mapping scheme, which involved maintenance of a single hosts file distributed to end hosts periodically. A vast improvement to its predecessor, DNS is well suited to its task of maintaining a relatively efficient, distributed set of name- to-IP mappings, but unfortunately leaves something to be desired in terms of security. DNS is a critical part of everyday Internet usage required by anyone who has ever checked email through their provider, surfed to a website, or used a chat application to discuss the latest happenings with friends or family. Despite its relative invisibility to the common user, DNS is a service that most every networked application depends on dearly. This being the case, it is an obvious target for manipulation by malicious users. It is also particularly susceptible to compromise due to the following reasons: - DNS uses the connectionless User Datagram Protocol (UDP) to convey information from authoritative servers to clients instead of its connection-oriented counterpart, TCP. This decision was made for a number of legitimate reasons, but in terms of security, it makes requests particularly susceptible to hijacking, and responses easy to spoof, as it is not subjected to the three-way handshake that is required to set up a TCP connection.