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.