Tuesday, July 25, 2006
Capabilities
Capabilities
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:
Las siguientes capacidades están deshabilitadas para evitar que el sistema sea lo menos vulnerable posible:
5. Limitaciones
El respetado servidor FTP vsftpd usa libcap, unas librerías que permiten configurar y asignar capacidades.
7. Bibliogafía
capabilities(7): overview of capabilities - Linux man page
Wikipedia
Copyright (c) 2006 Sergio Belkin1. Qué es.
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".
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:
- CAP_CHOWN
- CAP_DAC_OVERRIDE
- CAP_DAC_READ_SEARCH
- CAP_FOWNER
- CAP_FSETID
- CAP_KILL
- CAP_SETGID
- CAP_SETUID
- CAP_NET_BIND_SERVICE
- CAP_SYS_CHROOT
- CAP_SYS_PTRACE
- CAP_SYS_TTY_CONFIG
- CAP_LEASE
Las siguientes capacidades están deshabilitadas para evitar que el sistema sea lo menos vulnerable posible:
- CAP_SETPCAP
- CAP_LINUX_IMMUTABLE
- CAP_NET_BROADCAST
- CAP_NET_ADMIN
- CAP_NET_RAW
- CAP_IPC_LOCK, CAP_IPC_OWNER
- CAP_SYS_MODULE
- CAP_SYS_RAWIO
- CAP_SYS_PACCT
- CAP_SYS_ADMIN
- CAP_SYS_BOOT
- CAP_SYS_NICE
- CAP_SYS_RESOURCE
- CAP_SYS_TIME
- CAP_MKNOD
5. Limitaciones
- Por el momento el sistema de archivos no puede hacer que las capacidades se asocien con archivos ejecutables.
- No hay estándares que gobiernen las capacidades, pero la impementación de las capacidades de Linux está basada en el estándar borrador POSIX 1003e.
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
Linux-VServer-Paper-03-espaniol - Linux-VServer
Filesystem capabilities for linux
capabilities(7): overview of capabilities - Linux man page
Wikipedia
vserver development mailing list: [Vserver] Vserver and Security