viernes, 28 de diciembre de 2012

Sistemas Operativos Unidad 6



Seguridad y mecanismos de protección

Todo Sistema Operativo debe tener implementado un módulo dedicado a la protección. Se implementa mediante el uso de funciones especialmente diseñadas para eso

FUNCIONES DE UN SISTEMA DE PROTECCIÓN. 

Dado que los sistemas de cómputo se han venido haciendo cada vez más sofisticados en sus aplicaciones, la necesidad de proteger su integridad, también ha crecido. Los aspectos principales de protección en un Sistema Operativo son: 

1. Protección de los procesos del sistema contra los procesos de usuario. 

2. Protección de los procesos de usuario contra los de otros procesos de usuario. 

3. Protección de Memoria. 

4. Protección de los dispositivos. 

MECANISMOS Y POLÍTICAS. (LIMITACIONES) 

La función de la protección en un sistema computacional es la de proveer un mecanismo para la aplicación de políticas que gobiernen el uso de los recursos. Estas políticas pueden ser establecidas de varias maneras. Algunas son fijadas durante el diseño del sistema, mientras que otras son formuladas como parte de la administración en la ejecución del sistema. Algunas otras son definidas por usuarios individuales para proteger sus archivos y programas. Un sistema de protección debe tener la flexibilidad para aplicar las políticas que sean declaradas para ello. 

Las políticas para el uso de recursos puede variar, dependiendo de la aplicación y pueden estar sujetas a cambios. Por estas razones, la protección no puede ser considerada como un problema que solamente concierne al diseñador de un Sistema Operativo, sino que debe considerarse, como una herramienta para los programadores de aplicaciones, de manera que los recursos creados y soportados por un subsistema de aplicación, puedan ser protegidos contra el mal uso. 

Un principio importante es la separación entre política y mecanismo. Los mecanismos determinan como será realizado algo. En contraste, las políticas deciden que es lo que se realizará. Es posible que las políticas cambien de lugar en lugar o de tiempo en tiempo. En el peor de los casos, cada cambio en la política requerirá un cambio en el subyacente mecanismo.

DOMINIO DE PROTECCIÓN. 

Un sistema computacional es una colección de procesos y objetos. Los objetos involucran tanto objetos hardware (como CPU, segmentos de memoria, impresoras, etc.) y objetos software (como archivos, programas, semáforos, etc.). Cada objeto tiene un nombre único que lo diferencia de los demás objetos del sistema y cada una puede ser accesado solamente mediante operaciones bien definidas. Los objetos son esencialmente tipos de datos abstractos. Las posibles operaciones que realice un objeto, dependen de él mismo y sus características. 

Por ejemplo, un CPU se utiliza solo para ejecución; en los segmentos de memoria se puede leer o escribir; los archivos de datos pueden ser creados, abiertos, escritos, leídos, cerrados y borrados; un archivo de programa puede ser leído, escrito, ejecutado y borrado. 

Obviamente, un proceso tendrá permitido accesar solamente a aquellos recursos que está autorizado a accesar solamente a aquellos recursos que está autorizado a accesar. Además, en un momento dado podrá accesar a aquellos recursos que requiera para realizar su tarea. Este requerimiento comúnmente llamado el principio "Need_To_Know" es útil en la limitación de la cantidad de daño que un proceso defectuoso pueda causar al sistema. 
Por ejemplo, cuando un proceso "P" invoque al procedimiento "A", al procedimiento le será permitido accesar solamente sus propias variables y los parámetros actuales pasados a él; no podrá accesar todas las variables del proceso "P". Similarmente considérese el caso de que el proceso "P" invoque algún compilador para compilar algún archivo. El compilador no podrá accesar cualquier archivo arbitrariamente, sino a un subconjunto bien definido de archivos (tales como: archivos fuente, archivos de listado, etc.) relacionados al archivo que será compilado. De manera inversa, el compilador no puede tener archivos privados que utilice para propósitos de conteo y optimización, los cuales no podrán ser accesados por el proceso "P". 

Para facilitar este esquema se introduce el concepto de dominio de protección. Un proceso opera dentro de un dominio de protección, el cual especifica los recursos que el proceso puede accesar. Cada dominio define un conjunto de objetos y los tipos de operaciones que pueden ser realizadas sobre cada objeto. 

La capacidad de ejecutar una operación sobre un objeto es un derecho de acceso. Un dominio es una colección de derechos de acceso, cada uno de los cuales es un par ordenado <Nombre_Objeto, Conjunto_de_Operaciones>.


Distinción entre seguridad y protección

Protección: Mecanismos que articula el S.O. para proteger la información, los usuarios, los procesos, . . .
Seguridad: concepto más amplio, que incluye seguridad física (p.ej. ¿quién tiene acceso a los edi[1]cios?), etc.
Amenazas a la seguridad (requisitos de un sistema de seguridad)
Confidencialidad: Acceso sólo a usuarios autorizados. (Este tipo de acceso incluye la impresión, visualización y otras formas de revelación, incluyendo el simple revelado de la existencia de un objeto)
Integridad: Modificación sólo por los usuarios autorizados. (La modificación incluye escritura, cambio, cambio de estado, borrado y creación)
Disponibilidad: Los recursos deben estar disponibles para los usuarios autorizados (Si no, se produce la «denegación de servicio»)



Tipos de amenazas a la seguridad.

·         Interrupción (afecta a la disponibilidad)
Se corta el flujo desde emisor al receptor. Se destruye el elemento del sistema o se hace inaccesible o inútil. (Ej.: destrucción de un disco duro, corte de la línea de comunicación, inutilización del SF)
·         Intercepción (afecta a la confidencialidad)
Una tercera entidad se entera de la comunicación. Una parte no autorizada, que puede ser una persona, programa o computador, consigue acceder a un elemento. (Ej.: copia ilícita de programas (piratería) o ficheros)
·         Modificación (amenaza la integridad)
Una tercera entidad cambia los datos. Una parte no autorizada no sólo consigue acceder, sino que falsifica un elemento. (Ej.: cambio de valores de un fichero)
·         Invención (también amenaza la integridad)
Una tercera entidad inventa datos no emitidos. Una parte no autorizada inserta objetos falsos en el sistema. (Ej.: inserción de mensajes falsos en la red o la adición de registros a un fichero).



Tipos de amenazas a la seguridad



Autenticación de usuarios por contraseña

·         La seguridad depende de quién puede acceder al sistema
·         Es muy importante la autenticación del usuario
·         Lo más normal es utilizar ID + contraseña
·         El ID determina si se tiene acceso y a qué nivel (p.ej. súper usuario)
·         En UNIX: Se utiliza el algoritmo DES 25 veces utilizando una base aleatoria de 12 bits. Se generan 11 caracteres + 2 de base. La base:
o   Impide ver las contraseñas iguales.
o   Incrementa el número de datos en la clave.
o   Impide el uso de DES hardware.

Estrategias de elección de contraseñas

·         Las contraseñas son difíciles de romper (distributed.net)
·         Aunque el problema: los usuarios (longitud, palabras sencillas, etc.)
·         Técnicas para evitarlas:
§  Contraseñas largas, que no sean palabras de diccionario, introducir dígitos, letras en mayúsculas y minúsculas y caracteres especiales
§  Instrucción del usuario
§  Inspección proactiva de contraseñas
-       El administrador puede comprobar la robustez de las contraseñas de los usuarios ejecutando él mismo programas de «averiguación de contraseñas» (crack).

Ataques a la seguridad

Ataques genéricos a la seguridad

·         Se contrata a un equipo especializado
·         Solicitar páginas de memoria (o disco) y leerlas
·         Llamadas al sistema inválidas
·         Detención de la conexión al sistema
·         Modificar las estructuras de la parte de usuario
·         Engañe al usuario, escribiendo un programa «login»
·         Busque fallos en manuales («no use X»)
·         Convenza al administrador para que deje un sistema «menos seguro»
·         Engañar o sobornar al personal.

Amenazas a la seguridad con ataques específicos

·         Caballos de Troya: Sustituyen un comando interno por otro que realiza labores ilegales (por ejemplo, devolver información del sistema hacia afuera)
·         Falsificación del inicio de sesión: Engañan al usuario, que escribe su login/password
·         Bombas lógicas: «Estallan» al cierto tiempo (ej. viernes 13)
·         Trampas o «backdoors»: Programas con puertas traseras
·         Desbordamiento de buffers: Sobrescriben partes del programa con código malicioso (p. ej. Aprovechando fallos de seguridad para convertirse en «root»)
·         Virus y gusanos.


Mecanismos de protección

Protección: Mecanismos que articula el S.O. y el hardware para conseguir la seguridad en el ámbito del S.O.
Mecanismos de protección de bajo nivel
·         Hardware de direccionamiento de memoria
·         Cronómetro
·         Modo dual, etc.
Mecanismos de más alto nivel
·         Definición de usuarios y objetos a proteger
·         Delimitar la información a la que puede acceder cada usuario.

Objetivos de la protección

La protección controla el acceso a los recursos
Política vs. Mecanismo
Las políticas establecen qué se va a proteger, qué usuarios van a poder acceder a qué datos, etc. (p. ej. Los contables no pueden acceder a la base de datos de márqueting, etc.)
Existen entonces una serie de mecanismos que ofrece el S.O. para poder implementar las políticas (Permisos, ficheros, usuarios, etc.)
Las políticas pueden cambiar y además dependen de cada organización. Los S.O. deben ofrecer mecanismos generales y flexibles que permitan implementar las políticas


Dominios de protección

De cara a la seguridad y la protección, un sistema se ve como un conjunto de objetos que necesitan protección: CPU, memoria, terminales, procesos, [1]cheros, bases de datos
Cada objeto tiene un nombre único, y un conjunto de operaciones
¿Cómo especificamos qué le está permitido a cada usuario con cada objeto? -> DOMINIO
Un dominio representa un conjunto de permisos sobre un conjunto de objetos: Cjto. de parejas objeto, derechos -> Derecho es el permiso para realizar cierta tarea



Matriz de acceso o de protección

Podemos imaginar una matriz:

filas = dominios
columnas = objetos

En cada casilla -> permisos

Las filas representan los dominios: asocian objetos con sus permisos
Las columnas representan los permisos de cada objeto

Si los procesos pueden cambiar de dominio -> Enter.



Listas de control de acceso (ACL)

Las matrices no se implementan realmente
Las ACL almacenan la matriz por columnas
Cada objeto -> Lista con los dominios que pueden tener acceso a ese objeto y la forma de dicho acceso




Listas de capacidades

Almacena filas. Para cada dominio hay un conjunto de objetos y de posibilidades asociadas
A cada proceso se asocia una lista de objetos a que puede tener acceso con una indicación de las operaciones permitidas a cada proceso se le asocia su dominio

Esta lista se llama lista de posibilidades o capacidades, y los elementos individuales posibilidades

Se permiten operaciones con posibilidades, como copiar o eliminar



Llave y cerradura

Cada usuario tiene una llave: conjunto de bits
Cada objeto una cerradura: conjunto de bits
El usuario puede acceder al objeto si el AND de llave y cerradura ǂ 0
U1 puede acceder a ambos objetos
U2 sólo a «Objeto 2»



Canales ocultos

Aunque un servidor se con[1]ne con mecanismos de protección, puede comunicar a otro proceso colaborador ) Canal oculto
La comunicación podría ser: si el servidor quiere enviar un 1 -> uso intensivo de la CPU durante unos instantes; si el servidor quiere enviar un 0 ! duerme durante unos instantes
El proceso colaborador simplemente mira la carga de CPU
Es un mecanismo con ruido, pero se pueden utilizar técnicas como Hamming.
No se puede evitar... y hay muchas más.







No hay comentarios:

Publicar un comentario