2.2.5. Gestión de la seguridad

La gestión de la seguridad implica principalmente dos aspectos diferenciados:

  1. El mecanismo de control de accesos, que define el modo en que se permite o deniega el acceso a procesos y usuarios a los distintos recursos del sistema.

  2. El control de errores que perjudiquen el funcionamiento del sistema.

2.2.5.1. Mecanismo de control de accesos

Nota

Al tratar de estos mecanismos, distinguiremos entre sujeto, que es quien realiza la acción (un usuario, un proceso) y objeto que es el recurso del sistema sobre el que se realiza la acción.

Hay tres filosofías distintas a este respecto:

  1. Control de accesos discrecional (DAC)

    Es el mecanismo más habitual en que la seguridad se basa en la identidad de los usuarios y en los permisos que se otorgan a éstos sobre los distintos objetos del sistema. En él cada objeto tiene por propietario a un usuario y es éste el que tiene potestad para conceder, a discreción, permisos sobre su propiedad al resto de los usuarios. En consecuencia, el control de la seguridad no está centralizado, sino que cada usuario decide sobre la seguridad de los objetos que le pertenecen.

    Todo el control de accesos que estudiemos a lo largo del curso se basara en este enfoque, ya que es el que implementan nativamente los principales sistemas operativos: Windows y UNIX (Linux, *BSD, etc.).

  2. Control de accesos obligatorio (MAC)

    Este mecanismo se caracteriza porque el control está centralizado. El mecanismo se basa en la definición de etiquetas sobre los objetos que indican su nivel de sensibilidad (p.e. desclasificado, restringido, confidencial, secreto y alto secreto) y la definición de etiquetas sobre los sujetos que indican su nivel de acceso, de manera que el sujeto podrá actuar sobre el objeto sólo si tiene un nivel de acceso superior al de la sensibilidad del objeto.

    Todas estas políticas de acceso se definen de forma centralizada, sin que ningún usuario de forma discrecional pueda conceder a otros privilegios.

    En Linux, por ejemplo, hay posibilidad de implementar este mecanismo de seguridad a través de SELinux, que usa entre otras RedHat, o Apparmor, que usan SuSE, Ubuntu o Debian. De hecho, es normal que en los linux modernos, este mecanismo esté habilitado por defecto.

  3. Control de accesos basado en roles (RBAC)

    En este mecanismo se predefinen una serie de roles, a cada uno de los cuales se le asigna una serie de privilegios. Un administrador asignará a cada usuario uno o varios roles, de modo que los privilegios del usuario dependerán de cuál sea el rol o los roles que desempeñe.

    En cierta medida, es equivalente a un modelo DAC con ACLs en el que sólo se asignan permisos a grupos de usuarios, no a usuarios particulares.

Control de accesos discrecional

Para la implementación de este modelo, se requiere:

  1. La definición de usuarios.

  2. La autenticación, mediante la cual el sistema operativo identifica al usuario que accede al sistema. Lo habitual es la autenticación mediante nombre de usuario y contraseña, aunque pueden existir otras: parámetros biométricos, claves asimétricas, etc.

  3. Autorización, que permite la definición y aplicación de reglas que definen los privilegios de cada usuario. Básicamente, lo que se conoce como «dar o quitar permisos».

En este modelo, todo debe tener un propietario (un proceso, un fichero, un dispositivo) y, en caso de actuar como sujeto, lo hará con los privilegios del propietario, y en caso de ser un objeto, será el propietario el que podrá redefinir sus permisos de acceso para otros usuarios.

Por lo general, existe un administrador con poderes plenipotenciarios lo cual incluye poder saltar el proprio control de accesos. En los sistemas UNIX este usuario recibe el nombre de root.

Por otro lado, hay dos métodos prácticos para implementar este modelo:

  • El estándar POSIX, esto es el tradicional de UNIX, llamado también sistema UGO, que define para cada objeto un usuario propietario y un grupo propietario; y define para el objeto conjuntos diferentes de permisos: para ese usuario, para los usuarios pertenecientes a ese grupo grupo y para los restantes usuarios.

  • Las listas de control de accesos (ACL) que consisten en poder definir para cada objeto los conjuntos de permisos para cualesquiera usuarios y cualesquiera grupos. Por lo general se define un conjunto de permisos por defecto, que serán los que tengan los usuarios que no aparezcan en la lista o no pertenezcan a alguno de los grupos incluidos en la lista. Este es el método que usa Windows, aunque en los sistemas UNIX modernos se puede habilitar como complemento del anterior para aquellos objetos en los que no sea suficiente el sistema UGO, que es menos granular.

2.2.5.2. Control de errores

El control de errores del sistema es un tema amplio que incluye varios aspectos:

  • La recuperación sin colapso del sistema ante el fallo de un proceso.

  • La restauración del sistema a un estado anterior: puntos de restauración, copias de seguridad.

  • La generación de registros que permitan llevar a cabo un análisis forense ante la constación e un error.

  • La actualización del sistema mediante parches que permitan corregir errores de funcionamiento o de seguridad (vulnerabilidades).