Al existir hoy en día un enorme número de programas, es imposible englobarlos todos y explicar uno por uno cómo deshabilitar o cambiar cada banner. Además existen algunos programas que no permiten ocultar dicha información o que, si lo hacen, lo hacen de forma limitada... Aún así es muy interesante conocer el concepto y podemos tomar esta información como base para aplicarla a otros servicios que nos interesen; siempre teniendo en cuenta que no todos permiten dicha ocultación. Obviamente más de uno se pude estar preguntado: ¿Cómo podemos saber qué información muestra cada servicio? ¿Cómo sabemos si el servicio muestra demasiada información o no? Esta incógnita se resuelve fácilmente mediante un pequeño comando llamado nmap. En este caso en concreto querríamos usar el comando nmap -sV ${ip_del_equipo}. Por ejemplo realizando un barrido de la ip 192.168.1.7 obtendría este resultado:
Esto solo es una pequeña parte la información que este comando puede mostrar, pues depende de la cantidad de servicios que tengamos instalados; los servicios son muchos y es imposible mencionarlos todos... Aún así, usando como base los servicios que mencionaré a continuación, podemos aplicar estos conceptos para otros servicios que tengamos instalados o que deseemos instalar en el futuro.
Apache2
Los servidores web son unos de los servicios más jugosos y más ansiados, y con razón, pues la caída de éstos suele ser muy perjudicial... El banner mostrado por el servidor web es muy peligroso, ya que no solo dice si es un Apache un Nginx o un ISS (entre otros) sin que además muestra la versión de dicho servidor web. Aunque en este caso me voy a centrar en Apache, este concepto es perfectamente aplicable al resto de servicios, con lo que en caso de tener un servidor web, es muy recomendable ocultar su banner o cambiarlo.
Para este caso en concreto, tenemos la posibilidad de cambiar el banner, que en mi opinión es mucho más útil que ocultarlo, ya que en dicho banner podemos poner lo que nos venga en gana... Desde un nombre gracioso a el nombre y la versión de otro servidor web que obviamente no tenemos instalado... Por ejemplo IIS 7.0 (Internet Information Service) que es tecnología de Microsoft, que es completamente opuesto a nuestro Apache, y hace pensar al atacante que tiene que atacar a un ISS (con ataques específicos para esa tecnología) cuando en verdad estamos corriendo un Apache.
Lo primero que necesitaremos para lograr nuestro objetivo será instalarnos las librerías del módulo de seguridad de apache, mod_security, instalación que se realiza desde los repositorios sin problema alguno:
apt-get install libapache2-modsecurity
Gracias a estas librerías, podemos ahora hacer uso de un módulo llamado security2_module; módulo que incluiremos en el fichero de configuración de apache2 llamado apache2.conf, alojado dentro del directorio /etc/apache2/. Al final del fichero de configuración habría que añadir (para finger ser por ejemplo ISS 7.0)
- <IfModule security2_module>
- SecRuleEngine on
- ServerTokens Full
- SecServerSignature "Microsoft-IIS/7.0"
- </IfModule>
Simplemente reiniciando apache ya tendríamos nuestro servidor web disfrazado; disfraz que como veis se ha podido aplicar de forma rápida y efectiva.
PHP
Otra gran fuente de información es php. Las últimas versiones están diseñadas para ocultar información sobre este software, pero aún así es conveniente revisar que efectivamente se está haciendo la ocultación, ya que requiere muy poco esfuerzo y nos puede ahorrar muchos problemas.
La revisión de la visibilidad o no de la información se hace dentro del fichero /etc/php5/apache2/php.ini, y simplemente consiste en revisar el el parámetro expose_php; este debería estar establecido a Off.
expose_php = Off
SSH
Obviamente no podía dejar pasar por alto el ansiadísimo SSH que tantas virtudes tiene y que tanta gente quiere explotar de un modo u otro... Aquí no es posible ocultar la versión de SSH, pero lo que sí que podemos hacer, al menos en Debian, es ocultar el sistema operativo bajo el que está corriendo SSH. Es cierto que no oculta tanta información como a uno le gustaría, pero el hecho de que no conozcan el sistema operativo fortifica bastante el sistema... Para ocultar el banner de Debian, basta con un sencillo comando:
echo'DebianBanner no'>>/etc/ssh/sshd_config
No es la ocultación absoluta, pero al menos no podrán conocer el sistema operativo gracias a este puerto.
FTP
Un servidor FTP puede ser creado mediante diferentes herramientas, y aunque es imposible ocultar el hecho de que se tiene un servidor ftp, sí que podemos ocultar qué software se está ejecutando. Al igual que en apache, aquí existen varios tipos de servidores ftp, cada uno con sus fortalezas y debilidades. En este caso me centraré en proftpd, pero esto puede ser perfectamente aplicado en cualquier otro servicio.
Para este caso en particular, también valdría con un comando parecido al aplicado con ssh, si bien tanto el parámetro como el fichero de configuración de destino, obviamente, cambian.
ServerIdent off
Obviamente estos son solo algunos de los servicios en los que podemos alterar u ocultar el banner, pero creo que sirven como una buena referencia para el futuro. La mejor prueba para comprobar que nuestros cambios han sido exitosos, sería la repetición del comando nmap. El comando tarda bastante más en ejecutarse debido a que tiene problemas con proftpd, pero pasado un rato obtendremos un resultado parecido al siguiente:
Espero que os haya resultado útil y que os sirva como base para otras aplicaciones.
Saludos.