Me gustaría configurar un servidor git a través de ssh, con una única cuenta SSH para el proyecto. Todos los miembros del proyecto deben tener sus claves ssh enumeradas en claves_autorizadas. Lockdown debería restringir el acceso para que solo haga cosas de git y solo dentro de un directorio dedicado.
¿Cuál es la mejor manera de crear una configuración de este tipo? Existe git-shell, que aparentemente puede bloquearlo para ejecutar solo comandos de git, pero no puedo encontrar cómo restringir el acceso a un solo directorio. También hay varios contenedores de Python y Ruby: ¿en cuál de ellos debo confiar?
Respuesta1
Respuesta2
¿Cuál es su modelo de amenaza?
Un buen chico destruye accidentalmente el repositorio de git u otros datos:Asegúrese de que sus usuarios solo puedan escribir en su homedir, tmp y el repositorio de git. Haga una copia de seguridad del repositorio después de cada confirmación y practique los procedimientos de recuperación con regularidad.
El malo roba la clave privada de alguien y quiere ser dueño de su sistema:Su superficie de ataque está limitada a partes de sshd protegidas por autenticación y a cualquier interfaz de shell que utilice, así que hágala lo más pequeña posible. Los contenedores Python/Ruby implican mucho código y mucho espacio para errores. Utilice git-shell o considere usar las directivas Match y ChrootDirectory en sshd_config para limitar a qué partes del sistema de archivos pueden acceder los usuarios.
El malo roba la clave privada de alguien y obtiene su código fuente:Enseñe a los usuarios cómo proteger sus claves privadas y establezca procedimientos para revocar claves rápidamente (por ejemplo, a quién llamar a las 4 a. m. para revocar las claves).
No use .ssh/authorized_keys
, en su lugar use la AuthorizedKeyfile
palabra clave en sshd_config para especificar una ruta donde los usuarios no tienen acceso de escritura, por ejemplo /etc/ssh/keys/%u
. Es demasiado difícil asegurarse de que los usuarios nunca puedan sobrescribir .ssh/authorized_keys con su propia copia.
Además, mantenga controlados los archivos de claves del usuario y la versión sshd_config para permitir auditorías.