¿Debo poner en línea un programa potencialmente inseguro?

6

OK: un reenvío. No soy un experto en seguridad. Soy uno de los cuatro niños en una escuela secundaria que trabaja en un proyecto. No tengo ninguna experiencia con situaciones de la vida real en las que la seguridad sea una preocupación.

Tengo un proyecto para la clasificación automática de programas. Los estudiantes cargan el código y lo compilamos y probamos. Obviamente, existe la amenaza de que las personas suban códigos maliciosos. Entonces, lo que hemos hecho recientemente es hacer que el código se ejecute detrás de un comando runas en un usuario con pocos privilegios. Parece funcionar, pero nuevamente, ¿qué sabemos?

Ahora mi instructor quiere que avancemos y pongamos nuestro proyecto en línea, disponible en Internet. Me preocupa que nuestro proyecto sea probablemente inseguro y que los estudiantes no estemos calificados para evaluar la seguridad del programa.

¿Sería suficiente un simple sistema de "seguridad" basado en runas , o deberíamos esperar para ponerlo en línea?

Editar: para aclarar, la forma en que funciona es que las personas cargan programas en nuestro servidor, que luego lo ejecuta localmente y muestra los resultados. Entonces, si el código cargado es malicioso y funciona, es nuestro servidor el que se hace cargo.

    
pregunta user26672 03.06.2013 - 16:34
fuente

2 respuestas

2

"runas" lo protegerá de solo una parte de las amenazas.

Hay algunas maneras en que puedes manejar esto. Debe bloquear el firewall para evitar conexiones salientes que no desea. El registro y la auditoría deben estar activados (¡y revisados!) Para detectar la manipulación.

Si el servidor es una máquina virtual, puede hacer que vuelva a una instantánea guardada cada hora, lo que significa que no podría persistir ningún código malicioso.

¿Puede mantener una copia del código cargado y la dirección IP que lo cargó para revisión forense?

En cualquier caso, debe pensar que el servidor ya está comprometido y tratarlo como tal. Sepárelo en la red en la que se encuentra y muévalo desde la órbita regularmente o al final de su proyecto. Asegúrese de que no haya nada más en ejecución en el servidor que no pueda controlarse (es decir, haga que su servicio sea lo único que se ejecuta en el servidor).

    
respondido por el schroeder 05.06.2013 - 19:56
fuente
0

Ejecute el software compilado en una máquina virtual, muestre el resultado y luego restaure la máquina virtual en la instantánea anterior después de cada ejecución.

algo como:

  1. compile el ejecutable en el servidor
  2. cópielo en la máquina virtual a través de la red
  3. active un comando en la máquina virtual que ejecutará el ejecutable compilado en, por ejemplo, 5 segundos
  4. ejecute un comando en el servidor que aislará la máquina virtual de la red
  5. espere a que la máquina virtual ejecute el programa
  6. tome la salida de la máquina virtual (¿captura de pantalla? ¿control remoto / visor?)
respondido por el Max 05.06.2013 - 21:00
fuente

Lea otras preguntas en las etiquetas