
Autenticación, autorización, trazabilidad y auditabilidad para accesos SSH.

Los bastiones son un clúster de máquinas utilizadas como punto de entrada único por los equipos operativos (como administradores de sistemas, desarrolladores, administradores de bases de datos, ...) para conectarse de forma segura a dispositivos (servidores, máquinas virtuales, instancias en la nube, equipos de red, ...), usualmente usando ssh.
The Bastion proporciona mecanismos de autenticación, autorización, trazabilidad y auditabilidad para toda tu infraestructura.
Al estar entre tus usuarios y tu infraestructura, The Bastion agrega una capa de abstracción intermedia para que tu infraestructura no necesite conocer a los miembros de tu equipo operativo individualmente.
Cada miembro de tu equipo tiene una cuenta individual en The Bastion, y puede ser miembro de uno o varios grupos bastión que pueden darle acceso a una o más infraestructuras. Los dispositivos de la infraestructura solo necesitan conocer y confiar en los grupos bastión a los que puedan pertenecer.
El RBAC granular de The Bastion permite delegar algunas responsabilidades a cualquier cuenta, ya sea a nivel de grupo o de todo el bastión, incluyendo cuentas que podrían ser utilizadas por tu automatización para, por ejemplo, gestionar el ciclo de vida de las cuentas (vinculado a tu sistema de gestión de recursos humanos, tu LDAP o AD), asegurar que las ACL de un grupo estén actualizadas (vinculado a tu CMDB), etc. Los procesos automatizados son fáciles de implementar a través de la API JSON sobre SSH.
¿Quieres saber más mientras ves algunos dibujos bonitos? Aquí tienes una serie de publicaciones de blog que profundizan en las funcionalidades y principios básicos de The Bastion:
Otros recursos que pueden ser de interés:
No se necesita nada sofisticado ni en el lado de entrada ni en el de salida de The Bastion para que funcione.
Solo necesitas tu viejo y conocido cliente ssh para conectarte a través de él, y del otro lado, cualquier servidor sshd estándar funcionará. Esto incluye, por ejemplo, dispositivos de red en los que quizás no tengas la posibilidad de instalar ningún software personalizado.
Los dispositivos antiguos que solo admiten algoritmos criptográficos de baja seguridad o telnet pueden ocultarse de Internet mediante firewalls y permitir solo The Bastion, evitando así un compromiso de baja seguridad al permitir solo conexiones de alta seguridad en el lado de entrada del bastión.
Consulta la documentación en línea, o la versión de texto correspondiente que se encuentra en la carpeta doc/.
Esta es una buena manera de probar The Bastion en cuestión de segundos, pero lee las preguntas frecuentes si hablas en serio sobre el uso de contenedores en producción.
La imagen del entorno aislado está disponible para las siguientes arquitecturas: linux/386, linux/amd64, linux/arm/v6, linux/arm/v7, linux/arm64, linux/ppc64le, linux/s390x.
Ejecutemos la imagen de Docker:
docker run -d -p 22 --name bastiontest ovhcom/the-bastion:sandbox
Ten a mano tu clave pública SSH y luego configura la primera cuenta de administrador:
docker exec -it bastiontest /opt/bastion/bin/admin/setup-first-admin-account.sh poweruser auto
¡Ya estamos en funcionamiento con la configuración predeterminada! Configuremos un alias práctico del bastión y probemos el comando info:
PORT=$(docker port bastiontest | cut -d: -f2)
alias bastion="ssh [email protected] -tp $PORT -- "
bastion --osh info
Debería saludarte como administrador del bastión, lo que significa que tienes acceso a todos los comandos. Entremos en el modo interactivo:
bastion -i
Esto es útil para llamar a varios plugins --osh en secuencia. Ahora podemos pedir ayuda para ver todos los plugins:
$> help
Si tienes una máquina remota a la que quieras conectarte a través del bastión, obtén tu clave de salida:
$> selfListEgressKeys
Copia esta clave pública en el archivo authorized_keys de la máquina remota, dentro de la carpeta .ssh/ de la cuenta a la que deseas conectarte, luego:
$> selfAddPersonalAccess --host <remote_host> --user <remote_account_name> --port-any
$> ssh <remote_account_name>@<remote_host>
Ten en cuenta que puedes conectarte directamente sin usar el modo interactivo, con:
bastion <remote_account_name>@<remote_machine_host_or_ip>
¡Eso es todo! Por supuesto, hay mucho más. La documentación está disponible en la carpeta doc/ y en línea.
Asegúrate de revisar la ayuda del bastión (bastion --help) y la ayuda de cada plugin de osh (bastion --osh command --help).
Además, no olvides personalizar tu archivo bastion.conf, que se encuentra en /etc/bastion/bastion.conf (para Linux).
Las distribuciones de Linux a continuación se prueban con cada versión, pero como se trata de un producto de seguridad, se recomienda encarecidamente ejecutarlo en la última versión estable actualizada de tu sistema operativo favorito:
Cualquier otra versión de Linux llamada "moderna" no se prueba con cada versión, pero debería funcionar sin ajustes o con ajustes menores.
Los siguientes sistemas operativos también se prueban con cada versión:
FreeBSD tiene soporte parcial de MFA, debido a su conjunto reducido de plugins pam disponibles. Se puede configurar el soporte para un factor adicional de contraseña o TOTP, pero no ambos al mismo tiempo.
perltidyperlcriticIncluso con el proceso de codificación más conservador, cuidadoso y paranoico, el código tiene errores, por lo que no se debe confiar ciegamente en él. Por eso, el bastión no confía en su propio código. Aprovecha las primitivas de seguridad del sistema operativo para obtener seguridad adicional, como se ve a continuación.
Utiliza el conocido y confiable Control de Acceso Discrecional UNIX:
El script principal del bastión se declara como el shell del sistema del usuario del bastión:
bash) en el sistemaEl código es modular
ssh a otras máquinasTodo el código que necesita privilegios extendidos del sistema está separado del código principal, en módulos llamados helpers
sudosudoers está vinculada a un grupo del sistema específico del comando, que se otorga a las cuentas según la necesidadsyslog, que también debe enviarse a un servidor syslog remoto para garantizar que incluso los administradores del bastión no puedan alterar sus registros, y/osqlite3 para búsqueda fácilttyrec; se proporcionan scripts auxiliares para cifrar y enviar estos registros a un archivador de depósito remotoUna lista no exhaustiva de herramientas relacionadas que son mantenidas por la comunidad:
Licenciado bajo la Licencia Apache, Versión 2.0 (la "Licencia"); no puedes usar este archivo excepto en cumplimiento con la Licencia. Puedes obtener una copia de la Licencia en
http://www.apache.org/licenses/LICENSE-2.0
A menos que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulte la Licencia para el idioma específico que rige los permisos y limitaciones bajo la Licencia.
sudoers-T) se utiliza para todo el código que se ejecuta bajo sudo, evitando que cualquier entrada del usuario interfiera con la lógica, deteniendo la ejecución de inmediatosudo no confía en quien lo llama y vuelve a verificar cada entradaSe opera una ruptura de protocolo entre los lados de entrada y salida, lo que hace que la mayoría de las vulnerabilidades basadas en protocolos sean ineficaces