Siguiente: Listas de control de
Subir: El sistema de ficheros
Anterior: Los bits SUID, SGID
Índice General
En el sistema de ficheros ext2 (Second Extended File System) de
Linux existen ciertos atributos para los ficheros que pueden ayudar a
incrementar la seguridad de un sistema. Estos atributos son los mostrados en
la tabla 4.1.
Tabla 4.1:
Atributos de los archivos en ext2fs.
Atributo |
Significado |
A |
Don´t update Atime |
S |
Synchronous updates |
a |
Append only |
c |
Compressed file |
i |
Immutable file |
d |
No Dump |
s |
Secure deletion |
u |
Undeletable file |
|
De todos ellos, de cara a la seguridad algunos no nos interesan demasiado,
pero otros sí que se deben tener en cuenta. Uno de los atributos
interesantes - quizás el que más - es `a'; tan importante es que
sólo el administrador tiene el privilegio suficiente para activarlo o
desactivarlo. El atributo `a' sobre un fichero indica que este sólo se
puede abrir en modo escritura para añadir datos, pero nunca para eliminarlos.
>Qué tiene que ver esto con la seguridad? Muy sencillo: cuando un intruso ha
conseguido el privilegio suficiente en un sistema atacado, lo primero que suele
hacer es borrar sus huellas; para esto existen muchos programas (denominados
zappers, rootkits...) que, junto a otras funciones, eliminan
estructuras de ciertos ficheros de log como lastlog, wtmp o
utmp. Así consiguen que cuando alguien ejecute last, who,
users, w o similares, no vea ni rastro de la conexión que el
atacante ha realizado a la máquina; evidentemente, si estos archivos de log poseen el atributo `a' activado, el pirata y sus programas lo tienen
más difícil para borrar datos de ellos. Ahora viene la siguiente
cuestión: si el pirata ha conseguido el suficiente nivel de privilegio como
para poder escribir - borrar - en los ficheros (en la mayoría de Unices
para realizar esta tarea se necesita ser root), simplemente ha de
resetear el atributo `a' del archivo, eliminar los datos comprometedores
y volver a activarlo. Obviamente, esto es así de simple, pero siempre
hemos de recordar que en las redes habituales no suelen ser atacadas por piratas
con un mínimo nivel de conocimientos, sino por los intrusos más novatos
de la red; tan novatos que generalmente se limitan a ejecutar programas desde
sus flamantes Windows sin tener ni la más remota idea de lo que
están haciendo en Unix, de forma que una protección tan elemental como un
fichero con el flag `a' activado se convierte en algo imposible de
modificar para ellos, con lo que su acceso queda convenientemente registrado en
el sistema.
Otro atributo del sistema de archivos ext2 es `i' (fichero
inmutable); un archivo con este flag activado no se puede modificar de
ninguna forma, ni añadiendo datos ni borrándolos, ni eliminar el archivo,
ni tan siquiera enlazarlo mediante ln. Igual que sucedía antes,
sólo el administrador puede activar o desactivar el atributo `i' de
un fichero. Podemos aprovechar esta característica en los archivos que
no se modifican frecuentemente, por ejemplo muchos de los contenidos en
/etc/ (ficheros de configuración, scripts de arranque...
incluso el propio fichero de contraseñas si el añadir o eliminar usuarios
tampoco es frecuente en nuestro sistema); de esta forma conseguimos que
ningún usuario pueda modificarlos incluso aunque sus permisos lo permitan.
Cuando activemos el atributo `i' en un archivo hemos de tener siempre
en cuenta que el archivo no va a poder ser modificado por nadie, incluido el
administrador, y tampoco por los programas que se ejecutan en la máquina;
por tanto, si activáramos este atributo en un fichero de log, no
se grabaría ninguna información en él, lo que evidentemente no es
conveniente. También hemos de recordar que los archivos tampoco van a poder
sen enlazados, lo que puede ser problemático en algunas variantes de Linux
que utilizan enlaces duros para la configuración de los ficheros de
arranque del sistema.
Atributos que también pueden ayudar a implementar una correcta política
de seguridad en la máquina, aunque menos importantes que los anteriores, son
`s' y `S'. Si borramos un archivo con el atributo `s' activo,
el sistema va a rellenar sus bloques con ceros en lugar de efectuar un simple
unlink(), para así dificultar la tarea de un atacante que intente
recuperarlo; realmente, para un pirata experto esto no supone ningún problema,
simplemente un retraso en sus propósitos: en el punto 4.7 se
trata más ampliamente la amenaza de la recuperación de archivos, y también
ahí se comenta que un simple relleno de bloques mediante bzero()
no hace que la información sea irrecuperable.
Por su parte, el atributo `S' sobre un fichero hace que los cambios
sobre el archivo se escriban inmediatamente en el disco en lugar de esperar
el sync del sistema operativo. Aunque no es lo habitual, bajo ciertas
circunstancias un fichero de log puede perder información que aún
no se haya volcado a disco: imaginemos por ejemplo que alguien conecta al
sistema y cuando éste registra la entrada, la máquina se apaga
súbitamente; toda la información que aún no se haya grabado en disco se
perderá. Aunque como decimos, esto no suele ser habitual - además, ya hemos
hablado de las ventajas de instalar un S.A.I. -, si nuestro sistema se apaga
frecuentemente sí que nos puede interesar activar el bit `S' de
ciertos ficheros importantes.
Ya hemos tratado los atributos del sistema de ficheros ext2 que pueden
incrementar la seguridad de Linux; vamos a ver ahora, sin entrar en muchos
detalles (recordemos que tenemos a nuestra disposición las páginas del
manual) cómo activar o desactivar estos atributos sobre ficheros, y también
cómo ver su estado. Para lo primero utilizamos la orden chattr, que
recibe como parámetros el nombre del atributo junto a un signo `+' o
`-', en función de si deseamos activar o desactivar el atributo, y
también el nombre de fichero correspondiente. Si lo que deseamos es visualizar
el estado de los diferentes atributos, utilizaremos lsattr, cuya salida
indicará con la letra correspondiente cada atributo del fichero o un signo
- en el caso de que el atributo no esté activado:
luisa:~# lsattr /tmp/fichero
-------- /tmp/fichero
luisa:~# chattr +a /tmp/fichero
luisa:~# chattr +Ss /tmp/fichero
luisa:~# lsattr /tmp/fichero
s--S-a-- /tmp/fichero
luisa:~# chattr -sa /tmp/fichero
luisa:~# lsattr /tmp/fichero
---S---- /tmp/fichero
luisa:~#
Siguiente: Listas de control de
Subir: El sistema de ficheros
Anterior: Los bits SUID, SGID
Índice General
2003-08-08