La importancia del bastionado de servidores – Parte 1. Introducción y tipos de infraestructura

Hoy publicamos el primero de tres artículos cortesía de Jorge García sobre la importancia del bastionado de servidores. Jorge se presenta de la siguiente forma: «Aunque oficialmente soy administrador de sistemas y responsable de seguridad en la empresa donde trabajo, lo cierto es que mi trabajo también es mi hobby. Soy un gran aficionado a la informática geek, a la seguridad defensiva, a desplegarme mis propios servidores y a todo proceso DIY (‘do it yourself’) que me plantee nuevos retos de aprendizaje mientras me busco la vida para solucionar los problemas. La evolución es mi pasión.«

Todas las empresas, sin importar el ámbito en el que se desarrollan, disponen en mayor o menor medida de una infraestructura informática de servidores que almacenan y procesan información corporativa de vital importancia para el negocio. La duda que siempre me asalta es: si tan importante es esta información, ¿por qué la experiencia nos dice que es tan frecuente que las empresas no mantengan sus servidores, aplicaciones y equipos actualizados y debidamente bastionados?

Bien es sabido que una gran parte de las empresas no toman en serio la seguridad informática. Sin ir más lejos este informe publicado hace tres meses indica que 7 de las 10 vulnerabilidades más explotadas durante 2018 tenían entre 1 y 6 años de antigüedad; o este otro informe que indica que una gran cantidad de empresas no parchean sus sistemas de forma rápida. Esto es debido a que, las empresas piensan que no son objetivo escudándose en el el típico pensamiento de «mi empresa es pequeña y no tiene nada atractivo para los hackers», o bien porque no tienen o no consideran necesario disponer de recursos de personal y herramientas para mantener la plataforma actualizada. O al menos no lo hacen hasta que ya es demasiado tarde, y de eso mismo voy a hablaros en el post de hoy. It’s a true story. Vamos con un poco de background.

Desde hace algún tiempo administro en mis ratos libres, entre otras cosas, una infraestructura de comercio online de una compañera que vende ropa por Internet. El proyecto nació tras una conversación con la habitual frase «necesito una web para darme a conocer y vender mis productos». Me pidió consejo y estuvimos hablando sobre las diversas opciones que existen para ello. Básicamente las opciones se reducían a tres:

  1. Contratar el servicio de comercio online a una empresa que te ofrece el USO de su aplicación que ellos administran (lo que denominamos software-as-a-service (SaaS) -no confundir con ñapa-as-a-service (ÑaaS), que es otra cosa-). Esta aproximación es la que habitualmente denominamos «la nube». Como puedes imaginar, por ello te cobran.
  2. Contratar la infraestructura a una empresa que te ofrece la posibilidad de que tú despliegues tu propia tienda en su infraestructura (lo que denominamos infraestructure-as-a-service (IaaS)). Es decir, te dan la opción de que tú instales y administres tu propia tienda en su infraestructura. Dado que el esfuerzo es menor por su parte, te cobran menos que en la opción anterior.
  3. Instalarte en tu oficina tu propio servidor y desplegar en él la tienda y, por tanto, administrarlo tú mismo (lo que denominamos do-it-yourself (DIY) o solución on-premise). En este escenario tú asumes los costes del hardware y mantenimiento.

Infografía de Microsoft Technet

¿Cuál es mejor? Bueno, cada aproximación es un modelo de negocio distinto, aunque desde la perspectiva de la seguridad hay implicaciones muy importantes. Es cierto que desde hace un tiempo hay una tendencia general a que todo se despliegue en la nube, ya que esto trae consigo muchas ventajas, pero también algunos inconvenientes. Pasemos a analizar las distintas opciones:

Opción 1: SaaS
La aproximación SaaS es una de las más cómodas para el cliente. Un ejemplo es la solución de comercio electrónico que ofrece 1&1 Ionos, donde te proporcionan un usuario de una aplicación CMS y tú la utilizas tal cual.

En mi caso, a mi compañera le proporcionarían unas claves para loguearse en la tienda (recordemos, de otro) y subir sus productos. No hay más. No hay que preocuparse de actualizar la aplicación o el servidor (sí debemos comprobar que otro los actualice) y no se tiene noción de lo que hay por debajo (si es un servidor Windows o Linux, si es una máquina física o virtual, etc.). En esta aproximación todo eso pierde relevancia a cambio de pagar una cantidad de dinero al mes, generalmente fija y relativamente alta.

A nivel de seguridad, según mi criterio, plantea algunas dificultades. Utilizar la aplicación de otra empresa conlleva confianza total en que la empresa proveedora de la solución mantendrá la aplicación y el sistema actualizados, pero no podemos comprobarlo. A mí personalmente no es una opción que me agrade por este motivo. Además, suelen ser servidores compartidos donde otra de las aplicaciones que convivan en él pueden ser vulnerables y el equipo verse comprometido con más facilidad. Si nos introducimos en temas legales, la empresa debe garantizar el cumplimiento del RGPD (GPDR) si tu negocio va a almacenar los datos personales de los clientes de la UE, lo cual suele ocurrir, pero no siempre ocurre.

Como ventajas, al ser soluciones prestadas por empresas grandes, éstas suelen disponer de mecanismos de contención muy eficaces para ataques de fuerza bruta o DDoS, además de garantizarte que el servidor estará activo 24×7 porque tienen múltiples datacenters donde la tienda puede estar replicada. Otra ventaja evidente es que no requiere inversión en hardware, ni inicial ni de mantenimiento.

Opción 2: IaaS

Esta aproximación es una solución intermedia para los clientes que quieren tener el control sobre el sistema operativo y la aplicación, pero no disponen de la infraestructura para hospedar la tienda en sus propias instalaciones. Un ejemplo de esto son los servicios que ofrece Microsoft Azure, donde puedes instalar una tienda sobre un servidor que tú administras, pero está hospedado en la infraestructura de Azure.

No es tan costoso económicamente como una opción SaaS, pero requiere de conocimientos técnicos bastante avanzados para la instalación del sistema operativo del servidor y configuración de las aplicaciones, así como la gestión de las actualizaciones. Podemos decir que «subcontratas» el hardware y los costes de luz y mantenimiento. Por ejemplo, no tienes que cambiar un disco duro si deja de funcionar o preocuparte de que se caiga la red o haya un corte en el suministro eléctrico.

Opción 3: DIY

Esta opción es la más tradicional, donde se dispone de un servidor físico o virtual en nuestra propiedad y desplegamos en él la tienda. Tiene la ventaja de que controlamos absolutamente todo, desde el hardware hasta el software, el suministro eléctrico, etc. También puedes complementarlo con un firewall y con un IDS, todo bajo tu control.

Tiene el inconveniente de que requiere una fuerte inversión inicial en hardware, especialmente para cierto tipo de servicios que puedan requerir de discos SSD de alto rendimiento o una gran cantidad de almacenamiento. Es un modelo que suele resultar rentable si se dispone de cierto número de servicios que desplegar (varios portales web con varias aplicaciones y bases de datos, por ejemplo) y se utilizan tecnologías de virtualización como Proxmox o VMware.

En el caso que nos ocupa, tras valorar las tres opciones decidimos que, dado que ya dispongo de un servidor en propiedad con algunos servicios publicados a Internet, tomaríamos un camino intermedio. Desde mi perspectiva, se trataría de la opción DIY, ya que soy yo el que despliego la aplicación en el servidor que ya tengo, y me encargo de actualizar y mantener el sistema operativo y la aplicación. Desde la perspectiva de mi compañera, se trata de la opción SaaS, ya que le proporciono las credenciales y ella gestiona el contenido de la tienda, pero no tiene permisos para administrarla más allá de la logística del negocio. Es decir, hemos tomado el rol de que yo soy su «proveedor».

¿Y esto qué relevancia tiene? Es hora de hablar de la responsabilidad. Desde mi perspectiva, tengo la responsabilidad de garantizar que tanto la aplicación como el sistema operativo están actualizados y disponibles. Esto sin duda es todo un reto a nivel de seguridad. Una cosa es ofrecer mis propios servicios asumiendo mi propio riesgo, y otra muy distinta es ofrecerlos para terceras personas, pero asumiendo yo el riesgo. Para garantizar que todo vaya bien, hay que potenciar al máximo la seguridad del servidor y aplicar cuantas medidas estén en nuestra mano para reducir la superficie vulnerable. De esto hablaremos en las próximas partes de este artículo. ¡Estad atentos!