Hosts file

From Wikipedia, the free encyclopedia

In computing, a hosts file, stored on the computer's filesystem, is used to look up the Internet Protocol address of a device connected to a computer network, such as your home computer connected to the Internet. The hosts file describes a many-to-one mapping of device names to IP addresses. When accessing a device by name, the networking system will attempt to locate the name within the hosts file if it exists. Typically, this is used as a first means of locating the address of a system, before accessing the Internet domain name system. The reason for this is that the hosts file is stored on the computer itself and does not require any network access to be used, whereas DNS requires access to an external system, which is typically slower.

Contents

[edit] History

In the earliest days of the Internet's predecessor, ARPANET, there was no Domain Name System for resolving names into IP addresses. In order to simplify having to memorize IP addresses, a mechanism for translating memorable names to a valid IP address was developed. This mechanism was the HOSTS file method. The TCP/IP stack of an operating system would be modified so it would look up names from a file in order to try and translate them into IP addresses.

This method of performing name-to-IP lookups was in use for many years, as ARPANET was quite small and it was relatively easy to maintain a central HOSTS file that would be distributed to different sites. However, as ARPANET grew in size and complexity and more sites started expanding their own local TCP/IP networks (the beginning of Intranets), the HOSTS method on its own became insufficient. Thus the drive to develop a more scalable, dynamic system was started, which eventually resulted in the development of the widely-used DNS system.

However, TCP/IP-enabled operating systems from the ARPANET days (in other words, Unix and its progeny) retained the HOSTS mechanism up until the present day. Other non-Unix operating systems such as Microsoft Windows also adopted the mechanism. In small networks, it still provides a simple and very fast way to do name-to-IP-address translation.

Since the late 1990s, the HOSTS file mechanism has been adopted (primarily by Microsoft Windows) as a way to protect vulnerable computer systems from malware. At odds with the original intent of the HOSTS file, this adopted use actually takes host names that are perceived as malicious or unwanted and overlays them with "safe" IP addresses.

[edit] Location

The hosts file is generally named "hosts" and is located in the following directories for each operating system:

[edit] Syntax

The syntax of the hosts file is fairly straightforward. To assign a hostname to a target IP address, the target IP address is put at the beginning of a blank line, followed by one or more spaces and the hostname that should be resolved to that address. Any number of hostnames can be assigned to an IP address, however; a single hostname can only ever be assigned to one IP address at a time. Additionally, a hash (#) at the beginning of a line denotes a comment. Comment lines are ignored by the hosts file parser.

In the following example, we will assign the hostname, www.example.com and example.com the IP address 192.168.0.6 and add a comment explaining what we are doing...

192.168.0.6   www.example.com example.com
#The above line will cause www.example.com and example.com to resolve to 192.168.0.6

This also works...

192.168.0.6   www.example.com
192.168.0.6   example.com
#The above lines will cause www.example.com and example.com to resolve to 192.168.0.6

[edit] Ad filtering

One use of the hosts file is ad filtering. This is accomplished by adding a line to the file that maps an ad server's hostname to an address that will not satisfy the browser's request for the ad. Since no additional programs are necessary to do this, hosts file based ad-blocking has a near-zero memory and CPU footprint, as well as requiring no loading time. The hostname for an advertiser may be obtained by right-clicking on the banner or advertisement, then clicking properties from the context menu. This will indicate the full URL, of which the part between the double slash and first single slash represent the hostname. For instance, from the URL "http://img.example.com/example.jpg", the host name would be "img.example.com"

The two most common addresses used for this purpose are the 'null' address 0.0.0.0 (which may simply be written as a single '0') and the 'loopback' address 127.0.0.1. The distinction between the two is that 0.0.0.0 is an invalid destination address[1], so no connection can be established. If a name is mapped to the loopback address 127.0.0.1, any connections to the "blocked" domain will be mapped to the originating machine. If it is running a Web server, that Web server may attempt to handle the request. The ad-blocking technique may include a local web server that provides substitute images rather than 404 error messages, see [2] or [3], which would require the use of 127.0.0.1.

For example :

127.0.0.1 example.com 
127.0.0.1 ads.example.com 

[edit] Hijacking

The hosts file can also be used in malicious ways by the authors of spyware and viruses. It is similar to ad blocking with the hosts file, but instead of redirecting advertising servers to dummy ones, popular websites are redirected to an advertiser's server. This technique is known as hijacking. The Qhosts Trojan hijacked many search engines such as Google and AltaVista and redirected them to a site specified by the author.

Other malware such as Mydoom.B may just block the user from visiting sites about security and the removal of viruses. These sites included the makers of popular anti-virus software and Microsoft's Windows Update page to make the removal of the software more difficult for novice users.

Prevention of hosts file hijacking requires either routinely logging in with limited 'user' access (so malicious software has no privileges to change the hosts file, or other important things), or realtime monitoring software such as Windows Defender's "Hosts Monitor", which will warn if anything attempts to edit the hosts file. Changing the properties of the hosts file to read-only is mostly ineffective against modern hijacks as well-programmed malicious software can simply change the file's attribute value. Anti-spyware solutions like Spybot - Search & Destroy and ZoneAlarm's anti-spyware module have a feature to "lock" the hosts file. This does nothing more than set it to read-only. Another way to do this is set the permissions for the file so everyone can only read from it, although the owner and therefore malicious software running in the context of it can change the permissions in Windows and the root user can ignore the permissions in Unix.

[edit] Windows quirks

Windows XP has the "DNS Client" service running by default which caches previous DNS requests in memory. It also reads the entire hosts file into that cache as well, which can cause a slowdown at boot time if the file is large (most likely because it is being used for ad filtering). One solution is to disable this service. However, Microsoft claims that "The overall performance of the client computer decreases and the network traffic for DNS queries increases if the DNS resolver cache is deactivated."[1]

To force changes made to the hosts file into the DNS cache run the following in a cmd prompt:

ipconfig /flushdns

[edit] Restoration of the hosts file (Windows and Linux)

When a program hijacks the hosts file, it may be necessary to restore it.

  1. Identify the location of the hosts file for your operating system
  2. Create a backup copy
  3. Open it with a basic text editor such as Notepad or Nano
  4. Remove all entries for the sites which are hijacked. Some may have been added for legitimate programs. Always be sure to back up your hosts file. MAKE SURE THESE LINES ARE IN THE HOSTS FILE:
127.0.0.1        localhost
::1              localhost

  1. Save the file
  2. Restart your computer (some versions of Windows only - not Windows XP)

[edit] External links

More Information
Custom Hosts Files
Applications to Manage Hosts Files
Alternatives to using Hosts Files
  • Ad Muncher AdMuncher will work with all browsers on Microsoft Windows
  • AdBlock Plus AdBlock Plus works with Firefox on all operating systems to block ads
  • King Of The PAC PAC filter that blocks common spy domains and filters some porn. Will work on all operating systems with most modern browsers
  • DNS Redirector an intermediary DNS server which replaces known ad server names with the IP of your own page, usually a blank page or message indicating content is blocked. As a DNS server this works for all computers on the LAN, without having to manage/distribute Hosts files to each machine.
  • Privoxy is a web proxy with advanced filtering capabilities for protecting privacy, modifying web page data, managing cookies, controlling access, and removing ads, banners, pop-ups and other obnoxious Internet junk.

[edit] References

  1. ^ http://support.microsoft.com/kb/318803 - How to Disable Client-Side DNS Caching in Windows XP and Windows Server 2003