martes, 20 de noviembre de 2012

Clase Virtual UNAM

Retomando las tecnologías que en su momento fueron el boom en la web y a su vez enterandonos del cumpleaños de la compañera colocha Anahí, espero nos comparta de su pastel el cual le tiene pendiente el compañero Manuel.

Felicidades en tu día compañera colocha que tus colochos se pongan más acolochados =0.]

martes, 11 de enero de 2011

Sistemas de Archivos Distribuidos


ANTECEDENTES:

Teniendo claro algunos términos un sistema distribuido es una colección de maquinas débilmente acopladas conectadas entre si por una red de comunicaciones.

  • Servicio: es una entidad de software que se ejecuta en una o mas maquinas y realiza un tipo de función especifico a favor de clientes que no conoce a priori.

  • Servidor es el software de servicio que se ejecuta en una sola maquina.

  • Cliente: es un proceso que puede invocar un servicio empleando un conjunto de operaciones que contituyen su interfaz de cliente.

  • Interfaz: de bajo nivel para la interaccion real entre maquinas, y la llamamos interfaz entre maquinas.

Un sistema de archivos da servicios a los clientes. Una interfaz de cliente para un servicio de archivos consta de un conjunto de operaciones de archivos primitivas, como crear un archivo, eliminar un archivo, leer de un archivo y escribir en un archivo. El componente de hardware primario que un servidor de archivos controla es un conjunto de dispositivos de almacenamiento secundario locales en los que se almacenan archivos y de los cuales se recuperan cuando el cliente lo solicita.

Un DFS es un sistema de archivos cuyos clientes servidores y dispositivos de almacenamiento están dispersos entre las maquinas de un sistema distribuido. La configuración e implementación concretas de un DFS puede variar. Hay configuraciones en las que los servidores se ejecutan en maquinas dedicadas y otras en las que una maquina puede ser tanto un servidor como un cliente. Un DFS se puede implementar como como parte de un sistema operativo distribuido o bien con una capa de software cuya tarea es gestionar la comunicación entre sistemas operativos y sistemas de archivos convencionales. Las características distintivas de un DFS son multiplicidad y autonomía de los clientes y servidores del sistema.

La medida de desempeño más importante de un DFS es el tiempo que toma satisfacer diversas solicitudes de servicio. En los sistemas convencionales, este tiempo consta de un tiempo de acceso al disco y un tiempo breve de procesamiento en la CPU, en un DFS un acceso remoto tiene el gasto adicional que se atribuye a la estructura distribuida. Este gasto extra incluye el tiempo requerido para presentar la solicitud a un servidor, así como el necesario para devolver la respuesta al cliente a través de la red.

El hecho de que un DFS administra un conjunto de dispositivos de almacenamiento dispersos es su característica distintiva.

Unidad componente denota el conjunto de archivos mas pequeño que se puede almacenar en una sola maquina, con independencia de las demás unidades.

NOMBRES Y TRANSPARENCIA:

Los nombres establecen una correspondencia entre objetos lógicos y físicos. Un DFS transparente se añade una nueva dimensión a la abstracción: la de ocultar en que lugar de la red se encuentra el archivo. En un sistema de archivos convencional, el alcance de la transformación de nombres es una dirección dentro de un disco. En un DFS, este alcance se amplia para incluir la maquina especifica en cuyo disco esta almacenado el archivo. Llevar un paso mas alla el concepto de tratar los archivos como abstracciones conduce a la posibilidad de replicar archivos.

ESTRUCTURAS DE NOMBRES:

  • Transparencia de ubicación: el nombre de un archivo no da indicio alguno de la posición física de almacenamiento del archivo.

  • Independencia de ubicación: no es necesario modificar el nombre de un archivo si la posición física de almacenamiento del archivo cambia.

Un esquema de nombres independiente de la ubicación es una transformación dinámica ya que puede hacer corresponder el mismo nombre de archivos con diferentes ubicaciones en dos momentos distitntos. La independencia de ubicación es una propiedad mas fuerte que la transparencia de ubicación.

En la practica la mayor parte de los DFS actuales ofrece una correspondencia estatica, transparente respecto a la ubicación de los nombres en el nivel de usuario.

Hay unos cuantos aspectos que pueden distinguir aun mas la independencia de la ubicación y la transparencia de la ubicación estatica:

Separar los datos de su ubicación.

La transparencia de ubicación estatica proporciona a los usuarios una forma comoda de compartir archivos.

La independencia de la ubicación separa la jerarquía de nombres de la jerarquía de dispositivos de almacenamiento y de la estructura intercomputadores.


Una vez lograda la separación de nombres y ubicación, varios clientes pueden acceder a archivos que residen en sistemas servidores remotos.

Este protocolo de arranque especial, almacenado en memoria solo de lectura en el cliente. Este protocolo habilita el trabajo con redes y obtiene un solo archivo especial de un ugar fijo. Una vez que el nucleo se ha copiado por la red y se ha cargado su DFS hace accesibles todos los demás archivos del sistema operativo.

La tendencia actual es hacia clientes con discos locales. Las unidades de disco cada vez tienen mayor capacidad y menor costo y aparecen nuevas generaciones casi cada año.

ESQUEMAS DE NOMBRES

Hay tres tipos principales de esquemas de nombres en un DFS. En el enfoque mas sencillo los archivos e nombran con alguna combinación del nombre de su anfitrión y su nombre local, lo que garantiza un nombre único en el nivel del sistema.

Este esquema de nombres no es transparente ni independiente respecto a la ubicación pero permite usar las mismas operaciones de archivos con archivos locales y remotos. La estructura del DFS es una colección de unidades componentes aisladas que son sistemas de archivos convencionales enteros.

El segundo enforque fue popularizado por el network File System de Sun. NFS es el componente de sistema de archivos de ONC un paquete de trabajo con redes que muchos proveedores de UNIX van a poyar NFS cuenta con un mecanismo para ligar directorios remotos a directorios locales y asi dar la apariencia de un árbol de directorios coherentes.

Un criterio importante para evarluar las estructuras de nombres es su complejidad administrativa. La estructura mas compleja y mas difícil de mantener es la de NFS. Dado que cualquier directorio remoto se puede conectar a cualquier punto del árbol de directorio actual, la jerarquía resultante puede carecer casi de estructura.

TECNICAS DE IMPLEMENTACION:

La implementación de una estructura de nombres transparentes requiere un mecanismo para transformar un nombre de archivos en la posición correspondiente. Para que tal transformación sea manejable se necesitan llamadas para reunir conjuntos de archivos en unidades componentes, y realizar la transformación con base en unidades componentes y no por archivos individuales. Esta agrupación también tiene motivos administrativos. Los sistemas tipo UNIX emplean el árbol de directorios jearquico para establecer la correspondencia de nombre posición y para agrupar archivos recursivamente en directorios.

A fin de mejorar la disponibilidad de la información de transformación crucial, podemos usar métodos como la replicación, la colocación en caches locales, o ambas. Como ya señalamos la independencia de la ubicación implica que la transformación cambia con el tiempo por tanto, replicar la transformación hace imposible una actualización sencilla pero consitente de esta información.

ACCESO A ARCHIVOS REMOTOS:

Una forma de efecturar esta transparencia es emplenado un mecanismo de servicio remoto, en el que las solicitudes de acceso se entregan al servidor, la maquina del servidor realiza los accesos y sus resultados se remiten al usuario. Una de las formas mas comunes de implmentar el servicio remoto es el paradigma de llamada a procedimiento remoto. Para asegurar que un mecanismo de servicio remoto tenga un desempeño razonable, podemos usar caches. En los sitemas de archivos convencionales el motivo para usar caches es reducir la E –S de disco, mientras que en los DFS la meta es reducir tanto el trafico de red como la E-S de disco.

ESQUEMAS DE USO DE CACHE BASICO

Si los datos que se necesitan para satisfacer la solicitud de acceso no están ya en un cache se trae una copia de esos datos desde el sistema del servidor hasta el del cliente. Los accesos se efectúan con la copia en cache. La idea es conservar los bloques de disco de acceso reciente en un cache, a fin de poder manejar localmente accesos repetidos a la misma información, sin trafico de red adicional.

La granularidad de los datos en cache puede variar desde bloques de un archivo hasta archivos enteros. Lo común es colocar en cache mas datos de los que se necesitan para satisfacer un solo acceso, a fin de poder atender muchos accesos con los datos en cache.

UBICACIÓN DEL CACHE:

Los caches de disco tienen una ventaja clara respecto a los caches en memoria principal: su confiabilidad. Las modificaciones a los datos en cache se pierden en una ciada del sistema si el cache se mantiene en memoria volátil. Además si los datos en cache se mantienen en disco.

Ventajas de los caches en memoria principal:

  • Las estaciones de trabajo no necesitan tener disco

  • Se puede acceder mas rápidamente a datos de cache en la memoria principal que en disco.

  • La tendencia de la tecnología actual es hacia memorias mas grandes y económicas.

  • Los caches de servidor estarán en la memoria principal sin importar donde estén los caches de usuario. Si usamos caches de memoria principal también en la maquina del usuario podremos contruir un mecanismo de cache único.


POLITICA DE ACTUALIZACION DEL CACHE:

La política que se sigue para escribir los bloques modificados de vuelta en la copia maestra del servidor tiene un efecto crucial sobre el desempeño y la confiabilidad del sistema. La política mas sencilla es escribir los datos en el disco tan protno como se colocan en cualquier cache. La ventaja de esta escritura a través es su confiabilidad, se pierde poca información cuando se cae un sistema cliente. Sin embargo, esta política requiere que cada intento de escritura espere hasta que la información se envie al servidor, y esto hace que el desempeño de la escritura sea deficiente. El uso de caches con escritura a través equivale a usar servicio remoto para los accesos de escritura aprovechando los caches solo para los accesos de lectura.

Hay algunas variaciones de la política de escritura retardada que difieren en cuanto al momento en que los bloques de datos modificados de vacian al servidor. Una alternativa es hacerlo cuando el bloque esta a punto de ser expulsado del cache del cliente. Esta opción puede dar pie a un buen desempeño, pero algunos bloques podrían residir en el cache de un cliente mucho tiempo antes de escribirse de vuelta en el servidor. Un termino medio entre esta alternativa y la política de escritura a través es examinar el cache e intervalos regulares y escribir en el servidor los bloques.

CONSISTENCIA:

Hay dos estrategias para verificar la validez de los datos en cache:

  • Estrategia iniciada por el cliente: el cliente inicia una verificación de validez durante la cual se pone en contacto con el servidor y comprueba si los datos locales son congruentes con la copia maestra.

  • Estrategia iniciada por el servidor: el servidor registra, para cada cliente los archivos que coloca en cache. Si el servidor detecta una posible inconsistencia debe reaccionar.

COMPARACION DEL USO DE CACHES Y EL SERVICIO RWEMOTO

  • Un número sustancial de los accesos remotos se pueden atender desde el cache local cuando se usan caches.

  • El gasto extra total de la red cuando se transmiten volúmenes grandes de datos es menor que cuando se transmite una serie de respuestas a solicitudes especificas.

  • Las rutinas de acceso a disco en el servidor se pueden optimar mejor si se sabe que siempre se solicitaran segmentos grandes y contiguos de datos, en lugar de bloques de disco aleatorios

  • El problema de la consistencia del cache es la principal desventaja del uso de caches.

  • Para que el uso de caches resulte provechoso, la ejecución debe realizarse en maquinas que tengan discos locales o bien memorias principales grandes.

  • Cuando se usan caches, dado que los datos se transfieren en masa entre el servidor y el cliente no como respuesta a las necesidades especificas de una operación con archivos la interfaz intermaquinas inferior es muy diferente de la interfaz de usuario superior.

martes, 28 de diciembre de 2010

SEGURIDAD Y PROTECCIÓN en Sistemas Operativos

Seguridad:

La seguridad de un sistema tiene múltiples facetas, incluyendo desde aspectos tales como la protección ante posibles daños físicos de los datos hasta el acceso indebido a los mismos. Los ataques contra la confidencialidad, la integridad o la seguridad de un sistema. La seguridad debe tener en cuenta eventos externos provenientes del entorno en que opera el sistema.

Protección:

Consiste en evitar que se haga un uso indebido de los recursos que están dentro del ámbito del sistema operativo. Deben de existir mecanismos y políticas que aseguren que los usuarios solo acceden a sus propios recursos. Las políticas de protección y seguridad de hardware, software y datos deben incluirse dentro del sistema operativo.

La seguridad de un sistema operativo se basa en tres aspectos de diseño:

  • · Evitar pérdidas de datos
  • · Controlar la confidencia de los datos
  • · Controlar el acceso a los datos y recursos.

La protección frente a fallos físicos, para conseguir que el sistema sea fiable, esta mas relacionada con la gestión de datos que con el sistema operativo.

El control del acceso a datos y recursos si es competencia directa del sistema operativo. Es necesario asegurar que los usuarios no acceden a archivos para los que no tienen permisos de acceso, a cuentas de otros usuarios o a paginas de memoria o bloques de disco que contienen información de otros usuarios. Para aplicarlos hay que aplicar criterios de diseño rigurosos y ejecutar pruebas de seguridad exhaustivas para todos los elementos del sistema, aunque se consideren seguros.

PROBLEMAS DE SEGURIDAD:

Ejemplos:

  • · Los fallos de UNIX, un usuario pudiera abortar un mandato con permisos de super usuario.
  • · Versiones antigua de UNIX, cualquier usuario podía leer el archivo passwd donde se almacenaban.
  • · En TENEX, sistema operativo en desuso. Comprobaba la palabra clave carácter a carácter.

USO INDEBIDO O MALICIOSO DE PROGRAMAS

Dos formas mas frecuentes de genera fallos de seguridad usando estas técnicas son el caballo de troya y la puerta de atrás.

Caballo de troya: se base en la idea de crear un programa para que haga cosas no autorizadas en el sistema cuando actúan en el entorno adecuado.

Puerta de atrás: consiste en crear un agujero de seguridad al sistema a atraves de un programa privilegiado que lo permite.

USUARIOS INEXPERTOS O DESCUIDADOS:

Los usuarios inexpertos son potencialmente muy peligrosos. Cosas tales como borrar archivos no deseados, dejar abiertos los accesos al sistema durante largo tiempo o escribir la palabra clave en un papel junto a la computadora son mas frecuentes de lo que parece.

USUARIOS NO AUTORIZADOS

Los sistemas operativos, UNIX O WINDOWS NT, mantienen cuentas para los usuarios autorizados. Se protege mediante contraseñas o palabras clave, que solo debe conocer el dueño de las mismas. El administrador o súper usuario puede acceder a todo el sistema saltándose las protecciones del resto de los usuarios.

El proceso de reconocimiento del usuario, llamado autentificación, sirve para evitar que usuarios no autorizados accedan al sistema. Un usuario pirata, trata de saltarse o romper el proceso de autentificación para entrar en el sistema de computación con la identidad de un usuario legitimo. Si lo consigue puede hacer todo aquello a lo que su identidad falsa le conceda derecho.

VIRUS:

Todo programa que se autorreplican con fines destructivos o de iolacion de seguridad. Necesitan de un programa que transporte el virus y de un agente que los transmita para infectar a otros programas.

GUSANOS:

Morris, un estudiante de Cornell, liberó un programa gusano en Internet. Anteriormente había descubierto dos fallos de seguridad en el UNIX de Berkeley que le permitían acceder a miles de máquinas conectadas a Internet, especialmente aquellas que permitían accesos por ftp a usuarios anónimos. Aprovechando esta circunstancia, fabricó un gusano que explotaba los fallos de seguridad para acceder a sistemas remotos y, además, se replicaba a sí mismo para acceder a más sistemas. El gusano estaba compuesto por dos programas: un pequeño programa de 99 líneas en C y el gusano principal. El gusano leía las tablas de encaminamiento del sistema infectado y enviaba el cargador a todos los sistemas remotos que podía, usando para ello tres mecanismos de penetración:

  • · Intérprete de mandatos remoto (rsh).
  • · Demonio del finger.
  • · sendmail.

POLITICAS DE SEGURIDAD:

Los requisitos de seguridad son siempre una cuestión importante en las organizaciones. La existencia de un sistema seguro pasa porque exista una política de seguridad [Neumann, 19901 que defina claramente la seguridad que proporciona el sistema, independientemente de los mecanismos usados para implementarla.

Es interesante resaltar que los requisitos de seguridad varían de unos sistemas a otros, e incluso entre usuarios distintos dentro del sistema.

POLITICAS COMERCIALES:

Basándose en la política militar, pero generalmente debilitando las restricciones de seguridad, se han diseñado varias políticas de uso comercial. Algunos ejemplos de ellas son las de Clark-WiIson separación de deberes. Aunque son menos rígidas que la militar, todas ellas usan los principios de compartimentación de los usuarios y de clasificación de la información. Además definen reglas similares para el trasvase de información entre los distintos niveles y compartimentos.

MODELOS DE SEGURIDAD:

Un modelo es un mecanismo que permite hacer explícita una política de seguridad. En seguridad, los modelos se usan para probar la completitud y la coherencia de la política de seguridad.

Además, pueden ayudar en el diseño del sistema y sirven para comprobar si la imple-mentación cumple los requisitos de seguridad exigida. Dependiendo de los requisitos, los modelos de seguridad se pueden clasificar en dos grandes tipos: multinivel [Bell, 1983] y limitados [Harri-son, 1985].

Los modelos de seguridad multinivel permiten representar rangos de sensibilidad y reflejar lanecesidad de separar rigurosamente los sujetos de los objetos a los que no tienen acceso. Suelen ser modelos abstractos y muy generales, lo que los convierte en muy complejos, difíciles de verificar y muy costosos de implementar.

DISEÑOS DE SISTEMAS OPERATIVOS SEGUROS:

Mecanismos desde el principio. Incluir mecanismos de seguridad dentro de un sistema operativoexistente es muy difícil porque las repercusiones de los mecanismos de seguridad afectan prácticamente a todos los elementos del sistema operativo. Además, el diseño del sistema de seguridad debería ser lo suficientemente flexible como para poder proporcionar distintas políticas de seguridad con los mecanismos diseñados.

PRINCIPIO DE DISEÑO Y ASPECTO DE SEGURIDAD:

Basados en las experiencias obtenidas a partir de los problemas de seguridad detectados en sistemas i operativos como MULTICS, MVS o UNIX, Saitzer y Schroeder extrajeron los criterios de diseño i siguientes para dotar a un sistema operativo de mecanismos de seguridad:

  • 1. Diseño abierto.
  • 2. Exigir permisos.
  • 3. Privilegios mínimos.
  • 4. Mecanismos económicos.
  • 5. Intermediación completa.
  • 6. Compartición mínima.
  • 7. Fáciles de usar y aceptables.
  • 8. Separación de privilegios.

TECNICAS DE DISEÑOS DE SISTEMAS SEGUROS:

Existen distintas técnicas de diseño que se pueden usar para dotar a un sistema operativo con los principios y características de seguridad descritas anteriormente. En esta sección se describen las tres principales:

  • • Separación de recursos.
  • • Uso de entornos virtuales.
  • • Diseño por capas.

USO DE ENTORNOS VIRTUALES

Este mecanismo es muy importante para diseñar sistemas operativos seguros, porque permiten proporcionar separación lógica de forma natural. Obviamente, los entornos virtuales deben apoyarse en recursos reales, pero el sistema operativo puede proporcionar a los usuarios los recursos virtuales y controlar el acceso a los mismos. Ejemplos de mecanismos virtuales importantes son:

  • • Los espacios múltiples de memoria virtual.
  • • Las máquinas virtuales.

DISEÑOS POR CAPAS:

La visión de un sistema seguro se puede asemejar a una serie de círculos concéntricos, donde los niveles interiores son de más confianza. Está visión se puede plasmar de forma precisa en un sistema por capas, donde cada capa sólo tiene acceso a las capas adyacentes.

CONTROLES DE SEGURIDAD EXTERNO AL SISTEMA OPERATIVO:

En las secciones anteriores se han mostrado los criterios de diseño de un sistema seguro. Obviamente, no existirían fallos de seguridad si se pudieran prevenir. Sin embargo, la prevención supone hacer frente a un problema de gran complejidad.

USO DE ESTANDARES DE SEGURIDAD:

Un sistema operativo suele ser un proyecto de programación muy grande. Los controles anteriores son sólo una pequeña parte de los controles que es necesario aplicar en el desarrollo del sistema. Además, para que el sistema sea seguro es necesario describir claramente qué hacer, y cómo hacer lo, en términos de seguridad. Actualmente, existen varios estándares que describen cómo conseguir un sistema fiable y de calidad. Los tres más conocidos son el DoD-2167A, el SSE-CMM y el ISO 9000.

CONTROLES DE SEGURIDAD DEL SISTEMA OPERATIVO:

El sistema operativo debe llevar a cabo su parte de la política de seguridad del sistema liJones, 19781. Algunos de los controles de seguridad que se deben aplicar en el sistema operativo son:

  • • Ejecutar software fiable.
  • • Sospechar de los procesos.
  • • Ejecutar los procesos con confinamiento.
  • • Registrar los accesos.
  • • Buscar periódicamente agujeros de seguridad.

CRIPTOGRAFÍA:

La criptografía es la técnica que permite codificar un objeto de manera que su significado no sea obvio. Es un medio para mantener datos seguros en un entorno inseguro, en el cual un objeto original (O) se puede convertir en un objeto cifrado (C) aplicando una función de cifrado (E).

CLAVES

Un concepto básico en criptografía es el de clave. La clave (k) es el patrón que usan los algoritmos de cifrado y descifrado para manipular los mensajes en uno u otro sentido. Aunque existen sistemas criptográficos que no usan clave (keyless cipher), el uso de claves añade más seguridad a los meca nismos de cifrado porque con distintas claves se pueden obtener distintos mensajes cifrados usando la misma función de cifrado. De esta forma, para romper un sistema de cifrado es necesario conocer tanto las funciones correspondientes como la clave usada para cifrar Un determinado objeto.

• Simétricos. En este caso, D es la función inversa de E y las clave usada en ambos casos es la misma. También se denominan sistemas de clave privada. Puesto que ambos comparten la clave, pueden trabajar de forma independiente. La simetría del proceso es muy útil siempre que se mantenga e1 secreto, ya que en ese caso se puede usar la clave como medio de autenticación Sin embargo, estos métodos tienen problemas asociados con la filtración de las claves, su distribución, su debilidad criptográfica y el número creciente de claves.

• Asimétricos. En este caso existen claves distintas para cifrar y descifrar y la función de descifrado no es exactamente inversa a la de cifrado (o=D (Kd, E (Ke, O))). La asimetría permite reducir el número de claves a intercambiar entre los participantes en el proceso de cifrado.

SISTEMAS OPERATIVOS. UNA VISION APLICADA:

El uso de claves también genera problemas importantes. En primer lugar, la clave debe ser conocida por el codificador y el descodificador de un objeto. En segundo lugar, la clave debe resistir los intentos de rotura, lo que significa que debe tener una cierta complejidad. EN tercer lugar, limita la comunicación entre procesos a aquellos que conocen sus respectivas claves, lo que obliga a establecer protocolos de intercambio de claves que permitan llevar a cabo comunicaciones seguras, incluso aunque se ejecuten sobre canales inseguros

SEGURIDAD Y PROTECCIÓN EN SISTEMAS OPERATIVOS DE PROPÓSITO GENERAL

Dichos mecanismos permiten controlar el acceso a los objetos del sistema permi tiéndolo o denegándolo sobre la base de información tal como la identificación del usuario, el tipo de recurso, la pertenencia del usuario a un cierto grupo de personas, las operaciones que puede hacer el usuario o el grupo con cada recurso, etc.

AUTENTICACION DE USUARIOS

El paso previo a la aplicación de cualquier esquema de protección o confidencialidad de datos es conocer la identidad del usuario que está accediendo a dichos datos. El objetivo de la identificación del usuario, también denominada autenticación, es determinar si un usuario (persona, servicio o computadora) es quien dice ser. Para ello, la mayoría de los sistemas solicitan del usuario que, previamente al acceso a los recursos del sistema, proporcione algún tipo de información que se supone que únicamente es conocida por él y que debe ser suficiente para su identificación.

EL PROCESO DE AUTENTICACION:

Habitualmente, cuando un usuario quiere acceder al sistema, aparece una pantalla o mensaje de entrada. En el caso de Windows NT, la pantalla pide tres valores:

  • • Identificación del usuario: nombre del usuario en el sistema.
  • • Palabra clave o contraseña: espacio para teclear la clave.
  • • Dominio de protección al que pertenece el usuario.

LONGITUD Y FORMATO DE LAS CLAVE

La longitud y el formato de las claves han ido cambiando a través del tiempo, principalmente debido a la detección de fallos asociados a las claves usadas en cada momento.

ALMACENAMIENTO DE CLAVES:

Es muy importante dónde se almacenan las claves para la seguridad del sistema. En el sistema operativo UNIX, por ejemplo, las claves se almacenaban tradicionalmente en un archivo de texto denominado / etc /passwd. En cada entrada del archivo se encontraba la identidad de un usuario y su palabra clave cifrada, entre otras cosas.

DURACION DE LAS CLAVES:

Para dificultar la detección de contraseñas válidas por parte de posibles intrusos se puede configurar el sistema operativo: los sistemas operativos permiten que las contraseñas de usuarios sean válidas únicamente durante un cierto tiempo.

DOMINIOS DE PROTECCION:

Para poder implementar mecanismos de protección sobre los objetos del sistema, que pueden ser hardware (UCP, memoria, etc.) o software (procesos, archivos, semáforos, etc.), es necesario en primer lugar disponer de identificadores únicos de usuarios y de objetos.

MATRICES DE PROTECCION:

La relación entre dominios y objetos se puede definir de forma completa mediante una matriz de protección, también denominada de acceso. Los dominios de protección son las filas de la matriz y los objetos son las columnas de la misma. El elemento (i, i) expresa las operaciones que el dominio ± puede ejecutar sobre el objeto j. Si la matriz de protección está completamente definida, los mecanismos de protección pueden saber siempre qué hacer cuando un proceso de un dominio solicita determinada operación sobre un objeto.

LISTAS DE CONTROL DE ACCESO EN UNIX

En UNIX, la implementación de las listas de control de acceso es sencilla por la simplificación de dominios de protección llevada a cabo en este sistema operativo. Como se vio en la sección anterior, en UNIX, sólo existen tres dominios de protección: dueño, grupo, otros. Para cada dominio se permiten tres tipos de operaciones sobre un objeto: leer (r), escribir (w) y ejecutar (x). De esta forma se pueden implementar las ACL usando sólo 9 bits por objeto, información que cabe en el nodo-i del mismo. Esta solución es menos general que un sistema que use ACL de forma completa, pero es suficiente y su implementación es mucho más sencilla.

LISTAS DE CONTROL DE ACCESO EN WINDOWS NT

Windows NT proporciona un sistema de seguridad algo más sofisticado que el de UNIX. Todos los objetos de Windows NT tienen asignados descriptores de seguridad como parte de sus fichas de acceso. La parte más significativa de los descriptores de seguridad es la lista de control de accesos. Cada entrada de la ACL contiene los descriptores de seguridad de los distintos dominios del sistema y los derechos de uso del objeto. Normalmente, sólo el dueño del objeto puede modificar los derechos de la ACL para permitir o denegar el acceso al objeto.

SERVICIOS DE PROTECCIÓN Y SEGURIDAD

Los servicios de protección y seguridad de un sistema varían dependiendo de la complejidad del sistema implementado. En esta sección se muestran algunos servicios de protección genéricos en sistemas operativos clásicos, sin entrar en mecanismos de protección de sistemas distribuidos o en los problemas de distribución de claves por redes.

SERVICIOS POSIX:

El estándar POSIX define servicios que, en general, se ajustan a los servicios genéricos descritos en la sección anterior. Sin embargo, no existen servicios específicos para crear, destruir o abrir descriptores de protección.

SERVICIOS DE WIn32

Windows NT tiene un nivel de seguridad C2 según la clasificación de seguridad del Orange Book del DoD, lo que significa la existencia de control de acceso discrecional, con la posibilidad de permitir o denegar derechos de acceso para cualquier objeto partiendo de la identidad del usuario que intenta acceder al objeto. Para implementar el modelo de seguridad, Windows NT usa un descriptor de seguridad y listas de control de acceso (ACL), que a su vez incluyen dos tipos de entradas de control de acceso (ACE): las de permisos y las de negaciones de accesos.



jueves, 16 de diciembre de 2010

Algoritmo del Banquero



Es un algoritmo de planificación que puede evitar los bloqueos resolviendo el problema planteado por Edsger Dijkstra.

En la analogía:
  • Podemos decir que los clientes son los procesos, las unidades de crédito son los recursos del sistema y el banquero es el Sistema Operativo.
  • El banquero sabe que no todos los clientes necesitaran su crédito máximo otorgado en forma inmediata, por ello reserva menos recursos de las totales necesarias para dar servicio a los clientes.
El algoritmo mantiene al sistema en un ESTADO SEGURO. Podemos decir que un sistema se encuentra en estado seguro si existe un orden en que pueden concederse las peticiones de recursos a todos los procesos, previniendo el interbloqueo.

El algoritmo consiste en:

  • Estudiar cada solicitud al ocurrir ésta.
  • Ver si al otorgar el recurso conduce a un estado seguro:
 
* En caso de conducir a un estado seguro, se otorga la solicitud.
 
* En caso de conducir a un estado seguro, se le pospone.
  • Para ver si un estado es seguro:
 
* Verifica si tiene los recursos suficientes para satisfacer a otro cliente:
      
> En caso afirmativo, se supone que los préstamos se harán efectivos.
      
> Se verifica al siguiente cliente cercano al límite y así sucesivamente.
 
* Si en cierto momento se vuelven a pagar todos los créditos, el estado es seguro y la solicitud original debe ser aprobada.

Se utilizan cuatro vectores: Recursos, Asignación, Requeridos [Demanda] y Disponible.
  • Recursos: este vector mantiene la cantidad total de recursos que pueden ser utilizados por los procesos.
  • Asignación: en esta matriz constan la actual asignación de recursos a cada uno de los procesos.
  • Requeridos [Demanda]: esta matriz guarda las cantidades máximas de recursos de cada tipo que serán utilizados por cada proceso.
  • Disponible: en cualquier momento, el vector Disponible guardará la cantidad disponible de cada recurso.

Por ejemplo:

Nota: Se basa en que los recursos Requeridos sean <= que los Disponibles
Lista de procesos: [P2,P4,P5,P0 ó P3]


A la derecha se tienen 5 procesos, cada uno tiene recursos de tipo A, B y C. En la primer columna de asignados está la cantidad de recursos que el proceso ha obtenido a lo largo de un tiempo; en la segunda columna de Máximo Necesario, están los recursos que tiene que obtener de cada tipo para comenzar a ser ejecutado. Por ejemplo, el P1 no ha obtenido ningún recurso del tipo A, sólo 1 del tipo B y ninguno del tipo C, y necesita para ejecutarse haber conseguido 7 del A, 4 del B y 3 del C.

En la última columna se tienen los recursos disponibles que da el sistema, los que se pueden utilizar con todos los procesos. Hay 3 del A, 3 del B y 2 del C.

El algoritmo del banquero trata de asegurar qué proceso tiene un “estado seguro” es decir, se requiere alcanzar el máximo requerido entre los que estén en Asignados y los que se encuentren en Disponibles.

Si se suman Asignados + Disponibles para cada uno de los recursos A, B y C, realmente no se alcanzan los Máximos Requeridos.

Entonces se va al proceso 2 y se trata de hacer lo mismo, sumar Asignados + Disponibles. Allí sí se tiene un ESTADO SEGURO, A con 5, B con 3 y C con 2, y como se alcanza a llenar los Máximos, ese proceso se ejecuta.

Una vez que el proceso se ejecutó, entonces se procede a SUMAR los recursos asignados del proceso anterior a los disponibles. Hay que recordar que el proceso al terminar de ejecutarse libera todos sus recursos, por lo tanto pasan tanto los de tipo A, B y C a sumarse con los disponibles 3-3-2 y se tendrán nuevos DISPONIBLES que repartir, siendo ahora éstos 5-3-2.

Con estos se pasa al proceso P2 y así sucesivamente.

miércoles, 8 de diciembre de 2010

Recuperar grub con live CD Ubuntu

Utilizando un LiveCD de la distribución Ubuntu

abrimos Aplicaciones > Accesorios > Terminal.

Después, ejecutamos

#sudo grub
[para entrar en la línea de comandos de GRUB]

******Si no tenemos el interprete grub lo instalamos teniendo una conexión a internet
# sudo apt-get install grub

Una vez que obtengamos el prompt de GRUB:

* Averiguamos dónde está instalado GRUB:

grub> find /boot/grub/stage1
[el cual nos retornara el numero de la particion
por ejemplo: (hd0,5) en este caso es 5]


* Le indicamos a Grub dónde están los archivos a configurar:

grub> root (hd0,X)
[sustituimos la X por el numero que obtuvimos anteriormente]

* Y los instalamos de nuevo:

grub> setup (hd0)


* Y finalmente, nos salimos de la línea de comandos de GRUB:
grub> quit

* Reiniciamos y listo :0.)