Tema 7 Seguridad y Protección

Anuncio
Tema 7
Seguridad y Protección
Sistemas Operativos
Tema 7 Seguridad y Protección – p. 1
Índice
1. Seguridad (Tanenbaum, 9.1–9.5), (Stallings, 15.1–15.4)
2. Mecanismos de protección (Tanenbaum, 9.6), (Stallings, 15.2)
3. Seguridad en Linux (Tanenbaum, 10.7)
4. Seguridad en Windows 2000 (Stallings, 15.6)
Tema 7 Seguridad y Protección – p. 2
Índice
1. Seguridad (Tanenbaum, 9.1–9.5), (Stallings, 15.1–15.4)
1.1. Tipos de amenazas a la seguridad
1.2. Autenticación de usuarios por contraseña
1.3. Ataques a la seguridad
1.4. Principios de diseño para la seguridad
Tema 7 Seguridad y Protección – p. 3
Seguridad
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 ámplio, que incluye seguridad física (p.
ej. ¿quién tiene acceso a los edificios?), 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»)
Tema 7 Seguridad y Protección – p. 4
1.1 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)
Tema 7 Seguridad y Protección – p. 5
1.1 Tipos de amenazas a la seguridad (ii)
Origen
Destino
(a) flujo normal
Origen
Destino
(b) interrupcion
Origen
(d) modificacion
Origen
Destino
(c) intercepcion
Destino
Destino
(e) invencion
Tema 7 Seguridad y Protección – p. 6
1.1 Tipos de amenazas a la seguridad (iii)
Tema 7 Seguridad y Protección – p. 7
1.2 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.
superusuario)
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:
Impide ver las contraseñas iguales
Incrementa el número de datos en la clave
Impide el uso de DES hardware
Función crypt(clave, salt);
crypt("hola, caracola","aq") ->aqFp.evU2e7T2
crypt("hola, caracola","as") ->ascKZQc0MMnkM
Tema 7 Seguridad y Protección – p. 8
1.2 Autenticación de usuarios por contraseña (ii)
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 )
Tema 7 Seguridad y Protección – p. 9
1.3 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 :-)
Tema 7 Seguridad y Protección – p. 10
1.3 Ataques a la seguridad (ii)
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
Tema 7 Seguridad y Protección – p. 11
1.4 Principios de diseño para la seguridad
(Saltzer y Schröder)
El diseño debe ser público
El estado por defecto debe ser el de «no acceso»
La verificación debe ser activa y continua
Dar a las entidades el mı́nimo privilegio posible
El mecanismo de protección debe ser simple, uniforme
e integrado (no es un valor añadido, sino una
característica a todos los niveles)
Debe ser psicológicamente aceptable por los usuarios
Tema 7 Seguridad y Protección – p. 12
Índice
2. Mecanismos de protección (Tanenbaum, 9.6), (Stallings, 15.2)
2.1. Objetivos de la protección
2.2. Dominios de protección
2.3. Matriz de protección
2.4. Listas de control de acceso
2.5. Capacidades
2.6. Mecanismos de llave y cerradura
2.7. Comparación
2.8. Canales ocultos
Tema 7 Seguridad y Protección – p. 13
2. 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 (ya vimos algunos, 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
Tema 7 Seguridad y Protección – p. 14
2.1 Objetivos de la protección
La protección controla el acceso a los recursos
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
Polı́tica
Tema 7 Seguridad y Protección – p. 15
2.2 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, ficheros, 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 hobjeto, derechosi ⇒ Derecho es el permiso
para realizar cierta tarea
Domain 1
File1[ R]
File2 [ RW ]
Domain 2
File3 [ R]
File4 [ RW X ]
File5 [ RW ]
Domain 3
Printer1 [ W ]
File6 [ RW X]
Plotter2 [ W ]
Tema 7 Seguridad y Protección – p. 16
2.3 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
Object
Domain
1
2
3
File1
File2
Read
Read
Write
File3
File4
File5
File6
Printer1 Plotter2 Domain1 Domain2 Domain3
Enter
Read
Read
Write
Execute
Read
Write
Write
Read
Write
Execute
Write
Write
Tema 7 Seguridad y Protección – p. 17
2.4 Listas de control de acceso (ACLs)
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
Tema 7 Seguridad y Protección – p. 18
2.5 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, e.d., 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
Tema 7 Seguridad y Protección – p. 19
2.6 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 6= 0
U1 puede acceder a ambos objetos
U2 sólo a «Objeto 2»
U1
Objeto 1
U2
Objeto 2
Tema 7 Seguridad y Protección – p. 20
2.7 Comparación
Las ACL son más sencillas para el usuario
Sin embargo, es difícil saber los derechos de un
usuario
Suelen ser costosas ya que hay que buscar en cada
acceso
Las listas de posibilidades son más complejas para el
usuario
Es difícil recuperar todos los permisos de un objeto
particular
¿Qué pasa con la revocación de permisos?
Tema 7 Seguridad y Protección – p. 21
2.8 Canales ocultos
Aunque un servidor se confine 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.
Client
Server
Collaborator
Encapsulated server
Kernel
Kernel
(a)
(b)
Covert
channel
Tema 7 Seguridad y Protección – p. 22
3. Seguridad en Linux
(Tanenbaum 10.7)
Cada usuario tiene asignado un Identificador de Usuario
(UID)
El «login» de un usuario lo asocia con su UID
Además, el sistema se administra como un conjunto de
Grupos de usuarios, cada uno con su GID
Así, un par hUID,GIDi forma un dominio en Linux
Esto es, define qué archivos o dispositivos puede usar ese
usuario y con qué permisos
Un usuario puede pertenecer a varios grupos, por lo
tanto un usuario puede pertenecer a varios dominios
Existe un usuario especial llamado «root» (con UID=0)
que tiene todos los privilegios
Esto puede llevar a problemas de seguridad ⇒ Con la clave de
root ¡¡se tiene acceso a todo el sistema!!
Tema 7 Seguridad y Protección – p. 23
3. Seguridad en Linux (ii)
En Linux, cada fichero y dispositivo (a través de las
entradas en /dev) pertenece a un usuario y a un grupo
Se implementan ACLs restringidas, ya que se
especifica en cada fichero qué permisos tiene cada
usuario sobre ese fichero
Las ACLs están restringidas a tres «grupos de
usuarios»:
propietario: Permisos para el usuario propietario del fichero
grupo: Permisos para los usuarios que pertenezcan al grupo al
que pertenece el fichero
«otros»: Resto de usuarios
Para cada uno de los grupos: permisos (lectura,
escritura, ejecución)
Extensiones para ext2/ext3 que implementan atributos
extendidos para los ficheros: p.ej. ACLs completas
Tema 7 Seguridad y Protección – p. 24
Binary
111000000
111111000
110100000
110100100
111101101
000000000
000000111
Symbolic
rwx– – – – – –
rwxrwx– – –
rw–r– – – – –
rw–r– –r– –
rwxr–xr–x
–––––––––
– – – – – –rwx
Allowed file accesses
Owner can read, write, and execute
Owner and group can read, write, and execute
Owner can read and write; group can read
Owner can read and write; all others can read
Owner can do everything, rest can read and execute
Nobody has any access
Only outsiders have access (strange, but legal)
3. Seguridad en Linux (iii)
La función chmod permite modificar los permisos de los
ficheros
Es la función que ofrece Linux para modificar la matriz de acceso
Tema 7 Seguridad y Protección – p. 25
3. Seguridad en Linux (iv)
Cada proceso se ejecuta con los privilegios del usuario
que lo crea
Excepcionalmente, los ejecutables pueden poseer en
sus atributos los bits SETUID y SETGID:
SETUID: Al ejecutarse toma el UID del usuario propietario del
ejecutable
SETGID: Al ejecutarse toma el GID del grupo propietario del
ejecutable
Así, un proceso tiene dos parejas de identificadores: el
usuario/grupo real hUID,GIDi y el usuario/grupo efectivo
hEUID,EGIDi:
getuid()/geteuid()
getgid()/getegid()
Normalmente, ambos son iguales, salvo cuando están los bits
SETXXX
Tema 7 Seguridad y Protección – p. 26
3. Seguridad en Linux (v)
SETUID/SETGID (cont.)
Por ejemplo, el usuario «pepe» del grupo «usuarios»
ejecuta el siguiente programa:
-r-sr-sr-x root lp 20 Abr 12:00 lpr
Al ejecutarlo, el proceso lpr tiene los siguientes
usuarios
UID: pepe
GID: usuarios
EUID: root
EGID: lp
Tiene los permisos efectivos de «root»
Tema 7 Seguridad y Protección – p. 27
3. Seguridad en Linux (vi)
Linux implementa un sistema híbrido entre ACLs y
listas de posibilidades:
Los archivos contienen una ACL como se ha visto
Cuando un proceso quiere abrir un archivo, se
comprueba la ACL para ver si tiene acceso
Si tiene acceso, se crea una entrada en la lista de
ficheros abiertos para ese proceso
Esa entrada contiene las posibilidades para ese
proceso sobre ese fichero (leer, escribir, etc.)
Así, la información de permisos de la lista de
ficheros abiertos es de hecho una lista de
posibilidades del proceso
Tema 7 Seguridad y Protección – p. 28
4. Seguridad en Windows 2000
(Stallings, 15.6)
También basado en autenticación de usuario con login
y clave
Al iniciar la sesión, el sistema asigna al usuario un SID
(Security IDentifier) único
También existen grupos de usuarios. Cada grupo
también tiene un SID
Al proceso inicial del usuario se le asigna un «Token de
seguridad» (Access Token), que heredan todos los
subsiguientes procesos del usuario y que contiene el
contexto de seguridad:
Tiempo de expiración
SID del usuario y del grupo primario del usuario
SID de los grupos a los que pertenece el usuario
Un conjunto de privilegios (por ejemplo, puede realizar copias de
seguridad, depurar un proceso, hacer un «shutdown», etc.)
Tema 7 Seguridad y Protección – p. 29
4. Seguridad en Windows 2000 (ii)
Además, cada objeto (incluyendo procesos, ficheros,
etc.) tiene un propietario y pertenece a un grupo, y
tiene asociada una información de seguridad: describe
qué usuarios y grupos pueden accederlo, y con qué
privilegios
Esa información de seguridad se llama descriptor de
seguridad (security descriptor ). Contiene:
El SID del propietario
El SID del grupo
DACL: Lista de control de acceso que describe qué usuarios y
grupos pueden usar el objeto y cómo (con qué permisos)
SACL: Lista de acceso que especifica qué accesos al objeto
causarán una entrada en el «log» (auditoría) del sistema
Tema 7 Seguridad y Protección – p. 30
4. Seguridad en Windows 2000 (iii)
Las ACLs (DACL, SACL) están compuestas de varias
entradas (ACE, Access Control Entry), y se
comprueban en orden:
Se pueden poner las restricciones explícitas al
principio
Y luego dar acceso al resto de usuarios
(véase figura página siguiente)
Andrew no puede acceder porque tiene una entrada
de denegación explícita al principio
Tema 7 Seguridad y Protección – p. 31
4. Seguridad en Windows 2000 (iv)
Tema 7 Seguridad y Protección – p. 32
4. Seguridad en Windows 2000 (v)
La ACL de un fichero puede contener los siguientes permisos:
Leer: el usuario puede leer el fichero, ver sus atributos, permisos
y propietario
Escribir: el usuario puede realizar cualquier función de lectura,
pero también puede modificar el fichero y cambiar sus atributos
Lectura y ejecución: además de los permisos de Leer, el usuario
puede ejecutarlo
Modificar: que permite leer y escribir en el fichero, permite
eliminar el fichero
Control total: que permite leer, escribir, modificar y eliminar el
fichero
Cambiar permisos
etc.
Tema 7 Seguridad y Protección – p. 33
4. Seguridad en Windows 2000 (vi)
La ACL de un directorio puede contener los siguientes
permisos:
Leer: el usuario puede ver los ficheros y subdirectorios dentro del mismo, y ver el
propietario, atributos y permisos del directorio
Escribir: el usuario puede crear nuevos ficheros y subdirectorios dentro del
directorio y cambiar sus atributos. Tb puede ver su propietario y sus permisos
Listar el contenido de la carpeta: el usuario puede ver los nombres de sus
ficheros y subcarpetas
Lectura y Ejecución: puede realizar todas las acciones de los permiross Leer y
Listar el contenido de la carpeta, y además desplazarse a través de las carpetas
hasta otros ficheros y carpetas sin un permiso específico para cada carpeta
Modificar: el usuario puede realizar todas las acciones de los permisos Escribir y
Lectura y Ejecución, y tb puede eliminar la carpeta
Control total: todas las acciones permitidas de los demás permisos, y además
cambiar los permisos de la carpeta, tomar posesión y eliminar cualquier
subcarpeta y fichero
Cambiar permisos
etc.
Tema 7 Seguridad y Protección – p. 34
Descargar