>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Go

Cómo bloquear el acceso directo a producción sin perder la cabeza

Distribuir claves SSH a los ingenieros a menudo se convierte en un caos. Alguien se va, pero su clave pública permanece en docenas de servidores de producción. Alguien ejecuta accidentalmente un comando peligroso en la terminal equivocada, y luego pasas medio día en los registros del sistema para descubrir de quién era la sesión.

A medida que crece el número de servidores y se expande el equipo, las conexiones directas a las máquinas se convierten en un dolor de cabeza. Por lo general, en este punto las empresas recurren al concepto de las 4A: autenticación, autorización, accounting y auditoría. Sin embargo, implementar soluciones pesadas como Teleport o CyberArk requiere tiempo y recursos significativos.

Hace poco descubrí un proyecto llamado OneTerm en GitHub. Es una puerta de enlace de acceso ligera y de código abierto escrita en Go y Vue.js. Resuelve el problema del acceso centralizado a servidores sin configuración compleja.

Qué hay dentro de OneTerm

El principio es simple: OneTerm se convierte en una capa entre los empleados y la infraestructura de producción. Los desarrolladores no se conectan a los hosts directamente a través de SSH o RDP. Inician sesión en el panel web de OneTerm y lanzan la sesión requerida desde allí.

El proyecto cubre las necesidades básicas de seguridad:

  • Punto de entrada único con soporte de autenticación de dos factores.
  • Concesión de permisos para servidores específicos y grupos de usuarios.
  • Grabación de video y registro de texto para cada sesión. Si algo se rompe en un servidor, la operación se puede reproducir en el reproductor integrado para examinar los detalles.
  • Aislamiento de sesiones para evitar que los usuarios interfieran entre sí y para escalar privilegios dentro de la puerta de enlace.
  • Protección de los hosts internos contra el acceso directo desde el internet externo.

Además del SSH estándar, OneTerm es compatible con los protocolos RDP y VNC. Esto es útil para quienes tienen servidores Windows o máquinas virtuales con interfaces gráficas ejecutándose en su infraestructura.

Stack tecnológico e integraciones

El stack del proyecto es bastante familiar. El backend está escrito en Go, y la interfaz de usuario está construida con Vue.js usando la biblioteca Ant Design Vue. La compilación en Go proporciona un bajo consumo de memoria y un rendimiento rápido del terminal web.

Los desarrolladores agregaron integración nativa con Veops CMDB. Este es otro de sus proyectos de código abierto. Si la contabilidad de equipos se mantiene en su CMDB, los servidores se importan al bastión con un clic. No es necesario ingresar manualmente direcciones IP, puertos y credenciales.

Echemos un vistazo a la interfaz del sistema.

El terminal funciona directamente en la ventana del navegador. Los ingenieros no necesitan configurar clientes locales, configurar túneles o almacenar claves en sus laptops.

Los derechos de acceso se segmentan según el tiempo y los roles. Puedes otorgar acceso a un servidor solo durante el período de guardia o durante trabajos técnicos.

Cómo desplegar y probar

Para una introducción local, los autores prepararon una configuración de Docker Compose. El inicio toma un par de minutos:

Una vez que los contenedores se inician, la interfaz web se abre en http://127.0.0.1:8666. El inicio de sesión predeterminado es admin, y la contraseña es 123456.

Para un entorno de producción, esta opción no funcionará. Para este caso, los desarrolladores escribieron un script de configuración interactivo ./setup.sh. Genera contraseñas aleatorias para la base de datos y los servicios internos, actualiza las configuraciones automáticamente y guarda una copia de seguridad.

Si deseas agregar tu propia funcionalidad, el proyecto tiene scripts de recarga en caliente listos para usar para el frontend y backend: ./dev-start.sh frontend y ./dev-start.sh backend. Se requieren Node.js versión 14.17.6+ y Go versión 1.21.3+ para la compilación.

Matices y limitaciones

Antes de llevar la herramienta a un entorno de producción, debes considerar algunos aspectos específicos:

  • El código se distribuye bajo la licencia AGPL-3.0. Si decides crear una solución SaaS comercial cerrada a partir de él, necesitarás abrir tus modificaciones.
  • La rama main en el repositorio se actualiza constantemente y puede funcionar de manera inestable. Para uso en servidores, solo toma las versiones compiladas de la página de Releases.
  • La documentación aún es bastante breve. Los desarrolladores responden en GitHub Issues, pero algunos detalles tendrás que averiguarlos directamente desde el código fuente.

Resumen

OneTerm es adecuado para equipos pequeños de operaciones y administradores de sistemas que quieren organizar rápidamente la gestión de acceso. Si necesitas un host bastión simple con grabación de sesiones, segmentación de acceso y soporte de SSH y RDP, el proyecto cubrirá las tareas básicas sin complejidad innecesaria.

Puedes probar la interfaz sin instalación en la demo oficial oneterm.v1ops.com con usuario demo y contraseña 123456.

Proyectos relacionados