¿Cómo se puede implementar el control de dos personas con una sobrecarga mínima?
TL; DR Esto se puede lograr usando un comando especial sudo
que requiere una segunda persona para aprobar cada comando, combinado con una buena lista blanca para hacer que los comandos más seguros sean más convenientes. Es importante que cada comando sea aprobado por la regla de dos hombres o la protección es fácilmente derrotada.
Opciones de implementación de la regla de dos personas:
Acceso de raíz sin restricciones
Habilitar root
de acceso temporalmente
Un script raíz pequeño podría requerir que una segunda persona (Usuario A) lo autorice antes de que sudo
esté disponible para el administrador de sistema activo (Usuario B)
-
Usuario A: enable-sudo user-b
(agrega automáticamente una entrada a /etc/sudoers
con un límite de tiempo o una eliminación programada mediante el trabajo at
)
-
Usuario B: sudo do stuff
comenzará a trabajar en este punto
Lamentablemente, el Usuario B podría agregar fácilmente una puerta trasera una vez que el Usuario A haya autorizado el acceso. Esto podría ser tan simple como volver a agregar user-b
a /etc/sudoers
o iniciar un servicio separado.
No es posible hacer cumplir las reglas de seguridad de manera sólida una vez que alguien haya obtenido root
(ya que está "sin restricciones"), por lo que debe monitorear de forma encubierta las posibilidades de desvío más probables y alertar a otro administrador de sistemas (más confiable) si algo comienza. impar después de una habilitación de dos hombres de sudo
.
- trabajo inesperado
at
o cron
- proceso en segundo plano inesperado aún en ejecución
- secuencia de comandos de inicio inesperado
Y no les digas exactamente qué medidas de seguridad estás usando. Esto ayudará contra las obvias puertas traseras, especialmente si user-b
no está familiarizado con las protecciones implementadas, pero no frustrará a un user-b
que está determinado a causar problemas.
Regla de dos hombres basada en comandos
Crea tu propia versión de sudo
, que alerta a la segunda persona de cualquier comando sugerido por la primera persona, con la capacidad de aprobar o rechazar.
No entraré en los detalles de implementación aquí, pero sería bastante sencillo de implementar.
En este caso, una puerta trasera debería estar oculta dentro de uno de los archivos provistos, por ejemplo, una actualización de software que se instalará.
Edición de archivos con vim
Su versión personalizada de sudo
no debe permitir el lanzamiento de comandos de edición directa de archivos. Si alguien escribe oursudo vi
, entonces oursudo
tendrá que iniciar un script especial para editar archivos.
- Copie el archivo en una ubicación
/tmp
(nombre de archivo generado aleatoriamente para evitar ataques de enlace simbólico)
- Inicie
vim
con privilegios reducidos en una cuenta que no sea root
(por lo tanto, user-b
no puede usar la función "Guardar como" dentro de vim
para omitir este contenedor)
- Cuando se complete el guardado, presente un
diff
de los cambios del archivo a user-a
.
- Una vez aprobado, copie el archivo aprobado de
/tmp
a la ubicación de destino.
Barreras físicas
Requerir acceso físico para obtener root
acceso podría ayudar a darle visibilidad a lo que user-b
está haciendo. Dependiendo del entorno de la oficina, el equipo puede tener una idea de lo que user-b
es hasta, y / o user-b
puede ser menos cómodo causando problemas en ese entorno. Sin embargo, depende de la frecuencia con la que dicho acceso sea necesario.
Deficiencias: root
= sin restricciones
Como puede deducirse de las ideas que he mencionado, no parece haber un fuego seguro para protegerse contra las instalaciones de puertas traseras. root
access está diseñado para no permitir esto.
Enfoque de comandos de la lista blanca (restringir el acceso de la raíz)
Lo mejor es crear una lista blanca de comandos disponibles. (el cual sudo
tiene la capacidad de ofrecer) Esto crea una sobrecarga significativa al principio, pero eventualmente puede ser más práctico a medida que aprendes el comando que se usa comúnmente.
Implementación de actualizaciones de aplicaciones
Sus aplicaciones no deben ejecutarse en el acceso de root. Aquellos que lo hagan deben pasar por un sistema de Revisión de Código separado y luego se pueden incluir las actualizaciones del compromiso VCS aprobado.
Software de parches [empaquetado]
Esto no se puede restringir, por lo que sugeriría usar la base de comandos de la regla de dos hombres descrita anteriormente.
Solución de problemas
Se pueden permitir herramientas seguras a través de sudo
, y luego usar la regla de dos hombres basada en comandos para rodar la corrección.