¿Conoces la vulnerabilidad Dirty Cow? Aprende a proteger tu servidor Linux de ella

Es habitual localizar bugs en el kernel de Linux, agujeros que permanecen vigentes durante varios años sin que nadie haga nada para solucionarlos, incluso en muchas ocasiones, teniendo conocimiento de sus existencia. Es lo que ha ocurrido con el último caso sacado a la luz. Lleva por nombre Dirty Cow aunque su nombre técnico es CVE-2016-5195 publicado en Canonical, Red Hat, y Debian. Un problema de seguridad muy importante que ha estado vigente durante 9 años.

¿En qué consiste la vulnerabilidad Dirty Cow?

La vulnerabilidad de la que hablamos en esta entrada, fue descubierta por Phil Oester, un experto en seguridad y desarrollador de Linux. Este bug, lo que permite es una escalada de privilegios de forma remota o local.

En sí, el problema está localizado en el subsistema de memoria kernel y afecta al proceso de copia virtual de operaciones de escritura que hace el núcleo. De forma resumida, lo que permite esta vulnerabilidad es que un usuario normal sin privilegios, podría utilizarla para escribir y tener acceso a partes del sistema que pertenecen a otros usuarios, incluso de root. Es decir, archivos que únicamente son de lectura, podrían ser modificados por usuarios que no son sus propietarios, con los problemas que esto podría acarrear.

Como no podía ser de otra forma, esta vulnerabilidad ya fue corregida por los responsables del kernel, aunque no todos los usuarios tendrán acceso a esa actualización donde se corrige este problema.

¿Cómo se si mi equipo sufre la vulnerabilidad Dirty Cow?

Según se ha comprobado, la vulnerabilidad ha existido dentro del kernel del Linux desde su versión 2.6.22 liberada en el año 2007. Ya en su momento, se tuvo conocimiento de ella. Para mitigar sus efectos, se lanzó un parche que no dio los resultados esperados ya que era incompatible con otras funciones del kernel. Ahí se quedó la cosa hasta hace unos días que volvió a salir a la luz.

Para saber si la versión que utilizamos en nuestro sistema es segura, deberemos mirar la versión que utilizamos y asegurarnos de que está dentro del listado de versiones seguras. En este momento son Linux 4.8.3, 4.7.9 y 4.4.26 LTS.

Dependiendo de la versión del sistema operativo que utilicemos, la forma de localizar el kernel que estamos utilizando puede variar.

Ubuntu / Debian

Para encontrar la versión, desde la línea de comandos deberemos ejecutar la siguiente instrucción.

uname –rv

Por pantalla, nos deberá aparecer información parecida al siguiente ejemplo que os dejamos.

4.4.0-42-generic #62-Ubuntu SMP Fri Oct 7 23:11:45 UTC 2016

Si vuestra versión es anterior a estas que os dejamos, entonces la vulnerabilidad os afecta directamente.

  • 8.0-26.28para Ubuntu 16.10
  • 4.0-45.66para Ubuntu 16.04 LTS
  • 13.0-100.147para Ubuntu 14.04 LTS
  • 2.0-113.155para Ubuntu 12.04 LTS
  • 16.36-1+deb8u2 para Debian 8
  • 2.82-1para Debian 7
  • 7.8-1para Debian unstable

CentOS

Algunas versiones de CentOS, pueden utilizar este script proporcionado por Red Hat para comprobar la vulnerabilidad del sistema. Para probarlo, lo primero que debemos hacer será descargarlo.

wget https://access.redhat.com/sites/default/files/rh-cve-2016-5195_1.sh

Posteriormente, lo deberemos de ejecutar.

bash rh-cve-2016-5195_1.sh

Si el sistema es vulnerable, por pantalla aparecerá un mensaje parecido a lo siguiente que os dejamos.

“Your kernel is 3.10.0-327.36.1.el7.x86_64 which IS vulnerable.
Red Hat recommends that you update your kernel. Alternatively, you can apply partial
mitigation described at https://access.redhat.com/security/vulnerabilities/2706661 .”

Poner solución a la vulnerabilidad Dirty Cow

Por suerte, poner solución a este problema es sencillo. Lo único que debemos hacer es actualizar el sistema y reiniciar el servidor.

En Ubuntu y Debian, podemos actualizar utilizando “apt-get”.

sudo apt-get update && sudo apt-get dist-upgrade

En el caso de CentOS 5, 6 y 7, podéis actualizar el sistema con “sudo yum update”, pero si sólo quieres solucionar este problema, entonces deberías ejecutar lo siguiente:

sudo yum update kernel

Una vez que se haya actualizado, debemos reiniciar el sistema.

Android, uno de los más afectados

En el punto anterior, hemos visto que poner solución a esta vulnerabilidad es fácil, únicamente hay que actualizar la versión del kernel de nuestro sistema. El problema lo podemos encontrar en aquellos sistemas operativos que hacen uso del kernel de Linux pero cuya actualización no es tan rápida como cabría de esperar.

El caso más claro lo tenemos con Android. En la mayoría de los casos, la actualización del sistema depende de los propios fabricantes y en muchos casos, pasan de llevarlas a cabo. De esta forman, nos encontramos en una situación en la que la mayoría de usuarios con terminales Android, serán susceptibles de que alguien pueda atacarles mediante este problema. La solución en estos casos es esperar a que los fabricantes lancen actualizaciones o bien utilizar rooms de terceras empresas que solucionen este problema.

Te estamos buscando: administradores de sistemas y redes

Stackscale es un proveedor de servicios de Cloud Computing que ofrece soluciones IaaS (Infrastructure as a Service) dirigidas a grandes consumidores de recursos de computación, red y almacenamiento.

Actualmente la compañía tiene sedes en Madrid y Ámsterdam, estando ubicado su Centro de Operaciones de Redes y Sistemas, así como su departamento de I+D, en Elda (Alicante).

Puesto de trabajo: Administrador de sistemas y redes.

Ubicación: Buscamos candidatos para las tres ubicaciones de la empresa: Elda (Alicante), Madrid, Ámsterdam.

DESCRIPCIÓN DEL PUESTO

Stackscale precisa incorporar un administrador de redes y sistemas Unix/Linux para desarrollar las funciones propias del puesto en un ámbito de sistemas heterogéneos, así como apoyar al departamento de I+D.

REQUERIMIENTOS

  • Al menos 2 años de experiencia como administrador de sistemas Linux/Unix.
  • Conocimientos avanzados en redes IP.
  • Conocimientos en tecnologías de virtualización.
  • Conocimientos medios en lenguajes de programación: PHP, Python, Perl, C, Shell-Script, HTML, Javascript.
  • Inglés medio-alto (hablado y escrito).

HABILIDADES DESEABLES

Conocimientos y experiencia en:

  • Virtualización con VMware (especialmente vSphere y vCloud), KVM, Libvirt, Openstack, Xen, XenServer y Proxmox.
  • Almacenamiento: NetApp, ZFS y Ceph.
  • Monitorización: Nagios, Cacti, ELK – Elasticsearch, Logstash, Kibana, NewRelic, netdata.
  • Automatización: Saltstack.
  • Entornos altamente disponibles: HAProxy, Varnish, NGINX, Apache HTTP, PHP, Memcached, Redis, RabbitMQ, MySQL, MongoDB, etc.
  • Trato directo con el cliente.

Puedes inscribirte te recomendamos rellenar nuestro formulario para esta oferta de empleo, aunque también puedes escribirnos a jobs@stackscale.com.

Aplica para nuestros puestos de administración de sistemas y redes a través de nuestra página de empleo.

Stackscale colabora con el evento de emprendimiento Fashion Weekend Lab 2016

Para montar una startup resulta fundamental contar con una infraestructura desde el primer momento. Por ello, los organizadores de la Fashion Weekend Lab 2016 han confiado en el cloud privado de Stackscale para desarrollar los proyectos de emprendimiento que durante el evento verán la luz.

Este fin de semana (21, 22 y 23 de octubre), en Campus Madrid, tendrá lugar el evento donde participarán 100 personas de diversas disciplinas (diseño de moda, estilismo, creatividad, desarrollo web, informática, periodismo, publicidad, finanzas…). Entre ellas harán grupos con la finalidad de idear, cada uno de ellos, un MVP (Producto Mínimo Viable) relacionado con el sector de la moda. Sin duda, una brillante iniciativa para fomentar la generación de nuevas startups en el sector de la moda.

El diseñador Assaad Award, los fashion influencers Inés Rovira y Álvaro Mel, y el organizador de eventos Javier Esteban, entre otros, serán los mentores que asesorarán a los asistentes.

Medios y Redes, Estasdemoda.com, Pirendo, Uber, Climbcrew Venture Capital y el European Institute Entrepreneurship son algunos de los colaboradores con los que cuenta este evento al que desde Stackscale nos hemos sumado para facilitar la infraestructura web necesaria para los emprendedores participantes.

Las entradas ya están agotadas, pero puedes informarte sobre este evento en su web oficial: fwlab.es

Stackscale estará presente en la tercera edición de Meet Magento Spain 2016

Stackscale estará presente en el evento de referencia para la comunidad internacional del ECommerce. Meet Magento Spain 2016 (#MM16ES) vuelve de nuevo el día 25 de Octubre a Madrid en su tercer año consecutivo.

La conferencia anual de la comunidad Magento de referencia a nivel mundial, no solo cuenta con el respaldo oficial de la compañía, sino que también cuenta con el respaldo y la representación de las empresas más destacadas del comercio electrónico a nivel nacional e internacional.

meet-magento-spain-2016

Más de 400 merchants, ecommerce y market places, volverán este año al evento para debatir y conocer las nuevas tendencias que se están moviendo alrededor de este sector. Stackscale tiene una gran presencia en el ecosistema del comercio electrónico en Europa, dando soluciones de infraestructura y cloud hosting a grandes ECommerce.

Meet Magento Spain va dirigido a todos los profesionales del eCommerce y se espera reunir a más de 500 expertos nacionales e internacionales en el comercio electrónico. Un espacio idóneo donde desarrolladores, comerciantes y proveedores se darán cita para compartir sus conocimientos, experiencias y así generar oportunidades de negocio sobre los productos y servicios relacionados con el Ecommerce.

El objetivo principal de este año en el Meet Magento Spain será profundizar en las novedades que nos traerá de la mano Magento 2 en el entorno ECommerce.

El Teatro Goya de Madrid volverá a ser un año más el escenario del evento. El espacio del evento estará distribuido en 3 salas con charlas y workshops sobre Marketing, Ecommerce, negocio y desarrollo, funcionando en paralelo y que están dirigidas a todos aquellos que tienen un negocio online y que quieren mejorar sus resultados de ventas.

Entre los Speakers, podéis encontrar nombres como Ben Marks (miembro de Magento desde 2014), Carlos Liébana (fundador y director de FactorLibre, empresa de desarrollo de software en nuestro país), Thomas Goletz (también de Magento), Jorge Cano (eCommerce Manager de Unode50), o Montse Labiaga (CEO de Fotografía eCommerce, empresa especialista en fotografía de productos para tiendas online). Podéis encontrar todos los speakers que participan en el evento desde aquí: Speakers del Meet Magento Spain 2016.

Aunque todavía aún no está todo el programa y faltan eventos por confirmar, desde aquí puedes acceder a toda la Agenda de Meet Magento Spain 2016.

Desde Stackscale te queremos invitar a esta importante cita del comercio electrónico en España, aprovecha el código de 100% de descuento que tenemos para ti. Suscríbete a nuestro boletín de noticias y recibirás un cupón por email.

De nuevo Meet Magento Spain vuelve a estar organizado por Interactiv4 y Stackscale te acompañará en el evento como uno de los sponsors de referencia en soluciones de infraestructura y cloud hosting.

Los robots de Chanel desfilan sobre la recreación de un centro de datos en París

Karl Lagerfeld quería sorprender un año más al mundo de la moda con un impresionante desfile en París que apuntase a lo mas alto de la vanguardia creativa. Es más, su objetivo era llamar la atención de la nueva generación “millennial”, caracterizada por el uso de las nuevas tecnologías. Así nació su idea de recrear un centro de datos, el #DataCenterChanel, sobre el que desfilaron sus modelos – robots para presentar la nueva colección primavera – verano 2017.

Data Center Channel. Data Center Chanel. Imagen de instagram @franckbenhamou

Pero el centro de datos ha sido mucho más que un simple escenario. En realidad, ha sido la base de inspiración para esta renovación de los diseños más elegantes y míticos de la firma. Sus trajes de “tweed” se han reinventado con estampados y colores ácidos que nos recuerdan a los cables de un centro de datos y a los bolsos 2.55 se les han incorporado luces LED, por no hablar de aquellos que parecen una reproducción de una placa base como puedes ver en la siguiente imagen.

coleccion-datacenter-channel-paris

Al ritmo de la banda sonora de Daft Punk y con cascos propios de los robots soldados Stormtroopers de “La guerra de las galaxias” o gorras juveniles, las modelos desfilaron y presentaron esta nueva colección pensada para las nuevas generaciones que dará mucho de que hablar.

DataCenterChanel colección primavera - veranoData Center Chanel. Imagen de instagram @chanelofficial

En definitiva, Chanel nos muestra una alegoría a la gran cantidad de información que nos envuelve en la actualidad y a las nuevas tecnologías, llegando a su culmen cuando entras en la web oficial de Chanel para ver el desfile y te encuentras con que la descripción se encuentra en un gif animado donde se va escribiendo un código HTML con los datos.

Guía de uso del panel de control de Cloud Elástico

Son muchas las posibilidades que ofrece nuestro producto cloud elástico por medio del panel de control que ofrece. A simple vista puede parecer algo completo, pero a la hora de la verdad, su uso es muy intuitivo. De todas formas, hemos querido preparar esta guía donde explicaremos el uso de este panel d control para que no tengáis problemas con él.

Empecemos a descubrir todo lo que podemos hacer desde este panel de control.

Creación y administración de entornos

Si queremos crear un nuevo entorno de trabajo, los pasos que debemos seguir son los siguientes.

1.- En la esquina superior izquierda, pulsaremos en la opción “New environment”.

Crear un entorno cloud elástico Stackscale

2.- Se abrirá un cuadro de diálogo donde podemos personalizar todos los valores del entorno que queremos crear.

Creando un entorno con HA en cloud elástico Stackscale

3.- Cuando lo hayas terminado de configurar, tendrás que escribir un nombre para ese entorno recién creado y pulsar el botón “Create”. Esto te llevará a un listado de los entornos que tienes creado mostrando cierta información de cada uno de ellos.

Entorno desplegado con cloud elástico Stackscale

  • Name: En esta columna aparece el nombre del entorno, su dominio y el icono de la región. Si se pulsa sobre el icono del triángulo que aparece delante del nombre, se puede ver la lista de nodos que forma parte de él.
  • Status: Esta otra columna muestra el estado del entorno (Running, Sleeping, Stopped) o el proceso actual que está realizando (Creating, Launching, Stopping, Cloning, Exporting, Installing, Migrating, Deleting).
  • Deployed: Sirve para indicar si cualquier paquete de la aplicación se ha desplegado o si se está desplegando en este momento.
  • Usage: Muestra la cantidad de espacio en disco que el entorno consume actualmente. También nos encontramos con un icono hacia el historial de facturación.
  • Owner: Se trata de una columna opcional donde aparece el propietario del entorno.

Iconos de función para entornos

Si pasamos el ratón sobre alguno de los entornos creados, nos aparecerá una serie de iconos cada uno de ellos con una función determinada.

Detalle de entorno desplegado en cloud elástico Stackscale

1.- Region

Al pasar el ratón sobre este icono, aparecerá el nombre. Al pulsar sobre él, se abrirá la sección de migración. Sólo está disponible si dispones de una zona de cloud privado en Cloud Elástico Stackscale.

2.- Abrir en el navegador

Al pulsar sobre él, el entorno se abrirá en una nueva pestaña del navegador.

3.- Configuración

Al pulsar sobre este icono, se abrirá una nueva pestaña con las opciones de configuración disponibles.

  • Custom domains: Da acceso a las subopciones: Domain binding y Swap domain.
  • Custom SSL: Esta opción permitirá subir los archivos necesarios para la instalación de un certificado SSL.
  • SSH Access: Podrás añadir la clave SSH pública y de esta forma poder conectarse de forma segura a ese entorno creado.
  • Monitoring: Permite conocer la cantidad de recursos consumidos por el entorno. Puedes crear alertas que le avisen cuando se supere un determinado umbral.
  • Endpoints: Desde dentro de esta sección, se puede gestionar los puertos TCP / UDP para garantizar una conexión directa con los recursos externos.
  • Migration: Desde esta opción, podremos migrar ese entorno a otra localización.
  • Account Manager: Desde aquí, podremos ver el listado de cuentas que tiene acceso al entorno.
  • Change Owner: Si queremos cambiar el propietario, lo podremos hacer desde esta sección.
  • Export: Permite generar un archivo descargable con la configuración del entorno, que puede ser utilizado posteriormente para crear un entorno idéntico en cualquier otro proveedor.Info: Sección que muestra información sobre este paquete.

4.- Clone environment

Si queremos duplicar un entorno determinado, tan fácil como pulsar sobre este icono. Se abrirá una nueva ventana donde tendremos que indicar el nombre del nuevo entorno.

5.- Change environment topology

Podemos cambiar la topología del entorno pulsando en esta opción. Modifica aquellas cosas que necesites cambiar en la ventana que se abrirá y pulsa sobre el botón “Apply” para que los cambios tomen efecto.

6.- Delete environment

Si por algún motivo tuviéramos que eliminar un entorno, sólo tendríamos que pulsar sobre este icono y confirmar que queremos borrarlo.

Iconos de cada instancia

Si pulsamos sobre el triángulo que aparece delante del nombre del entorno, se desplegará un menú con la lista de servidores instalados, bases de datos y otros servicios activos. Para cada uno de estos servicios, están disponibles una serie de iconos que aparecen al pasar el ratón sobre ellos.

Detalle iconos de instancia Apache en Cloud Elástico Stackscale

Veamos a continuación para que son utilizados cada uno de esos iconos.

  • Open in browser: Abrirá la aplicación en una nueva pestaña del navegador.
  • Restart node: Esta opción será la que tendremos que elegir si queremos reiniciar un determinado servicio.
  • Config: Abrirá una pestaña donde podremos gestionar la configuración del nodo, pudiendo hacer cambios siempre que lo necesitemos.
  • Log: Nos permite ver los diferentes archivos log del nodo.
  • Statistics: Permite conseguir información sobre consumo de CPU, RAM, espacio en disco…

Determinados nodos pueden tener botones opcionales como Add-ons para añadir plugins adicionales y Add Project para instalar app vía GIT/SVN.

Marketplace

Cerca de la opción de “New environment”, en la parte superior del panel, podemos encontrarnos el botón “Markeplace” que también es ampliable, tal y como podéis ver en la imagen siguiente.

Si pulsamos en “Applications”, accederemos a una lista de paquetes de aplicaciones preconfiguradas.

Marketplace de aplicaciones cloud elástico stackscale

Podemos pulsar en el botón de instalación de cada una de esas aplicaciones para crear un entorno adecuado para ella y producir el despliegue de la herramienta elegida.

La opción Docker® Containers abrirá el panel donde podemos encontrar, y posteriormente implementar la imagen Docker® deseada utilizando alguna de las tres fichas disponibles.

Buscador de contenedores Docker

  • Quick Start que contiene un conjunto de las plantillas más populares.
  • Buscar en el registro, que permite localizar plantillas en el sistema de plantillas de Docker®.
  • Opción de añadir nuestras propias plantillas a partir de un registro personalizado.

Gestor de despliegue

El gestor de despliegue se utiliza para cargar los paquetes de aplicación y posteriormente desplegarlos en un servidor de aplicaciones de su entorno de ejecución.

Para hacer uso de él, debemos seguir los siguientes pasos que explicamos a continuación.

1.- Pulsaremos en el botón “Upload” para acceder a la caja de subida de archivos. Podemos utilizar la opción de subir un archivo desde nuestro disco duro, o bien indicar una dirección url.

subir archivos a gestor de despliegues

Cumplimentaremos los campos y pulsaremos sobre el botón.

2.- Seleccionamos el archivo subido y pulsaremos sobre el botón “Deploy to” para ver los distintos entornos que tenemos creados. Tendremos que elegir uno de ellos para que se lleve a cabo el despliegue de la aplicación.

Desplegar en entorno

3.- En la caja de diálogo que se mostrará ante nosotros, podremos confirmar el despliegue, utilizando el contexto por defecto o bien podemos indicar un contexto personalizado.

desplegar en cloud elástico

4.- Por último, sólo quedaría pulsar el botón “Deploy”.

Panel de tareas

Este panel aparece en la parte inferior del panel de control y contiene datos en tiempo real e histórico de las tareas que Cloud Elástico está llevando a cabo o que ya ha hecho.

Panel de tareas cloud elástico

Este panel incluye las columnas “Date”, “Name” y “Status”, que aportan información sobre cada tares.

  • Cuando se ha llevado a cabo.
  • Qué tipo de acción ha realizado.
  • El resultado de dicha acción.

Este panel de tareas, supervisa todos los procesos globales como es la creación del entorno, la adicción de nodos, los cambios llevados a cabo o las acciones llevadas a cabo en el gestor de archivos.

Configuraciones de la cuenta

Si pulsamos sobre el botón de configuración que aparece en la esquina superior derecha del panel, tendremos acceso a otras opciones que pueden ser interesantes y que se aplican a toda la cuenta.

configurar cuenta cloud elástico Stackscale

Cuando accedamos, veremos dos secciones disponibles: SSH Keychain y Collaboration.

Configuración de cuenta cloud elástico Stackscale

a) SSH Keychain

Aquí podemos encontrar información útil del uso del protocolo SSH en el Cloud Elástico, además de varios enlaces que pueden ser de gran utilidad para el manejo de las claves privadas y públicas.

b) Collaboration

Dentro de esta opción, nos encontramos dos artículos: Account Management y Shared with Me. El primero de ellos le permite compartir ciertas actividades con otras cuentas por medio de la creación y configuración de su propia colaboración, mientras que el segundo está destinado a la gestión de aquellos que ya han compartido con nosotros las cuentas.

Actualizar cuenta de prueba y balance

Dependiendo del tipo de cuenta que tengamos (prueba o de facturación), veremos la opción de “Upgrade trial account” o el botón “Balance” en la parte superior del panel. Actualmente si estás en las Beta Privada o Pública no verás opciones para actualizar la cuenta, pero te contamos como serán.

1.- Si estás utilizando una cuenta de prueba, verás la opción “Upgrade trial account”. Pulsa sobre ese botón para que se te abra un menú con varias opciones.

  • Pulsa sobre “Upgrade trial account” para conseguir una cuenta sin limitación, totalmente funcional.
  • “Learn about trial limitations”, mostrará información sobre las limitaciones que tienen las cuentas de prueba.
  • “Learn about pricing” te redirigirá hacia la página de la empresa para que pueda ver los precios de las distintas licencias que ofrecen.
  • La opción “See statistics on recent resource usage” abrirá tu histórico de facturas.

2.- Si ya está utilizando una licencia para tu cuenta, puedes pulsar sobre el botón “Balance” que se muestren algunas otras opciones.

  • Balance: Muestra tu saldo actual y sus componentes.
  • Refresh balance: Te permite ver los cambios de tu balance desde que has estado utilizando el panel.
  • Refill balance: Se utiliza para enviar el pago.
  • Configure auto-refill: Permite establecer una carga mensual del saldo eligiendo una de estas opciones: semanal, mensual o cuando el saldo sea inferior a una suma indicada.
  • Payments methods: Opción que te permite elegir el método de pago, así como añadir uno nuevo.
  • Quotas & pricing: Muestra una ventana con información sobre las limitaciones y precios de la cuenta Cloud Elástico.
  • Billing history: Muestra lo facturado en un determinado periodo de tiempo.
  • View invoices: Opción para ver las facturas que deben ser pagadas.

Opciones adicionales: caja de búsqueda, ayuda y dirección de email

Dentro del panel de control, nos encontramos algunas otras opciones en la esquina superior derecha.

1.- Si tienes dudas de cómo utilizar la plataforma, puedes buscar información por medio de la caja de texto que aparece en la parte superior.

2.- Si pulsamos en el menú “Help”, se desplegará una serie de opciones que pueden ser de gran ayuda.

Ayuda cloud elástico Stackscale

  • Contact support: Se trata de un enlace hasta el centro de soporte.
  • Docs: Enlace hacia la documentación de este panel de control.
  • API docs: Enlace hacia el API de Jelastic.
  • Video: Enlace hacia el canal de Youtube donde se muestra vídeos de uso del panel.
  • Go to community: Un enlace para conectar con la comunidad del panel.
  • Show Jelastic tutorial: Lleva a una página donde se explica paso a paso cómo comenzar con Cloud Elástico.

3.- La última opción que aparece es “Login”. Cuando pulsamos sobre ella, se despliega un menú con diferentes opciones.

configurar cuenta cloud elástico Stackscale

  • Change Password: Opción que permite cambiar nuestra contraseña.
  • Language: Permite seleccionar el idioma que utilizaremos en el panel.
  • Signout: Cerrar la sesión.

Son muchas las opciones que ofreces el uso de este panel de control dentro de Cloud Elástico, ahora os toca a vosotros que empecéis a utilizarlo.

Cómo instalar Node.js en un servidor Ubuntu

Desde hace algún tiempo, Node.js se ha convertido en una herramienta casi imprescindible para los desarrolladores. Para los que no lo conozcan, se puede decir que se trata de un entorno JavaScript del lado del servidor y que está basado en eventos. Node se encarga de ejecutar código JavaScript utilizando para ello el motor V8 desarrollado por Google para el uso de su navegador Chrome. Gracias a esto, Node.js es capaz de compilar y ejecutar código JavaScript a velocidades increíbles.

Lo que pretendemos a lo largo de esta publicación, es enseñaros los pasos necesarios para instalar Node.js en un servidor Ubuntu y de esta forma, poder beneficiarse de toda la potencia que ofrece esta herramienta.

¿Cómo instalar la distribución estable de Node.js?

El sistema operativo Ubuntu, incluye una versión de Node.js por defecto en su repositorio que puede ser utilizada para empezar a trabajar con esta herramienta. El problema, es que no suele tratarse de la última versión estable disponible, aunque debería ser suficiente para empezar a trastear con ella.

Para instalar esta versión, únicamente debemos utilizar el gestor de paquetes “apt”, aunque lo primero que deberíamos hacer sería refrescar nuestro repositorio antes de hacer la instalación.

sudo apt-get update
sudo apt-get install nodejs

Si el paquete que está disponible en el repositorio se adapta a sus necesidades, esto sería todo lo que debería hacer para poner en marcha Node.js, aunque en la mayoría de los casos, también necesitará tener instalado el paquete “npm”, que es el gestor de paquetes de Node.js. Para realizar esta instalación, debería ejecutar lo siguiente.

sudo apt-get install npm

Gracias a este gestor de paquetes, podréis instalar fácilmente módulos y paquetes para usar con Node.js.

Cabe decir, que debido a un conflicto con otro paquete, el ejecutable desde los repositorios de Ubuntu se llama “nodejs” en vez de “node”. Tened esto en cuenta cuando vayáis a ejecutar el software.

Anteriormente hemos visto el caso más sencillo, pero hay algún otro método para realizar la instalación de Node.js.

Cómo instalar Node.js mediante el uso de PPA

Un método alternativo para realizar la instalación de una versión más actual, es hacer uso de un PPA (archivo personal de paquete) mantenido por “NodeSource”. Gracias a esto, podremos obtener versiones diferentes a las que ofrece el repositorio de Ubuntu.

Para utilizar este método, lo primero será instalar el PPA con el fin de obtener acceso a su contenido.

curl -sL https://deb.nodesource.com/setup | sudo bash -

Una vez ejecutado la instrucción anterior, el PPA se añadirá a su configuración. Después, lo único que nos quedaría sería instalar el paquete Node.js de la misma manera que hicimos en el caso anterior.

sudo apt-get install nodejs

El paquete “nodejs” contiene los archivos binarios, así como el paquete “npm”, por lo que no será necesario realizar la instalación por separado. Sin embargo, para que puedan trabajar sin problemas todas las funcionalidades que ofrece el paquete “npm”, será necesario instalar “build-essentials”.

sudo apt-get install build-essential

Cómo instalar Node.js utilizando NVM

Una alternativa para instalar Node.js por medio del gestor de paquetes “apt”, es utilizar una herramienta especial llamada “nvm”, que viene a ser un gestor de versiones para Node.js.

Utilizando “nvm”, podrás instalar varias versiones que le permitirá controlar su entorno más fácil. Podrás acceder bajo demanda a las nuevas versiones, pero también le permitirá tener acceso a versiones anteriores que su aplicación necesite.

Para empezar, necesitamos obtener los paquetes desde nuestro repositorio de Ubuntu que nos permita construir los paquetes fuente. El script “nvm” será la encargada de construir los componentes necesarios.

sudo apt-get update
sudo apt-get install build-essential libssl-dev

Una vez que hemos instalado los paquetes necesarios, ya puedes descargar el script de instalación para “nvm” desde la página del proyecto en GitHub. El número de versión puede ser diferente, pero de forma general, deberías poder hacer la descarga ejecutando la siguiente sintaxis.

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

Con esto estaremos descargando el script y ejecutándolo. Se instalará el software en un subdirectorio dentro del directorio de su usuario en “~/.nvm”. También agregará las líneas necesarias al archivo “~/.profile”.

Para poder utilizar las funcionalidades de “nvm”, tendrá que cerrar la sesión y volver a iniciarla de nuevo.

Ahora que ya tienes instalado “nvm”, puedes instalar cualquier versión de Node.js que esté disponible, ya sea actuales o versiones anteriores. Para conocer las versiones de Node.js que están disponibles para su instalación, puede ejecutar:

nvm ls-remote

Eso nos mostrará un listado de las versiones disponibles. Para instalar una determinada versión, habría que ejecutar:

nvm install “versión”

Donde versión se sustituiría por la que querríamos instalar.

Cómo hemos comentado, gracias a este método, podemos tener instalado varias versiones. Para ejecutar una versión en concreto, lo deberíamos hacer de la siguiente forma.

nvm use “versión”

Donde versión sería aquella que queremos ejecutar.

Como hemos podido ver, hay varios métodos para realizar la instalación de Node.js con Ubuntu, ya depende de las circunstancias de cada uno, la opción a utilizar.

¿Qué es un Data Center?

Un centro de procesamiento de datos (CPD) es la ubicación física donde se concentran los recursos necesarios de computación de una organización o proveedor de servicios. También es conocido como “Internet Data Center” (IDC) en inglés, centro de cómputo en Latinoamérica, o en España que lo llamamos centro de cálculo o centro de datos.

El término centro de datos o Data Center es de uso muy habitual hoy en día. Muchos de los datos que manejamos hoy, desde móviles, tabletas y ordenadores acaban almacenados en estos centros de datos, en lo que muchos llaman la nube como un término realmente genérico.

¿Cómo es un centro de datos por dentro?

A través del siguiente vídeo podéis conocer cómo es un centro de datos por dentro, en este caso se trata de nuestro centro de datos en Madrid, Interxion MAD2. Estamos seguros que a los más curiosos les encantará conocer más sobre una de nuestras infraestructuras de alojamiento en Madrid.

Un centro de datos dispone de espacios de uso exclusivo donde las empresas mantienen y operan sus infraestructuras IT. Es ese espacio donde se pueden alojar los servidores y sistemas de almacenamiento para ejecutar las aplicaciones que procesan y almacenan datos de empresas. Algunas empresas disponen de una Jaula o de solo uno o varios racks (bastidor), mientras que otras pueden disponer de salas privadas para alojar un número determinado de armarios rack, dependiendo del tamaño de la empresa.

El centro de datos proporciona el espacio técnico preparado con falso suelo por debajo de cual se instalan las tomas eléctricas para conectar los bastidores.

El control de clima para mantener unos parámetros de temperatura y humedad correctos que garanticen el correcto funcionamiento y la integridad operativa de los sistemas alojados. Los centros de datos cuentan con sistemas de alimentación eléctrica, alimentación de reserva, refrigeración, cableado, detección y extinción de incendios, detectores de fugas de agua y controles de seguridad.

Un Datacenter físico puede alojar Datacenters virtuales, conocidos como cloud datacenters o cloud privado, con un menor coste gracias a la capa de virtualización. Cada Centro de datos virtual es totalmente independiente de otros, por lo que, cuenta con las máximas garantías de seguridad, disponibilidad y flexibilidad.

Stackscale selecciona los centros de datos de referencia en cada ubicación geográfica que pone en funcionamiento. Hoy disponemos de infraestructura en Madrid en Interxion MAD2 y Amsterdam en Telecity AMS5.

Cómo proteger tu servidor contra la vulnerabilidad HTTPoxy

HTTPoxy es una vulnerabilidad que fue descubierta el 18 de julio de 2016 y que a pesar de todo el tiempo que ha transcurrido, aún no se ha puesto solución definitiva, afectando a aplicaciones CGI escritas en PHP, Python y Go entre otras. Mediante ella, un atacante que quiera explotar esta vulnerabilidad puede forzar a las aplicaciones CGI vulnerables, a enviar sus paquetes HTTP a un proxy intermedio controlado por los piratas informáticos.

Esta vulnerabilidad es causada por una colisión entre nombres. Si un cliente envía una cabecera “Proxy”, algunas implementaciones de CGI crearán una variable de entorno “HTTP_PROXY” que anula la variable real del mismo nombre. Debido a esto, si en la cabecera se envía el nombre de un proxy malintencionado, este podría interceptar las conexiones de la aplicación web a otros sistemas, y dependiendo del código, llegar incluso a tomar el control del servidor.

Servidores y aplicaciones vulnerables a este problema

HTTPoxy es una vulnerabilidad general que se encuentra en muchas implementaciones CGI. Para que una aplicación sea vulnerable, debe cumplir algunos requisitos.

  • Utilizar la variable HTTP_PROXY para configurar conexiones proxy, ya sea en nuestro código o en cualquier librería de terceras personas que utilicemos.
  • Hacer peticiones a los servicios utilizando HTTP. Otras solicitudes realizadas por otros protocolos como HTTPS no serán vulnerables.
  • Desarrollos donde se utilizan variables prefijadas con la cadena “HTTP_”.

Para comprobar si una implementación está siendo afectada, Lucas Rehmann ha creado un sitio para realizar estas comprobaciones.

Información específica del lenguaje

Si hay un lenguaje que tiene más riesgo de ser susceptible a esta vulnerabilidad, es sin duda PHP, ya que es uno de los más utilizados en la actualidad y sus implementaciones CGI son más comunes que en cualquier otro lenguaje. Además, también nos encontramos el uso del método “getenv” en muchas bibliotecas populares utilizadas para el desarrollo de aplicaciones.

Otros lenguajes también afectados son Python y Go. En este caso, se tratan de lenguajes que ofrecen una serie de métodos más seguros que en el caso de PHP, pero que si durante el desarrollo de la aplicación, en alguna parte del código leen la variable HTTP_PROXY, se vuelven de forma automática vulnerables de sufrir este tipo de problema.

Cómo derrotar a la vulnerabilidad HTTPoxy

Afortunadamente, HTTPoxy es relativamente fácil de solucionar, pudiendo poner remedio desde diferentes frentes, ya sea desde la capa del servidor o desde el propio código del CGI.

  • A nivel de las aplicaciones, se puede ignorar la variable HTTP_PROXY cuando se están ejecutando en un entorno CGI.
  • Las aplicaciones o bibliotecas, pueden utilizar una variable de entorno diferente para configurar las conexiones proxy.
  • A nivel de servidor, se puede desarmar el encabezado Proxy recibido en las peticiones de los clientes.

Si en nuestro caso, estamos utilizando alguna librería vulnerable, deberíamos actuar a nivel de servidor para solucionar el problema. Si por el contrario, somos propietarios del código y nuestro proyecto se basa en la variable HTTP_PROXY, la solución sería utilizar otra variable alternativa que no entre en conflicto cuando se ejecuta en un entorno CGI. Por ejemplo, en el caso de Ruby se puede utilizar CGI_HTTP_PROXY.

Otra solución, a nivel de servidor, es desactivar la cabecera HTTP PROXY que es lo que veremos a partir de este punto.

Eliminando la cabecera HTTP Proxy en Apache

Si estás utilizando un servidor web Apache, podemos utilizar mod_headers para eliminar el encabezado de todas las peticiones.

1.- Servidores Ubuntu y Debian

Lo primero que debemos hacer, es activar mod_headers. Para ello deberemos ejecutar lo siguiente:

sudo a2enmod headers

Después, abriremos el archivo de configuración:

sudo nano /etc/apache2/apache2.conf

Hacia la parte inferior, deberemos añadir:

RequestHeader unset Proxy early

Guardamos los cambios y cerramos el archivo.

Revisa la configuración para asegurarnos que no tenemos errores de sintaxis.

sudo apache2ctl configtest

Si no se han reportado errores, reiniciamos Apache.

sudo service apache2 restart

2.- Servidores CentOS y Fedora

Bajo estos sistemas operativos, el módulo mod_headers debería haber sido instalado por defecto cuando se instaló Apache. Para desactivar las cabeceras, debemos abrir el archivo de configuración.

sudo nano /etc/httpd/conf/httpd.conf

Hacia el final del archivo añadir la siguiente línea.

RequestHeader unset Proxy early

Guardamos los cambios y cerramos el archivo. A continuación comprobamos que no se haya producido ningún error de sintaxis.

sudo apachectl configtest

Si todo ha ido bien, reiniciamos el servidor.

sudo service httpd restart

Eliminando las cabeceras HTTP Proxy con Nginx

Visto como hacerlo en Apache, pasemos ahora a realizar esta misma acción pero en servidores que utilicen Nginx.

1.- Servidores con Ubuntu o Debian

En estos sistemas operativos, los parámetros FastCGI están incluidos de forma habitual en los ficheros “fastcgi_params” o “fastcgi_conf”. En ambos casos podemos desactivar la cabecera HTTP_PROXY.

echo 'fastcgi_param HTTP_PROXY "";' | sudo tee -a /etc/nginx/fastcgi.conf
echo 'fastcgi_param HTTP_PROXY "";' | sudo tee -a  /etc/nginx/fastcgi_params

También es recomendable desactivar esta cabecera en los casos en los que hagamos uso de Nginx como proxy convencional. En este caso, también deberíamos ejecutar la siguiente instrucción.

echo 'proxy_set_header Proxy "";' | sudo tee -a /etc/nginx/proxy_params

Una vez realizados los cambios, debemos asegurarnos que no hemos cometido errores de sintaxis.

sudo nginx –t

Si todo ha ido bien, reiniciaremos el servidor.

sudo service nginx restart

2.- Servidores CentOS, RedHat y Fedora

Nginx en sistemas CentOS y Fedora, también utiliza los mismos archivos que Debian y Ubuntu para desactivar estas cabeceras. Para desactivarlo, deberemos ejecutar lo siguiente:

echo 'fastcgi_param HTTP_PROXY "";' | sudo tee -a /etc/nginx/fastcgi.conf
echo 'fastcgi_param HTTP_PROXY "";' | sudo tee -a  /etc/nginx/fastcgi_params

Si estamos utilizando Nginx como proxy convencional, también deberíamos eliminar estas cabeceras. Para ello, deberemos ejecutar lo siguiente.

grep -r "proxy_pass" /etc/nginx

Como en los casos anteriores, revisaremos que no se hayan producido ningún error de sintaxis.

sudo nginx -t

Si todo ha ido correctamente, reiniciaremos el servidor.

sudo service nginx restart

Eliminando la cabecera HTTP Proxy con HAProxy

Si estamos utilizando HAProxy para dirigir el tráfico de nuestras aplicaciones a los servidores, podemos eliminar esta cabecera antes de realizar el reenvío. Para ello, deberemos editar el archivo haproxy.cfg.

sudo nano /etc/haproxy/haproxy.cfg

Ahí, debemos modificar las secciones “frontend”, “backend” y “listen”.

frontend www
http-request del-header Proxy
. . .

backend web-backend
http-request del-header Proxy
. . .

listen appname 0.0.0.0:80
http-request del-header Proxy
. . .

Guardamos y cerramos el archivo, revisando que no se haya producido ningún error de sintaxis.

sudo haproxy -c -f /etc/haproxy/haproxy.cfg

Si todo ha ido bien, reiniciaremos el servicio.

sudo service haproxy restart

Siguiendo estos sencillos pasos, podremos solucionar el problema de la vulnerabilidad HTTPoxy y disfrutar de unas aplicaciones más seguras. Recuerda realizar copia de seguridad antes de las configuraciones y datos.