Tema 4. Seguridad en sistemas operativos


1. Identificación y autentificación Passwords

Es un método de seguridad que consiste en la identificación del usuario que inicia una sesión en la máquina. El sistema operativo pedirá el user y la password y comprobará que sean correctos. Si no lo fueran el usuario no podría empezar una sesión.
El user es único, cada usuario tiene uno distinto y no puede haber dos repetidos. La password la elige el usuario y tiene que ser secreta. Hay algunos sistemas que cuando el usuario elige una password la examinan y si consideran que es fácil de descubrir la rechazan.

Este método es sensible a ataques. Los ataques se realizan mediante diccionario, es decir, se van probando palabras hasta que se da con la password. Por ello hay que buscar contraseñas raras que incluyan todo tipo de caracteres y mejor cuanto más largas y evitar aquellas que tengan algo que ver con nosotros.

Las passwords se guardan en el sistema encriptadas y para validar las contraseñas que introducen los usuarios se cifran con mismo algoritmo con el que fueron cifradas as originales y se comparan. Si son iguales será válida la contraseña introducida y se le permitirá el inicio de sesión. Al archivo donde se encuentran las contraseñas cifradas guardadas solo tiene acceso el administrador del sistema. Este método puede quedar comprometido si se conocen el algoritmo de cifrado y la clave usada.
Se puede aumentar la seguridad si se utiliza un algoritmo de cifrado solo, que no tenga función inversa de descifrado.
Hay otro método bastante seguro: Lo que se guarda en el fichero ect/passwd no es la contraseña cifrada sino un texto cifrado tomando como clave la contraseña del usuario, así cuando se introduce una contraseña se cifra el texto con ella y luego se comprueba el resultado con lo que hay en el fichero ect/passwd. Para evitar que el problema de que haya dos usuarios con la misma contraseña, cuando se crea la password se genera aleatoriamente un número. Este número se guardará junto con el texto cifrado con la password concatenada con este número y el nombre de usuario.

En algunos sistemas se requiere el uso de una doble password. Una para acceder al sistema y otra para acceder a determinados puntos del sistema.
 

2. Políticas, modelos, mecanismos

Podemos encontrar 4 tipos de sistemas:

-- monotarea, monousuario.
-- multitarea,monousuario.
-- multitarea, multiusuario.

Dependiendo el tipo de sistema se mantendrá una política de seguridad u otra.
Los sistemas monousuario no suelen necesitar el uso de password.
En los sistemas multiusuario hay que llevar un control y marcar las zonas de memoria de cada usuario para que el resto no puede acceder.

Un método es el de delimitar la memoria con un valor base y otro límite, fuera de los cuales el usuario no puede acceder. Si lo intentase se produciría una violación de privilegios. Esto sirve también para proteger al sistema operativo de ser alterado. Esta implementación se hace a nivel de hardware en los procesadores de memoria lineal.

En la memoria paginada el usuario tiene unas páginas asignadas y si accede a otras provoca una violación de permisos.
 

TRABAJAR CON FICHEROS

Cada usuario posee un directorio en el cual tiene sus ficheros. Un fichero pertenecerá a un solo usuario. Y será él el que les de los permisos al resto de usuarios para que puedan acceder o no a sus ficheros.

La función open, es decir el abrir un fichero, es muy lenta. El acceder a un fichero siempre tiene un coste.
Para acelerar este proceso se implementaron las listas de control de acceso ACL. Estas listas proporcionan un nivel mayor de seguridad. El proceso consiste en que cada vez que un usuario quiere acceder a un fichero o a un directorio se consulta la lista para ver si dicho acceso es autorizado o denegado.
Las listas se pueden implementar de dos maneras:
-- Lista que contiene, para cada fichero dado, los usuarios que pueden acceder a él.
-- Lista que contiene, para cada usuario, los ficheros a los que puede acceder.
 

Un directorio tiene permisos para listarlo, modificarlo o que forme parte del path. (r,w,x)
Un fichero tiene permisos de lectura, escritura o ejecución. (r,w,x)
 

3. Seguridad en UNIX

En UNIX los permisos de usuarios se agrupan en tres:

- El usuario propio
- EL grupo al que pertenece
- EL resto de usuarios

Esto hace que no se pueda especificar los permisos para usuarios en concreto.
 

Los permisos en ficheros es la protección más básica que podemos obtener en UNIX. Cuando hacemos un listado largo de ciertos archivos podemos ver sus permisos junto al tipo de fichero correspondiente, en la primera columna de cada línea:
-rwxr--r--   3 root     sys         2689 Dec  1  1998 /sbin/rc0

Los permisos se dividen en tres ternas en función de a qué usuarios afectan; cada una de ellas indica la existencia o la ausencia de permiso para leer, escribir o ejecutar el fichero: una r indica un permiso de lectura, una w de escritura, una x de ejecución y un '-' indica que el permiso correspondiente no está activado.
La primera terna afecta al propietario del fichero, la segunda al grupo del propietario cuando lo creó y la tercera al resto de usuarios.

Bit suid.
Se reconoce porque en la primera terna de los permisos aparece una s. Este bit indica que todo aquel que ejecute el fichero va a tener durante su ejecución los privilegios de quien lo creó, es decir, trabajaría con el uid del propietario. Con esto surge el problema del overflow. Si se produce un desbordamiento puede que el que este ejecutando el programa obtenga permisos y privilegios que no e corresponden. El peor de los casos el usuario que lo ejecute puede obtener una shell de root.

Bit sgid
Es lo mismo que el anterior pero en vez de trabajar con el uid del propietario se trabajaría con el uid del grupo al que pertenece el usuario.
 

La seguridad de los ficheros en UNIX se puede aumentar con el uso de atributos para los ficheros.