Seguridad del código fuente

10

Tenemos alrededor de 20 desarrolladores que trabajan en un entorno heterogéneo, principalmente con computadoras portátiles o de escritorio de la empresa. Ejecutamos Windows 7 en computadoras de escritorio / portátiles y una mezcla de distribuciones de Linux (Ubuntu / CentOS).

La administración está muy interesada en configurar un sistema que asegure completamente el código fuente, ya que estamos trabajando en un proyecto para un cliente que exige lo mismo, es decir, sin fugas de código.

Dejamos que algunas personas se lleven las computadoras portátiles a casa el fin de semana para trabajar de forma remota, ya que eso las ha hecho muy productivas.

Se me ha pedido que formule recomendaciones para proteger el medio ambiente, de modo que no se produzcan fugas en el código fuente.

Tenemos un repositorio central de Subversion, que los desarrolladores están usando. Podemos considerar nuevos repositorios, si es necesario.

Alguien sugirió usar escritorios virtuales para todos los usuarios donde todas las opciones de copia están deshabilitadas, significa que no puede copiar archivos entre diferentes escritorios virtuales o en ningún disco extraíble. Incluso los usuarios remotos pueden iniciar sesión en su escritorio virtual mediante una conexión VPN.

¿Es esta la mejor solución, o hay algo mejor? Nos gustaría usar herramientas de código abierto tanto como sea posible.

    
pregunta ramdaz 24.04.2012 - 11:42
fuente

4 respuestas

9

Si está buscando una seguridad de primer nivel de la más alta calidad - air gapping es la Única manera de hacer que esto funcione. Desafortunadamente, no tener conexiones con el mundo exterior bajo ninguna circunstancia puede ser prohibitivo, especialmente porque a los desarrolladores les gusta copiar y pegar fragmentos de código de la documentación, etc.

En última instancia, esto probablemente también signifique que sacar las computadoras portátiles del lugar se convierta en un no-go también.

Suponiendo que no puedes hacer eso (porque seamos sinceros, es una pregunta) - en primer lugar, estaciones de trabajo móviles. Definitivamente vaya con la opción VPN. Asegúrese de que todo el tráfico de Internet a través de esas computadoras portátiles pase a través de la VPN. De esta manera, su arquitectura y sus requisitos de seguridad (políticas de firewall, etc.) se aplican definitivamente, y lo que es más importante, no expone nada que no sea el punto final de VPN a la Internet pública.

Cifre los discos duros de la computadora portátil como mínimo. Si la computadora portátil es robada mientras está apagada, el código fuente debe ser seguro por un tiempo razonable. Si la computadora portátil no está apagada, o si el atacante puede observar la entrada de la contraseña, usted no ha hecho nada más que hacer su trabajo un poco más difícil. LUKS es compatible tanto con Ubuntu como con CentOS, ya que utiliza cryptsetup y le brinda la opción de algoritmos decentes y contraseñas de múltiples ranuras.

El cifrado de disco basado en hardware sería mejor, simplemente porque significa que su partición /boot no es modificable.

Las LAN virtuales para seguridad reciben opiniones mixtas. Desde el punto de vista del desarrollo, espero que su equipo trabaje con sudo, o root, access y, como tal, fácilmente pueda reconfigurar el software de VM para permitir el acceso de su host, si lo desean. Como se mencionó en la publicación del blog, las máquinas virtuales se usan para la segregación de red barata, que funciona cuando se puede hacer cumplir la configuración. Aquí, parece una venta difícil.

Eso no quiere decir que no puedas usar máquinas virtuales, por supuesto; Simplemente estudiaría cuidadosamente lo difícil que es para los desarrolladores omitir.

Una forma en la que he visto este trabajo con éxito si tiene una red lo suficientemente rápida como para los desarrolladores de pacientes es usar el escritorio remoto para las máquinas virtuales disponibles en la red, pero que los propios desarrolladores no pueden acceder físicamente. Incluso puede utilizar clientes ligeros completos, en lugar de los escritorios que RDP. El modelo de cliente ligero también se relaciona bien con mi próximo tema ... la seguridad física.

Cuando digo seguridad física, quiero decir, ¿qué tan difícil es para los desarrolladores conectar una memoria USB, svn co y salir con el lote? "Llevar el código a casa" puede suceder de esta manera, pero perderá el lote si pierde la memoria USB. En general, hay dos soluciones disponibles para usted: resina epoxi y la eliminación de los diversos módulos hci.ko del kernel, lo que hace que no reconozca USB en absoluto. Desafortunadamente, esto también tiene el inconveniente de deshabilitar los teclados y ratones USB.

    
respondido por el user2213 24.04.2012 - 12:30
fuente
5

El problema con la seguridad es que a menudo es una compensación con la usabilidad. Lo primero que debes hacer es educar a tus usuarios:

  • bloquear sus computadoras si se van
  • tiene un entorno seguro y actualizado (AV / firewall)
  • almacenar sus computadoras en un lugar seguro

En mi experiencia, los escritorios virtuales son increíblemente frustrantes si estás programando. Son lentos y algunas veces tu conexión se cae. Así que mantén las computadoras portátiles físicas si quieres que trabajen desde casa.

Lo que sugiero:

  • configura un vpn para que solo se pueda acceder al repositorio de SVN a través de esta VPN
  • cuando emita computadoras portátiles, configure un truecrypt en los discos duros (asumiendo que está en Windows, para Ubuntu puede simplemente cifrar la partición donde se almacena el código).
  • Si no desea que copien todo el código fuente con el que puede trabajar Ramas si no necesitan acceso a todo el código.
  • Tenga contratos claros con sus desarrolladores sobre lo que pueden y no pueden hacer con el código fuente que crearon
respondido por el Lucas Kauffman 24.04.2012 - 12:26
fuente
5

Estás hablando de desarrolladores, y en un proyecto que parece importante como el tuyo, probablemente tengas buenos desarrolladores. Siempre encontrarán formas para copiar la fuente, pero realmente puede perjudicar la satisfacción si les impide trabajar.

La única forma que conozco es dividir el software en partes pequeñas e independientes, de modo que cada desarrollador solo sepa su parte. Esto le dará mucho trabajo, ya que tiene que definir exactamente las interfaces entre las partes, pero como efecto secundario obtendrá un código que se puede probar bien.

En mi opinión, es mucho más importante, lo que Ninefingers y Lucas ya escribieron, que los desarrolladores no pueden transportar el código fuente en unidades USB sin cifrar. De lo contrario, si la unidad / computadora portátil se pierde, el código también se perderá.

En general, tendré cuidado de no exceder el límite de frustración, especialmente si tiene desarrolladores confiables y experimentados en su equipo.

    
respondido por el martinstoeckli 24.04.2012 - 13:47
fuente
2
  

La administración está muy interesada en configurar un sistema que asegure completamente   código fuente, ya que estamos trabajando en un proyecto para un cliente que   Exige lo mismo. Eso no es una fuga de código.

Esto requeriría que todo el equipo de trabajo se deje en el trabajo. Todo el equipo de trabajo no tiene los medios para tener dispositivos flash conectados. También significa deshabilitar la capacidad de leer y escribir discos de medios.

Si todo el código se guarda en la oficina, no es posible que el código salga de la oficina.

  

Dejamos que algunas personas lleven computadoras portátiles durante el fin de semana para trabajar en casa,   ya que se ha visto que es muy productivo.

Esto significa que, fuera de la oficina, ha perdido el control sobre lo que sucede con los datos.

  

Alguien sugirió usar escritorios virtuales para todos los usuarios, y donde todos   las opciones de copia están desactivadas, significa que no puede copiar archivos entre   Diferentes escritorios virtuales o cualquier disco extraíble. Incluso a distancia   los usuarios pueden iniciar sesión en su escritorio virtual mediante una conexión VPN.

Es una operación trivial para forzar el nombre de usuario / contraseña de un escritorio virtual con el fin de cambiar la contraseña, por lo que es posible habilitar la capacidad de copiar archivos.

  

¿Es esta la mejor solución, o hay algo mejor? Nos gustaria   utilizar las herramientas de código abierto tanto como sea posible

La solución simple sería modificar todo el equipo, se puede ver el código para evitar que los datos se extraigan de dicho hardware.

    
respondido por el Ramhound 24.04.2012 - 15:17
fuente

Lea otras preguntas en las etiquetas