Consultor de administración remota de Linux: práctica recomendada [cerrado]

19

Estamos contratando un consultor en India como nuestro Administrador de Linux. No lo conocemos bien y requiere acceso de root a todos nuestros servidores para hacer su trabajo (incluida una auditoría de seguridad).

¿Cuál es la mejor práctica para habilitar a un consultor remoto para tal trabajo de modo que estemos protegidos contra cualquier actividad maligna?

Gracias por adelantado.

Anderson Tess
fuente
66
Si no confías en alguien, no le des acceso a tus servidores. Período. Contrata a alguien en quien puedas confiar.
EEAA
66
¿No puede evitar preguntarse si esta es una acción ordenada por los superiores y está buscando municiones / buenos argumentos en su contra?
Matt
55
LOL ... ¿Es una buena idea?
ewwhite
55
Si le está dando acceso de root a alguien a sus servidores, no tiene absolutamente ninguna manera de protegerse sistemáticamente de las actividades malignas en las máquinas a las que la persona tiene acceso de root.
Craig
3
Espero que tengan buenas copias de seguridad fuera de línea
CaffeineAddiction

Respuestas:

55

No hacerlo . Además, corre tanto peligro de ineptitud como de malicia por lo que he visto de la forma típica en que las empresas manejan esto.

Me gustaría decir que probablemente haya grandes administradores de sistemas en India, pero la forma en que muchas empresas hacen las cosas es terrible.

Si está pasando por un taller de carrocería, también es probable que vea un corte bastante grande para ellos, y es probable que muchos de ellos no hayan investigado adecuadamente a sus empleados. He hablado con tres, uno de los cuales trabajé y ninguno de ellos ha realizado entrevistas técnicas.

Entonces, si debe contratar a alguien de forma remota, por el amor de Dios, entrevístelo usted mismo y asegúrese de que conozca su trabajo. La administración del sistema es demasiado importante para entregarla a alguien a ciegas

Ahora que he manejado la parte de "ineptitud",

La administración es una frase bastante amplia. Y alguien con acceso de root puede hacer cualquier cosa . Ahora, personalmente , creo que crear una cuenta para el administrador y darle la capacidad de elevarse a través de sudo es una mejor idea (que su sistema de administración de configuración debería manejar si tiene muchos servidores). Dicho esto, incluso eso depende de una cierta cantidad de confianza. Hay tantas historias sobre el daño que puede hacer un administrador de sistemas descontento. ¿Cambiar todas tus contraseñas? Claro que podría entrar eventualmente, pero no es trivial, y probablemente costaría más de lo que está ahorrando.

Entonces, considere un local. De lo contrario, considere a alguien que haya examinado usted mismo y haya contratado directamente .

Journeyman Geek
fuente
35
Me cuesta bastante darle acceso privilegiado al chico que está una puerta más abajo, y mucho menos a alguien a 12 zonas horarias de distancia. Mi mente está aturdida de que cualquiera pueda considerar esto como una opción.
EEAA
77
Si está pasando por un taller de carrocería, ni siquiera sabrá quién está realmente en posesión de esas credenciales raíz, no tiene garantía de que la persona que trabaja en sus sistemas hoy sea la misma persona que trabajará en ellas mañana, no tiene ninguna garantía de que estos tipos literalmente no se enviarán por correo electrónico sus contraseñas de nivel raíz entre sí de forma clara (lo he visto demasiadas veces), y así sucesivamente.
Craig
2
Nadie debe iniciar sesión en una distribución moderna de Linux como root. La cuenta raíz ni siquiera debería tener una contraseña. En cambio, debería haber usuarios que tengan suautoridad para elevarse a la raíz. Cuando alguien dice que necesita "acceso raíz", esto es lo que debería pedir. Si esta persona dice que necesita "la contraseña de root", no es competente para hacer el trabajo de todos modos.
Monty Harder
@MontyHarder, ¿quiere decir que (ciertos) usuarios deberían tener sudoautoridad para elevarse a la raíz? Si no, ¿podría describir sus mejores prácticas para usar supara elevarse a la raíz sin tener y distribuir una contraseña de root?
MadHatter apoya a Monica
2
@MontyHarder tiene mucho sentido, simplemente no es lo que dijiste la primera vez; sudoy suson dos cosas completamente diferentes. Gracias por aclararlo.
MadHatter apoya a Monica
33

Como se ha mencionado, no hagas esto.

La única forma en que podrá protegerse es haciendo algo como esto:

  1. Insista en que el consultor use un sistema de gestión de configuración de su elección.
  2. El consultor escribirá manifiestos de gestión de configuración para las acciones que necesita completar.
  3. El consultor probará los manifiestos en un sistema de prueba.
  4. Cuando esté listo, el consultor confirmará la configuración en un repositorio de código.
  5. Todos los cambios son revisados ​​por un miembro de su personal u otro consultor que no tiene absolutamente ninguna relación con el primero, y no tiene forma de contactarlos.
  6. Una vez que se firman los cambios, usted o un miembro de su personal los aplica al servidor. El consultor original no debe tener acceso a ninguno de sus sistemas.

Como debería quedar claro, este es un proceso muy torpe e ineficiente, pero si insiste en aceptar el trabajo de un individuo no confiable, esta es una forma de manejar las cosas.

Sin embargo, como recomendé, es mucho mejor contratar a un individuo conocido y confiable.

EEAA
fuente
Por qué no? Estoy trabajando de forma remota, gestionando alrededor de +300 servidores dedicados, en una hora podría destruir todo si quisiera. Pero, por supuesto, no haría eso, incluso si me despiden. Soy responsable de hacer copias de seguridad, tengo los más altos privilegios (no solo yo, un par de nosotros) y podemos ser maliciosos en cualquier momento. La razón por la que no lo hacemos es moral y ética. Amamos la compañía y los empleados y nuestro trabajo en general. Lo principal aquí es confiar en alguien y encontrar una persona moral para este trabajo.
fugitivo
@ fugitivo Estás hablando de una situación diferente. Supongo que confía en la empresa a la que está consultando, de lo contrario no le habrían otorgado los permisos que tiene. En el caso del OP, está claro que no confían en este consultor, por lo que recomendé no otorgar permisos a esta persona en ningún sistema que sea importante.
EEAA
Bueno, hay que ganarse la confianza. :)
fugitivo
10

¿Cuál es la mejor práctica para habilitar a un consultor remoto para tal trabajo de modo que estemos protegidos contra cualquier actividad maligna?

Desde una perspectiva legal: diligencia debida de antemano y sanciones estrictas por incumplimiento de contrato.

Comienza con las buenas prácticas habituales de contratación que también se aplican cuando se contrata personal en las instalaciones (y / o proveedores de servicios) que incluyen verificar el currículum provisto, solicitar transcripciones educativas y números de certificación, verificar y llamar a sus referencias, entrevistar, tal vez incluso una verificación de antecedentes o una revisión de seguridad, etc., etc.

Luego aplique la zanahoria : pague un valor justo, ofrezca un trabajo atractivo, colegas increíbles, buenas condiciones de trabajo y beneficios, etc. ( si paga cacahuetes, obtiene monos ) .

Y el palo : ¡incumplir los términos de su contrato de trabajo / servicio y enfermaremos a nuestros abogados y lo dejaremos en bancarrota!

Desafortunadamente, lo anterior se vuelve cada vez más difícil al cruzar fronteras y zonas horarias.

Una vez que decida contratar a alguien:

  • directivas y políticas claras, las personas deben ser conscientes de lo que deberían y no pueden hacer.
  • El principio de acceso mínimo se aplica, dificulta que las personas (accidentalmente o a propósito) hagan cosas que no deberían. Para el administrador típico del sistema, a menudo eso todavía significa acceso total, pero un auditor de seguridad, por ejemplo, no debería necesitar acceso completo de administrador, sino que simplemente puede solicitar a los administradores existentes que ejecuten un script en su nombre que recopile los detalles que necesita para hacer su informe. Tal script se puede verificar fácilmente de antemano.
  • confiar pero verificar. Simplemente haga que el personal existente verifique el trabajo de un nuevo miembro y, como siempre, recopile información de auditoría.
  • etcétera etcétera.

Esta pregunta detalla lo que generalmente les pido a mis clientes que hagan para establecer un acceso remoto para mí, que también podría ser un punto de partida para usted.

HBruijn
fuente
3
"si pagas cacahuetes obtienes monos" o elefantes. Aunque ahora que lo pienso, no estoy seguro de si eso es mejor o peor que los monos.
un CVn
Solo para agregar, la parte de "respuesta" de su respuesta podría ser más difícil de aplicar si la otra parte está en un país diferente. Debe consultar primero con un abogado con experiencia / conocimiento para ver qué posibilidades tiene en caso de que algo salga mal.
user121391
Además, la aplicación después de un incidente probablemente apesta más que trabajar con una parte en la que puede confiar en primer lugar. De la misma manera, hay personas en las que puedes confiar totalmente en las que no te sentirías inclinado automáticamente, y personas en las que instintivamente gravitas hacia las cuales probablemente no deberías confiar en absoluto.
Craig
7

Me viene a la mente un método sistémico para protegerse, que no he visto mencionado.

Aloje sus instancias de Linux como máquinas virtuales en un hipervisor de virtualización (VMware, Xenserver, Hyper-V, etc.).

NO le dé acceso administrativo al administrador remoto al hipervisor. El administrador remoto solo obtendría acceso de root a las propias máquinas virtuales.

Implemente un sistema de respaldo basado en hipervisor (Unitrends, Veeam, vSphere Data Protection, etc.)

CONSERVE al menos una instantánea por día de cada VM Linux, retrocediendo en el tiempo que considere necesario.

NO le dé al administrador remoto acceso de escritura a los repositorios de respaldo.

Si hace estas cosas, tendrá instantáneas de respaldo de cada instancia de Linux sobre las cuales el administrador remoto no tiene control. Si el administrador remoto hace algo extraño, ya sea intencionalmente o accidentalmente, siempre puede montar una copia de seguridad antes de que ocurra el bloqueo para evaluar lo que sucedió y posiblemente recuperarse a un estado limpio.

Esto no será una prueba contra un ataque de canal lateral del hipervisor, que podría montarse desde una VM a la que el atacante tiene acceso de root.

Si sus copias de seguridad no van lo suficientemente atrás en el tiempo, esto no lo protegerá.

Debe confiar completamente en quien tenga el control de su hipervisor y la infraestructura de respaldo.

Si está haciendo esto en la nube (AWS, Azure, etc.), los detalles de implementación serán diferentes, pero el concepto general sería el mismo.

En esencia, divida las responsabilidades entre las partes que no son socios comerciales entre sí, además de contratar solo a personas de su confianza.

Craig
fuente
1
Para cuando hayas hecho todo eso, ya eres el administrador del sistema y estás contratando a un lacayo o PFY remoto.
Criggie
3
No totalmente. Estás administrando solo el hipervisor y las copias de seguridad. Lo cual, ciertamente, no es nada. Pero tampoco es necesariamente el mismo conjunto de habilidades o carga administrativa. Lo más probable es que si está haciendo virtualización (nosotros), tenga una persona o personas diferentes a cargo de lo que esté sucediendo en las máquinas virtuales individuales de todos modos.
Craig
1
Aunque la idea general es buena, solo ayuda contra la incompetencia / errores (eliminó la base de datos de producción, etc.), no contra la malicia (a menos que verifique cada cambio todos los días y compare el contenido de los cambios, esencialmente una auditoría completa diaria). Además, el daño puede no estar relacionado con cuestiones técnicas, por ejemplo, los datos del cliente o los secretos comerciales desviados no se pueden contener de esta manera, ya que solo son reactivos.
user121391
@ user121391: Realmente no puedo estar en desacuerdo, particularmente con el problema de la exfiltración de datos. Una vez que se toman los datos, está completamente fuera de su control.
Craig
-1

Dale su propia cuenta de usuario. Luego descubra exactamente a qué necesita acceso y concédale solo ese acceso, pero nada más. Por ejemplo, si necesita reconfigurar un servidor web Apache, use una ACL para darle acceso de escritura a los archivos de configuración de Apache y configúrelo sudopara permitirle reiniciar el servicio Apache pero no ejecutar ningún otro comando como root. Como siempre, guarde copias de seguridad de cualquier cosa a la que le esté dando acceso (en este caso, sus archivos de configuración de Apache).

Micheal Johnson
fuente
3
Tener permiso para configurar y reiniciar un Apache que se ejecuta como root es esencialmente otorgar privilegios de root. Es bastante fácil tener un binario arbitrario ejecutado por el proceso de apache, por ejemplo, canalizar registros a eso. Es mejor configurar Apache para que pueda ejecutarse como no root y aun así vincularse a puertos privilegiados. Eso es lo que hice en esta situación en el pasado.
MvG