[Indice][Tema
1] [Tema 2] [Tema
3] [Tema 4] [Tema 5]
Tema 4 Seguridad en los Sistemas Operativos
1.- Autenticación de usuarios
Los sistemas operativos multiusuarios es necesario
que antes de empezar la sesión autentiquen al usuario que va a acceder
al sistema.
Para ello el sistema más común es
el de usuario (login) y contraseña (password).
Las características más importantes
para una buena password son:
-
Tiene que ser de la longitud máxima que nos deje el sistema, así
cuanto más larga es más difícil es el ataque por fuerza
bruta.
-
Lo más aleatoriamente posible. Si utilizas como password tu login
o el nombre de tu gato es muy probable que un intruso mediante un ataque
por diccionario averigüe tu password
-
NO apuntar nunca la password en papel ya que te arriesgas a que alguien
encuentre ese papel y entre en el sistema.
-
Ademas hay varias ayudas del sistema operativo para mantener tu clave segura:
cambiar cada cierto tiempo, efectuar ataques por diccionario para verificar
claves ...
Estas características son comunes también
para cualquier password que tenemos que elegir.
¿Como se almacenan las passwords?
-
Texto en claro: no es muy factible ya que si alguien entra en el sistema
puede ver nuestra clave
-
Cifrada: cuando el usuario se autentica se cifra la password que el usuario
ha introducido y se compara con la cifrada que esta almacenada. De este
modo no esta en ningún momento la clave buena en claro en el sistema
En UNIX existe un directorio donde se almacenan todas
las passwords es el /etc/passw/ .
Para almacenarla en este directorio es cifrar el
dato 0 utilizando como clave la password y el resultado se expande a 11
bits y se añaden dos bits de semilla. Estos trece bits son los que
se almacenan.
Cuando un usuario introduce su password lo que hace
el sistema es cifrar el dato 0 con la password que ha introducido el usuario
y compara con lo que tiene almacenado.
2.- Una vez autenticado
Hay diferentes tipos de sistemas operativos.
Según el número de usuarios que lo
utilicen (no es necesario todos a la vez):
-
Multiusuario: el sistema es utilizado por varios usuarios.
-
Monousuario: el sistema es utilizado por un único usuario.
Según el número de tareas que realicen
simultáneamente:
Dependiendo si es un tipo u otro nos preocuparan unas
cosas u otras en la seguridad.
Si es multiusuario hay que tener en cuenta las diferentes
partes privadas de cada usuario que hay que proteger.
En los sistemas multiusuario y multitarea (sobre
todo cuando trabajan varias personas a la vez) hay que tener en cuenta
no solo los archivos del disco duro, sino que también hay que tener
en cuenta que los datos creados por un usuario (en la memoria RAM o en
la CPU) solo los vea el usuario que los ha creado.
En los sistemas multitarea se utilizan técnicas
que buscan la disponibilidad ( que otro usuario no borre tu RAM mediante
una mala inicialización de punteros ).
La CPU marca el inicio y el fin de la memoria de
cada usuario también se protege al programador de sus "olvidos"
que pueden borrar partes fundamentales de la memoria RAM para el sistema.
Lógicamente en los sistemas que solo tienen
un usuario y no están conectados a una red externa que facilite
la entrada a individuos externos al sistema no hay que preocuparse por
la seguridad, aunque en esos casos el peor enemigo es el propio sistema
operativo (que te borra algún archivo o se pierde la integridad
que es otro objetivo de la seguridad ).
3.- Proteger el sistema de archivo.
Linux tiene un sistema basado en unas propiedades
(lectura, escritura, ejecución) para cada conjunto de usuarios (el
usuario mismo, el grupo al que pertenece y el resto de la gente).
Cuando ejecutas en el shell ls -l aparece lo primero
los permisos de cada conjunto ordenados de la siguiente forma:
Según sea un fichero o un directorio estos permisos
significan una cosa u otra:
Para los directorios:
-
r : listar el directorio
-
w : modificar el directorio (borrar algún componente).
-
x : formar parte del PATH (el usuario que tiene este permiso puede ejecutar
cualquier ejecutable que se encuentre en dicho directorio).
Para los archivos :
-
r : leer el archivo.
-
w: modificar.
-
x: ejecutar
En UNIX existe otro bit "t" que significa que el archivo
vinculado permanece en memoria RAM , no en swap.
Cada proceso tiene:
-
Uid: identificador de usuario.
-
Guid: identificador de grupo.
Cuando se accede a un fichero se mira el uid y se busca
si ese usuario tiene permiso, si falla se procede a ver si pertenece al
grupo del propietario y se comprueba que tiene permiso y si fracasa esto
se hace lo propio con "other".
El fichero puede llevar también el bit "s",
que se activará si está permitido la ejecución. Este
permiso se refiere a que el proceso asociado corre con otro usuario diferente
al que lo lanza.
Este bit es peligroso para la seguridad del sistema
operativo y hay que controlar que sean los menos posibles.
4.- Copias de seguridad.
El objetivo fundamental de las copias de seguridad
es alcanzar dos de los objetivos de cualquier sistema de seguridad: la
integridad
de los datos y la disponibilidad.
Este método surge porque no podemos conseguir
una fiabilidad del 100% de los dispositivos de almacenamiento, ya que no
solo intervienen factores del hardware sino amenazas externas e incluso
el mismo usuario del sistema pueden borrar archivos valiosos.
La copia de seguridad del sistema tiene como problema
que debido al aumento considerable de la capacidad de los dispositivos
de almacenamiento, la propia copia tiene que tener una capacidad similar
a la del propio dispositivo.
La copia de seguridad de un sistema se debe de hacer
en una frecuencia proporcional a la cantidad de información que
se modifica por unidad de tiempo. Es decir que si en un sistema solo se
modifican archivos el día 1 de cada mes es una tontería hacer
una copia de seguridad todos los días porque realmente la información
que estamos copiando una y otra vez es la misma.
Así pues habrá sistemas que será
viable una copia a tiempo real, es decir cuando modificamos un archivo
del disco duro principal hacerlo también en uno secundario. Pero
esta forma de copia tiene una pega y es que si borramos accidentalmente
un fichero en el original también se perderá en la copia.
Según la frecuencia de actualización
de la copia de seguridad podemos hablar de:
-
Copias totales: consiste en copiar todo el dispositivo de almacenamiento
íntegramente. Lógicamente esta opción solo tiene cabida
(de manera razonal) cuando se actualiza el software y el propio sistema
operativo, normalmente se efectúa una copia del sistema antes de
la actualización y otra una vez actualizado. Es aconsejable realizarla
en horario en el que no haya muchos usuarios utilizando la maquina porque
puede colapsar el sistema.
-
Copias de lo modificado: estas copias se suelen realizar diariamente o
incluso dos veces al día en dispositivos con mucho transito de información.
Una sencilla forma y eficaz de implementación es utilizar una cinta
(disco óptico u otro dispositivo de almacenamiento) para cada día
de la semana porque si siempre utilizamos la misma cinta para las actualizaciones,
si se produce una pérdida de un archivo desde la última copia
y no nos damos cuenta perderemos el archivo porque lo machacaremos. Así
con el modo planteado tenemos la información de un día antes,
de dos,..., de una semana anterior.
Una forma eficaz de realizar copias de seguridad es
a través de la red. Para ello se utilizan dos máquinas, en
una de ellas se establecen unos ficheros para guardar la copia de seguridad
de la otra y análogamente también se guarda en la segunda
los ficheros de seguridad de la otra. La probabilidad que se estropeen
los dispositivos de almacenamiento de las dos máquinas es muy baja.
Para esta implementación hay que tener en
cuenta que el traspaso de información se hace a través de
la red, hay que vigilar quien puede o podría ver esa información
y si los datos lo requieren por confidencialidad ocultarla.
Otra cosa que hay que tener en cuenta es la velocidad
con que circula la información por la red y la velocidad que la
recibe el receptor porque si necesitamos transferir mucha información
puede ser mortal.