viernes, 5 de diciembre de 2014

Mecanismos de seguridad y protección

Vamos a hacer una distinción entre seguridad y protección. El problema de la seguridad consiste en lograr que los recursos de un sistema sean, bajo toda circunstancia, utilizados para los fines previstos. Para eso se utilizan mecanismos de protección.
Los sistemas operativos proveen algunos mecanismos de protección para poder implementar políticas de seguridad. Las políticas definen qué hay que hacer (qué datos y recursos deben protegerse de quién; es un problema de administración), y los mecanismos determinan cómo hay que hacerlo. Esta separación es importante en términos de flexibilidad, puesto que las políticas pueden variar en el tiempo y de una organización a otra. Los mismos mecanismos, si son flexibles, pueden usarse para implementar distintas políticas.
Los mecanismos que ofrece el sistema operativo necesariamente deben complementarse con otros de carácter externo. Por ejemplo, impedir el acceso físico de personas no autorizadas a los sistemas es un mecanismo de protección cuya implementación no tiene nada que ver con el sistema operativo.
Un aspecto importante de la seguridad es el de impedir la pérdida de información, la cual puede producirse por diversas causas: fenómenos naturales, guerras, errores de hardware o de software, o errores humanos. La solución es una sola: mantener la información respaldada, de preferencia en un lugar lejano.
Otro aspecto importante de la seguridad, es el que tiene que ver con el uso no autorizado de los recursos:
Aquí el sistema operativo juega un rol fundamental, ofreciendo mecanismos de autorización y autentificación.
Protección absoluta contra uso malicioso de los sistemas es imposible, pero si los costos de violar un sistema son superiores a los potenciales beneficios que se pueden obtener, entonces el sistema puede considerarse seguro. El problema es que esa protección no obstaculice el uso del sistema por parte de usuarios autorizados. Demasiada seguridad podría ser contraproducente si es muy engorrosa para los usuarios, pues estos tenderán a eludir los procedimientos para facilitarse la vida.


Definición de seguridad y protección desde el punto de vista de los Sistemas Operativos

Un sistema informático ofrece servicios a usuarios humanos en el seno de una sociedad u organización. Algunos tipos de servicios son:

  Gestión de información (p.ej. transacciones financieras, archivos personales, etc.)
  Control de otras actividades (p.ej. procesos industriales, control de tráfico, etc.)
  Servicios empotrados en un aparato (p.ej. automóviles, robots...)
En muchos casos es cuestión de vida o muerte garantizar que el sistema informático funciona correctamente.

Los recursos del sistema informático son limitados: hay un coste inherente a su utilización, que puede ser repercutido en forma de tarifa o impuestos a los usuarios.

En toda sociedad u organización humanas existen unas restricciones de uso de la información: derechos de intimidad; información que representa o es sujeto de propiedad; etc. En tales casos es necesario restringir según qué usuario el acceso a la información del sistema.


SEGURIDAD INFORMÁTICA

Garantizar la integridad, disponibilidad y privacidad de la información contenida en un sistema informático

Permitir la distinción de clases de usuarios, con diferentes autorizaciones sobre el uso de los recursos del sistema



La seguridad informática es una materia amplia, que abarca entre otras cosas: los modos de trabajo de las personas, los dispositivos físicos de seguridad y la seguridad interna de la máquina y el sistema operativo.

Seguridad externa: la referente a las instalaciones del sistema informático y al acceso de personas al sistema y su información.

Contempla estas dos áreas:
  Seguridad física. De las instalaciones. Incluye medidas de prevención o recuperación de siniestros, y control de acceso al sistema.
  Seguridad operacional. Políticas y mecanismos de seguridad: niveles de autorización o responsabilidad, métodos de acceso, protocolos de comunicación...
Seguridad interna: la que se refiere a la circuitería del sistema, o a los asuntos de seguridad del sistema operativo.



PROTECCIÓN: Parte de la seguridad interna relativa al control de acceso de programas, procesos o usuarios a los recursos de un sistema informático.


Tipos de amenazas
contra la integridad del sistema



  Uso negligente o incorrecto
  Siniestros (daños físicos al sistema)
  Uso no autorizado o indebido
  Sabotaje (acto deliberado de alterar el funcionamiento del sistema)
Estas amenazas pueden ser accidentales o intencionadas.

Intrusión: Entrada no autorizada o indebida en el sistema. También llamada penetración.


Posibles efectos de las amenazas


Revelación de información no autorizada
Destrucción de información
Utilización indebida de servicios del sistema
Daños físicos al sistema
Degradación en el funcionamiento del sistema
Denegación de acceso a usuarios autorizados

Algunos intentos de intrusión


Basados en: oportunismo, búsqueda de información útil, programación, etc.


ž Robo o espionaje de contraseñas
ž Aprovechar descuidos
ž Recolección de basura
ž Inspección de información del sistema
ž Escucha electrónica
ž Prueba y error: programas analizadores de contraseñas, descifradores, etc.
  Programas señuelo: caballo de Troya; ardid de engaño
  Utilización de una "puerta trasera" (backdoor)
  Explotación de agujeros del sistema



Unidad 07 Seguridad y protección en los sistemas operativos

La función principal de un Sistema Operativo (SO) es la de tomar todos los recursos físicos de un sistema de computo y brindarlos de manera virtual, esto es logrado por medio de una abstracción del hardware (HW). En la actualidad no es suficiente con permitir el manejo y uso del HW si no se maneja seguridad y protección . 
 Es importante en definir claramente las diferencias entre estos dos conceptos
  • La seguridad : es la ausencia de un riesgo. Aplicando esta definición a al tema correspondiente, se hace referencia al riesgo de accesos no autorizados, de manipulación de información, manipulación de las configuraciones, entre otros
  • La protección : son los diferentes mecanismo utilizados por el SO para cuidar la información, los procesos, los usuarios, etc
Después de tener claro que quiere decir cada tema surgen numerosas ideas en nuestras mentes, ya que la seguridad es algo que manejamos en todos los aspectos de nuestras vidas, y por experiencia se sabe que no depende de un solo actor ( persona, computador , … ) si no que esta fuertemente ligada con todo lo que lo rodea, por esto la seguridad no solo es manejada por el sistema operativo si no que es necesario un refuerzo como otro software que comúnmente denominamos “antivirus”. Un SO como administrador de los recursos cumple funciones muy importantes en la instrumentación de la seguridad pero no engloba todos los aspectos de esta, la cual se fortalece según las necesidades y los usos ( es decir que según la necesidades y enfoques que dan los usuarios a los equipos estos cuentan con diferentes tipos de seguridad ). En la actualidad los conceptos e ideas tenidos sobre la seguridad han ido cambiando mucho, esto por que se entro a un era donde es posible los accesos remotos a los equipos, donde se busca que todo proceso sea mas fácil de realizar ( y sabemos que la seguridad es inversamente proporcional a la facilidad de uso ).
Servicios POSIX relacionados con memoria compartida

POSIX es el acrónimo de Portable Operating System Interface; la X viene de UNIX como seña de identidad de la API(es la abreviatura deAplication Programming Interface. Un API no es más que una serie de servicios o funciones que el Sistema Operativo ofrece al programador, como por ejemplo, imprimir un carácter en pantalla, leer el teclado, escribir en un fichero de disco, etc.).

El POSIX Se trata de un estándar que intenta asegurar la portabilidad entre diferentes sistemas operativos. Dentro del estándar se especifica el comportamiento de las expresiones regulares y de las herramientas más comunes que las usan.

Así mismo define un estándar de llamadas al sistema operativo. La librería estándar de C define unas funciones que deben estar en cualquier entorno de desarrollo de C.

El término fue sugerido por Richard Stallman en respuesta a la demanda de la IEEE, que buscaba un nombre fácil de recordar. Una traducción aproximada del acrónimo podría ser “Interfaz para Sistemas Operativos migrables basados en UNIX”.
 
Pequeña Introducción

Estos son una familia de estándares de llamadas al sistema operativo definido por el IEEE y especificado formalmente en el IEEE 1003. Persiguen generalizar las interfaces de los sistemas operativos para que una misma aplicación pueda ejecutarse en distintas plataformas. Estos estándares surgieron de un proyecto de normalización de las API y describen un conjunto de interfaces de aplicación adaptables a una gran variedad de implementaciones de sistemas operativos.

Especifica las interfaces de usuario y software al sistema operativo en 15 documentos diferentes. La línea de comandos estándar y las interfaces de scripting se basaron en Korn Shell. Otros programas a nivel de usuario (user-level), servicios y utilidades incluyen AWK, echo, ed y cientos de otras. Los servicios a nivel de programa requeridos incluyen definición de estándares básicos de I/O, (file, terminal, y servicios de red). También especifican una API para las bibliotecas de threading, que es muy utilizada en una gran variedad de sistemas operativos.

Una serie de pruebas acompañan al estándar POSIX. Son llamadas “PCTS” en alusión al acrónimo “Posix Conformance Test Suite”. Desde que la IEEE empezó a cobrar altos precios por la documentación de POSIX y se ha negado a publicar los estándares, ha aumentado el uso del modelo Single Unix Specification. Este modelo es abierto, acepta entradas de todo el mundo y está libremente disponible en Internet. Fue creado por The Open Group.

¿Dónde se ocupa?

Sincronización de procesos. Define funciones para permitir la sincronización de procesos a través de semáforos contadores.

Memoria compartida. Tienen espacios de direccionamiento que son independientes entre sí. Sin embargo, muchas aplicaciones de tiempo real (y también muchas que no son de tiempo real) necesitan compartir grandes cantidades de datos de una manera eficiente.

Señales de tiempo real. Permite notificar eventos que ocurren en el sistema, pero no es completamente satisfactorio para aplicaciones de tiempo real. Las señales no se almacenan en colas y, por tanto, algunos eventos se pueden perder. Las señales no están priorizadas, y esto implica tiempos de respuesta más largos para eventos urgentes.

Comunicación de procesos. Se especifica un mecanismo sencillo de colas de mensajes para la comunicación entre procesos. Las colas de mensajes están identificadas por un nombre perteneciente a un espacio de nombres dependiente de la implementación.

Entrada/Salida Asíncrona. Define funciones que permiten solapar el procesado de aplicaciones con las operaciones de entrada/salida iniciadas por la aplicación. Una operación de entrada/salida asíncrona es similar a las operaciones de entrada/salida normales, con la excepción de que una vez que la operación asíncrona ha sido iniciada por un proceso, este proceso no se suspende y puede continuar ejecutando instrucciones, en paralelo con la operación de entrada/salida

Extensión de threads. Define interfaces para soportar múltiples actividades concurrentes, denominadas threads, dentro de cada proceso POSIX. Los threads definidos en el POSIX  tienen un estado asociado más pequeño que el de un proceso. Todos los threads que pertenecen al mismo proceso comparten el mismo espacio de direccionamiento. Pueden ser implementados con tiempos de cambio de contexto y de creación y destrucción más bajos que los de los procesos. El POSIX.4a ha sido específicamente desarrollado para abordar las necesidades de los sistemas multiprocesadores de memoria compartida.

El sistema operativo y el manejo de archivos


MANEJO DE ARCHIVOS
Una de las principales funciones de un Sistema Operativo es la administración del almacenamiento de información, para lo cual es necesario contar con un “Sistema de Archivos”. Con este término se hace referencia, por un lado, a los mecanismos y estructuras que el sistema operativo utiliza para organizar la información en medios físicos tales como discos y diskettes (aspecto físico del sistema de archivos), y por otro a la visión que es ofrecida al usuario para permitir la manipulación de la información almacenada (una abstracción, o perspectiva lógica del sistema de archivos).
Se ofrece a continuación una descripción sintética de los aspectos lógicos del sistema de archivos de Linux.

ARCHIVOS Y DIRECTORIOS
El sistema de archivos de Linux está organizado en archivos y directorios. Un archivo es una colección de datos que se almacena en un medio físico y a la cual se le asigna un nombre. Los archivos, a su vez, están agrupados en conjuntos llamados directorios. Un directorio puede tener subdirectorios, formándose así una estructura jerárquica con la forma de un árbol invertido. El directorio inicial de esa jerarquía se denomina directorio raíz y se simboliza con una barra de división (/).
El sistema de archivos de un sistema Linux típico está formado por los siguientes directorios bajo el directorio raíz:
/bin Contiene los programas ejecutables que son parte del sistema operativo Linux. Muchos comandos de Linux como cat, cp, ls, more y tar están ubicados en este directorio.
/boot Contienen el kernel (o núcleo) de Linux y otros archivos necesarios para el administrador de inicio LILO, que realiza la carga inicial del sistema operativo cuando la computadora se enciende.
/dev Contienen todos los archivos de acceso a dispositivos. Linux trata cada dispositivo (terminales, discos, impresoras, etc.) como si fuera un archivo especial.
/etc. Contiene archivos de configuración del sistema y los programas de inicialización.
/home Contiene los directorios HOME de los usuarios. El directorio HOME el directorio inicial en el que se encuentra posicionado un usuario al ingresar al sistema, por lo que también se conoce como directorio de logín o de conexión.
/lib Contiene los archivos de biblioteca utilizados por las aplicaciones y utilidades del sistema, así también como las librerías pertenecientes a diferentes lenguajes de programación.
/lost+found Directorio para archivos recuperados por el proceso de reparación del sistema de archivos, que se ejecuta luego de una caída del sistema y asegura su integridad luego de que el equipo haya sido apagado de manera inapropiada.
/mnt Es un directorio vacío que se usa normalmente para montar dispositivos como disquetes y particiones temporales de disco.
/proc Contiene archivos con información sobre el estado de ejecución del sistema operativo y de los procesos.
/root Es el directorio HOME para el usuario root (administrador del sistema).
/sbin Contienen archivos ejecutables que son comandos que se usan normalmente para la administración del sistema.
/tmp Directorio temporal que puede usar cualquier usuario como directorio transitorio.
/usr Contiene archivos de programa, de datos y de librerías asociados con las actividades de los usuarios.
/var Contiene archivos temporales y de trabajo generados por programas del sistema. A diferencia de /tmp, los usuarios comunes no tienen permiso para utilizar los subdirectorios que contiene directamente, sino que deben hacerlo a través de aplicaciones y utilidades del sistema.