Seguridad en los Sistemas Operativos -...

38
Seguridad en los Sistemas Operativos Seguridad en los Sistemas Operativos Gracia Fernández López Seguridad en los Sistemas de Información Máster en Informática

Transcript of Seguridad en los Sistemas Operativos -...

Seguridad en los Sistemas Operativos

Seguridad en los Sistemas Operativos

Gracia Fernández LópezSeguridad en los Sistemas de Información

Máster en Informática

Seguridad en los Sistemas Operativos

Índice

• Introducción.• Protección de la memoria.• Buffer Overflow.• RAID.• Sistemas de Ficheros con journaling.• Backup.• Control de acceso.• Cifrado en sistema de ficheros.• Sistemas de Autenticación.

Seguridad en los Sistemas Operativos

Introducción

• Funciones básicas de un sistema operativo:– Gestión del Procesador y la Memoria.– Gestión de los Sistemas de Almacenamiento.– Gestión de la Entrada/Salida.– Gestión de la Red.

Seguridad en los Sistemas Operativos

Protección de Memoria

• Protección entre procesos:– Memoria Virtual: direcciones virtuales.– MMU: traduce de direcciones virtuales a direcciones físicas.– Tabla de páginas propia de cada proceso → espacio de direcciones

independiente para cada proceso.

• Protección del kernel:– Niveles de privilegio de ejecución.– Tabla de páginas propia.

Seguridad en los Sistemas Operativos

Protección de Procesos

Seguridad en los Sistemas Operativos

Protección del Kernel

Seguridad en los Sistemas Operativos

Buffer Overflow

• Vulnerabilidad Software:– El proceso permite asignar datos de un tamaño mayor al reservado

→ sobreescribe memoria adyacente.– Exploit:

datos extra = ejecución código malicioso (shellcode)

• Estructura de un proceso.• Tipos de buffer overflow.• Mecanismos para evitarlo.

Seguridad en los Sistemas Operativos

Estructura de un proceso

• Texto: instrucciones del programa.• Data: variables globales.• Heap: variables dinámicas (malloc).• Stack: variables locales, argumentos

y dirección de retorno de cada llamada a función (frame).

Stack y Heap: tamaño determinado en tiempo de ejecución →puede darse buffer overflow.

Seguridad en los Sistemas Operativos

Tipos de Buffer Overflow (I)

• Stack Overflow:– Exploit: introduce un shellcode (código

maligno) dentro del stack y cambia la dirección de retorno de la función para que pase a apuntar al shellcode.

– Técnica de hacking bien conocida →existe muchos métodos para evitarla

Seguridad en los Sistemas Operativos

Tipos de Buffer Overflow (II)

Seguridad en los Sistemas Operativos

Tipos de Buffer Overflow (III)

• Heap Overflow:– Objetivo: sobreescribir alguna variable importante

almacenada en el heap.– Problema: más complejo (depende de la

implementación concreta del sistema de asignación de memoria).

– Menos conocido y más difícil de detectar y evitar.

Seguridad en los Sistemas Operativos

Protección contra BO• Protección Stack-smashing: Marca (“canario”) en el stack

para detectar que se ha producido un desbordamiento. Solución del compilador.

• Protección del espacio ejecutable: Marcar las zonas de memoria del stack y el heap como no ejecutables. Bit hardware NX o implementación W^X.

• Address space layout randomization (ASLR): Las partes del proceso se colocan en memoria de forma aleatoria. Dificulta el cálculo de la dirección de retorno al shellcode.

• Deep packet inspection (DPI): Detecta ataques remotos usando firmas de ataques y heurísticas. Solución de los sistemas de detección de intrusos.

Seguridad en los Sistemas Operativos

RAID

• Definición: RAID (Redundant Array of Inexpensive Disks) es un sistema de almacenamiento con múltiples discos.

• Ventajas:– Mayor Integridad: redundancia de datos e información de paridad.– Tolerancia a fallos: recuperación de datos en tiempo real.– Mayor throughput (rendimiento): lecturas/escrituras en paralelo.– Alta disponibilidad: aumenta el tiempo de funcionamiento y

disponibilidad de la red.

Seguridad en los Sistemas Operativos

Niveles RAID (I)

• RAID 0 (disk striping):– Información distribuída en discos (bloques).– No tiene redundancia.– Aumenta rendimiento (lecturas/escrituras en

paralelo)

Seguridad en los Sistemas Operativos

Niveles RAID (II)

• RAID 1 (mirroring):– Información duplicada (discos espejo).– Tolerancia a fallos (si el disco primario falla, el

disco espejo sigue funcionando).– Aumenta rendimiento en lecturas, disminuye en

escrituras.– Solución muy cara.

Seguridad en los Sistemas Operativos

Niveles RAID (III)

• RAID 2:

– Información dividida a nivel de bit (no a nivel de bloque).– Código de Hamming para la correción de errores.– Discos sincronizados.– Modelo teórico, no es viable en la práctica.

Seguridad en los Sistemas Operativos

Niveles RAID (IV)

• RAID 3 (parallel data access):– División a nivel de byte.– Disco de paridad dedicado.– Sólo se puede hacer una operación de lectura/escritura a la vez (acceso a todos los discos simultáneo).

Seguridad en los Sistemas Operativos

Niveles RAID (V)

• RAID 4:– División a nivel de bloque.– Disco de paridad dedicado.– Permite lecturas simultáneas. – No permite escrituras

simultáneas: cuello de botella en el disco de paridad.

Seguridad en los Sistemas Operativos

Niveles RAID (VI)

• RAID 5 (independentdata access):– Similar a RAID 4.– Información de paridad

almacenada en los discos de manera rotatoria.

– Lecturas y escrituras en paralelo.

Seguridad en los Sistemas Operativos

Niveles RAID (VII)

• RAID 6:– Similar a RAID 5.– 2 Niveles de redundancia: 2

esquemas de paridad distribuídos.

– Alta tolerancia a fallos.– Alto coste (controladoras muy

específicas y complejas).

Seguridad en los Sistemas Operativos

Niveles RAID (VIII)

• Otros niveles RAID:– RAID 5E y 6E: RAID 5 y 6 con discos de reserva.

– RAID 7: sistema operativo en el controlador.– RAID-Z (en ZFS de Solaris): RAID-5 que soluciona el

problema de “write hole” (datos e información de paridad inconsistentes ante una caída del sistema durante una escritura). Tamaño de bloques variable (1 escritura ⇒ 1 escritura de un bloque completo).

– Niveles RAID anidados: RAID 0+1, RAID 10, RAID 30, RAID 100.

Seguridad en los Sistemas Operativos

Implementaciones de RAID

• Hardware:– Controladora RAID específica.– Mejor rendimiento y mayor coste.– Transparente al sistema operativo (ve una única unidad lógica).

• Software:– El sistema operativo gestiona los discos del RAID.– Menor coste y menor rendimiento (acapara tiempo del procesador).– Ejemplos:

• Windows: discos dinámicos (RAID 0, 1 y 5).• Linux: device driver md (multiple device) (RAID 0, 1, 4, 5, 6 y 10).

Seguridad en los Sistemas Operativos

Sist. de Ficheros con journaling

• Problema: Page-cache/buffer-cache + caída → inconsistencias en FS.

• Solución: Sistemas de Ficheros con journaling.• Idea básica: transiciones.• Registro cronológico: log o journal de la

metainformación de los ficheros.• Implementaciones:

- Linux: Ext3, ReiserFS, XFS y JFS.- Windows: NTFS- SUN Solaris: UFS Logging- Mac OS X: HFS+.

Seguridad en los Sistemas Operativos

Backup

• Copias de seguridad del sistema o backup de datos.

• Ejemplos de mecanismos de backup:– Instantáneas (snapshots) de sistemas de

ficheros.– Windows: herramienta Ntbackup.– Unix: comandos dd, dump, restore.

Seguridad en los Sistemas Operativos

Control de acceso

• Define a qué objetos tiene acceso cada sujeto.– Sujeto: usuarios, procesos, ...– Objeto: entidad que contiene información.

• Matriz de control de acceso: modelo teórico.

Seguridad en los Sistemas Operativos

Políticas de control de acceso

• Control de Acceso Discrecional (Discretionary Access Control DAC):– Propietario determina acceso al objeto.

• Control de Acceso Obligatorio (Mandatory Access Control MAC): – Sistema decide el acceso a los objetos.

• Control de Acceso Basado en Roles (Role-Based Access Control RBAC): – Permisos asignados a roles, roles asignados a sujetos.

Seguridad en los Sistemas Operativos

Control de acceso discrecional (DAC)

• Conceptos fundamentales:– Propietario: todo objeto tiene un propietario (normalmente

creador).– Permisos: el propietario asigna permisos sobre el objeto a otros

sujetos.

• Implementación:– Bits de permisos (lectura, escritura, ejucución, ...).– Sistemas de contraseñas (contraseña de acceso a un objeto).– Listas de capacidades: cada usuario tiene una lista con los objetos a

los que tiene acceso y sus permisos correspondientes.– Listas de control de acceso (ACLs): conjunto de entradas de

usuario, grupo y modo asociado a un archivo que especifica sus permisos de acceso.

Seguridad en los Sistemas Operativos

Control de acceso obligatorio (MAC)

• Conceptos fundamentales:– Etiquetas: cada objeto tiene asociada una etiqueta

dependiendo de su nivel de “sensibilidad”.– Asignación de etiquetas: sistema (a partir de la política

de seguridad definida por el administrador).

• Implementaciones: SELinux, AppArmor (SUSE), TrustedBSD, Trusted Solaris, Mandatory IntregrityControl (Vista).

Seguridad en los Sistemas Operativos

Control de acceso basado en roles (RBAC)

• Permisos asignados a operaciones con significado en la organización (no a ficheros).

• Roles reciben los permisos para realizar esas operaciones.

• Usuarios asignados a roles particulares.

Seguridad en los Sistemas Operativos

Cifrado

• Sistemas de Ficheros de propósito general con encriptación:– Cifrado de ficheros del sistema de ficheros.– Problema: no cifran los metadatos.– Ejemplo: EFS (Encrypting File System), extensión de NTFS.

• Sistema de Ficheros criptográficos:– SF especialmente diseñados para cifrado y seguridad.– Cifran todos los datos (incluyendo metadatos).– Ejemplos: CryptoFS (Linux), GEOM (FreeBSD), BitLocker Drive

Encryption (Vista).

Seguridad en los Sistemas Operativos

Sistemas de Autenticación• Cuenta de Usuario:

– login o nombre de usuario– identificador de usuario (UID)– identificadores de grupo (GID)– ...

• PAM (Pluggable Authentication Modules): API de Unix que hace independientes los programas del sist. de autenticación utilizado.

• LSA (Local Security Authority): Subsistema de autenticación en Windows.

• User Account Control (UAC): “Mejora” de Vista en la que el administrador sólo realiza como tal las tareas administrativas, en las demás actúa como un usuario normal.

Seguridad en los Sistemas Operativos

Sistemas de Autenticación: Tipos

• Autenticación local: – El sistema operativo realiza la autenticación en la

máquina local.

• Autenticación centralizada: – El sistema operativo delega en un sistema de directorio,

que se encarga de las autenticaciones del dominio. – Protocolos:

• Kerberos.• LDAP.

Seguridad en los Sistemas Operativos

Kerberos (I)

• Autenticación mutua:– Identidad del solicitante.– Id. del servicio solicitado.

• Basado en la emisión de tickets.• Elemento principal: KDC (Key Distribution

Center), que está compuesto por:– AS (Authentication Server): servidor de autenticación.– TGS (Ticket Granting Server): servidor de concesión de tickets.

Seguridad en los Sistemas Operativos

Kerberos (II)1. Cliente se autentica en el AS (AS_REQ).

2. KDC emite al cliente un ticket especial que emite tickets (AS_REP). Cliente accede con él al TGS (TGS_REQ).

3. El TGS emite un ticket de servicio al cliente (TGS_REP).

4. El cliente presenta el ticket al servicio, se realiza la autenticación mutua (AP_REQ y AP_REP).

Seguridad en los Sistemas Operativos

LDAP

• Lightweight Directory Access Protocol.• Protocolo a nivel de aplicación para consultar y

modificar servicios de directorio.• Proporciona mensajes para acceder y modificar un

directorio LDAP.– Directorio: árbol de entradas de directorio – Entrada:

• Conjunto de atributos (nombre=valor).• Nombre distinguido (DN): identificador.

Seguridad en los Sistemas Operativos

Servicios de directorio (DS)

• Definición:– Aplicación software que almacena y organiza

información acerca de los usuarios y recursos de una red, controlando el acceso de los usuarios a dichos recursos.

• Implementaciones: Las más conocidas son:

– OpenLDAP.– Active Directory.

Seguridad en los Sistemas Operativos

Active Directory• Servicio de directorio de

Microsoft.• Implementa múltiples

protocolos (LDAP, DNS, DHCP, Kerberos, ...).

• Servicio de autenticación y autorización centralizado para redes con Windows.

Seguridad en los Sistemas Operativos

Conclusiones

• Seguridad fundamental en sistemas operativos.

• Todos los sistemas operativos ponen grandes esfuerzos en la seguridad.