Tuesday, July 25, 2006

Capabilities

Capabilities
 Copyright (c)  2006  Sergio Belkin
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts. A copy of the license is included in the section entitled "GNU
Free Documentation License"
.
1. Qué es.
Cuando se trata de archivos y procesos, generalmente se conocen temas como permisos, atributos, ACLs, no obstante hay un concepto que no está tan difundido: se trata de las capacidades (capabilities).
Una capacidad (o capability) es un determinado privilegio para realizar algo en el sistema, por ejemplo:crear nodos para dispositivos, ajuste del rejo del sistema, aumentar la prioridad de un proceso, etc.
2. Por qué.
Las capacidades (capabalities) se han creado con el objeto de dividir los superpoderes de root en distintos privilegios como los que se nombraron arriba. La idea es que cada uno de esos privilegios se puedan habilitar o de acuerdo a lo que se necesite.
3. Como funciona
Cada vez que se tiene que realizar una operación privilegiada, el kernel verifica si el proceso tiene las capacidades correspondientes en el grupo efectivo. Además el kernel efectúa las llamadas que se necesitan para que los procesos puedan adquirir y/o cambiar capacidades.
capability bounding set, definido en el archivo /proc/sys/kernel/cap-bound. Este parámetro se puede usar para poner un límite a todo el sistema sobre las capacidades otorgadas a todos los programas subsecuente mente ejecutados.
Solamente el proceso init puede asignar bits en el capabilitity bounding set; salvo eso, el superusuario puede solamente limpiar bits en este grupo.
En un sistema estándar el capability bounding set siempre enmascara la capacidad CAP_SETPCAP.

4. Relación con vserver
Las herramientas de vserver 'automáticamente' reducen el grupo de capacidades a un número razonable.

Estas capacidades son:

Cambia el dueño y grupo del archivo.Elude las restricciones lectura, escritura y ejecución.
Elude las restricciones de lectura de archivos y permite el acceso discrecional a directorios tanto para entrar como para ver sus contenidos.
Pasa por alto una serie de restricciones sobre archivos y procesos.
Operaciones con SUID y SGID.
Envía una señal a un proceso con un identificador de usuario diferente existente o efectivo. Permite setgid, setgroups, y falsos gids en pase de credenciales de socket. permite setuid, y falsos uids en pase de credenciales.Permite conexión a puertos reservados.
Permite chroot.
Permite hacer strace de cualquier proceso.
Permite llamadas a vhangup.
Permite ceder archivos.


Las siguientes capacidades están deshabilitadas para evitar que el sistema sea lo menos vulnerable posible:
Transfiere capacidades permitidas.
Modifica los flags de inmutabilidad y de agregado.
Permite broadcasting/multicasting de red.
Configuración de interfaces de red, configuración en modo promiscuo y enrutamiento.
Uso de sockets raw y paquetes.
Bloqueo de memoria y omisión en la comprobación de propietario para el intercambio de datos entre procesos.
Inserta y borra módulos del kernel.
Acceso ioperm/iopl y mensajes usb
Cuenta de procesos
Esta lista sería demasiado larga, básicamente permite hacer todo lo que no se menciona en otras capacidades.
Permite reiniciar reiniciar/apagar
Aumento de prioridades, y cosas relativas a la planificación.

Pasar por alto límite de recursos, pasar por alto quotas y espacio reservado, modificación de journaling de datos,

Manipulación del reloj del sistema.
Creación de nodos del kernel

5. Limitaciones
6. Otros

El respetado servidor FTP vsftpd usa libcap, unas librerías que permiten configurar y asignar capacidades.

7. Bibliogafía

[cap-talk] "Capability Myths Demolished" review

Processes

What is a Capability, Anyway?

Linux-VServer-Paper-03-espaniol - Linux-VServer

Filesystem capabilities for linux


capabilities(7): overview of capabilities - Linux man page

Wikipedia

LWN: Capabilities in 2.6

vserver development mailing list: [Vserver] Vserver and Security


Comments: Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?