26 de mayo de 2009

SELinux sandbox

Eric Paris acaba de anunciar un nuevo juguete para SELinux: Una "sandbox" que permite aislar a cualquier aplicación privándola de red y de acceder a otros archivos. Aparentemente está orientado a pequeños comandos, los típicamente utilizados en shells, para hacer su funcionamiento un poco más seguro. En este blog hay más detalles.

Sin embargo, he de confesar que al leer los detalles, me ha decepcionado. No por la idea, claro, sino por SELinux. Resulta que este "juguete" no tiene nada de especial: no es ningún parche en el kernel, ni nada especial en las herramientas de espacio de usuario de SELinux...se trata tan solo de una nueva política de SELinux, sandbox_t, que está configurada con todas las restricciones citadas, y un ejecutable, /usr/bin/sandbox. La nueva política ha sido creada, según el autor, en 10 clicks con la herramienta gráfica de SELinux. Tan solo tienes que ejecutar "sandbox foo", y el comando foo se ejecutará dentro de la sandbox.

Y lo que me apena es, paradójicamente, la sencillez de todo. 10 clicks para crear la política, un pequeño ejecutable....uno se pregunta: ¿no es una pena que esto no se haya podido hacer antes? SELinux es una maravilla de sistema, creado por nada menos que la NSA y que fue incluido en el kernel hace seis años, ningún sistema operativo común y corriente tenía entonces nada parecido. Incluso hoy muchos sistemas carecen hoy de cosas parecidas, y los que lo tienen es porque lo han imitado (TrustedBSD para FreeBSD y Mac OS X). Hasta los de TrustedSolaris acabaron imitándolo (despues de jurar durante años que su sistema era superior en todos los aspectos).

Y esta enorme ventaja temporal y técnica, ¿cómo la ha aprovechado Linux? Medianamente bien en los servidores (Red Hat lo usa por defecto desde RHEL 4), no tanto en el escritorio. Aun hoy muchas distros no incluye SELinux activado por defecto, debido a la enorme complejida; solo Fedora apostó fuerte por ello debido a los trabajadores de Red Hat, y aun así les ha costado años hacer el sistema mínimamente usable. Asi que mientras Linux intentaba hacer de SELinux algo más mainstream, otros SOs, como Windows Vista o OS X, han añadido sus propios sistemas antes. Resulta especialmente significativo el caso de OS X, cuyo comando "sandbox", introducido en 10.5, está basado en TrustedBSD; a pesar de llevarle años de ventaja, Linux acaba de presentar su comando "sandbox" hoy.

Me alegro de que se empiecen a oir estas buenas noticias sobre SELinux, pero por otra parte queda un sabor amargo, porque durante años la gente de SELinux insistió e insistió en que la culpa de no usar SELinux era de las distribuciones, ignorando las quejas de éstas acerca de lo enormemente dificil que era usarlo.

3 comentarios:

  1. Lo triste es que MacOSX ha implementado sandboxing de aplicaciones sin tener nada tan potente como SELinux... y sin darle tanto hype. En la comunidad Linux hubo mucho revuelo y mucho "autotocamiento" cuando se incluyó en el kernel pero aplicaciones reales para el usuario final que deriven en mejoras de seguridad _reales_ respecto a lo que tenemos hasta ahora he visto mas bien nada.

    ResponderEliminar
  2. Anónimo10:21 p. m.

    el problema con selinux es que da una pereza configurar cualquier cosa inclusive con GUI

    ResponderEliminar
  3. SELinux es una cosa que en teoría está muy bien pero en la práctica, lamentablemente, no sirve para mucho.

    El problema que tiene que es no conozco ningún fabricante que incluya las políticas y al final sólo puedes utilizarlo si únicamente utilizas el software que viene con la distribución si estas en el mundo empresarial.

    Mientras que en entorno de usuario tienes el mismo problema si los desarrolladores no incluyen las políticas SELinux.

    El centrarse en escribir las políticas y testearlas es algo que la mayoría de la gente no puede hacer.

    Esperemos que esta situación cambie en un futuro no muy lejano.

    ResponderEliminar