Apache Tip - Take Clues Away from Bad Guys
Like the needy stranger who tells us his or her entire life story on
the occassion of our first meeting, Apache spews out way too much information
in every HTTP header. And like the unscrupulous sharpies who take advantage
of lonely folks they meet on buses, there are those who would use this
information to attack your system!
The default with Apache 1 and 2 is to send out information about the Server,
Version, OS, and all modules compiled in. On a Red Hat system with the
Apache 1.3.x RPM installed, it looks like this:
[usr-3@felix n]$ curl -s -I http://blahblah.com
HTTP/1.1 200 OK
Date: Fri, 11 Jul 2003 23:26:51 GMT
Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) mod_ssl/2.8.12 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.1.2
Last-Modified: Thu, 10 Jul 2003 14:53:52 GMT
ETag: "8019e-d2af-3f0d7e00"
Accept-Ranges: bytes
Content-Length: 53935
Connection: close
Content-Type: text/html
|
We couldn't make it much easier to fingerprint our system, and to simplify
automated attacks which scan for vulnerable versions of Apache or its modules.
Luckily, the solution is just one simple directive away! Simply add
the ServerTokens directive to your httpd.conf file, in the global configuration section. This directive, like ServerType, *only* applies globally. It cannot
be applied to individual virtual hosts. There are a range of options for
this directive which range from the chatty verbosity seen above ("Full")
to a simple one-word response, which we prefer and have implemented by
adding the following line to our httpd.conf:
ServerTokens Prod
Which makes our headers look like this:
[usr-3@felix n]$ curl -s -I http://blahblah.com
HTTP/1.1 200 OK
Date: Fri, 11 Jul 2003 23:43:51 GMT
Server: Apache
Last-Modified: Thu, 10 Jul 2003 14:53:52 GMT
ETag: "8019e-d2af-3f0d7e00"
Accept-Ranges: bytes
Content-Length: 53935
Connection: close
Content-Type: text/html
|
Just one less piece of easy prey for the sharks.
|
|