Actualmente la seguridad en la nube es una de las principales preocupaciones de empresas y usuarios, es una prioridad alta para los servicios de almacenamiento, ya que todos quieren estar seguros de que sus datos lo están mientras son utilizados y almacenados en estos servicios.

Siendo algo tan importante, gran mayoría de empresas carecen de una política de protección, buenas prácticas en lo que a seguridad informática respecta o bien cuentan con medidas poco efectivas y poca gestión de acceso a nubes públicas. Por lo que no están preparadas para posibles ataques.

Para entrar en contexto podemos mencionar por ejemplo, que es posible posible extraer credenciales de acceso a servicios como AWS o cualquier proveedor de nube al obtener acceso de cuentas o repositorios en GitHub.

El problema en sí no es una mala configuración de AWS, está relacionado con una contraseña filtrada y el almacenamiento de sus contraseñas de AWS en GitHub.

Errores comunes en AWS o en cualquier proveedor de nube pública

  • Secretos y claves expuestas, las credenciales a menudo se encuentran quemadas en el código fuente de las aplicaciones o los archivos de configuración que contienen claves y contraseñas y que se almacenan en ubicaciones de acceso público. Las claves de AWS han estado expuestas en repositorios públicos a lo largo de los años y GitHub ahora escanea regularmente los repositorios para notificar a los usuarios sobre credenciales expuestas. Las llaves deben rotarse regularmente. NO seas el administrador que deja pasar demasiado tiempo entre rotaciones. AWS Identity and Access Management (IAM) es poderoso, pero muchas de sus funciones por lo regular son ignoradas frecuentemente.
  • Usuarios con mucho poder y roles amplios. IAM es fundamental para proteger las implementaciones de AWS. Una mala práctica común es asignar acceso al conjunto completo de permisos para cada elemento de AWS. Por ejemplo: otorgar lo necesario si una aplicación solo necesita la capacidad de escribir archivos en S3 para que otorgar acceso total, es decir leer, escribir y eliminar todos los archivos de S3.
  • Dejar conexiones abiertas, muchos administradores habilitan permisos globales para las instancias. Cuando usas 0.0.0.0/0 estas otorgando en todas partes las capacidad de conectarse a tus recursos de AWS. Una gran parte de los errores de configuración más comunes identificados en AWS tienen que ver con puertos abiertos.
  • No saber quién esta a cargo de la seguridad, la seguridad es una responsabilidad compartida. AWS no se responsabiliza por los errores que se cometen al crear recursos con configuraciones predeterminadas.
  • Otorgar demasiados privilegios. Si bien es más sencillo otorgar a los desarrolladores acceso de administrador, no deberías hacerlo. Más del 35% de los usuarios privilegiados de AWS tienen acceso completo a una amplia variedad de servicios, incluida la capacidad de desactivar todo el entorno de AWS. Las políticas deben incluir la menor cantidad de permisos para realizar el trabajo.
  • No tomarse root en serio: Nadie debería de usar la cuenta root de AWS y las claves asociadas, mucho menos compartirlas entre usuarios y aplicaciones. Las claves para acceder a los recursos de AWS directamente deben usarse con moderación, ya que las claves deben rastrearse, administrarse y protegerse.
  • Poner todo en una VPC o cuenta: a mayor cantidad de equipos y cargas de trabajo se agreguen a una cuenta o VPC, es más probable que cumpla con el mínimo común denominador. AWS tiene límites muy generosos en VPC y cuentas. No hay justificación para no aislar las cargas de trabajo y los equipos en diferentes regiones, VPCs o incluso cuentas. La forma más sencilla de comenzar es asegurarse de que desarrollo, test y producción estén en cuentas diferentes.

Solución?

Por increíble que parezca no existe una solución para los errores humanos, por lo que debemos implementar prácticas para tener un mejor control sobre los activos en la nube y gestión de accesos. Propios o los de sus clientes.

  1. Fortalecer los controles de autenticación, usando el inicio de sesión único (SSO) para facilitar la administración de cuentas y mejorar la experiencia del usuario. Y complementar con la autenticación multifactor (MFA) para evitar la reutilización de credenciales robadas.
  2. Implementar Endpoint Protection, la protección para endpoints es un control de seguridad crítico si se ejecutan sistemas operativos completos en la nube.
  3. Implementar mejores prácticas de IAM, asignando identidades a cada miembro del equipo, aplicaciones y objetos en su entorno con una herramienta de administración de acceso e identidad. Luego cree políticas que restrinjan el acceso según la hora del día, la duración del acceso, la ubicación geográfica y otros criterios, por mencionar algunos y según aplique.
  4. Aplicar el principio de Privilegio Mínimo –> “No dar más permisos de los que un usuario necesita”. Limitar a los usuarios administrativos a modificar objetos en la nube dentro de su ámbito especifico de responsabilidad. Evita el uso de cuentas administrativas compartidas para mantener la responsabilidad.
  5. Supervisar el entorno en la nube con cuidado. Implementar tecnología que llegue directamente a los entornos de nube pública como Amazon Web Services u otros proveedores para supervisar la seguridad de la infraestructura. Particularmente importante si el entorno debe cumplir con estándares de seguridad como HIPAA, ISO 27001, etc.
  6. Obtener visibilidad y control con herramientas Cloud Access Security Broker (CASB). Ofrecen un escaneo activo y aplicación de políticas de seguridad de manera consistente en todos los servicios de la nube.
  7. Capturar y supervisar los datos, es decir, comprender el flujo de datos entre los servidores en la nube, ya que puede ayudar a identificar actividades anormales. Esta es una responsabilidad del cliente bajo el modelo de responsabilidad compartida.
  8. Realizar pruebas de penetración, hacer pruebas periódicas brindaran visibilidad de las brechas de seguridad y te ayudarán a evaluar el estado de seguridad.
  9. Correlacionar los registros con SIEM (Security Information and Event Management), para identificar patrones de actividad sospechosa en varios sistemas que podrían pasar desapercibidos.

Recursos