Llevo varios años en el mundo DevOps y te quiero compartir mis principales aprendizajes sobre la Criptografía - me hubiera gustado encontrar algo como esto hace 5 años, verás que me lo agradecerás.
Algunos de estos quick tips ya los he implementado, pero tuve que realizar rollback, otros requirieron investigación y otros son más resultado de la experiencia, así que te invito a que me comentes qué opinas.
Tip 1: Contraseñas
Reto:
Cuando necesitas gestionar demasiadas contraseñas de login para diferentes sistemas, desde web hasta bases de datos, puede resultar más complicado copiar y pegar esta contraseña “k0^33Bw&C6ui” que “50130efac77fef92d4539c66f7d8667d”. Cuando tienes más de 30 contraseñas, realmente aprecias poder copiar y pegar de manera más rápida.
Solución:
Utiliza un generador de números aleatorios seguro, genera los bytes necesarios para tu contraseña y conviértela en hexadecimal, ahorrarás mucho tiempo y frustración copy and paste, sin sacrificar seguridad.
openssl rand -hex 32
Nota:
Al utilizar OpenSSL lo puedes incluir en scripts para automatizar tareas que requieras.
Tip 2: Llaves SSH
Reto:
Hoy en día, generar una llave SSH es vital, especialmente en entornos cloud. Actualmente una llave SSH soporta los algoritmos DSA, ECDSA, ED25519 y RSA, pero ¿cuál usar?
Solución:
De estos algoritmos, los DSA y RSA se basan en la factorización de números primos, mientras que ECDSA y ED25519 se basan el problema del logaritmos discreto.
En general, ofrecen los mismos niveles de seguridad, la diferencia es la longitud de la clave y el desempeño: ECC - Elliptic Curve Cryptography - (ECDSA y ED25519) ofrece claves de menor tamaño y mejor desempeño que RSA y DSA, pero ED25519 fue diseñado para ofrecer mejor desempeño sin sacrificar seguridad.
Mi recomendación es utilizar ED25519 porque ofrece seguridad de 128 bits, claves más cortas y mejor desempeño.
ssh-keygen -t ed25519
Aquí encuentras más información.
Tip 3: Accesos temporales a servidores
Reto:
Necesitas entregar accesos temporales a ciertos servidores, a una persona o a un grupo de personas.
Solución:
Hay muchas cuestiones a evaluar dependiendo de la situación particular de cada uno, y hay varias herramientas que te ayudan a resolver el problema, como bash script, Ansible, o soluciones enterprise especializadas.
Una forma fácil y estándar de implementar es utilizando llaves SSH firmadas (SSH Key Signing) para gestionar accesos temporales. La idea es muy simple, es dar de alta una llave CA (Certificate Authority) SSH y después firmar la llave pública de quién requiere el acceso.
Aquí encuentras más información.
Tip 4: Exposición de SSH a internet
Reto:
Necesitas poder administrar tus equipos desde donde sea pero sin exponer SSH directamente a internet.
Solución:
Hacer uso de bastion host, jump server o ProxyJump, estas herramientas se integran sin problema alguno con Ansible.
Aquí encuentras más información.
Tip 5: TLS dentro de tu red privada
Reto:
¿Implementar TLS (Transport Layer Security) en todo mi tráfico interno?
Solución:
En general, TLS es una excelente práctica para proteger tu tráfico y el de tus usuarios, pero tener tráfico dentro de tu red privada puede ser complicado en temas de seguridad y desempeño. Es decir, el tener tráfico cifrado puede limitar la toma de decisiones de los Load Balancers, Web Application Firewalls y Firewalls ya que no conocerán el contenido del tráfico, a menos que compartas tu certificado para que puedan acceder al tráfico. También hay que tener en cuenta que las operaciones de criptografía pueden ser más o menos intensas dependiendo del tipo de certificado que uses, por lo cual, puedes tener una degradación en el desempeño. Todas estas decisiones dependen de tu arquitectura y las restricciones que puedas tener.
Tip 6: Actualización de TLS
Reto:
Actualizar tu infraestructura a las nuevas versiones de TLS.
Solución:
Mantener actualizados tus protocolos de criptografía siempre es lo ideal, no obstante, es bueno recordar que, por ejemplo: no todos los browsers soportarán la nueva versión de TLS tan pronto como sea liberada. Por lo cual, es prudente tener tus servicios en la versión actual y conservar una anterior para mantener compatibilidad.
Aquí encuentras más información.
Tip 7: Almacenamiento cifrado
Reto:
Proteger la información almacenada en los discos duros.
Solución:
Así como es importante cifrar tu información en tránsito, es decir, tu tráfico, también en algunas ocasiones es importante cifrar tu información en descanso para cuando no esté siendo utilizada y así protegerla de lecturas no autorizadas. Solo hay que recordar que al utilizar esta solución agregarás un poco más de latencia a tus procesos. Algunos proveedores de cloud ya ofrecen este tipo de soluciones, o en su defecto puedes utilizar software para tu realizar el cifrado de disco o archivos (Disk Encryption Tools).
Tip 8: HSMs
Reto:
¿Cuándo usar un HSM (Hardware Security Module)?
Solución:
Son buenas opciones cuando se habla acerca de protección criptográfica ya que cuentan con la certificación FIPS 140-2, pero también no es una solución asequible para todos los presupuestos, y no todos los negocios requieren tal solución. Por lo anterior, se puede hacer uso de soluciones de software y cloud para proteger contraseñas, solo que hay que tener en mente que los HSM tienen procesadores criptográficos especializados, por lo cual, desempeñan de mejor forma operaciones criptográficas intensivas que procesadores de uso genérico.
En definitiva, usa un HSM solo y solo si necesitas cumplir una regulación, aunque también cuando tus necesidades te lo requieran.
Conclusión
Como todo en tecnología, sigo en constante aprendizaje y espero pronto compartirte más tips aplicables a tu día a día. Por ahora, estoy seguro que estos tips te serán de mucha utilidad y espero que pronto puedas aplicarlos.
Por útlimo, me encantará saber qué te parecieron mis aprendizajes, estoy seguro que también tienes algunos tips que me serían de mucho valor. Puedes escribirme a elopez@palo-it.com y feliz de conversar.
Si te ha gustado el post, suscríbete para recibir más consejos, buenas prácticas e información en el mundo de la tecnología.