12 de Mayo, 2005

Cuentas shell restringidas

Es un problema realmente complejo: dar acceso shell a una persona, pero sin dárselo :P. Es esto lo que necesita Rubén.

Planeaba dar cuentas shell en laika, la máquina con Solaris 10 donde tengo cuenta sin restricciones ;). Pero no quiere que los huéspedes tengan acceso total a todos los binarios, con énfasis en las aplicaciones de red.

Rubén emplea Solaris, qué le vamos a hacer, y lo último que me comentó es que iba a probar con Solaris containers (un tutorial interesante, aunque no trabajemos con este sistema operativo). Igual hay otra posibilidad: systrace, aunque no por ahora para Solaris (quizás para el futuro OpenSolaris, ¿quién sabe?).

En cualquier caso, y recordando un poco la introducción a systrace, parece que es una buena posibilidad si esta herramienta está disponible en nuestro sistema. Solo tendríamos que forzar el uso de systrace para el shell del usuario, y a partir de ahí disponer de políticas para las diferentes aplicaciones que queremos que el shell ejecute de forma restringida.

Disponemos de un proyecto de la mano de Jose Nazario, creador del ya extinto deadly.org (reemplazado por undeadly.org), que nos puede facilitar mucho el trabajo: stsh, the systrace shell.

El propio autor avisa que puede tener problemas, se escribió como demostración para su libro Secure architectures with OpenBSD, aunque también dice que ha sido probado y que parece estable.

Se encarga de interactuar con login.conf para lanzar el shell restringido al ingresar en el sistema (solo se puede usar como login shell, no para otras aplicaciones como cvs*). Además necesitaremos un buen conjunto de políticas si queremos que el usuario pueda llegar a hacer algo ;). El paquete incluye unas cuantas para empezar.

Hay una máxima en la administración de sistemas que dice que el acceso local a una máquina implica una máquina comprometida :|. Es en realidad algo exagerado, aunque me parece una buena postura.

No podemos estar al tanto de todos los 0 days (abuso de fallos del sistema que aún no se han publicado), ni estar seguros de que no queda la posibilidad de una denegación de servicio (bloquear es casi tan malo como comprometer), pero contando con la buena fe de los usuarios y un poco de ayuda de systrace, igual sí es posible hacer las cosas en condiciones.

* Nota: Para eso podemos usar rssh (restricted ssh), que es un shell restringido para permitir solo scp y sftp (para soluciones de hospedaje), y lleva cierto soporte para cvs, rdist y rsync.

Anotación por Juan J. Martínez.

Hay 2 comentarios

Gravatar

Hace tiempo probé un shell chrooteado llamado jail.
Era muy curioso y funcionaba bien para estos fines

por Ruben, en 2005-05-15 22:22:42

Gravatar

Creo que ya lo comenté contigo... o quizás fue con Mati. FreeBSD tiene la opción de Jail, que es muy similar a los contenedores de Solaris:
http://www.bsdes.net/numero1/articulo04.php

Pero no está disponible en otros sistemas (AFAIK).

por Juanjo, en 2005-05-15 22:54:17

Los comentarios están cerrados: los comentarios se cierran automáticamente una vez pasados 30 días. Si quieres comentar algo acerca de la anotación, puedes hacerlo por e-mail.