Cómo asegurar su servidor NGINX

Cómo asegurar su servidor NGINX

Una breve guía sobre cómo asegurar su servidor NGINX

La seguridad es cada vez más importante. El software moderno es cada vez mejor para ayudarnos a desarrollar un software seguro, pero en la mayoría de los casos, tenemos que hacer un esfuerzo adicional para obtener más seguridad para nuestros productos. Hoy, quiero darte una breve guía sobre cómo asegurar tu servidor NGINX.


Esta guía está basada en un ejemplo de Express (Node.js) instalado en una máquina Linux, empezando desde cero. Esto significa que vamos a instalar NGINX, Node.js antes de configurar nuestra configuración de NGINX.


No te preocupes, todo será tan básico y sencillo como sea posible.


En primer lugar, necesitamos un servidor. Para esta guía, tengo una instancia EC2 fresca (Ubuntu Server 20.04 LTS) en AWS. Puedes usar lo que prefieras, pero supongo que ya tienes un servidor funcionando, si no, no estarías aquí, ¿verdad?


Instalación de NGINX

Asumiendo que ya te has conectado a tu servidor, vamos a instalar NGINX y configurarlo.


Vamos a comprobar si todo está bien.


La salida en su terminal debería dejar algo así:


Instalando Node.js

Como dije, voy a demostrar esto basado en Node.js, básicamente puedes saltarte esta parte trabajando simplemente con /var/www/html


Comprobemos si todo está bien ejecutando esto


Configurar el Servidor Express

No te preocupes, lo haré lo más sencillo posible.


Ahora vamos a crear nuestro index.js


Allí, añadimos un código de muestra Express muy sencillo:


Configurar NGINX

Primero muestro una forma bastante estándar de utilizar una aplicación de servidor Node.js con NGINX sin ningún tipo de seguridad, tal y como las veo muy extendidas en internet. Sólo quédate conmigo aquí.


Allí, vamos a reemplazar el contenido con esto:


Este fragmento de código le dice a NGINX que apunte el puerto 80 a nuestro servidor ExpressJS que se ejecuta en el puerto 3000.


Ahora, vamos a reiniciar nuestro servicio NGINX para ver nuestros cambios.


Además, voy a ejecutar nuestra aplicación Express:


Por lo tanto, el servidor se está ejecutando, NGINX está configurado, así que voy a visitar mi servidor en el navegador.


Todo funciona como se esperaba. Ahora echemos un vistazo a las cabeceras de respuesta.


Así que lo que podemos ver aquí es una gran cantidad de datos sensibles que exponemos. Por ejemplo, puede llegar a ser rápidamente peligroso si los hackers saben en qué marco o qué versión de NGINX está construido el servidor. Así que vamos a deshacernos de estos datos vulnerables.


Asegurando nuestra configuración de NGINX

Allí, vamos a reemplazar todas las configuraciones con esto:


Así que lo que añadimos allí es un montón de configuraciones de la línea 13 a la línea 20 con el fin de mejorar la seguridad de nuestro servidor.


Explicación

Esto elimina el número de versión de NGINX. Esta opción está activada por defecto.


Esto elimina la cabecera de respuesta x-powered-by. Basándonos en nuestro ejemplo, eliminamos la información de que nuestro servidor, se ejecuta en ExpressJS.


La cabecera de respuesta HTTP X-Runtime se utiliza para proporcionar el tiempo que una aplicación tarda en procesar cada solicitud. Este comportamiento puede ser explotado en ataques de harvesting donde el valor puede ser usado para confirmar si una pieza de información como un nombre de usuario es válida o no.


Esta cabecera habilita el filtro de secuencias de comandos en sitios cruzados (XSS) integrado en los navegadores web más recientes.


Esta cabecera no permite que el navegador renderice la página dentro de un marco o iframe.


Este encabezado deshabilitó el rastreo del tipo de contenido en la mayoría de los navegadores.


Esta línea es la línea 14 en los esteroides. Elimina por completo el servidor de cabecera de respuesta , por lo que ni siquiera exponemos el hecho, de que nuestro servidor se ejecuta en NGINX. Obviamente, esta línea hace que la línea 14 sea redundante, pero quería mostrarte ambas opciones.


Reiniciemos nuestro servidor NGINX una vez más y no olvidemos reiniciar nuestro servidor Express.


Veamos de nuevo nuestras cabeceras de respuesta.


¡Genial!... Ya no exponemos información vulnerable mientras añadimos algunas cabeceras que nos ayudan a asegurar nuestro servidor.


Gracias por leer este artículo sobre cómo asegurar un servidor NGINX. Obviamente, hay aún más formas de minimizar estos riesgos, pero espero que esto te dé un buen comienzo.


Reactions

9

1

0

0

Access hereTo be able to comment

TheWhiteCode.com is not the creator or owner of the images shown, references are: