We currently migrate to MediaWiki from our old installation, but not all content has been migrated yet. Take a look at the Wiki Team page for instructions how to help or browse through our new wiki at wiki.linux-vserver.org to find the information already migrated.

03. Existing Infrastructure Infraestructura Existente

Los recientes núcleos de Linux ya proveen muchas prestaciones de seguridad que son utilizadas por Linux-Vserver para hacer su trabajo. Especialmente características tales como el Sistema de Capacidades de Linux, Límite de Recursos, Atributos de archivos y el Cambio del Entorno Raíz. Las siguientes secciones darán una breve reseña acerca de cada una de estas.

03.0. Sistema de Capacidades de Linux

En ciencias de la computación, una capacidad es un signo usado por un proceso para probar que tiene permitido realizar una operación sobre un objeti. El Sistema de Capacidades de Linux se basa en las "Capacidades Posix", un concepto ligeramente, diseñado para fraccionar el privilegio todo poderoso de root en un conjunto de de distintos privilegios.

03.0.0. Capacidades de Linux

Un proceso tiene tres conjuntos de mapas de bits llamadas capacidades hereditarios(I), permitidos(P), y efectivos(E). Cada capacidad se implementa como un bit de estos mapas de bits que están activado o desactivados.

Cuando un proceso intenta hacer una operación privilegiada, el sistema operativo comprobará el bit apropiado en el conjunto efectivo de los procesos (en lugar de comprobar si el uid efectivo del proceso es 0 como se hace normalmente).

Por ejemplo, cuando un proceso intenta configurar el reloj, el núcleo Linux comprobará que el proceso tiene el bit CAP_SYS_TIME (que es actualmente el bit 25) habilitado en su conjunto efectivo.

El conjunto pemitido de los procesos indica las capacidades que el proceso puede usar. El proceso puede tener capacidades habilitadas en el conjunto permitido que no están en el conjunto efectivo.

Esto indica que el proceso tiene temporalmente deshabilitado esta capacidad. Un proceso tiene permitido habilitar un bit en su conjunto permitido solamente si está disponible en el conjunto permitido. La distinción entre efectivo y permitido existe de manera que el proceso puede agrupar operaciones que necesitan privilegios.

La implementación de en Linux detenida a este punto, mientras que las Capacidades de POSIX requier la adición de conjuntos de capacidades para archivos también para reemplazar la marca SUID (al menos para ejecutables)

03.0.1. Capability Overview

Las lista de Capacidades de POSIX que se usan es larga, y se usan casi todos de los 32 bits disponibles. Si bien la lista detalla da de todas las capacidades se puede encontrar en /usr/include/linux/capability.h en la matoría de los sistemas Linux, se da aquí un resumen general de las capacidades importantes que se pueden encontrar.

[0] CAP_CHOWN
cambia el dueño y grupo del archivo.
[5] CAP_KILL
envía una señal a un proceso con un identificador de usuario diferente existente o efectivo
[6] CAP_SETGID
permite setgid(2), setgroups(2), y falsos gids en pase de credenciales de socket
[7] CAP_SETUID
permite set*uid(2), y falsos uids en pase de credenciales
[8] CAP_SETPCAP
transfiere/elimina cualquier capacidad en el conjunto permitido hacia/desde cualquier pid
[9] CAP_LINUX_IMMUTABLE
permite la modificación de los atributos de archivo S_IMMUTABLE y S_APPEND
[11] CAP_NET_BROADCAST
permite hacer broadcast y escuchar a múltiples direcciones
[12] CAP_NET_ADMIN
permite la configuración de una interfaz, firewall de IP, enmascaramiento, cuantificación, depuración de socket, tablas de ruteo, conexión a cualquier dirección, entrar en modo promiscuo, multicasting,...
[13] CAP_NET_RAW
permite el uso de sockets crudos y de paquetes
[16] CAP_SYS_MODULE
inserta y saca módulos del kernel
[18] CAP_SYS_CHROOT
permite chroot(2)
[19] CAP_SYS_PTRACE
permite ptrace() de cualquier proceso
[21] CAP_SYS_ADMIN
esta lista sería demasiado larga, basicamente permite hacer cualquier otra cosa, no mencionada en otra capacidad.
[22] CAP_SYS_BOOT
permite reboot(2)
[23] CAP_SYS_NICE
modify scheduling permite aumentar la prioridad y configuración de prioridad en otros procesis,
[24] CAP_SYS_RESOURCE
maneja límites de recursos, quotas, espacio reservado en fs, ...
[27] CAP_MKNOD
permite los aspectos privilegiados de mknod(2)

También ver Examples [E01] , [E02], y [E03]

03.1. Resource Limits

Los recursos de cada procesos se puede limitar especificando un Límite de recursos. Similar a a las Capacidades de Linux, hay dos difentes límites, un límite Soft y un límite Hard.

El límite soft es el valor que el kernel aplica para los recursos correspondientes. El límite hard actúa como límite superior para el límite superior: un proceso no privilegiado puede solamente poner su límite soft a un valor en el rango que va desde cero hasta el límite hard, e (irreversiblemente) bajar su límite hard. Un proceso privilegiado puede hacer cambios arbitrarios para limitar el valor, toda vez que el límite soft quede por debajo del límite hard.

03.1.0. Limit-able Resource Overview

La lista de todos los límites de recursos se puede encontrar en /usr/include/asm/resource.h en la mayoría de los sistemas Linux, se entra aquí un resumen de los límites de recursos.

[0] RLIMIT_CPU
El tiempo del CPU en segundo que enviado por una señal SIGXCPU después de alcanzar el límite soft, y SSIGKILL en el límite hard.
[4] RLIMIT_CORE
tamaño máximo de los archivos core generados
[5] RLIMIT_RSS
número de páginas que el conjunto residente de procesos puede consumir (el número de páginas virtuales residentes en RAM)
[6] RLIMIT_NPROC
El máximo número de procesos que se pueden crear para el ID del usuario real del proceso que llama.
[7] RLIMIT_NOFILE
Especifica un valor más grande que el máximo número de descriptor de archivos que se pueden abrir por este proceso.
[8] RLIMIT_MEMLOCK
El máximo número de páginas virtuales que se pueden bloquear dentro de RAM usando mlock() y mlockall().
[9] RLIMIT_AS
El número máximo de páginas virtuales disponibles para el proceso (dirección de límite de espacio).

Ver también Examples [E11] y [E12].

03.2. Atributos de archivos

Originalmente, esta característica estaba solamente disponible con ext2, pero ahora los principales sistemas de archivos implementan un conjunto básico de Atributos de Archivos que permiten ciertan que cambiar ciertas propiedades. Aquí de nuevo hay una breve reseña de los posibles atributos, y lo que significan.

s SECRM
Cuando un archivo con está marcado con este atributo se borra, sus bloques son llenados con ceros y grabando en el disco.
u UNRM
Cuando un archivo tiene habilitado este atributo se borra, su contenido se guarda.
c COMPR
los archivos marcados con este atributo se comprimen automáticamente cuando se graban y se descomprimen cuando se leen. (no implementado aun)
i IMMUTABLE
Un archivo con este atributo no se puede modificar:no se puede borrar o cambiar de nombre, no puede ser enlazado ni se pueden guardar datos en él.
a APPEND
Los archivos marcados con este atributo pueden solamente abrirse en modo append para grabarse.
d NODUMP
si esta marca está presente, el archivo no es candidato para backup con el utilitario dump.
S SYNC
actualiza el contenido los contenidos del archivo sincrónicamente.
A NOATIME
evita actualizar el registro atime sobre los archivos cuando son accedidos o modificados.
t NOTAIL
Un archivo con t no tendrá un fragmento de bloque parcial en el fin del archivo combinado con otros archivos.
D DIRSYNC
si este atributo está habilitado los cambios a un directorio serán hechos asincrónicamente.
Ver también Examples [E13] y [E14].

03.3. El comando chroot(1)

chroot le permite ejecutar un comando con un directorio diferente actuando como el dirctorio raíz. Esto significa que todos las búsquedas del sistema de archivos se hacen con '/' referiéndose al directorio raíz substituto y no al original.

While the Linux chroot implementation isn't very secure, it increases the isolation of processes with regards to the filesystem, and, if used properly, can create a filesystem "jail" for a single process or a restricted user, daemon or service. Mientras que la implementación de Linux no es muy segura, incrementa el aislamiento de procesos con relación al sistema de archivos, y, si se usa apropiadamente, puede crear una jaula de sistema de archivos

See Example [E15]

[Summary] [Go Back] [Next]