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