En los sistemas Unix, para cifrar los passwords su usa DES, y el funcionamiento es coger el dato "0" y se cifra, usando como clave la password introducida. Hoy en dia este no es el funcionamiento, ya que solo usando el "0" era facil de encontrar la clave, y lo que se hace es usar dos caracteres aleatorios en lugar del cero, y se almacenan junto al password,
Una vez dentro del sistema, hay otros casos de seguridad, para empezar
hay que distinguir entre sistemas monotarea, multitarea, monousuario y
multiusuario, siendo los multitarea y multiusuario los mas peligrosos,
ya que hay que separar los datos de cada usuario, al igual que los procesos
de cada uno, y separar de todos estos los del sistema operativo.
Para separar al sistema operativo se suelen utilizar dos metodos, uno
es darle al sistema operativo un espacio en la memoria reservado para el,
donde no puede acceder nadie, y la otra solución (mejor que la anterior)
es la paginación, que consiste en reservar la memoria por paginas,
y si no se indica lo contrario, cada programa tiene sus paginas, ademas
separadas como lectura, escritura, ejecución, no codigo...
Para proteger el sistema de ficheros, existen algunos esquemas, en los
que siempre se busca la versatilidad, importando menos el coste.
ACL (Access Control List): Lo tienen algunos sistemas operativos
y sirve para dar permisos a unas personas determinadas.
Permisos (en Unix): Pueden tener distinto significado entre directorios
y ficheros:
-Directorios:
r -> Permiso para Listar
w -> Modificar => Borrar (a menos que dentro tenga
un fichero en el que no tenemos permiso para borrarlo)
x -> Formar parte del path
t -> Cada persona solo puede trabajar con sus ficheros
-Ficheros:
r -> Permiso para Leer
w -> Permiso para Escribir
x -> Para Ejecutar
t -> Text
Tambien existe el bit "s" y sirve para que pueda correr un proceso como si fuese de un usuario distinto al que que realmente lo lanza.
rwsr-s--x pepe
canibales
juan usuario
Tenemos el fichero de pepe con los permisos indicados, y llega juan, como tiene permisos de ejecución lo puede ejecutar, pero a causa del bit s, en la tabla de procesos aparecerá que lo está ejecutanto pepe del grupo canibales (un ejemplo de esto es la ejecución de passwd, que en realidad se ejecuta como root, para poder escribir en el fichero de passwords).
El bit "s" tiene los efectos comentados, pero en realidad el sistema sabe quien lo está ejecutando realmente, para saberlo utiliza unas variables que tienen los procesos de forma que:
Si tenemos al usuario 501 del grupo 100 y ejecuta un fichero del root en el que existe el permiso "s":
Normal
Suid (s)
UID
501
501
GID
100
100
EUID
501
0
EGID
100
0
(La E de EUID y EGID significa efectivo)
De esta forma se sabe si lo está ejecutando realmente el root
o un usuario. Estos permisos tienen el peligro que si se habre un shell
así te conviertes en root, y aunque realment no lo eres ni tienes
los mismos privilegios, al arrancar con el EUID y el EGID del root se pueden
cambiar con un simple programa, del tipo: { setreuid(0,0);
execv("/bin/bash"...); ...}
Tambien se pueden utilizar algunos comandos para evitar posibles "fallos"
en la ejecución, como por ejemplo:
ulimit -c 0
-> Con esto se evita que se escriban los core
ulimit -v 40000 ->
Ningun programa puede usar mas de 40 Mby en RAM, si se pasa se cierra.
ulimit -t 20
-> No se permite que ningun proceso ocupe mas de 20 segundos
de procesador.
Copias de Seguridad
El objetivo es alcanzar la integridad y la disponibilidad de los datos,
y aparecen porque los sistemas de almacenamiento pueden estropearse y al
copiarlos se reduce la probabilidad que se estropeen todas las copias que
se tengan de los datos.
Los datos pueden estropearse por rotura fisica del dispositivo que
los contiene o por una mala utilización de los datos, que puede
ser tanto un borrado accidental como introducir datos incorrectos.
Cuando se restaura una copia de seguridad, hay que volver a hacer todo lo que se haya hecho desde que se hizo la copia has que se estropeó, y para evitar esto lo que se puede hacer es realizar copias de seguridad en tiempo real, es decir, guardar los datos en varios lugares a la vez, así es muy dificil que se estropeen todos, pero tiene el inconveniente que si se borra en un lugar, se borra en todos, por lo que este sistema solo protege de las roturas del medio fisico, si el fallo esta en los datos hay que restaurar una copia de seguridad periodica y volver a introducir los datos hasta el momento del fallo.
Las copias de seguridad pueden hacerse globales, que es cuando se copia todo el disco duro. Este tipo de copias tiene el inconveniente que el tamaño puede aumentar mucho, y podemos quedarnos sin "medios" para copiar tanta información, ya que las cintas o los dispositivos que se usen para guardar la copia tienen un tamaño limitado. Para evitar este problema de tamaño, lo que puede hacerse son copias, solamente, de los datos que se han modificado, y periodicamente una copia global.
Uno de los programas mas conocidos para realizar copias de seguridad es el tar, que realiza la copia directamente sobre la unidad de cinta por defecto:
tar c -> Crear
tar x -> Extraer
tar t -> Testear
Tambien se pueden introducir parametros para poder hacer la copia donde le digamos, y no sobre la unidad de cinta por defecto, siendo tan simple como decirle: tar cf fichero_destino.