2010-09-05 12 views
8

según Using ptrace to write a program supervisor in userspace, estoy intentando crear el componente de supervisor de programa de un juez en línea.Lo que el sistema llama para bloquear/permitir/inspeccionar para crear un supervisor de programa

Lo llamadas al sistema necesitaría para bloquear totalmente, siempre permitir o comprobar los atributos de a:

  • Impedir que se bifurcan o runing otros comandos
  • Restringir a C y C++ bibliotecas estándar 'seguros'
  • Impedir acceso a la red
  • Restringir el acceso a todos menos a los archivos 'in.txt' y 'out.txt'
  • Evite el acceso a las funciones o detalles del sistema.
  • Evite que la aplicación se escape a su supervisor
  • Prevenga cualquier desagradable.

Gracias a cualquier ayuda/consejo/enlaces muy apreciados.

Respuesta

3

Desde el punto de vista de la seguridad, el mejor enfoque es averiguar lo que necesita permitir en lugar de lo que necesita denegar. Recomendaría comenzar con un supervisor que simplemente registra todo lo que hace un conjunto conocido de programas benignos, y luego incluir en la lista blanca esas llamadas de sistema y acceso a archivos. A medida que los nuevos programas entren en conflicto con esta caja de arena muy restrictiva, puede evaluar las restricciones de aflojamiento caso por caso hasta que encuentre el perfil correcto.

Esta es esencialmente la forma de aplicación de perfiles de caja de arena se desarrollan en Mac OS X.

0

si quiere solo llamadas al sistema para inspeccionar otra processus, puede utilizar ptrace(), pero no tendrá ningún ou garantías, al igual que en dicho Using ptrace to write a program supervisor in userspace.

Puede usar valgrind para inspeccionar y enlazar llamadas de funciones, bibliotecas, pero será tedioso y tal vez la lista negra no sea la mejor manera de hacerlo.

También puede usar systrace, (http://en.wikipedia.org/wiki/Systrace) para escribir reglas con el fin de autorizar/bloquear varias cosas, como abrir solo algunos archivos, etc. Es fácil de usar para guardar un proceso.

1

Quizás pueda configurar AppArmor para hacer lo que quiera. De las preguntas más frecuentes:

AppArmor es el sistema de seguridad de aplicaciones Linux más eficaz y fácil de usar disponible actualmente en el mercado. AppArmor es un marco de seguridad que protege proactivamente el sistema operativo y las aplicaciones contra amenazas externas o internas, incluso ataques de día cero, al imponer un buen comportamiento del programa y evitar la explotación de fallas de software aún desconocidas. Los perfiles de seguridad de AppArmor definen por completo a qué recursos del sistema pueden acceder los programas individuales y con qué privilegios. Una serie de políticas predeterminadas se incluyen con AppArmor, y utilizando una combinación de análisis estático avanzado y herramientas basadas en el aprendizaje, las políticas de AppArmor para incluso aplicaciones muy complejas se pueden implementar con éxito en cuestión de horas.

Cuestiones relacionadas