Revista Informática

Cómo esconder los Linux banners de los "curiosos"

Publicado el 10 diciembre 2015 por Drassill
Una de las cosas más curiosas que tienen los servicios que funcionan en red es que cuando se trata de acceder a estos, se hace un barrido de puertos con nmap o se hace una interacción de cualquier tipo con un servicio, es que éstos muestran mucha información sobre el servicio en cuestión, e incluso en algunos casos del sistema operativo... Yo a menudo suelo decir que la información es poder, pues no es para menos, ya que por defecto, todos los servicios muestran información que, aunque aparentemente inofensivos, pueden hacer mucho daño. No es lo mismo que una persona sepa que uno tiene un servicio web, que el que sepa que dicho servicio web es un Apache 2.4.10 (por ejemplo) corriendo sobre un sistema Operativo Debian, pues si se sabe qué versión tiene uno y en que sistema está corriendo, se pueden buscar vulnerabilidades de dicha versión y explotarlas. La mejor forma de prevenir ese tipo de cosas es manteniendo el sistema operativo y sus programas actualizados, pero no siempre es así, y además cuanto menos información se comparta con el resto del mundo, mejor. Por ello hoy quiero mostraros un par de consejos para ocultar parte de nuestra información al mundo; consejos que en este caso en concreto estarán relacionados con los banners, que son simplemente recursos que muestran cierta información; por defecto la información del software y/o sistema operativo.
ESCONDER
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:
Cómo esconder los Linux banners de los
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)
  1. <IfModule security2_module>
  2. SecRuleEngine on
  3. ServerTokens Full
  4. SecServerSignature "Microsoft-IIS/7.0"
  5. </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:
nmap_limpio
Espero que os haya resultado útil y que os sirva como base para otras aplicaciones.
Saludos.



Volver a la Portada de Logo Paperblog