Cuando estamos configurando una infraestructura, hacer que las aplicaciones funcionen bien es generalmente nuestra preocupación principal. Sin embargo, hacer que la aplicación funcione sin tomar en cuenta los aspectos de seguridad podría resultar en consecuencias catastróficas. En este artículo hablaremos sobre algunos conceptos que te ayudarán a agregar seguridad a tu aplicación.

Llaves SSH

Las llaves SSH son un par de llaves criptográficas que son utilizadas para autenticar usuarios en un servidor SSH y se utilizan como una alternativa al inicio de sesión por medio de contraseña. Una sola llave SSH consta de dos archivos, la llave privada y la llave pública. La llave pública puede ser compartida a través de internet en múltiples servidores. La llave privada debe permanecer secreta y asegurada por el usuario.

Para configurar la autenticación SSH, primero deberás contar con las llaves públicas y privadas. En el servidor donde deseas autenticarte deberás colocar la llave pública mientras que la llave privada la debes mantener en tu equipo local. El cliente SSH utilizará la llave privada y la comparará con la llave pública y de esta forma determinará si la autenticación es correcta.

Luego de esto se deberá configurar el servidor para utilizar SSH como método de autenticación y una vez configurado tenemos que deshabilitar el acceso por contraseña. Hacer esto incrementará la seguridad de tu servidor evitando que usuarios no autorizados se conecten.

En el curso de administración de servidores para PHP y Laravel explicamos cómo configurar el servicio de SSH.

Firewalls

Un firewall es usualmente un software (aunque puede ser también una pieza de hardware) que controla los servicios que están expuestos en la red. Su función principal es bloquear o restringir el acceso a todos los puertos excepto aquellos que tienen que estar disponibles de manera pública.

En un servidor, típicamente se tienen algunos servicios ejecutándose de manera predeterminada. Estos pueden organizarse en los siguientes grupos:

  • Servicios públicos, que pueden ser accedidos por cualquiera en Internet, usualmente de manera anónima. Un buen ejemplo de esto es un servidor Web que permite el acceso a los sitios que aloja.
  • Servicios privados, que solamente pueden ser accedidos por un selecto grupo de cuentas autorizadas o desde ciertas ubicaciones. Un ejemplo de esto puede ser el panel de control de una base de datos.
  • Servicios internos, que son accesibles solamente desde el mismo servidor y no están expuestos al mundo exterior. Por ejemplo, una base de datos que solamente acepte conexiones locales.

Los firewalls pueden asegurar que el acceso a su software esté restringido de acuerdo a las categorias mencionadas anteriormente. Los servicios públicos pueden quedarse abiertos y disponibles para todo el mundo, mientras que los servicios privados pueden ser restringidos basándose en diferentes criterios según la organización que los esté utilizando. Los servicios internos siempre son completamente inaccesibles desde el mundo exterior.

En el curso de administración de servidores para PHP y Laravel explicamos cómo configurar reglas para el Firewall con iptables.

VPNs y Redes Privadas

Las redes privadas son redes que solamente están disponibles para ciertos usuarios o servidores. Por ejemplo, una organización puede tener servidores en distintas regiones de todo el mundo y por medio de una red privada estos servidores pueden comunicarse entre sí sin importar su ubicación real.

Un VPN o Red Privada Virtual (Virtual Private Network) es una manera de crear conexiones seguras entre computadoras remotas y presentan la conexión como si se estuviera trabajando en una red local privada. Esto brinda una manera de configurar sus servicios como si estuvieran en una red privada y conectar servidores remotos a través de una conexión segura.

Infraestructura de Llave Pública y Cifrado SSL/TLS

La infraestructura de llave pública o PKI por sus siglas (Public Key Infrastructure) se refiere a un sistema que está diseñado para crear, administrar y validar certificados para identificar individuos y encriptar comunicaciones. Los certificados SSL o TLS pueden ser utilizados para autenticar diferentes entidades entre sí. Después de autenticarse, también pueden ser utilizados para encriptar comunicaciones.

Auditoría de servicios

Hasta ahora, hemos mencionado algunas de las tecnologías que podemos utilizar para implementar y mejorar la seguridad. Sin embargo, una de las principales funciones de la seguridad es analizar los sistemas, identificando los puntos vulnerables a ataques y asegurando los componentes lo mejor que se pueda.

Auditar los servicios es una manera de descubrir qué servicios están en ejecución, qué puertos se están utilizando para comunicación y qué protocolos son aceptados. Esta información puede ayudarte a establecer una correcta configuración de tu firewall.

Auditoría de Archivos y Sistemas de Detección de Intrusos

La auditoría de archivos es el proceso de comparar el sistema actual contra un registro de archivos característicos de tu sistema cuando está en un estado saludable. Esto es utilizado para detectar cambios en el sistema que puedan no haber sido autorizados.

Un Sistema de Detección de Intrusos es un software que monitorea un sistema o una red para detectar actividad no autorizada. Varios sistemas de detección de intrusos utilizan una implementación de la auditoría de archivos para comprobar si un sistema ha sido modificado.

Entornos de Ejecución Aislados

Los Entornos de Ejecución Aislados se refieren a cualquier método en el que componentes individuales se ejecutan en su propio espacio dedicado.

Esto consta de separar los componentes de tu aplicación en sus propios servidores, o en dado caso, configurar los servicios para operar en entornos chroot o en contenedores. El nivel de aislamiento depende en gran parte en los requerimientos de tu aplicación y las capacidades de tu infraestructura.

En conclusión, si tomamos en cuenta estas 7 medidas de seguridad podremos estar confiados de que nuestras aplicaciones van a estar protegidas contra atacantes, sin embargo, es recomendable siempre estar al tanto de las amenazas que vayan surgiendo así como de los parches de seguridad para poder siempre instalar las actualizaciones de seguridad en nuestros servidores y de esa forma prevenir ataques de manera oportuna.

Suscríbete a nuestro boletín

Te enviaremos publicaciones con consejos útiles y múltiples recursos para que sigas aprendiendo.

Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.