8 consejos esenciales para proteger el servidor de aplicaciones web

En la mayoría de los casos, los servidores de aplicaciones web deben ser de acceso público, lo que significa que están expuestos a todo tipo de amenazas.

Muchas de estas amenazas son predecibles y fácilmente evitables, mientras que otras son desconocidas y pueden tomarlo desprevenido. Para minimizar la posibilidad de este último caso, ofrecemos una lista de consejos esenciales para mantener los servidores de aplicaciones web lo más seguros posible.

Antes de comenzar con la lista de consejos, debe comprender que un servidor de aplicaciones web no es una isla. El servidor es el componente central de la granja de aplicaciones web que hace posible el alojamiento y el funcionamiento de una aplicación web. Por lo tanto, para asegurar, debe tener en cuenta todos los componentes que lo rodean y asegurar todo el entorno de la aplicación web.

Un entorno básico para alojar y ejecutar aplicaciones web incluye el sistema operativo (Linux, Windows), el software del servidor web (Apache, Nginx) y un servidor de base de datos. Si se viola alguno de estos componentes, los atacantes podrían obtener acceso y realizar todas las acciones maliciosas que deseen.

Un primer consejo básico para asegurar un entorno como el descrito anteriormente es leer las pautas de seguridad y la lista de mejores prácticas para cada uno de los componentes. Dicho esto, revisemos una serie de pautas de seguridad de sentido común que se aplican a casi todos los entornos de aplicaciones web.

El cortafuegos desmitificado

Es posible que sienta la tentación de marcar rápidamente este elemento y pensar: «Qué suerte, ya tengo un firewall que protege mi red». Pero será mejor que detengas tus caballos.

Es posible que su cortafuegos se ocupe de los límites de su red, manteniendo fuera a los malos y dentro a los buenos, pero sin duda está dejando una puerta abierta de par en par para que los atacantes entren en su servidor de aplicaciones web.

¿Cómo?

Simple: el firewall de su red debe permitir al menos el tráfico entrante en los puertos 80 y 443 (es decir, HTTP y HTTPS), y no sabe quién o qué está pasando por esos puertos.

Lo que necesita para proteger su aplicación es un firewall de aplicaciones web (WAF) que analice específicamente el tráfico web y bloquee cualquier intento de explotar vulnerabilidades como secuencias de comandos entre sitios o inyección de código. Un WAF funciona como un antivirus y antimalware típico: busca patrones conocidos en el flujo de datos y lo bloquea cuando detecta una solicitud maliciosa.

Para ser efectivo, el WAF necesita tener su base de datos constantemente actualizada con nuevos patrones de amenazas, para poder bloquearlos. El problema con la prevención de ataques basada en patrones es que su aplicación web puede ser uno de los primeros objetivos de una nueva amenaza que su WAF aún no conoce.

Por estas razones, su aplicación web necesita capas de protección adicionales además del firewall de la red.

Escanee en busca de vulnerabilidades específicas de la web

Una vez más, no crea que su servidor de aplicaciones web está libre de vulnerabilidades solo porque el escáner de seguridad de su red lo indique.

Los escáneres de red no pueden detectar vulnerabilidades específicas de la aplicación. Para detectar y eliminar estas vulnerabilidades, debe someter las aplicaciones a una serie de pruebas y auditorías, como pruebas de penetración, escaneo de caja negra y auditoría de código fuente. Sin embargo, ninguno de estos métodos es a prueba de balas. Idealmente, debe realizar tantos como sea posible para eliminar todas las vulnerabilidades.

Por ejemplo, los escáneres de seguridad, como Invicti, asegúrese de que ningún código explotable llegue al entorno de producción. Pero podría haber vulnerabilidades lógicas que solo pueden detectarse mediante una auditoría de código manual. La auditoría manual, además de costar mucho, es un método humano y, por lo tanto, propenso a errores. Una buena idea para hacer este tipo de auditoría sin gastar mucho dinero es integrarlo en el proceso de desarrollo, principalmente educando a los desarrolladores.

Educa a tus desarrolladores

Los desarrolladores tienden a pensar que sus aplicaciones se ejecutan en mundos ideales, donde los recursos son ilimitados, los usuarios no cometen errores y no hay personas con intenciones despiadadas. Desafortunadamente, en algún momento, deben enfrentar problemas del mundo real, especialmente aquellos relacionados con la seguridad de la información.

Al desarrollar aplicaciones web, los codificadores deben conocer e implementar mecanismos de seguridad para garantizar que esté libre de vulnerabilidades. Dichos mecanismos de seguridad deben formar parte de la guía de mejores prácticas que debe cumplir el equipo de desarrollo.

La auditoría de calidad del software se utiliza para garantizar el cumplimiento de las mejores prácticas. Las mejores prácticas y la auditoría son las únicas formas de detectar vulnerabilidades lógicas, como (por ejemplo) pasar parámetros no cifrados y visibles dentro de una URL, que un atacante podría cambiar fácilmente para hacer lo que quiera.

Desactiva la funcionalidad innecesaria

Suponiendo que las aplicaciones web estén tan libres de errores como sea posible y que la granja web esté protegida, veamos qué se puede hacer en el servidor para protegerlo de los ataques.

Un consejo básico de sentido común es reducir la cantidad de puntos de entrada potencialmente vulnerables. Si los atacantes pueden explotar cualquiera de los componentes del servidor web, todo el servidor web podría estar en peligro.

Haga una lista de todos los puertos abiertos y los servicios o demonios en ejecución en su servidor y cierre, deshabilite o apague los innecesarios. El servidor no debe usarse para ningún otro propósito que no sea ejecutar sus aplicaciones web, así que considere mover todas las funciones adicionales a otros servidores en su red.

Utilice entornos independientes para el desarrollo, las pruebas y la producción

Los desarrolladores y evaluadores necesitan privilegios en los entornos en los que trabajan que no deberían tener en el servidor de aplicaciones en vivo. Incluso si confía ciegamente en ellos, sus contraseñas podrían filtrarse fácilmente y caer en manos no deseadas.

Además de las contraseñas y los privilegios, en los entornos de desarrollo y prueba, generalmente hay puertas traseras, archivos de registro, código fuente u otra información de depuración que podría exponer datos confidenciales, como nombres de usuario y contraseñas de bases de datos. El proceso de implementación de la aplicación web debe realizarlo un administrador, quien debe asegurarse de que no se exponga información confidencial después de instalar la aplicación en el servidor en vivo.

El mismo concepto de segregación debe aplicarse a los datos de la aplicación. Los evaluadores y desarrolladores siempre prefieren trabajar con datos reales, pero no es una buena idea otorgarles acceso a la base de datos de producción, o incluso a una copia de la misma. Además de las preocupaciones obvias de privacidad, la base de datos podría contener parámetros de configuración que revelan la configuración interna del servidor, como direcciones de puntos finales o nombres de rutas, por nombrar algunos.

Mantenga actualizado el software de su servidor

Por obvio que parezca, esta es una de las tareas más olvidadas. SUCURI encontró que el 59% de las aplicaciones de CMS estaban desactualizadas, lo que está abierto a riesgos.

Todos los días aparecen nuevas amenazas, y la única forma de evitar que pongan en peligro su servidor es instalar siempre los últimos parches de seguridad.

Mencionamos antes que los firewalls de red y los escáneres de seguridad de red no son suficientes para prevenir ataques a aplicaciones web. Pero son necesarios para proteger su servidor de las amenazas de ciberseguridad comunes, como los ataques DDoS. Así que asegúrese de tener dichas aplicaciones siempre actualizadas y de que estén protegiendo eficazmente su aplicación comercial.

Restringir el acceso y los privilegios

Una medida de seguridad básica es mantener el tráfico de acceso remoto, como RDP y SSH, encriptado y tunelizado. También es una buena idea mantener una lista reducida de direcciones IP desde las que se permite el acceso remoto, asegurándose de bloquear cualquier intento de iniciar sesión de forma remota desde cualquier otra IP.

En ocasiones, los administradores otorgan a las cuentas de servicio todos los privilegios posibles porque saben que, al hacerlo, «todo funcionará». Pero esta no es una buena práctica ya que los atacantes pueden usar vulnerabilidades en los servicios para penetrar el servidor. Si esos servicios se ejecutan con privilegios de administrador, pueden apoderarse de todo el servidor.

Un buen equilibrio entre seguridad y practicidad requiere que cada cuenta, tanto las cuentas de inicio de sesión como las cuentas de servicio, tenga los privilegios que necesita para realizar su trabajo, y nada más.

Por ejemplo, puede definir diferentes cuentas para que un administrador realice diferentes tareas: una para realizar copias de seguridad, otra para limpiar archivos de registro, otras para cambiar la configuración de los servicios, etc. Lo mismo se aplica a las cuentas de la base de datos: una aplicación generalmente solo necesita los permisos para leer y escribir datos, y no para crear o eliminar tablas. Por lo tanto, debe ejecutarse con una cuenta con privilegios limitados para realizar las tareas que debe realizar.

Esté atento a los registros del servidor

Los archivos de registro están ahí por una razón.

Los administradores deben monitorearlos regularmente para detectar cualquier comportamiento sospechoso antes de que cause algún daño. Al analizar los archivos de registro, puede descubrir mucha información para ayudarlo a proteger mejor la aplicación. Si ocurriera un ataque, los archivos de registro podrían mostrarle cuándo y cómo comenzó, lo que le ayudaría a controlar mejor los daños.

También debe tener un procedimiento automatizado para eliminar archivos de registro antiguos o podar información obsoleta, para evitar que consuman todo el espacio de almacenamiento disponible en el servidor.

Consejo adicional: manténgase informado

Hay mucha información gratuita y útil en Internet que puede utilizar para el beneficio de su aplicación web. No se pierda ninguna publicación nueva en blogs de seguridad de renombre (como este) y manténgase informado sobre lo que sucede en la industria de la seguridad y la web.

Tutoriales, cursos, videos y libros también son fuentes de conocimiento útil. Practique pasar una o dos horas a la semana solo para mantenerse informado de las noticias de la industria. Le dará la tranquilidad de saber que está haciendo lo correcto para mantener sus aplicaciones seguras.