Descargar

Implementación de SELinux

Enviado por Edgar Castañeda


    1. Resumen
    2. Modelos de Control de Acceso
    3. SELinux
    4. DAC en SELinux
    5. Seguridad
    6. Instalación
    7. Aplicación de Debian y Fedora

    RESUMEN

    El presente trabajo trata sobre la necesidad actual de trabajar bajo estándares seguros y administrar de manera eficiente los sistemas operativos, SELinux puede aplicar una política de seguridad definida administrativamente sobre todos los procesos y objetos en el sistema, en base a decisiones en etiquetas que contienen una variedad de información de seguridad-pertinente. La arquitectura proporciona flexibilidad limpia, separando la política lógica de la política de ejecución lógica. La política decision-making lógica se encapsula dentro de un solo componente conocido como el servidor de seguridad con una interfaz de seguridad general. Una amplia gama de modelos de seguridad puede llevarse a cabo como los servidores de seguridad sin requerir cambios a cualquier otro componente del sistema.

    Selinux, Security Enhaced Linux, es una colección de parches que modifican el núcleo del sistema operativo Linux, fortaleciendo los mecanismos de control, posee una arquitectura de seguridad integrada en el kernel 2.6.x, usando los módulos de seguridad Linux, conocidos como Linux Security Modules o LSM, se ha constituido en un Proyecto de la Agencia de Seguridad Nacional de los Estados Unidos y como se había enunciado de la Comunidad SELinux que busca la integración, especialmente en Red Hat Enterprise y actualmente con Debian.

    Selinux fortalece los mecanismos de control de acceso forzando la ejecución de los procesos dentro de un entorno con el mínimo de privilegios.

    1. INTRODUCCION

    El desarrollo elevado de la Tecnología y su acceso por parte de los usuarios en las últimas décadas, ha tornado más fácil el acceso a la información así como convertir a ella en centro vulnerable de ataques. La utilización de grandes bases de datos, sean de carácter comercial como científico, el auge investigativo de grandes sociedades productoras de conocimientos, la necesidad de manejar grandes volúmenes de información ha hecho que el mundo de la informática también acelere su paso para mantenerse a la par de las necesidades de los grandes usuarios, debiéndose en esta sociedad globalizada enfrentarse al grave problema de las patentes y el usufructo de los derechos de autor, tornando muchas veces al conocimiento como fuente de opresión especialmente para los países denominados subdesarrollados que deben gastar ingentes recursos en las compras de las denominadas "licencias".

    Actualmente la red de redes o internet ha facilitado el contacto entre el mundo y los desarrolladores independientes se ubican en desigual lucha creando sus propios sistemas y compartiéndolo de manera libre entre la sociedad sus aspiraciones y conocimientos, basados también en normas y estándares internacionales en su desarrollo, bajo licencias GNU, siendo los sistemas que más se han desarrollado Unix/Linux, bajo grupos de desarrollo independiente.

    De esta manera, además se ha visto el auge por alterar las seguridades y provocar daños hacia sistemas y equipos, sean estos locales o remotos, del mismo modo existe una comunidad capaz, en frontal lucha para mejorar los sistemas y sus seguridades, buscando además que éstas sean fáciles de implementar, livianas y de muy bajos costos, que consuman la menor cantidad de recursos, sean fiables y seguros.

    Entonces, no habrá sistema operativo que no pueda ser atacado o vulnerado, creando a pesar de los esfuerzos un panorama de inseguridad, frente a peligros de ataques sean estos internos o externos, a la presencia de virus, malware; sabemos que los firewalls son elementos fronterizos, sin embargo falta control y protección, el control de acceso se halla en primera línea, tornándose en la necesidad de mantener una lucha constante por mantener y mejorar la seguridad de los sistemas.

    2. MODELOS DE CONTROL DE ACCESO

    Tradicionalmente los sistemas Unix han utilizado el modelo de control de acceso discrecional (Discretionary Access Control, DAC) en el que un usuario tiene un completo control sobre los objetos que le pertenecen y los programas que ejecuta. Así mismo, el programa ejecutado por un usuario tendrá los mismos permisos de ese usuario que lo está ejecutando.

    Esto implica que la seguridad del sistema depende de las aplicaciones que se están ejecutando y, por tanto, cuando se produce una vulnerabilidad de seguridad en una aplicación, ésta afecta a todos los objetos a los que el usuario tiene acceso. Así, si la aplicación es ejecutada por root, el atacante puede obtener los máximos privilegios en la máquina, comprometiendo la seguridad global del sistema.

    Otro modelo de control de acceso es el denominado control de acceso obligatorio (Mandatory Access Control, MAC), donde existe una política de seguridad definida por el administrador y que los usuarios no pueden modificar. Esta política va más allá de establecer propietarios de archivos sino que fija "contextos", en donde se indica cuando un objeto puede acceder a otro objeto.

    Este modelo de control de acceso puede aumentar el nivel de seguridad, especialmente cuando se establece como base de la política definida que no se permite cualquier operación no expresamente autorizada. La implementación de este modelo de seguridad para todo un sistema puede ser una tarea muy tediosa.

    En teoría deben definirse reglas para cualquier usuario que utiliza cualquier programa que accede a cualquier objeto del sistema. Para evitar tener que llegar a este detalle de definición, algo que fácilmente se convertiría en un monstruo inmanejable, se utiliza el concepto de control de acceso basado en roles (Role-Based Access Control, RBAC). Bajo este modelo, el administrador define una serie de roles y asigna a los usuarios en los diferentes roles que corresponden a su perfil. Como ejemplo, el usuario de un programa únicamente necesita disponer de permisos para leer y escribir los archivos utilizados por esa aplicación concreta, pero nada más.

    Otros usuarios es posible que necesiten permisos para poder leer archivos, pero no modificarlos. Cada uno de estos usuarios se asignará a diferentes roles.

    La Agencia de Seguridad Nacional (NSA) de los Estados Unidos lanza un proyecto de fuente abierta el Security Enhanced Linux (SE Linux), que lo desarrollaron originalmente como un avance revolucionario, pero es también muy diferente del modelo estándar de seguridad de Linux. Las nuevas tecnologías que desarrollo SELinux como, control de acceso obligatorio en un sistema basado en Linux, se incorporan en distribuciones como RedHat, Fedora y Gentoo, y ahora el nuevo lanzamiento de EnGarde Linux 3,0.

    3. SELinux

    Security Enhanced Linux, SELinux, es una colección de parches que modifican el núcleo del sistema operativo Linux, fortaleciendo los mecanismos de control de acceso y forzando la ejecución de los procesos dentro de un entorno con los mínimos privilegios necesarios.

    3.1 Definición

    SELinux puede considerarse como una implementación práctica del modelo de seguridad de control de acceso obligatorio basado en el núcleo del sistema operativo Linux.

    SELinux determina dos objetos, por un lado, demostrar la posibilidad de implementar el modelo de seguridad de control de acceso obligatorio (MDAC) y el control de acceso basad o en roles (RBAC) en entorno Linux, como segundo objetivo, el hacer frente a la eventualidad de que los sistemas operativos "trusted" comerciales dejaran de estar disponibles.

    Un administrador de un sistema SELinux tiene la posibilidad de configurar una política donde se define los archivos a que tiene acceso cada programa. SELinux implementa un mecanismo para establecer en cada archivo y proceso el contexto en el que está siendo utilizado.

    Mediante la utilización de un módulo del sistema operativo, es posible establecer reglas para permitir o denegar el acceso a cualquier archivo del sistema (utilizando el concepto de archivo de Unix, lo que incluye a los dispositivos, archivos…).

    3.2 Características

    • La noción de un sistema seguro incluye muchos atributos (seguridad física, seguridad lógica, la seguridad del personal, etc.). SELinux se dirige sólo a un juego muy estrecho de estos atributos (mandos de acceso obligatorios en el sistema operativo).
    • SELinux significa la caja fuerte para proteger la información del mundo real de algún adversario del mundo real que el dueño de información no permita el acceso al usuario.
    • SELinux proporciona compatibilidad binaria con las aplicaciones existentes de Linux y con los kernel de Linux, algunos kernel pueden requerir modificaciones para actuar con SELinux
    • Los nuevos rasgos del SELinux se diseñan para dar fuerza a la separación de información basada en la confidencialidad y requisitos de integridad. Ellos se diseñan para impedir a los procesos pocos fiables leer datos y programas, desviando los mecanismos de seguridad de la aplicación, interfiriendo estos procesos en la violación de la política de seguridad de sistema. Ellos también ayudan confinar el daño potencial que puede causar a los datos o programas. Ellos también deben ser útiles para permitir usar un solo sistema por los usuarios diferenciando las autorizaciones de seguridad para acceder a tipos múltiples de información mediante requisitos de seguridad.
    • El sistema operativo dispone de un proceso servidor de seguridad, que se ejecuta como parte del núcleo, que decide en base a la política de seguridad definida por el administrador, si algo (un proceso o un usuario) dispone de permiso para acceder a un objeto (archivo, dispositivo…), este mecanismo de control se denomina Type Enforcement (TE).
    • SELinux también permite implementar un modelo adicional de seguridad (Multi-Level Security, MLS) en el que además de lo indicado hasta ahora es posible, para cada objeto, una capa de seguridad (como "altamente secreta", "secreta", "confidencial" y "sin restricción").

    3.3 Ventajas y desventajas

    • El mecanismo de control Type Enforcement (TE), ante una incidencia de seguridad como puede ser un desbordamiento de búfer en un proceso ejecutado por root, el atacante sólo podrá acceder a los archivos para los cuales el proceso vulnerable esté autorizado por la política del sistema. No tendrá ningún efecto sobre el resto de archivos u objetos del sistema.
    • Los mecanismos del SELinux añade restricciones de que únicamente aquellos procesos y usuarios situados en la misma capa (o una capa superior) puede acceder a los objetos, pero nunca al revés. Así un usuario o un proceso de la capa "confidencial" puede acceder a la información "confidencial" y "sin restricción", pero nunca a la información marcada como "secreta" o "altamente secreta".

    4. DAC EN LINUX

    El modelo de seguridad utilizado por la mayoría de sistemas operativos está basado en Discretionary Access Control (DAC), que hace cumplir la seguridad por propiedad. En este modelo, los usuarios controlan los datos según sus necesidades, el dueño del sistema no controla totalmente el sistema. Sin embargo, la mayor preocupación sobre el modelo de Linux es la planteada por la cuenta de root, quien tiene el poder de controlar todos los ficheros y procesos. Si la cuenta de root, o un proceso que se ejecute con sus privilegios, se ve comprometido, un atacante puede tomar el control del sistema y de sus datos.

    Una aproximación más segura podría limitar o incluso eliminar la necesidad de una cuenta de root, y cambiar el poder de las cuentas de usuario al dueño del sistema, esta es la aproximación MAC. MAC hace cumplir las políticas de seguridad de una forma o mandatory, en lugar de una forma discreta o discretionary, a partir del nombre Mandatory Access Controls las políticas de seguridad pueden ser establecidas por el dueño del sistema e implementadas por un sistema o un administrador de seguridad. Una vez que estas políticas existan, los usuarios no podrán hacer caso omiso de las mismas, aun teniendo privilegios de root. Con MAC, la protección de ficheros y procesos es independiente de los dueños.

    Todo lo anterior son requerimientos para conocer a un sistema operativo con el criterio del Departamento de Defensa de EEUU "confiable". Estos criterios están bajo la publicación "Trusted Computer System Evaluation Criteria", también conocido como Libro Naranja.

    Discretionary Access Control (DAC) significa restringir el acceso a los objetos basados en la necesidad de identificar y conocer a los usuarios o grupos de usuarios los cuales van a hacer uso de esos objetos, muchas veces es conocido como surrogate access, ya que se debe establecer ciertos permisos de acceso o access permission.

    SELinux aparece a finales del año 2000 lanzado y distribuido por la Agencia Nacional de Seguridad de los Estados Unidos (NSA). El objetivo del mismo es, por un lado, demostrar la posibilidad de implementar el modelo de seguridad de control de acceso obligatorio (MDAC) y el control de acceso basado en roles (RBAC) en entorno Linux.

    Un segundo objetivo, hacer frente a la eventualidad de que los sistemas operativos "trusted" comerciales dejarán de estar disponibles. SELinux puede considerarse como una implementación práctica del modelo de seguridad de control de acceso obligatorio basado en el núcleo del sistema operativo Linux. Un administrador de un sistema SELinux tiene la posibilidad de configurar una política donde se define los archivos a que tiene acceso cada programa.

    Para poder realizar esto, SELinux implementa un mecanismo para establecer en cada archivo y proceso el contexto en el que está siendo utilizado.

    Mediante la utilización de un módulo del sistema operativo, es posible establecer reglas para permitir o denegar el acceso a cualquier archivo del sistema. El sistema operativo dispone de un proceso servidor de seguridad, que se ejecuta como parte del núcleo, que decide en base a la política de seguridad definida por el administrador, si algo (un proceso o un usuario) dispone de permiso para acceder a un objeto sea este un archivo o dispositivo, mecanismo de control denominado Type Enforcement (TE). Así, ante una incidencia de seguridad como puede ser un desbordamiento de búfer en un proceso ejecutado por root, el atacante sólo podrá acceder a los archivos para los cuales el proceso vulnerable esté autorizado por la política del sistema sin tener ningún efecto sobre el resto de archivos u objetos del sistema. SELinux también permite implementar un modelo adicional de seguridad (Multi-Level Security, MLS) en el que además de lo indicado hasta ahora es posible, para cada objeto, una capa de seguridad conocida como "altamente secreta", "secreta", "confidencial" y "sin restricción".

    En este modelo, a los mecanismos descritos anteriormente se añade la restricción de que únicamente aquellos procesos y usuarios situados en la misma capa o una capa superior pueden acceder a los objetos, pero nunca en sentido contrario.

    5. SEGURIDAD

    • Security Enhanced Linux es un prototipo de investigación para el Kernel de Linux y varios utilidades con las funcionalidades del SE diseñado para demostrar el valor del control de acceso obligatorios para la comunidad de Linux y ahora puede agregar dichos controles a Linux. El Kernel de Linux contiene nueva arquitectura de componentes desarrollados para mejorar la seguridad del sistema operativo. Estos componentes arquitectónicos mantienen el apoyo a los Roles y Multi-niveles.
    • El Kernel de Linux da fuerza a políticas de mando de acceso obligatorias que confinan al usuario programa y servidores del sistema a la cantidad mínima de privilegio, el super-usuario root no comparte las limitaciones de los mecanismos tradicionales.
    • La seguridad de un unmodified en el sistema Linux depende de la exactitud del kernel, de todas las aplicaciones privilegiadas, y de cada una de sus configuraciones. Un problema en cualquier de estas áreas puede comprometer el sistema entero. La seguridad del SE Linux depende principalmente de la exactitud del kernel y de la configuración de su política de seguridad. Los problemas con la exactitud o configuración de aplicaciones comprometen el entorno limitado del usuario individual, ellos no proponen una amenaza a la seguridad de otro usuario o a la seguridad del sistema en conjunto.

    6. INSTALACIÓN

    SELinux viene distribuyéndose como una colección de parches para el código fuente del núcleo del sistema operativo, actualmente se ha cambiado la arquitectura constituyéndose en un módulo que utiliza los enganches de seguridad facilitados por el Linux Security Module (LSM), por lo que como paso previo a la instalación de SELinux debe instalarse el sistema operativo Linux.

    Los requerimientos para la instalación del sistema operativo Linux son: Utilizar sistema de archivos ext2 o ext3, instalar las herramientas necesarias para compilar el núcleo e instalar los diversos componentes que deberá ejecutar el servidor (como BIND, Apache, Samba).

    La distribución actual de SELinux incluye:

    • El código fuente del núcleo estándar de Linux, con los parches de SELinux ya aplicados.
    • El soporte para Linux Security Modules (LSM).
    • El soporte de SELinux para LSM.
    • Programas para la administración de SELinux y las políticas de seguridad.
    • Diversos ejemplos de políticas de seguridad.
    • Diversas utilidades para sustituir algunas de las utilidades estándar del sistema (cp, find, id, ls).

    SELinux establece una serie de prioridades o políticas para el control de la seguridad del sistema operativo, conocidas como un conjunto de reglas a ser aplicadas, tales como:

    Reglas de acceso de control (Role-Based Access Control)

    Implementadas en un parche del kernel y un conjunto de herramientas administrativas que añaden un número de módulos de seguridad al núcleo. El administrador de seguridad puede escoger y seleccionar que módulos utilizar, existen versiones de los núcleos 2.4 y 2.6. RSBAC esta siendo desarrollado desde 1996, incluye módulos para:

    Restringir el poder del root

    Listas de control de acceso

    Jaulas de procesos

    Limitación de recursos

    Limitación de acceso a la red

    Control de acceso en base a roles

    Protección del espacio de direcciones con PaX3

    Detección de intrusos (Linux Intrusion Detection System)

    Linux Intrusion Detection System es un parche para el núcleo y un conjunto de herramientas de administración que añaden MAC, así como otras muchas mejoras de seguridad al núcleo de Linux.

    Existen parches disponibles para los núcleos de las series 2.4 y 2.6. Con LIDS es posible:

    Restringir el poder del root

    Establecer un granularidad final en el control de accesos mediante ACLs

    Proteger ficheros y procesos

    Restringir el acceso a la red

    Detectar escaneos de puertos

    Lattice-Based Access Control

    Es una variante de MAC en la que se establecen unos flujos de información unidireccionales. Se crean grupos dentro de los cuales existen distintas clases de información.

    Grupo 1: Clases: desclasificado, público y confidencial.

    Grupo 2: Clases: Secreto y supersecreto.

      Un documento puede pasar de:

    Desclasificado a –à Público.

    Los permisos se asignan de esta manera, siempre con cambio unidireccional. Es posible otorgar ambos permisos a una cuenta de forma que el mismo usuario pueda desclasificar de nuevo el documento.

    Principios de LBAC

    Reflexivo: Un usuario debe poder modificar un documento y volverlo a su estado original.

    Desclasificado-à Desclasificado

    Grsecurity

    Grsecurity es otro parche que añade mucho más que MAC al núcleo de Linux. MAC está implementado utilizando RBACS (Role Based Access Controls), y se usa a través de su utilidad gradm. Ambos núcleos, 2.4 y 2.6 están soportados. Grsecurity provee las siguientes mejoras de seguridad:

    Protección del espacio de dircciones con PaX

    Aleatoriedad adicional en la pila TCP/IP

    Los usuarios sólo pueden ver sus propios procesos.

    Archivos relacionados con Selinux

    Archivos /selinux/

    Contiene los comandos más utilizados por el kernel, siendo muy similar al subsistema de /proc/, en la mayoría de los casos, los administradores y usuarios no necesitan manipular este componente.

    Archivos de configuración de Selinux

    La mayoría de archivos se localizan en /etc/

    Archivo de configuración.

    Localizado en /etc/sysconfig/selinux

    Hay dos formas de configurar Selinux usando principalmente la Herramienta de configuración del nivel de seguridad(system-config-security level) o

    Manualmente editando el archivo de configuración(/etc/sysconfig/selinux).

    Opciones de configuración:

    SELINUX=<enforcing|permissive|disabled> — Define el estado superior para SELinux en un sistema.

    enforcing o 'impositivo' — Se impone la política de seguridad SELinux.

    permissive o 'permisivo' — El sistema SELinux advierte pero no impone la política. Esto es útil para propósitos de depuración o de resolución de problemas. En modo permisivo, se registrarán más rechazos, pues los sujetos podrán continuar con acciones que de lo contrario serían rechazadas en el modo impositivo.

    disabled o 'inhabilitado' — SELinux está completamente desactivado. Los ganchos de SELinux no están conectados al kernel y el pseudo sistema de archivos no está registrado.

    SELINUXTYPE=<targeted|strict> — Especifica cuál política está siendo implantada actualmente por SELinux.

    targeted (objetivo) — Solamente se protegen ciertos demonios particulares.

    La imposición de políticas para estos demonios se puede activar y desactivar, utilizando valores boleanos controlados por Herramienta de configuración de nivel de seguridad (system-config-security level). Al activar un valor boleano para un demonio objetivo se desactiva la transición de políticas para ese demonio, lo que previene, por ejemplo, que init pase a dhcpd desde el dominio unconfined_t (ilimitado) al dominio especificado en dhcpd.te.

    El dominio unconfined_t permite a los sujetos y objetos con ese contexto de seguridad a ejecutarse bajo la seguridad estándar de Linux.

    strict (estricta) — Protección SELinux completa, para todos los demonios. Se definen los contextos de seguridad para todos los sujetos y objetos y cada simple acción es procesada por el servidor de aplicación de políticas.

    El directorio /etc/selinux/

    El directorio /etc/selinux/ es la ubicación principal para todos los archivos de políticas así como también para el archivo de configuración principal.

    El ejemplo siguiente presenta contenidos de muestra del directorio /etc/selinux/

    Los dos subdirectorios, strict/ y targeted/, son los directorios específicos donde se contienen los archivos de políticas del mismo nombre (por ejemplo, strict y targeted).

    Para más información sobre las políticas de SELinux y su configuración, consulte el Guía para escribir políticas SELinux de Red Hat

    Utilidades para SELinux

    Los siguientes son algunos de los programas de utilidades más usados por SELinux

    /usr/bin/setenforce — Modifica en tiempo real el modo en que se ejecuta SELinux.

    Al ejecutar setenforce 1, se coloca SELinux en modo impositivo.

    Al ejecutar setenforce 0, SELinux se coloca en modo permisivo. Para desactivar SELinux, se necesita que configure el parámetro en /etc/sysconfig/selinux o que pase el parámetro selinux=0 al kernel, bien sea en /etc/grub.conf o al momento del arranque.

    /usr/bin/sestatus -v — obtiene el estado detallado de un sistema ejecutando SELinux.

    /usr/bin/newrole — Ejecuta un nuevo shell en un nuevo contexto o papel. La política debe permitir la transición al nuevo papel.

    /sbin/restorecon — Configura el contexto de seguridad de uno o más archivos, marcando los atributos extendidos con el archivo apropiado o contexto de seguridad.

    /sbin/fixfiles — Verifica o corrige la base de datos del contexto de seguridad en el sistema de archivos.

    Nuevas características de los kernel 2.6

    Integración de UML en el kernel

    Las UML (User Mode Linux) es una de las características más importantes para los administradores de redes y la seguridad de las mismas, característica implementada en el kernel 2.6, que permite correr "un sistema operativo Linux bajo otro Linux". Esto lo realiza corriendo un proceso en el Linux normal, que llamaremos anfitrión, este proceso es una versión de Linux corriendo normalmente como cualquier otro proceso, pero el cual su función es emular de manera perfecta el sistema operativo Linux, teniendo total independencia con el sistema que se esta corriendo como anfitrión. Con estas características se hace fácil poder crear redes virtuales, simular una red con varios PC, aunque en realidad se tenga un único PC, facilitando el Webhosting o repositorio para shell.

    Otra de las utilidades de la UML, es conocida como "honeypots" (tarro de miel), útil para atrapar crackers o aficionados a entrar en lugares donde no invitados, y mantenerlos en cuarentena y que no puedan interferir con el sistema real que contienen la información.

    Mejoras en el manejo de procesos y CPU

    Se espera que el algoritmo introducido por Linus e Ingo, mejore de manera sustancial la manera en que el kernel maneje los procesos que se están ejecutando, lo que introduciría una notable mejora en la administración de los procesos.

    * FileSystem

    Se integran más elementos a seguridad como las ACL (Access Control List), que permiten definir con mayor detalle los permisos para los archivos, aunque cabe señalar que esta característica está disponible solo en los sistema de fichero extended 2 (ext2) y extended 3 (ext3).

    Con respecto al tema de soporte, para ocupar el sistema de archivos de SGI, de plataformas IRIX, el llamado sistema XFS, hay que parchar el kernel 2.4 para acceder al soporte para este FileSystem. En la versión 2.6 del kernel, viene integrado por defecto.

    * Módulos

    En la versión 2.6 del núcleo hay un cambio drástico en la carga de los módulos, para lo que se han desarrollado nuevas herramientas. Hay nuevas APIs que hacen que el portar código de módulos de 2.4 a 2.6, sea un poco mas trabajoso.

    .Net

    En cuanto a las herramientas para trabajo en red, NetWorking, una característica que se nota a primera vista, es la incorporación de IPsec, lo cual hace mas fácil la posibilidad de implementar una VPN (Virtual Private Network).

    En la versión que estoy probando (2.6.0-test2) la cantidad de drivers para tarjetas de redes es baja.

    Seguridad

    La integración de elementos de seguridad en el mismo kernel, da una visión de la importancia que los desarrolladores han dado a este tema tan importante en estos días. Está a cargo del proyecto lsm (Linux Security Modules), perteneciente a Immunix, organización que ha trabajado en conjunto con DARPA y la empresa WireX Communications en hacer de Linux una plataforma más segura.

    Como hemos visto ya, los filesystem traen incorporadas ACL, elemento de seguridad importante. Un complemento es la sesión "Security Options", en la cual se pueden activar los módulos de seguridad. Estos módulos trabajan agregando mas campos a las estructuras de System V IPC y manejo de socket, activando mas controles de acceso a estos.

    Existe un modulo llamado ROOTPLUG, muy interesante en su función, el cual deniega cualquier ejecución con UID 0 (root), si es que no existe un dispositivo USB.

    Compilación Kernel 2.4.x en Debian.

    Decargar el kernel, con wget, para instalarlo con apt.

    ….:/# apt-get update

    ….:/# apt-get install wget

    ….:/# cd /usr/src

    ….:/usr/src# wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.28.tar.bz2

    Descomprimir el recurso.

    ….:/usr/src# apt-get install bzip2

    ….:/usr/src# tar jxvf linux-2.4.28.tar.bz2

    Crear un link simbólico.

    ….:/usr/src# ln -s linux-2.4.28 linux

    OPCIONAL: Parchar el kernel con soporte encriptación MPPE 128bit y compresión MPPC VPN Server

    ….:/usr/src# wget -c http://www.polbox.com/h/hs001/linux-2.4.28-mppe-mppc-1.2.patch.gz

    ….:/usr/src# cd Linux

    ….:/usr/src/linux# apt-get install match

    ….:/usr/src/linux# zcat ../linux-2.4.28-mppe-mppc-1.2.patch.gz | patch –p0

    Configurar el kernel para adaptarlo al hardware.

    ….:/usr/src/linux# apt-get install libncurses5-dev

    ….:/usr/src/linux# make clean mrproper

    ….:/usr/src/linux# make menuconfig

    Una vez configurado el kernel, compilar la imagen y los módulos. ….:/usr/src/linux# apt-get install gcc make

    ….:/usr/src/linux# make dep

    ….:/usr/src/linux# make bzImage

    ….:/usr/src/linux# make modules

    Instalamos los módulos y copiar la imagen del kernel al /boot. ….:/usr/src/linux# make modules_install

    ….:/usr/src/linux# cp arch/i386/boot/bzImage /boot/2.4.28.img

    Creamos la imagen del initrd.

    ….:/usr/src/linux# apt-get install mkinitrd-tools

    ….:/usr/src/linux# mkinitrd –o /boot/initrd.2.4.28.img /lib/modules/2.4.28

    Opción A: Gestor de arranque Lilo

    Editamos el lilo.conf y añadimos la nueva imagen de nuestro kernel.

    ….:/usr/src/linux# nano -w /etc/lilo.conf

    image=/boot/2.4.28.img label=2.4.28 read-only initrd=/boot/initrd.2.4.28.img

    Cargar la nueva configuración del lilo.

    ….:/usr/src/linux# lilo –v

    Opción B: Gestor de arranque Grub

    Editamos el archivo de configuración del grub y añadimos la nueva imagen de nuestro kernel. ….:/usr/src/linux# nano -w /boot/grub/menu.lst

    title Debian GNU/Linux, kernel 2.4.28

    root (hd0,1)

    kernel /boot/2.4.28.img root=/dev/hda1 ro

    initrd /boot/initrd.2.4.28.img

    savedefault boot

    Kernel 2.6.x en Debian.

    Descargar el kernel con wget e instalar con apt.

    ….:/# apt-get update

    ….:/# apt-get install wget

    ….:/# cd /usr/src

    ….:/usr/src# wget

    http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.11.11.tar.bz2

    Descomprimir los sources.

    ….:/usr/src# apt-get install bzip2

    ….:/usr/src# tar jxvf linux-2.6.11.11.tar.bz2

    Crear un link simbólico.

    :/usr/src# ln -s linux-2.6.11.11 linux

    OPCIONAL: Parchar el kernel con soporte encriptación MPPE 128bit y compresión MPPC VPN Server

    ….:/usr/src# wget –c

    http://www.polbox.com/h/hs001/linux-2.6.11-mppe-mppc-1.3.patch.gz

    ….:/usr/src# cd Linux

    ….:/usr/src/linux# apt-get install match

    ….:/usr/src/linux# zcat ../linux-2.6.11-mppe-mppc-1.3.patch.gz | patch –p0

    Configuramos el kernel para adaptarlo al hardware.

    ….:/usr/src/linux# apt-get install libncurses5-dev

    ….:/usr/src/linux# make clean mrproper

    ….:/usr/src/linux# make menuconfig

    Una vez configurado el kernel , compilar la imagen y los módulos.

    ….:/usr/src/linux# apt-get install gcc make

    ….:/usr/src/linux# make dep

    ….:/usr/src/linux# make bzImage

    ….:/usr/src/linux# make modules

    Instalar los módulos y copiar la imagen del kernel al /boot. ….:/usr/src/linux# make modules_install

    ….:/usr/src/linux# cp arch/i386/boot/bzImage /boot/2.6.11.img

    Crear la imagen del initrd.

    ….:/usr/src/linux# apt-get install mkinitrd-tools

    ….:/usr/src/linux# mkinitrd –o /boot/initrd.2.6.11.img /lib/modules/2.6.11

    Opción A: Gestor de arranque Lilo

    Editar el lilo.conf

    ….:/usr/src/linux# vi /etc/lilo.conf

    image=/boot/2.6.11.img label=2.4.20 read-only initrd=/boot/initrd.2.6.11.img

    Cargar la nueva configuración del lilo.

    ….:/usr/src/linux# lilo –v

    Opción B: Gestor de arranque Grub

    Editar el archivo de configuración del grub y añadir la nueva imagen del kernel. ….:/usr/src/linux# nano -w /boot/grub/menu.lst

    title Debian GNU/Linux, kernel 2.6.11

    root (hd0,1)

    kernel /boot/2.6.11.img root=/dev/hda1 ro

    initrd /boot/initrd.2.6.11.img

    savedefault boot

    7. APLICACIÓN EN LINUX FEDORA

    El SElinux esta presente en las ultimas versiones como tal del Red Hat, su continuidad en Fedora y ahora en Corel de la misma línea. El ingreso tradicional a los sistemas Linux es mediante el nombre y password del Usuario que tradicionalmente con mucho riesgo como se a explicado es con el root (super-administrador).

    Ahora es posible ingresar con un usuario específico que se identifica dentro de un grupo.

    Dentro de fedora 2, para la creación de grupos y usuarios a un grupo definiendo roles se ingresa mediante la siguiente opción.

    Figura 1.

    Cabe destacar que los Sistemas Linux cada vez son más completos y fáciles de usar, sin embargo requieren de una expertitud para la ejecución de procesos. A continuación la creación de un grupo Maestría con sus respectivos permisos.

    Figura 2.

    Aquí la asignación del usuarios master al grupo Maestría.

    Figura 3.

     

     

    Edgar Castañeda

    Luis Patiño

    Octubre/2005