Si tratamos los aspectos de la seguridad desde la base, hemos de considerar al arranque del ordenador. Es evidente que podemos montar un servidor de manera totalmente segura, pero que si cualquiera puede acceder a la bios de esa maquina, esta se convertira en un sistema potencialmente inseguro ya que cualquiera podra modificar los parametros de la maquina dejandola inutilizable o dejandola en una situación que permita acceder al sistema con total impunidad.
Es un caso clasico de sistema inseguro aquel en el cual la bios permite arrancar de disquete, de este modo cualquiera podria arrancar con un disquete del operativo y montando las particiones necesarias, modificar datos como el fichero de passwords, el fichero shadow, etc...
Lilo es el primer paso por el que atraviesa un sistema linux en su arranque, en este se pueden introducir parametros que le seran pasados al kernel del sistema operativo y que pueden influir decisivamente en el funcionamiento del sistema. Para que esto no suceda hemos de intentar que el retardo entre la carga de lilo y la del sistema operativo sea la minima para que nadie pueda introducir parametros innecesarios
En el caso de que sea necesario introducir parametros en lilo, este puede obligar a introducir una password para hacerlos efectivos, veamos algunas líneas del fichero lilo.conf utiles para estos fines
delay=X restricted password=algun_password
El delay nos dará el tiempo que tarda lilo en comenzar el arranque, es aconsejable que sea poco o ninguno si no se va a producir selección en los arranques o no hay que pasar parametros. El nivel de seguridad C2 ( "Libro Naranja" ) que se corresponde con los sistemas *nix habituales obliga a que no haya retardo en el arranque.
El parametro "restricted" nos impone la condicion de teclear un password cuando vaya a ser introducido algún parametro impidiendo de esta manera que cualquiera puede cambiar el arranque de nuestro sistema.
Con "password" se exige un password para permitir el arranque del sistema.
El siguiente paso a abordar en un sistema *nix son los permisos. Los permisos nos dan la gran ventaja de poder autorizar o desautorizar a los demas usuarios del sistema a acceder a nuestros datos pudiendo categorizarlos por usuarios del mismo grupo al que pertenece el fichero, propietario del fichero y el resto de los usuarios. Es evidente que la seguridad de un sistema comienza por tener los permisos adecuados en los ficheros, si nosotros tenemos un fichero
/etc/passwdcon permisos
rwxrwxrwxcualquiera podra escribir en el fichero cambiando cosas a su antojo y haciendo el sistema potencialmente inseguro.
Los ficheros setuids son aquellos que dan permiso de ejecución a otras personas pero que cuando son ejecutados, se ejecutan como el propietario del fichero. En sistemas *nix existen dos credenciales para un proceso la real y la efectiva, si un fichero no es setuid ambas coincidirán, pero si es setuid la credencial real será la del usuario que ejecuta este fichero y la efectiva será la del usuario propietario del fichero.
Los ficheros setuid pueden plantear serios problemas de seguridad ya que cualquier cosa que hagamos con estos programas será hecha por el usuario propietario ( generalmente el root ), por tanto si el programa tiene algún fallo de programacion o se consigue que ejecute codigo arbitrario, eso será efectuado con las credenciales del usuario que ejecuta el proceso y no con las nuestras.
Veremos mas adelante que la aparición de ficheros con setuid que no deberían de serlo ( por ejemplo un sh setuid), puede suponer que hemos sufrido una intrusión en nuestros sistema.
Es conveniente no permitir setuid cuando montamos particiones, muchos administradores no permiten setuids en /home, evitando asi problemas derivados de estos setuids