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

The list of POSIX Capabilities used with Linux is long, and the 32 available bits are almost used up. While the detailed list of all capabilities can be found in /usr/include/linux/capability.h on most Linux systems, an overview of important capabilities is given here. Las lista de Capacidades de POSIX que se usan es larga, y las

[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)

Also see Examples [E01] , [E02], and [E03]

03.1. Resource Limits

Resources for each process can be limited by specifying a Resource Limit. Similar to the Linux Capabilities, there are two different limits, a Soft Limit and a Hard Limit.

The soft limit is the value that the kernel enforces for the corresponding resource. The hard limit acts as a ceiling for the soft limit: an unprivileged process may only set its soft limit to a value in the range from zero up to the hard limit, and (irreversibly) lower its hard limit. A privileged process may make arbitrary changes to either limit value, as long as the soft limit stays below the hard limit.

03.1.0. Limit-able Resource Overview

The list of all defined resource limits can be found in /usr/include/asm/resource.h on most Linux systems, an overview of relevant resource limits is given here.

[0] RLIMIT_CPU
CPU time in seconds. process is sent a SIGXCPU signal after reaching the soft limit, and SIGKILL on hard limit.
[4] RLIMIT_CORE
maximum size of core files generated
[5] RLIMIT_RSS
number of pages the process's resident set can consume (the number of virtual pages resident in RAM)
[6] RLIMIT_NPROC
The maximum number of processes that can be created for the real user ID of the calling process.
[7] RLIMIT_NOFILE
Specifies a value one greater than the maximum file descriptor number that can be opened by this process.
[8] RLIMIT_MEMLOCK
The maximum number of virtual memory pages that may be locked into RAM using mlock() and mlockall().
[9] RLIMIT_AS
The maximum number of virtual memory pages available to the process (address space limit). \

Also see Examples [E11] and [E12].

03.2. File Attributes

Originally, this feature was only available with ext2, but now all major filesystems implement a basic set of File Attributes that permit certain properties to be changed. Here again is a short overview of the possible attributes, and what they mean.

s SECRM
When a file with this attribute set is deleted, its blocks are zeroed and written back to the disk.
u UNRM
When a file with this attribute set is deleted, its contents are saved.
c COMPR
files marked with this attribute are automatically compressed on write and uncompressed on read. (not implemented yet)
i IMMUTABLE
A file with this attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file and no data can be written to the file.
a APPEND
files with this attribute set can only be opened in append mode for writing.
d NODUMP
if this flag is set, the file is not candidate for backup with the dump utility.
S SYNC
updates to the file contents are done synchronously.
A NOATIME
prevents updating the atime record on files when they are accessed or modified.
t NOTAIL
A file with the t attribute will not have a partial block fragment at the end of the file merged with other files.
D DIRSYNC
changes to a directory having this attribute set will be done synchronously.
Also see Examples [E13] and [E14].

03.3. The chroot(1) Command

chroot allows you to run a command with a different directory acting as the root directory. This means that all filesystem lookups are done with '/' referring to the substitute root directory and not to the original one.

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.

See Example [E15]

[Summary] [Go Back] [Next]