martes, 28 de diciembre de 2010

SEGURIDAD Y PROTECCIÓN en Sistemas Operativos

Seguridad:

La seguridad de un sistema tiene múltiples facetas, incluyendo desde aspectos tales como la protección ante posibles daños físicos de los datos hasta el acceso indebido a los mismos. Los ataques contra la confidencialidad, la integridad o la seguridad de un sistema. La seguridad debe tener en cuenta eventos externos provenientes del entorno en que opera el sistema.

Protección:

Consiste en evitar que se haga un uso indebido de los recursos que están dentro del ámbito del sistema operativo. Deben de existir mecanismos y políticas que aseguren que los usuarios solo acceden a sus propios recursos. Las políticas de protección y seguridad de hardware, software y datos deben incluirse dentro del sistema operativo.

La seguridad de un sistema operativo se basa en tres aspectos de diseño:

  • · Evitar pérdidas de datos
  • · Controlar la confidencia de los datos
  • · Controlar el acceso a los datos y recursos.

La protección frente a fallos físicos, para conseguir que el sistema sea fiable, esta mas relacionada con la gestión de datos que con el sistema operativo.

El control del acceso a datos y recursos si es competencia directa del sistema operativo. Es necesario asegurar que los usuarios no acceden a archivos para los que no tienen permisos de acceso, a cuentas de otros usuarios o a paginas de memoria o bloques de disco que contienen información de otros usuarios. Para aplicarlos hay que aplicar criterios de diseño rigurosos y ejecutar pruebas de seguridad exhaustivas para todos los elementos del sistema, aunque se consideren seguros.

PROBLEMAS DE SEGURIDAD:

Ejemplos:

  • · Los fallos de UNIX, un usuario pudiera abortar un mandato con permisos de super usuario.
  • · Versiones antigua de UNIX, cualquier usuario podía leer el archivo passwd donde se almacenaban.
  • · En TENEX, sistema operativo en desuso. Comprobaba la palabra clave carácter a carácter.

USO INDEBIDO O MALICIOSO DE PROGRAMAS

Dos formas mas frecuentes de genera fallos de seguridad usando estas técnicas son el caballo de troya y la puerta de atrás.

Caballo de troya: se base en la idea de crear un programa para que haga cosas no autorizadas en el sistema cuando actúan en el entorno adecuado.

Puerta de atrás: consiste en crear un agujero de seguridad al sistema a atraves de un programa privilegiado que lo permite.

USUARIOS INEXPERTOS O DESCUIDADOS:

Los usuarios inexpertos son potencialmente muy peligrosos. Cosas tales como borrar archivos no deseados, dejar abiertos los accesos al sistema durante largo tiempo o escribir la palabra clave en un papel junto a la computadora son mas frecuentes de lo que parece.

USUARIOS NO AUTORIZADOS

Los sistemas operativos, UNIX O WINDOWS NT, mantienen cuentas para los usuarios autorizados. Se protege mediante contraseñas o palabras clave, que solo debe conocer el dueño de las mismas. El administrador o súper usuario puede acceder a todo el sistema saltándose las protecciones del resto de los usuarios.

El proceso de reconocimiento del usuario, llamado autentificación, sirve para evitar que usuarios no autorizados accedan al sistema. Un usuario pirata, trata de saltarse o romper el proceso de autentificación para entrar en el sistema de computación con la identidad de un usuario legitimo. Si lo consigue puede hacer todo aquello a lo que su identidad falsa le conceda derecho.

VIRUS:

Todo programa que se autorreplican con fines destructivos o de iolacion de seguridad. Necesitan de un programa que transporte el virus y de un agente que los transmita para infectar a otros programas.

GUSANOS:

Morris, un estudiante de Cornell, liberó un programa gusano en Internet. Anteriormente había descubierto dos fallos de seguridad en el UNIX de Berkeley que le permitían acceder a miles de máquinas conectadas a Internet, especialmente aquellas que permitían accesos por ftp a usuarios anónimos. Aprovechando esta circunstancia, fabricó un gusano que explotaba los fallos de seguridad para acceder a sistemas remotos y, además, se replicaba a sí mismo para acceder a más sistemas. El gusano estaba compuesto por dos programas: un pequeño programa de 99 líneas en C y el gusano principal. El gusano leía las tablas de encaminamiento del sistema infectado y enviaba el cargador a todos los sistemas remotos que podía, usando para ello tres mecanismos de penetración:

  • · Intérprete de mandatos remoto (rsh).
  • · Demonio del finger.
  • · sendmail.

POLITICAS DE SEGURIDAD:

Los requisitos de seguridad son siempre una cuestión importante en las organizaciones. La existencia de un sistema seguro pasa porque exista una política de seguridad [Neumann, 19901 que defina claramente la seguridad que proporciona el sistema, independientemente de los mecanismos usados para implementarla.

Es interesante resaltar que los requisitos de seguridad varían de unos sistemas a otros, e incluso entre usuarios distintos dentro del sistema.

POLITICAS COMERCIALES:

Basándose en la política militar, pero generalmente debilitando las restricciones de seguridad, se han diseñado varias políticas de uso comercial. Algunos ejemplos de ellas son las de Clark-WiIson separación de deberes. Aunque son menos rígidas que la militar, todas ellas usan los principios de compartimentación de los usuarios y de clasificación de la información. Además definen reglas similares para el trasvase de información entre los distintos niveles y compartimentos.

MODELOS DE SEGURIDAD:

Un modelo es un mecanismo que permite hacer explícita una política de seguridad. En seguridad, los modelos se usan para probar la completitud y la coherencia de la política de seguridad.

Además, pueden ayudar en el diseño del sistema y sirven para comprobar si la imple-mentación cumple los requisitos de seguridad exigida. Dependiendo de los requisitos, los modelos de seguridad se pueden clasificar en dos grandes tipos: multinivel [Bell, 1983] y limitados [Harri-son, 1985].

Los modelos de seguridad multinivel permiten representar rangos de sensibilidad y reflejar lanecesidad de separar rigurosamente los sujetos de los objetos a los que no tienen acceso. Suelen ser modelos abstractos y muy generales, lo que los convierte en muy complejos, difíciles de verificar y muy costosos de implementar.

DISEÑOS DE SISTEMAS OPERATIVOS SEGUROS:

Mecanismos desde el principio. Incluir mecanismos de seguridad dentro de un sistema operativoexistente es muy difícil porque las repercusiones de los mecanismos de seguridad afectan prácticamente a todos los elementos del sistema operativo. Además, el diseño del sistema de seguridad debería ser lo suficientemente flexible como para poder proporcionar distintas políticas de seguridad con los mecanismos diseñados.

PRINCIPIO DE DISEÑO Y ASPECTO DE SEGURIDAD:

Basados en las experiencias obtenidas a partir de los problemas de seguridad detectados en sistemas i operativos como MULTICS, MVS o UNIX, Saitzer y Schroeder extrajeron los criterios de diseño i siguientes para dotar a un sistema operativo de mecanismos de seguridad:

  • 1. Diseño abierto.
  • 2. Exigir permisos.
  • 3. Privilegios mínimos.
  • 4. Mecanismos económicos.
  • 5. Intermediación completa.
  • 6. Compartición mínima.
  • 7. Fáciles de usar y aceptables.
  • 8. Separación de privilegios.

TECNICAS DE DISEÑOS DE SISTEMAS SEGUROS:

Existen distintas técnicas de diseño que se pueden usar para dotar a un sistema operativo con los principios y características de seguridad descritas anteriormente. En esta sección se describen las tres principales:

  • • Separación de recursos.
  • • Uso de entornos virtuales.
  • • Diseño por capas.

USO DE ENTORNOS VIRTUALES

Este mecanismo es muy importante para diseñar sistemas operativos seguros, porque permiten proporcionar separación lógica de forma natural. Obviamente, los entornos virtuales deben apoyarse en recursos reales, pero el sistema operativo puede proporcionar a los usuarios los recursos virtuales y controlar el acceso a los mismos. Ejemplos de mecanismos virtuales importantes son:

  • • Los espacios múltiples de memoria virtual.
  • • Las máquinas virtuales.

DISEÑOS POR CAPAS:

La visión de un sistema seguro se puede asemejar a una serie de círculos concéntricos, donde los niveles interiores son de más confianza. Está visión se puede plasmar de forma precisa en un sistema por capas, donde cada capa sólo tiene acceso a las capas adyacentes.

CONTROLES DE SEGURIDAD EXTERNO AL SISTEMA OPERATIVO:

En las secciones anteriores se han mostrado los criterios de diseño de un sistema seguro. Obviamente, no existirían fallos de seguridad si se pudieran prevenir. Sin embargo, la prevención supone hacer frente a un problema de gran complejidad.

USO DE ESTANDARES DE SEGURIDAD:

Un sistema operativo suele ser un proyecto de programación muy grande. Los controles anteriores son sólo una pequeña parte de los controles que es necesario aplicar en el desarrollo del sistema. Además, para que el sistema sea seguro es necesario describir claramente qué hacer, y cómo hacer lo, en términos de seguridad. Actualmente, existen varios estándares que describen cómo conseguir un sistema fiable y de calidad. Los tres más conocidos son el DoD-2167A, el SSE-CMM y el ISO 9000.

CONTROLES DE SEGURIDAD DEL SISTEMA OPERATIVO:

El sistema operativo debe llevar a cabo su parte de la política de seguridad del sistema liJones, 19781. Algunos de los controles de seguridad que se deben aplicar en el sistema operativo son:

  • • Ejecutar software fiable.
  • • Sospechar de los procesos.
  • • Ejecutar los procesos con confinamiento.
  • • Registrar los accesos.
  • • Buscar periódicamente agujeros de seguridad.

CRIPTOGRAFÍA:

La criptografía es la técnica que permite codificar un objeto de manera que su significado no sea obvio. Es un medio para mantener datos seguros en un entorno inseguro, en el cual un objeto original (O) se puede convertir en un objeto cifrado (C) aplicando una función de cifrado (E).

CLAVES

Un concepto básico en criptografía es el de clave. La clave (k) es el patrón que usan los algoritmos de cifrado y descifrado para manipular los mensajes en uno u otro sentido. Aunque existen sistemas criptográficos que no usan clave (keyless cipher), el uso de claves añade más seguridad a los meca nismos de cifrado porque con distintas claves se pueden obtener distintos mensajes cifrados usando la misma función de cifrado. De esta forma, para romper un sistema de cifrado es necesario conocer tanto las funciones correspondientes como la clave usada para cifrar Un determinado objeto.

• Simétricos. En este caso, D es la función inversa de E y las clave usada en ambos casos es la misma. También se denominan sistemas de clave privada. Puesto que ambos comparten la clave, pueden trabajar de forma independiente. La simetría del proceso es muy útil siempre que se mantenga e1 secreto, ya que en ese caso se puede usar la clave como medio de autenticación Sin embargo, estos métodos tienen problemas asociados con la filtración de las claves, su distribución, su debilidad criptográfica y el número creciente de claves.

• Asimétricos. En este caso existen claves distintas para cifrar y descifrar y la función de descifrado no es exactamente inversa a la de cifrado (o=D (Kd, E (Ke, O))). La asimetría permite reducir el número de claves a intercambiar entre los participantes en el proceso de cifrado.

SISTEMAS OPERATIVOS. UNA VISION APLICADA:

El uso de claves también genera problemas importantes. En primer lugar, la clave debe ser conocida por el codificador y el descodificador de un objeto. En segundo lugar, la clave debe resistir los intentos de rotura, lo que significa que debe tener una cierta complejidad. EN tercer lugar, limita la comunicación entre procesos a aquellos que conocen sus respectivas claves, lo que obliga a establecer protocolos de intercambio de claves que permitan llevar a cabo comunicaciones seguras, incluso aunque se ejecuten sobre canales inseguros

SEGURIDAD Y PROTECCIÓN EN SISTEMAS OPERATIVOS DE PROPÓSITO GENERAL

Dichos mecanismos permiten controlar el acceso a los objetos del sistema permi tiéndolo o denegándolo sobre la base de información tal como la identificación del usuario, el tipo de recurso, la pertenencia del usuario a un cierto grupo de personas, las operaciones que puede hacer el usuario o el grupo con cada recurso, etc.

AUTENTICACION DE USUARIOS

El paso previo a la aplicación de cualquier esquema de protección o confidencialidad de datos es conocer la identidad del usuario que está accediendo a dichos datos. El objetivo de la identificación del usuario, también denominada autenticación, es determinar si un usuario (persona, servicio o computadora) es quien dice ser. Para ello, la mayoría de los sistemas solicitan del usuario que, previamente al acceso a los recursos del sistema, proporcione algún tipo de información que se supone que únicamente es conocida por él y que debe ser suficiente para su identificación.

EL PROCESO DE AUTENTICACION:

Habitualmente, cuando un usuario quiere acceder al sistema, aparece una pantalla o mensaje de entrada. En el caso de Windows NT, la pantalla pide tres valores:

  • • Identificación del usuario: nombre del usuario en el sistema.
  • • Palabra clave o contraseña: espacio para teclear la clave.
  • • Dominio de protección al que pertenece el usuario.

LONGITUD Y FORMATO DE LAS CLAVE

La longitud y el formato de las claves han ido cambiando a través del tiempo, principalmente debido a la detección de fallos asociados a las claves usadas en cada momento.

ALMACENAMIENTO DE CLAVES:

Es muy importante dónde se almacenan las claves para la seguridad del sistema. En el sistema operativo UNIX, por ejemplo, las claves se almacenaban tradicionalmente en un archivo de texto denominado / etc /passwd. En cada entrada del archivo se encontraba la identidad de un usuario y su palabra clave cifrada, entre otras cosas.

DURACION DE LAS CLAVES:

Para dificultar la detección de contraseñas válidas por parte de posibles intrusos se puede configurar el sistema operativo: los sistemas operativos permiten que las contraseñas de usuarios sean válidas únicamente durante un cierto tiempo.

DOMINIOS DE PROTECCION:

Para poder implementar mecanismos de protección sobre los objetos del sistema, que pueden ser hardware (UCP, memoria, etc.) o software (procesos, archivos, semáforos, etc.), es necesario en primer lugar disponer de identificadores únicos de usuarios y de objetos.

MATRICES DE PROTECCION:

La relación entre dominios y objetos se puede definir de forma completa mediante una matriz de protección, también denominada de acceso. Los dominios de protección son las filas de la matriz y los objetos son las columnas de la misma. El elemento (i, i) expresa las operaciones que el dominio ± puede ejecutar sobre el objeto j. Si la matriz de protección está completamente definida, los mecanismos de protección pueden saber siempre qué hacer cuando un proceso de un dominio solicita determinada operación sobre un objeto.

LISTAS DE CONTROL DE ACCESO EN UNIX

En UNIX, la implementación de las listas de control de acceso es sencilla por la simplificación de dominios de protección llevada a cabo en este sistema operativo. Como se vio en la sección anterior, en UNIX, sólo existen tres dominios de protección: dueño, grupo, otros. Para cada dominio se permiten tres tipos de operaciones sobre un objeto: leer (r), escribir (w) y ejecutar (x). De esta forma se pueden implementar las ACL usando sólo 9 bits por objeto, información que cabe en el nodo-i del mismo. Esta solución es menos general que un sistema que use ACL de forma completa, pero es suficiente y su implementación es mucho más sencilla.

LISTAS DE CONTROL DE ACCESO EN WINDOWS NT

Windows NT proporciona un sistema de seguridad algo más sofisticado que el de UNIX. Todos los objetos de Windows NT tienen asignados descriptores de seguridad como parte de sus fichas de acceso. La parte más significativa de los descriptores de seguridad es la lista de control de accesos. Cada entrada de la ACL contiene los descriptores de seguridad de los distintos dominios del sistema y los derechos de uso del objeto. Normalmente, sólo el dueño del objeto puede modificar los derechos de la ACL para permitir o denegar el acceso al objeto.

SERVICIOS DE PROTECCIÓN Y SEGURIDAD

Los servicios de protección y seguridad de un sistema varían dependiendo de la complejidad del sistema implementado. En esta sección se muestran algunos servicios de protección genéricos en sistemas operativos clásicos, sin entrar en mecanismos de protección de sistemas distribuidos o en los problemas de distribución de claves por redes.

SERVICIOS POSIX:

El estándar POSIX define servicios que, en general, se ajustan a los servicios genéricos descritos en la sección anterior. Sin embargo, no existen servicios específicos para crear, destruir o abrir descriptores de protección.

SERVICIOS DE WIn32

Windows NT tiene un nivel de seguridad C2 según la clasificación de seguridad del Orange Book del DoD, lo que significa la existencia de control de acceso discrecional, con la posibilidad de permitir o denegar derechos de acceso para cualquier objeto partiendo de la identidad del usuario que intenta acceder al objeto. Para implementar el modelo de seguridad, Windows NT usa un descriptor de seguridad y listas de control de acceso (ACL), que a su vez incluyen dos tipos de entradas de control de acceso (ACE): las de permisos y las de negaciones de accesos.



No hay comentarios:

Publicar un comentario