Refuerzo de la seguridad de la pila web (LAMP) con aislamiento de servicios de red por sistemas VM

Refuerzo de la seguridad de la pila web (LAMP) con aislamiento de servicios de red por sistemas VM

09:01, 28.03.2024

Contenido del artículo
arrow

  • LAMP: Configuración tradicional frente a configuración dividida
  • Roles definidos para cada máquina virtual/servidor en la arquitectura LAMP dividida
  • Configuración real del servidor
  • Ventajas de rendimiento y seguridad de la división de servicios LAMP
  • Gestión de interacciones entre componentes LAMP divididos
  • Resumen

La pila web es una colección de varios softwares de código abierto, como el lenguaje de programación del lado del servidor, el sistema operativo, el servidor de base de datos y el servidor web. La pila más utilizada se llama LAMP. Este nombre es una abreviatura de Linux, servidor Apache, MySQL y PHP (en algunos casos puede ser Python o Perl). Por razones de seguridad, la mejor variante es ejecutar varios servicios de red en máquinas o sistemas virtuales separados. Con tal sistema, es obvio que los atacantes potenciales no pueden crackear muchos servicios.

Aquí en este artículo, tendremos la información más útil sobre la configuración de una solución que puede servir caché, contenido dinámico/estático, y base de datos funcionando en máquinas virtuales o servidores separados. 

LAMP: Configuración tradicional frente a configuración dividida

La configuración tradicional de un servidor, en la que todos los servicios están en una sola máquina, es extremadamente arriesgada hoy en día. Hay muchos hackers que pueden acceder a su servidor y a todos los datos que contiene con un solo intento. Para excluir tales problemas, es mejor considerar una configuración dividida.

La configuración dividida distribuirá la caché, la base de datos y otras partes por servidor. Los beneficios de tal enfoque son los siguientes:

  • Optimización
  • Seguridad
  • Facilidad de uso
  • Crecimiento y escalabilidad
  • Simplifica la supervisión

Roles definidos para cada máquina virtual/servidor en la arquitectura LAMP dividida

El ejemplo siguiente caracteriza diferentes MV que pueden ser relevantes para blogs, aplicaciones a medida o sitios web basados en Drupal. 

Servidor/VM
Descripción
Software
VM0
Dicho nodo/VM debe tener 2 interfaces - privada y pública. La interfaz pública ayuda a los usuarios a conectarse al sitio. La privada se utiliza para el tráfico de red entre nodos.
Netfilter como cortafuegos y haproxy/nginx como proxy inverso
VM1
Este nodo se utiliza para servir archivos estáticos como css, imágenes o js. Los archivos deben almacenarse en el servidor VM5.
Tux, cliente Linux nfs, lighttpd y nginx
VM2
Para páginas dinámicas, se utiliza este nodo. Por ejemplo, la app personalizada y el WordPress instalado pueden estar en esta VM. Los archivos de la aplicación se almacenan en VM5.
Cliente nfs Linux y Apache 2 con python/php5/fastcgi/perl/etc
VM3
El nodo se utiliza para almacenar en caché objetos y datos en la memoria RAM. Esto reduce la frecuencia de las llamadas a datos externos y de tal manera acelera todo.
Redis o Memcached
VM4
Esta parte es responsable de almacenar los datos mysql o postgresql en RDBMS.
Servidor Mysql
VM5
Este nodo funciona como un sistema de archivos distribuido. En este servidor, sólo se almacenan datos como imágenes, archivos php/python, css, js. Se utiliza un comando mount para acceder a los datos solicitados a VM2 y VM1.
Servidor NFSv4
Puerto de enlace ascendente o router ISP
VM0 se conecta a Internet a través de un enlace ascendente proporcionado por el ISP.
Sitio específico


Configuración real del servidor

  1. Instalación y configuración del servidor NFS.
  2. Instalación y configuración del servidor MySQL.
  3. Instalación y configuración del servidor Memcached.
  4. Instalación y configuración del servidor Apache.
  5. Instalación y configuración del servidor Lighttpd.
  6. Instalación y configuración del servidor Nginx.

Ventajas de rendimiento y seguridad de la división de servicios LAMP

Algunas de las principales ventajas de dividir los servicios LAMP son las siguientes:

  • Escalado. Con los servicios separados, es mucho más fácil escalar todo el sistema. Por ejemplo, si sólo tienes un servidor/vm entonces la estrategia necesita ser realmente compleja para incluir cada pequeño componente. También hay que tener en cuenta el equilibrio de carga que influye drásticamente en las características de rendimiento.
  • Despliegue. Por regla general, estos nodos suelen ser inmutables. Esto significa que el despliegue se realiza mediante la creación de un nuevo nodo, pero no añadiendo algo a uno ya existente. El proceso es mucho más fácil cuando la base de datos y la aplicación están en nodos diferentes.
  • Seguridad. En caso de riesgo de ataques, se puede perder el acceso a un nodo, pero no a todos a la vez, lo que minimiza enormemente los problemas.

Gestión de interacciones entre componentes LAMP divididos

Para una comprensión más práctica de las interacciones entre los componentes, vamos a crear un ejemplo real y explicar todo de acuerdo con él. Por ejemplo, el nombre del sitio es www.ex.com y se relaciona con la dirección IPv4 102.23.1.4 y está asignada a eth0. La IP interna es 837.234.1.1 y está asignada a eth1. Todos los servicios están en LAN y el sitio web es proxy inverso.

Las reglas del cortafuegos de hardware sólo permiten 102.23.1.4 en los puertos 443 y 80. El resto de puertos están bloqueados. El resto de los puertos están bloqueados. Cada nodo permite el acceso a los puertos requeridos y ejecuta iptables. El grupo de servidores se define como sigue:

upstream mybackend {
      server 837.234.1.10:80; #server1
      server 837.234.1.11:80; #server2
      ....
   ..
   ..
      server 837.234.1.100:80; # server100
}

El lighttpd y el servidor Apache pueden acceder a los archivos en VM05 utilizando el servidor nfs. El servidor Apache está configurado con PHP. La app PHP está configurada para enlazar con la base de datos en VM04. La caché SQL a través del servidor Memcached en VM03 se utiliza en la aplicación PHP.

Además, es posible colocar proxy inverso en DMZ y otros servidores en el cortafuegos para aumentar el nivel de seguridad. De esta forma, se maximizará el coste del proyecto.

Resumen

Para aumentar enormemente el nivel de seguridad de la aplicación web, es importante desplegar la red de VMs para cada capa de esta pila. Si hablamos del presupuesto para este tipo de mejora, por supuesto, no es una opción barata, el mantenimiento y la configuración del sistema pueden ser caros. A pesar del coste de la estrategia, la mejora de la seguridad es enorme y muy beneficiosa en cualquier caso. Además, la virtualización del servidor hace que los procesos de restauración, copia de seguridad y migración a otro hardware sean mucho más rápidos y sencillos.

Debido a la naturaleza binaria de las máquinas virtuales en el sistema de archivos del host, es mucho más sencillo portar a algunas otras máquinas cuando se necesita. Además, los precios un poco más altos que se invierten en este sistema se vuelven casi insignificantes cuando se restauran todas las máquinas en cuestión de minutos. Cuando se encuentre en una situación así, comprenderá realmente las grandes ventajas que conlleva el aislamiento de servicios de red por sistemas VM. Además, con este enfoque, es mucho más sencillo supervisar las diferentes máquinas virtuales de la red.       

views 5m, 57s
views 2
Compartir

¿Te ha resultado útil este artículo?

Ofertas populares de VPS

Otros artículos sobre este tema

cookie

¿Acepta las cookies y la política de privacidad?

Utilizamos cookies para asegurar que damos la mejor experiencia en nuestro sitio web. Si continúa sin cambiar la configuración, asumiremos que acepta recibir todas las cookies del sitio web HostZealot.