viernes, 24 de abril de 2009

Cambiar fingerprint Apache2

A raíz de una conversación con un coleguilla, acerca Cherokee, me comentaba las bondades de este software, que estaba escrito en C, tiene soporte para PHP,CGIs y demás. También comentábamos el poco consumo memoria y recursos en general. Mi pregunta fue "¿Sabes o has cambiado el fingerprint de Apache2?". Nunca lo había hecho pero llegamos a la conclusión de que compilando desde las fuentes se podría modificar. Tenía razón. Intentaré explicarlo con un ejemplo. Pero antes de nada.¿Qué es un fingerprint? Como siempre, hay mucha información en la red, pero podemos definirlo como "la impresión de una huella en cualquier tipo de superficie". Extrapolando a términos de networking, podríamos definirlo como "la repuesta(huella) que devuelve un servicio ejecutándose en una máquina cuando recibe una petición(...)".¿Por qué modificar esta respuesta?. A esta pregunta respondería con otra: ¿Y por qué no? Supongo, y creo que no voy mal encaminado, que a quién le interese el tipo y versión del software que se ejecuta en una máquina, tendrá como mínimo un interés de dudosa finalidad. Voy a otorgarle el beneficio de la duda. También por que con un simple nmap podemos "descubrir" de un modo muy sencillo estos datos. Ejemplo:

root@debian alberto#nmap -A server.ejemplo -p 80
Starting Nmap 4.68 ( http://nmap.org ) at 2009-04-24 10:16 CEST
Interesting ports on server.ejemplo:
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS webserver 5.0
MAC Address: 00:50:56:A9:4D:AB (VMWare)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Microsoft Windows 2000
OS details: Microsoft Windows 2000 SP4
Network Distance: 1 hop
Service Info: OS: Windows
OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.792 seconds

Vamos al grano. Evidentemente, para modificar el fingerprint de Apache, debemos descargar las fuentes de Apache.org y compilar el paquete. No temais, es muy sencillo.Con el paquete httpd-2.2.11.tar.gz desempaquetado en nuestra máquina, procedemos a instalar unos cuantos paquetes necesarios para el proceso de compilación:

[root@debian]apt-get update && apt-get install gcc make

Dentro del directorio de httpd-2.2.11/include editamos el fichero ap_release.h,
localizamos las siguiente cadenas y modificamos los valores a nuestro gusto:

#define AP_SERVER_BASEVENDOR "La Sexta Software Foundation"
#define AP_SERVER_BASEPROJECT "Patricia Conde Server"
#define AP_SERVER_BASEPRODUCT "Jachonda"

#define AP_SERVER_MAJORVERSION_NUMBER 1
#define AP_SERVER_MINORVERSION_NUMBER 1
#define AP_SERVER_PATCHLEVEL_NUMBER 1
#define AP_SERVER_DEVBUILD_BOOLEAN 0

Ahora, como siempre, ./configure && make && make install. Si no ha dado ningún error, debemos añadir al fichero httpd.conf el "ServerSignature On" para comprobar que añade la "firma" de nuestro nuevo Patricia Conde Server.
Ejemplo de un Error 404 :

La pruebas las he realizado sobre una Debian GNU/Linux 5.0 NetInstall sobre VirtualBox 2.14 corriendo en Debian Testing con Kernel 2.6.27.

2 comentarios:

Unknown dijo...

Si ya lo tienes instalado entoces puedes usar mod-security en Apache2 para eso y otras cosas, saludos ;) .

Unknown dijo...

Podrías postear un ejemplo!