domingo, 20 de junio de 2010

Seguridad Sistemas Operativos

Como primer post vamos atener una introduccion a la seguridad de los sistemas operativos ,
conforme la informatica y las comunicaciones han ido evolucionando se han hecho más accesibles a los sistemas informáticos y se han incrementado los riesgos vinculados a la seguridad.

El sistema operativo, como administrador de los recursos del sistema:
  • Cumple una función muy importante en la instrumentación de la seguridad.
  • No engloba a todos los aspectos de la seguridad.
  • Debe ser complementado con medidas externas al S. O.
La simple seguridad física resulta insuficiente ante la posibilidad de acceso mediante equipos remotos ya que la tendencia es que los sistemas sean más accesibles y fáciles de usar, pero la facilidad dada ha el usuario puede implicar un aumento de la vulnerabilidad por lo que se deben identificar las amenazas potenciales, que pueden proceder de fuentes maliciosas o no, entonces el nivel de seguridad a proporcionar depende del valor de los recursos que hay que asegurar.

Lo mas importantes dentro de la seguridad de los sistemas de archivos es probablemente los requisitos de seguridad ya que sirven de base para determinar si el sistema implementado es seguro por eso sin una serie de requisitos precisos tiene poco sentido cuestionar la seguridad de un sistema y si los requisitos no están bien establecidos no dicen mucho sobre la verdadera seguridad del sistema.

Algunos ejemplos de formulación de los requisitos de seguridad son los siguientes:
  • Directiva DOD 5200.28 (EE. UU.):
    • Especifica cómo debe manipularse la información clasificada en sistemas de procesamiento de datos.
  • Manual de Referencia de Tecnología de Seguridad de la Computadora (EE. UU.):
    • Especifica cómo evaluar la seguridad de los sistemas de computación de la Fuerza Aérea.
  • Ley de Intimidad de 1974 (EE. UU.):
    • Requiere que las Agencias Federales aseguren la integridad y seguridad de la información acerca de los individuos, especialmente en el contexto del amplio uso de las computadora.

Un tratamiento de seguridad total incluye aspectos de la seguridad del computador distintos a los de la seguridad de los S. O.:

La seguridad externa: debe asegurar la instalación computacional contra intrusos y desastres como incendios e inundaciones:

  • Concediendo el acceso físico el S. O. debe identificar al usuario antes de permitirle el acceso a los recursos: seguridad de la interfaz del usuario.
La seguridad interna: trata de los controles incorporados al hardware y al S. O. para asegurar la confiabilidad, operabilidad y la integridad de los programas y datos.


Seguridad Externa

La seguridad externa consiste en

  • Seguridad física.
  • Seguridad operacional.
La seguridad física incluye:
  • Protección contra desastres.
  • Protección contra intrusos.
En la seguridad física son importantes los mecanismos de detección, algunos ejemplos son:
  • Detectores de humo.
  • Sensores de calor.
  • Detectores de movimiento.
La protección contra desastres puede ser costosa y frecuentemente no se analiza en detalle; depende en gran medida de las consecuencias de la pérdida.

La seguridad física trata especialmente de impedir la entrada de intrusos:

  • Se utilizan sistemas de identificación física:
    • Tarjetas de identificación.
    • Sistemas de huellas digitales.
    • Identificación por medio de la voz.

Seguridad Operacional

Consiste en las diferentes políticas y procedimientos implementados por la administración de la instalación computacional

La autorización determina qué acceso se permite y a quién.

La clasificación divide el problema en subproblemas:

  • Los datos del sistema y los usuarios se dividen en clases:
    • A las clases se conceden diferentes derechos de acceso.
Un aspecto crítico es la selección y asignación de personal:
  • La pregunta es si se puede confiar en la gente.
  • El tratamiento que generalmente se da al problema es la división de responsabilidades:
    • Se otorgan distintos conjuntos de responsabilidades.
    • No es necesario que se conozca la totalidad del sistema para cumplir con esas responsabilidades.
    • Para poder comprometer al sistema puede ser necesaria la cooperación entre muchas personas:
      • Se reduce la probabilidad de violar la seguridad.
    • Debe instrumentarse un gran número de verificaciones y balances en el sistema para ayudar a la detección de brechas en la seguridad.
    • El personal debe estar al tanto de que el sistema dispone de controles, pero:
      • Debe desconocer cuáles son esos controles:
        • Se reduce la probabilidad de poder evitarlos.
      • Debe producirse un efecto disuasivo respecto de posibles intentos de violar la seguridad.
Para diseñar medidas efectivas de seguridad se debe primero:
  • Enumerar y comprender las amenazas potenciales.
  • Definir qué grado de seguridad se desea (y cuánto se está dispuesto a gastar en seguridad).
  • Analizar las contramedidas disponibles.


Vigilancia, Verificación de Amenazas y Amplificación

Vigilancia

La vigilancia tiene que ver con

  • La verificación y la auditoría del sistema.
  • La autentificación de los usuarios.
Los sistemas sofisticados de autentificación de usuarios resultan muy difíciles de evitar por parte de los intrusos.

Un problema existentes es la posibilidad de que el sistema rechace a usuarios legítimos:

  • Un sistema de reconocimiento de voz podría rechazar a un usuario legítimo resfriado.
  • Un sistema de huellas digitales podría rechazar a un usuario legítimo que tenga una cortadura o una quemadura.

Verificación de Amenazas

Es una técnica según la cual los usuarios no pueden tener acceso directo a un recurso:

  • Solo lo tienen las rutinas del S. O. llamadas programas de vigilancia.
  • El usuario solicita el acceso al S. O.
  • El S. O. niega o permite el acceso.
  • El acceso lo hace un programa de vigilancia que luego pasa los resultados al programa del usuario.
  • Permite:
    • Detectar los intentos de penetración en el momento en que se producen.
    • Advertir en consecuencia.
Amplificación

La amplificación se produce cuando

  • Un programa de vigilancia necesita para cumplir su cometido mayores derechos de acceso de los que disponen los usuarios:
    • Ej.: se requiere calcular un promedio para lo cual es necesario leer un conjunto de registros a los que el usuario no tiene acceso individualmente.

Protección por Contraseña

Las clases de elementos de autentificación para establecer la identidad de una persona son

  • Algo sobre la persona:
    • Ej.: huellas digitales, registro de la voz, fotografía, firma, etc.
  • Algo poseído por la persona:
    • Ej.: insignias especiales, tarjetas de identificación, llaves, etc.
  • Algo conocido por la persona:
    • Ej.: contraseñas, combinaciones de cerraduras, etc.
El esquema más común de autentificación es la protección por contraseña:
  • El usuario elige una palabra clave, la memoriza, la teclea para ser admitido en el sistema computarizado:
    • La clave no debe desplegarse en pantalla ni aparecer impresa.
La protección por contraseñas tiene ciertas desventajas si no se utilizan criterios adecuados para:
  • Elegir las contraseñas.
  • Comunicarlas fehacientemente en caso de que sea necesario.
  • Destruir las contraseñas luego de que han sido comunicadas.
  • Modificarlas luego de algún tiempo.
Los usuarios tienden a elegir contraseñas fáciles de recordar:
  • Nombre de un amigo, pariente, perro, gato, etc.
  • Número de documento, domicilio, patente del auto, etc.
Estos datos podrían ser conocidos por quien intente una violación a la seguridad mediante intentos repetidos, por lo tanto debe limitarse la cantidad de intentos fallidos de acierto para el ingreso de la contraseña.

La contraseña no debe ser muy corta para no facilitar la probabilidad de acierto.

Tampoco debe ser muy larga para que no se dificulte su memorización, ya que los usuarios la anotarían por miedo a no recordarla y ello incrementaría los riesgos de que trascienda.

Auditoría y Controles de Acceso

Auditoría

La auditoría suele realizarse cuando examinan las recientes transacciones de una organización para determinar si hubo ilícitos.

La auditoría en un sistema informático puede implicar un procesamiento inmediato, pues se verifican las transacciones que se acaban de producir.

Un registro de auditoría es un registro permanente de acontecimientos importantes en el sistema informático:

  • Se realiza automáticamente cada vez que ocurre tal evento.
  • Se almacena en un área altamente protegida del sistema.
  • Es un mecanismo importante de detección.
El registro de auditoría debe ser revisado cuidadosamente y con frecuencia:
  • Las revisiones deben hacerse:
    • Periódicamente:
      • Se presta atención regularmente a los problemas de seguridad.
    • Al azar:
      • Se intenta atrapar a los intrusos desprevenidos.

Controles de Acceso

Lo fundamental para la seguridad interna es controlar el acceso a los datos almacenados

Los derechos de acceso definen qué acceso tienen varios sujetos o varios objetos.

Los sujetos acceden a los objetos.

Los objetos son entidades que contienen información.

Los objetos pueden ser:

  • Concretos:
    • Ej.: discos, cintas, procesadores, almacenamiento, etc.
  • Abstractos:
    • Ej.: estructuras de datos, de procesos, etc.
Los objetos están protegidos contra los sujetos.

Las autorizaciones a un sistema se conceden a los sujetos.

Los sujetos pueden ser varios tipos de entidades:

  • Ej.: usuarios, procesos, programas, otras entidades, etc.
Los derechos de acceso más comunes son:
  • Acceso de lectura.
  • Acceso de escritura.
  • Acceso de ejecución.
Una forma de implementación es mediante una matriz de control de acceso con:
  • Filas para los sujetos.
  • Columnas para los objetos.
  • Celdas de la matriz para los derechos de acceso que un usuario tiene a un objeto.
Una matriz de control de acceso debe ser muy celosamente protegida por el S. O.


Núcleos de Seguridad y Seguridad por Hardware

Núcleos de Seguridad

Es mucho más fácil hacer un sistema más seguro si la seguridad se ha incorporado desde el principio al diseño del sistema.

Las medidas de seguridad deben ser implementadas en todo el sistema informático.

Un sistema de alta seguridad requiere que el núcleo del S. O. sea seguro.

Las medidas de seguridad más decisivas se implementan en el núcleo, que se mantiene intencionalmente lo más pequeño posible.

Generalmente se da que aislando las funciones que deben ser aseguradas en un S. O. de propósito general a gran escala, se crea un núcleo grande.

La seguridad del sistema depende especialmente de asegurar las funciones que realizan:

  • El control de acceso.
  • La entrada al sistema.
  • La verificación.
  • La administración del almacenamiento real, del almacenamiento virtual y del sistema de archivos.

Seguridad por Hardware

Existe una tendencia a incorporar al hardware funciones del S. O.

  • Las funciones incorporadas al hardware:
    • Resultan mucho más seguras que cuando son accesibles como instrucciones de software que pueden ser modificadas.
    • Pueden operar mucho más rápido que en el software:
      • Mejorando la performance.
      • Permitiendo controles más frecuentes.
Sistemas Supervivientes

El diseño de sistemas de alta seguridad debe asegurar:

  • Su operación de manera continua y confiable.
  • Su disponibilidad.
Un sistema de computación superviviente es aquel que continúa operando aún después de que uno o más de sus componentes falla:
  • Es una cuestión cada vez más importante, especialmente para sistemas en línea.
Generalmente continúan operando con una degradación suave en los niveles de prestación.

Los componentes fallidos deben poder reemplazarse sin interrumpir el funcionamiento del sistema.

Una clave para la capacidad de supervivencia es la redundancia:

  • Si un componente falla, otro equivalente toma su puesto.
  • Se puede implementar como:
    • Un conjunto de recursos idénticos que funcionan en paralelo.
    • Un conjunto separado de recursos redundantes que se activan cuando se produce un fallo.
Algunas características de supervivencia son:
  • La incorporación de mecanismos contra fallos en el hardware en vez de en el software.
  • El uso de multiprocesamiento transparente para permitir mejorar el rendimiento sin modificar el software.
  • El uso de subsistemas múltiples de entrada / salida.
  • La incorporación de mecanismos de detección de fallos en el hardware y en el software.

Capacidades y Sistemas Orientados Hacia el Objeto

Un derecho de acceso permite a algún sujeto acceder a algún objeto de una manera preestablecida

Los sujetos son los usuarios de los sistemas de computación o entidades que actúan en nombre:

  • De los usuarios.
  • Del sistema.
  • Ej.: trabajos, procesos y procedimientos, etc.
Los objetos son los recursos del sistema:
  • Ej.: archivos, programas, semáforos, directorios, terminales, canales, dispositivos, pistas de discos, bloques de almacenamiento primario, etc.
Los sujetos se consideran también como objetos del sistema y un sujeto puede tener derechos de acceder a otro.

Los sujetos son entidades activas y los objetos son pasivos.

Una capacidad es una señal:

  • La posesión de una capacidad por un sujeto le confiere derechos de acceso a un objeto.
Las capacidades no suelen ser modificadas pero suelen ser reproducidas.

Un dominio de protección define los derechos de acceso que un sujeto tiene a los distintos objetos del sistema:

  • Es el conjunto de capacidades que pertenecen al sujeto.
Una capacidad es un nombre protegido para un objeto del sistema:
  • El nombre es único en todo el sistema.
  • Para tener acceso a un objeto determinado, un sujeto debe poseer una capacidad para hacerlo.
La capacidad incluye una instrucción de los derechos de acceso determinados que la capacidad le permite al sujeto respecto del objeto correspondiente.

La creación de capacidades es una función de rutinas de los S. O. cuidadosamente guardadas.

Lo normal es que las capacidades no pueden ser modificadas salvo para reducir los derechos de acceso establecidos.

Un sujeto con una capacidad puede copiarla o pasarla como un parámetro.

Luego de la creación de un objeto se crea una capacidad para ese objeto, que incluye todos los derechos de acceso al nuevo objeto.

El sujeto que crea la capacidad puede pasar copias de la capacidad a otros sujetos:

  • La pueden usar o copiarla a otros sujetos:
    • Sin variantes.
    • Reduciendo (nunca incrementando) los derechos de acceso establecidos.
Si se han integrado capacidades en el hardware de direccionamiento del almacenamiento primario:
  • Se las utiliza en cada referencia al mismo.
  • Tenemos un direccionamiento basado en la capacidad.
En sistemas basados en capacidades se puede presentar el problema del objeto perdido:
  • Si se destruye la última capacidad restante de un objeto, éste no podrá ser usado de ninguna manera.
  • El sistema debe mantener siempre al menos una capacidad para cada objeto.
El control del copiado y movimiento de las capacidades es un problema difícil; generalmente el S. O. realiza la manipulación de capacidades en nombre de los usuarios.

La revocación de las capacidades pasadas a otro sujeto también puede complicarse:

  • La capacidad pudo haber sido copiada muchas veces.
  • Podría ser necesario revocar la capacidad:
    • De un sujeto determinado.
    • De cualquier otro sujeto que hubiera recibido de él esa capacidad.
Una técnica para la revocación selectiva de las capacidades es la siguiente:
  • Todas las capacidades creadas a partir de una principal, apuntan al objeto a través de la capacidad principal.

Referencia:: H. M. Deitel. Introducción a los Sistemas Operativos. Addison-Wesley Iberoamericana, México.

Qubes OS




www.qubes-os.org

El proyecto Qubes tiene como objetivo crear un sistema operativo seguro para PCs y portátiles.

Problemas con los actuales Sistemas Operativos

La corriente actual de los sistemas operativos que se utilizan para la informática de escritorio, por ejemplo, Windows, Mac OS X, o sistemas basados en Linux, resultó insuficiente cuando se trata de seguridad. El problema principal es su incapacidad para proporcionar un aislamiento eficaz entre los diversos programas que se ejecutan en una máquina.

Por ejemplo si los usuarios del navegador de Internet en peligro (debido a un error explotado por un sitio web malicioso), el sistema operativo es incapaz de proteger a los usuarios, aplicaciones y datos de otros. Del mismo modo, si ciertos componentes del núcleo del sistema comprometidos, por ejemplo, WiFi, no puede defenderse de un compromiso completo de todas las aplicaciones de los usuarios y datos.

La situación anterior es una consecuencia directa de determinadas decisiones de diseño arquitectónico, que incluyen un exceso de complejidad de la API del sistema operativo, la inseguridad de diseño gráfico, y, por último pero no menos importante, la arquitectura de núcleo monolítico.

¿Por qué el nuevo sistema operativo?

Crear un nuevo sistema operativos consume mucho tiempo. Es por eso que, con Qubes OS, se reutiliza software ya existente como el hipervisor Xen. Esto a su vez implica el uso la tecnología de virtualización, que se utiliza por dos razones principales: ofrecer un excelente aislamiento de seguridad, así como la capacidad de reutilizar la gran cantidad de software, incluyendo la mayoría de las aplicaciones y
controladores escritos para sistemas operativos dominantes, como Linux o Windows.

¿Cómo da seguridad la virtualización?

La virtualización permite crear contenedores aislados, las máquinas virtuales (VM). VM puede ser mucho mejor aisladas entre sí que en los procesos estándar en núcleos monolíticos de sistemas operativos populares como Windows o Linux. Esto se debe a la interacción entre la máquina virtual y el hipervisor puede ser mucho más simple que en caso de un sistema operativo tradicional, y también la propia hipervisor pueden ser mucho más simple (por ejemplo, hipervisores, a diferencia típica OS-kerNels, no ofrecen muchos servicios como sistema de archivos, redes, etc.) Además las computadoras modernas tienen soporte de hardware para la virtualización (por ejemplo, Intel VT-x y la tecnología VT-d), que permite más simplificacion del código hipervisor, así como para la creación de configuraciones de sistema más sólido.

Ataques a Sistemas Operativos

Los principales ataques a los S. O. son los siguientes:

Asincronismo:

  • Se tienen procesos múltiples que progresan asincrónicamente.
  • Un proceso podría modificar los parámetros ya validados por otro proceso pero aún no utilizados.
  • Un proceso podría pasar valores malos a otro aún cuando el segundo realice una verificación extensa.
Rastreo:
  • Un usuario revisa el sistema intentando localizar información privilegiada.
Entre líneas:
  • Se utiliza una línea de comunicaciones mantenida por un usuario habilitado que está inactivo.
Código clandestino:
  • Se modifica el S. O. bajo una presunta depuración pero se incorpora código que permite ingresos no autorizados.
Prohibición de acceso:
  • Un usuario escribe un programa que bloquea el acceso o servicio a los usuarios legítimos mediante:
    • Caídas del sistema, ciclos infinitos, monopolio de recursos, etc.
Procesos sincronizados interactivos:
  • Se utilizan las primitivas de sincronización del sistema para compartir y pasarse información entre sí.
Desconexión de línea:
  • El intruso intenta acceder al trabajo de un usuario desconectado:
    • Luego de una desconexión de línea.
    • Antes de que el sistema reconozca la desconexión.
Disfraz:
  • El intruso asume la identidad de un usuario legítimo luego de haber obtenido la identificación apropiada por medios clandestinos.
Ataque “nak”:
  • Si el S. O. permite a un usuario:
    • Interrumpir un proceso en ejecución mediante una “tecla” de “reconocimiento negativo”.
    • Realizar otra operación.
    • Reanudar el proceso interrumpido.
  • Un intruso podría “encontrar” al sistema en un estado no protegido y hacerse con el control.
Engaño al operador:
  • Con un engaño se hace realizar al operador una acción que comprometa la seguridad del sistema.
Parásito:
  • Mediante equipamiento especial el intruso:
    • Intercepta los mensajes entre un usuario habilitado y el procesador.
    • Los modifica o reemplaza totalmente.
Caballo de Troya:
  • El intruso coloca un código dentro del sistema que luego le permita accesos no autorizados.
  • Puede permanecer en el sistema.
  • Puede borrar todo rastro de sí mismo luego de la penetración.
Parámetros inesperados:
  • El intruso suministra valores inesperados a una llamada al núcleo.
  • Intenta aprovechar una debilidad de los mecanismos de verificación de la legalidad del S. O.

Principales Fallos de los Sistemas

Los principales fallos de los sistemas son los siguientes:

Autentificación:

  • Los usuarios no pueden determinar si el hardware y el software con que funcionan son los que deben ser.
  • Un intruso podría reemplazar un programa sin conocimiento del usuario.
  • Un usuario puede inadvertidamente teclear una contraseña en un programa de entrada falso.
Cifrado:
  • No se almacena cifrada la lista maestra de contraseñas.
Implementación:
  • Implementación improcedente de un buen diseño de seguridad.
Confianza implícita:
  • Una rutina supone que otra está funcionando correctamente cuando, de hecho, debería examinar los parámetros suministrados por la otra rutina.
Compartimiento implícito:
  • El S. O. deposita inadvertidamente información importante del sistema en un espacio de direcciones del usuario.
Comunicación entre procesos:
  • Usos inadecuados de los mecanismos de send / receive que pueden ser aprovechados por los intrusos.
Verificación de la legalidad:
  • Validación insuficiente de los parámetros del usuario.
Desconexión de línea:
  • Ante una desconexión de línea el S. O. debería:
    • Dar de baja al usuario (o los usuarios) de la línea.
    • Colocarlos en un estado tal que requieran la re - autorización para obtener nuevamente el control.
Descuido del operador:
  • Un intruso podría engañar a un operador y hacer que le habilite determinados recursos.
Paso de parámetros por referencia en función de su valor:
  • Es más seguro pasar los parámetros directamente en registros que tener los registros apuntando a las áreas que contienen los parámetros.
  • El paso por referencia puede permitir que los parámetros, estando aún en el área del usuario, puedan ser modificados antes de ser usados por el sistema.
Contraseñas:
  • No deben ser fácilmente deducibles u obtenibles mediante ensayos repetidos.
Entrampamiento al intruso:
  • Los S. O. deben tener mecanismos de entrampamiento para atraer al intruso inexperto.
Privilegio:
  • Cuando hay demasiados programas con demasiados privilegios se viola el principio del menor privilegio.
Confinamiento del programa:
  • Un programa “prestado” de otro usuario puede actuar como un “Caballo de Troya”.
Prohibiciones:
  • Se advierte a los usuarios que no utilicen ciertas opciones porque los resultados podrían ser “indeterminados”, pero no se bloquea su uso, con lo que puede robar o alterar datos.
Residuos:
  • Un intruso podría encontrar una lista de contraseñas con solo buscar en lugares tales como una “papelera”:
    • Del sistema o física.
    • La información delicada debe ser sobrescrita o destruida antes de liberar o descartar el medio que ocupa.
Blindaje:
  • Los intrusos pueden conectarse a una línea de transmisión sin hacer contacto físico:
    • Utilizan el campo inducido por la circulación de corriente en un cable.
    • Se previene con un adecuado blindaje eléctrico.
Valores de umbral:
  • Si no se dispone de valores umbral, no habrá:
    • Límites al número de intentos fallidos de ingreso.
    • Bloqueos a nuevos intentos.
    • Comunicaciones al supervisor o administrador del sistema.

Referencia:: H. M. Deitel. Introducción a los Sistemas Operativos. Addison-Wesley Iberoamericana, México.