Gentoo Logo

Renuncia de responsabilidad: Este documento ya no es válido y carece de soporte.


[ << ] [ < ] [ Inicio ] [ > ] [ >> ]


1. Mejorando la seguridad en Linux

Contenido:

1.a. Introducción

Una bienvenida amigable

Bienvenido al manual de SELinux para Gentoo. Con este recurso queremos presentarle rápidamente la implementación de SELinux y las directrices implicadas. Parte de esta presentación consiste en ayudarle a comprender porqué se creó SELinux y qué conceptos se esconden detrás de los parches de SELinux. Cubriremos los conceptos más importantes de SELinux, las directrices de referencia que utiliza Gentoo Hardened y desarrollaremos el trabajo con algunas herramientas de SELinux.

El propósito de este libro no es explicar en detalle el funcionamiento del propio SELinux. Existen muchas referencias disponibles en Internet y en muchos libros que le ayudarán con SELinux. En lugar de esto, nos centraremos en la integración de SELinux en Gentoo Hardened. Desde luego, le ofreceremos una rápida introducción a SELinux para que pueda comprender cómo trabaja, lo que es, y le ayudaremos a identificar las acciones que necesita realizar para asegurar su sistema usando las herramientas de SELinux.

1.b. Asegurando Linux

Seguridad en general

La seguridad se ve a menudo como un concepto vago. ¿Qué es la seguridad en general? ¿Cómo se mide? ¿Qué beneficio se obtiene y cómo asegurarse de no poner demasiado esfuerzo en asegurar su sistema?

Bien, los fanáticos de la seguridad le contarán que no existe otra cosa salvo el exceso de seguridad. Si se implementa de forma correcta, la seguridad no restrige la funcionalidad o el rendimiento. No le da demasiado trabajo para realizar sus tareas. Pero implementar la seguridad de forma apropiada es una tarea diferente y que conlleva mucho tiempo. Esta es la razón por la que en muchas ocasiones se escucha que la seguridad es tan buena como su administrador.

Entonces, ¿Cómo puedo velar por la seguridad?. Una buena práctica consiste en definir sus metas en lo que a seguridad se refiere. Haga una lista de que lo que quiere conseguir y porqué lo quiere hacer. Haciendo un seguimiento de las amenazas que quiere minimizar, podrá construir un modelo de seguridad que es el adecuado para su entorno. Estas amenazas pueden ser muy pretenciosas, como por ejemplo "Asegurarse de que nadie pueda violar nuestras medidas de seguridad".

En el caso de un sistema Linux funcionando con SELinux, esto podría significar que desea que nadie o nada, salvo los procesos de confianza, puedan escribir en ficheros críticos del sistema, como por ejemplo, la(s) imagen(es) del núcleo, configuración del gestor de arranque, las contraseñas y el propio binario de SELinux con las directrices.

Control de acceso

Un control de acceso decente de un sistema (o grupo de sistemas), asegura que únicamente se permite acceso a las personas o procesos autorizados a los recursos con los que quieren trabajar.

Antes de que pueda implementar un control de acceso al sistema, necesitará obtener la autorización adecuada. Si sus esquemas de autenticación fallan, su sistema de control de acceso al sistema podría no diferenciar a los usuarios legítimos de los maliciosos.

La autenticación de los usuarios en los sistemas Linux se realiza a través de PAM (Módulos de Autenticación Enchufables), un potente mecanismo para integrar esquemas múltiples de autenticación de bajo nivel en una interfaz de alto nivel.

Sin embargo, la autorización para el uso de los recursos, se realiza a veces a través de un esquema simple de permisos. La mayoría de los recursos no están ocultos por defecto, aunque existen parches y actualizaciones (tales como las ofrecidas por las fuentes del núcleo Gentoo Hardened con parches grSecurity que incluyen soporte para este tipo de medidas). Puede ocultar la existencia de archivos en todo el sistema de ficheros asegurándose de que el directorio en el que residen no es legible ni "ejecutable" por cuentas no autorizadas.

Este esquema de permisos por defecto tiene algunos inconvenientes importantes. No le permite definir autorizaciones flexibles (únicamente permite autorizaciones a tres niveles: propietario, grupo propietario y cualquier otra cuenta) y además está limitada a los permisos lectura/escritura/ejecución (aunque algunos atributos adicionales están disponibles hoy en día).

Otro problema es que el esquema de permisos es discrecional, lo que significa que los usuarios y procesos pueden cambiar las directrices de seguridad.

Este esquema de permisos es suficiente Para la mayoría de usuarios y ha demostrado ofrecer un método adecuado para gestionar las autorizaciones de acceso. Si embargo, los inconvenientes que presenta han resultado ser un agujero importante en lo que Linux ofrece.

1.c. Control de acceso obligatorio

Entre en SELinux

Si el control de acceso discrecional, abreviado DAC, mencionado arriba no es suficiente (y si es riguroso con la seguridad, no lo encontrará suficiente), entonces necesitará un sistema Control de Acceso Obligatorio o MAC.

Cuando se usa un sistema MAC, se necesita permitir explícitamente las actividades que un proceso quiere realizar en un recurso. Esto ofrece mayor granularidad con los permisos y los recursos. A menudo ofrecen no sólo soporte para ficheros, sino también para zócalos (sockets), puertos, segmentos de memoria, colas, procesos, servicios del núcleo, llamadas al sistema, dispositivos, sistemas de ficheros y mucho más. La granularidad de las actividades soportadas es también muy grande. Para los ficheros, esto incluye: añadir, crear, ejecutar, escribir, enlazar, llamadas ioctl, obtener atributos (getattr), dar valor a atributos (setattr), lectura, renombrado, bloqueo,... mientras que para los zócalos (sockets) estos pueden ser: añadir, asociar (bind), conectar, crear, escribir, enviar a, aceptar,... También, cuando se utiliza un sistema MAC, ningún usuario ni proceso puede manipular las directrices de seguridad por sí mismo: lo que el administrador ha concedido no puede ser revocado.

Aquí es donde SELinux entra en juego. SELinux es una característica del núcleo Linux que implementa, entre otras cosas, un sistema MAC para controlar y gobernar el acceso a varios recursos. Usa un esquema de permisos de denegación por defecto, de forma que se necesita conceder explícitamente el acceso que ha solicitado un proceso.

SELinux permite igualmente un modelo de permisos más fino encima del sistema tradicional DAC (el cual se usa también mientras SELinux está en funcionamiento; en otras palabras: si el sistema tradicional no permite ciertas actividades, éstas no serán permitidas incluso si las directrices de SELinux permiten la acción).

¿Qué es SELinux?

Para dar soporte a este modelo fino de permisos, es lógico pensar que se deben realizar cambios al núcleo Linux. Sí, gracias a la interfaz del núcleo Linux LSM (Módulos de Seguridad de Linux), el soporte para SELinux se añadió de forma muy sencilla desde el comienzo de las series 2.6 del núcleo. SELinux se ha integrado en el árbol principal del núcleo. Sin embargo, el soporte de SELinux y su utilización son dos cosas muy diferentes.

Para identificar adecuadamente los recursos, SELinux necesita asignar etiquetas a estos recursos. Cuando los recursos están en memoria, se realiza principalmente en el núcleo Linux, sin embargo, para recursos persistentes como ficheros, estas etiquetas deben localizarse en algún lugar. En SELinux, se ha elegido usar atributos extendidos del fichero (que son almacenados en el propio sistema de ficheros). La ventaja de este enfoque es que la etiqueta permanece junto al fichero incluso si éste cambia de nombre. Por el contrario, una desventaja de este enfoque es que el sistema de ficheros debe soportar estos atributos extendidos, los cuales no todos los sistemas de ficheros poseen (o tienen activados).

SELinux también utiliza roles para gestionar el acceso a los recursos. A un usuario que no tiene el rol de acceso a la administración del sistema no se le debe permitir ejecutar cualquier actividad de administración del sistema incluso si es capaz de escalar sus privilegios (por ejemplo usando una aplicación con la capacidad set-uid). Para el soporte de roles, SELinux requiere cambios en los servicios de autenticación (PAM) y necesita almacenar en algún lugar las definiciones de los roles y las autorizaciones.

Aparte del soporte en el núcleo y las etiquetas asignadas a los recursos en el sistema de autorización, SELinux requiere también herramientas específicas para consultar y manipular las etiquetas, gestión de privilegios (por ejemplo la herramienta sudo), servicios del sistema (como SysVInit) etc. Esto se traduce en un conjunto de parches que se aplican a estas herramientas (y más) los cuales no son siempre parte del código fuente principal de la aplicación.

Gentoo Hardened y SELinux

Gentoo Hardened ofrece SELinux integrado en la distribución. Cuando se selecciona soporte para SELinux, Gentoo Hardened aplicará los parches necesarios a las aplicaciones y le ayudará a (re)etiquetar sus ficheros y otros recursos para que puedan ser gestionados por SELinux. Gentoo Hardened también integra soporte SELinux en Portage, permitiendo que los nuevos ficheros que se instalen sean etiquetados automáticamente y que se utilice un entorno inofensivo (sandbox) para la construcción segura de los paquetes.

Aparte del soporte tecnológico puro, esperamos que encuentre los documentos de soporte, guías, experiencia y soporte en línea necesarios para usar SELinux en Gentoo. No dude en entrar y decir ¡hola! en el canal de chat #gentoo-hardened de la red IRC en Freenode o en nuestra lista de correo.

Si piensa que SELinux es apropiado para sus pretensiones y quiere probarlo usando Gentoo Hardened, por favor, continúe leyendo. En el próximo capítulo le informaremos de como se ha "diseñado" la seguridad en SELinux y cómo está estructurada conceptualmente. En capítulos posteriores le ayudaremos con el lenguaje de autorización y las directrices "base" con las que la mayoría de las distribuciones comienzan y finalmente le ayudaremos a instalar, ejecutar y gestionar un sistema SELinux con Gentoo Hardened.


[ << ] [ < ] [ Inicio ] [ > ] [ >> ]


Imprimir

Ver completo

Página actualizada 18 de septiembre, 2011

Sumario: La seguridad consiste en algo más que habilitar un cierto marco de trabajo o instalar un núcleo Linux diferente. Es una forma de trabajar y administrar su sistema Gentoo Linux. Aquí cubrimos algunas buenas prácticas (genéricas), y entonces trabajamos en el llamado Control de Acceso Obligatorio (MAC) y cómo SELinux cubre este hueco.

Chris PeBenito
Autor

Sven Vermeulen
Autor

Chris Richards
Autor

José María Alonso
Traductor

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.