12
3.4.- Directorios de trabajo de los usuarios Un directorio es un conjunto de archivos, que a su vez pueden contener otros directorios. Los directorios también poseen permisos, y eso es muy importante para evitar que los usuarios sin experiencia, borren o modifiquen algo que no deban. El árbol de directorios nos ayuda a saber dónde se encuentra un archivo. En los sistemas UNIX no se dividen los directorios entre las distintas unidades físicas (C:, D:, etc.). Al contrario, para UNIX todos son ficheros y directorios. Éste considerará un disco duro o una disquetera como directorios. Por tanto, no tiene sentido escribir en la consola "C:", sino que nos iremos al directorio asociado a esa partición. Todos los ficheros y directorios de un sistema UNIX cuelgan de un directorio principal llamado "raíz", que se representa como "/". El directorio raíz es la base para todo el árbol de directorios, es allí donde están contenidos todos los directorios del sistema. Cuando el usuario accede a una sesión, Linux "envía" al usuario a su directorio de trabajo, que es su directorio personal (/home/nombre-usuario). En donde el usuario tiene la libertad absoluta para hacer lo que quiera con sus ficheros y directorios ubicados ahí. Sin embargo no podrá hacer todo lo que quiera en el directorio de otro usuario, ya que Linux tiene un sistema de permisos que concede o restringe

3.4.- Directorios de trabajo de los usuarios y 3.5.- Seguridad en los sistemas de archivos

Embed Size (px)

DESCRIPTION

Directorios de trabajo de los usuarios Seguridad en los sistemas de archivos

Citation preview

Page 1: 3.4.- Directorios de trabajo de los usuarios y 3.5.- Seguridad en los sistemas de archivos

3.4.- Directorios de trabajo de los usuarios

Un directorio es un conjunto de archivos, que a su vez pueden contener otros

directorios. Los directorios también poseen permisos, y eso es muy importante

para evitar que los usuarios sin experiencia, borren o modifiquen algo que no

deban. El árbol de directorios nos ayuda a saber dónde se encuentra un archivo.

En los sistemas UNIX no se dividen los directorios entre las distintas unidades

físicas (C:, D:, etc.). Al contrario, para UNIX todos son ficheros y directorios. Éste

considerará un disco duro o una disquetera como directorios. Por tanto, no tiene

sentido escribir en la consola "C:", sino que nos iremos al directorio asociado a

esa partición.

Todos los ficheros y directorios de un sistema UNIX cuelgan de un directorio

principal llamado "raíz", que se representa como "/". El directorio raíz es la base

para todo el árbol de directorios, es allí donde están contenidos todos los

directorios del sistema.

Cuando el usuario accede a una sesión, Linux "envía" al usuario a su directorio de

trabajo, que es su directorio personal (/home/nombre-usuario). En donde el

usuario tiene la libertad absoluta para hacer lo que quiera con sus ficheros y

directorios ubicados ahí. Sin embargo no podrá hacer todo lo que quiera en el

directorio de otro usuario, ya que Linux tiene un sistema de permisos que concede

o restringe libertades sobre los directorios y ficheros que hay en Linux. Aunque

existe un usuario "root", que sí tiene permiso de hacer cualquier cosa en Linux.

Para saber en qué directorio me encuentro basta con escribir el comando pwd

(Print Work Directory).

Ejemplo:

Comando: [felix@localhost felix]$ pwd

Resultado: /home/felix/

Para cambiar de directorio: Emplearemos el comando cd (Change Directory)

Page 2: 3.4.- Directorios de trabajo de los usuarios y 3.5.- Seguridad en los sistemas de archivos

Ejemplo:

Comando: [felix@localhost Comandos]$ cd /etc

Resultado: Nos vamos al directorio /etc

El camino o path

En cualquier sistema operativo moderno la estructura de archivos es jerárquica y

depende de los directorios. En general la estructura del sistema de archivos se

asemeja a una estructura de árbol, estando compuesto cada nodo por un

directorio o carpeta, que contiene otros directorios o archivos.

El camino o path de un fichero o directorio es la secuencia de directorios que se

ha de recorrer para acceder a un determinado fichero separados por /.

Existen dos formas del path o camino:

el camino absoluto que muestra toda la ruta a un fichero,

/home/luis/Carta.txt.

el path relativo a un determinado directorio, por ejemplo si no encontramos

en el directorio /home, el path relativo al fichero Carta.txt es luis/Carta.txt

Para complicar aún más las cosas, todos los directorios contienen dos directorios

especiales:

El directorio actual, representado por el punto (.)

El directorio padre, representado por dos puntos (..)

Estando en el directorio /home/pedro se puede acceder a Carta.txt con

/home/luis/Carta.txt (path absoluto) o bien ../luis/Carta.txt (path relativo). En luis

como ./Carta.txt o simplemente Carta.txt

Page 3: 3.4.- Directorios de trabajo de los usuarios y 3.5.- Seguridad en los sistemas de archivos

Tipos de usuarios

Usuario root:

También llamado superusuario o administrador.

Su UID (User ID) es 0 (cero).

Es la única cuenta de usuario con privilegios sobre todo el sistema.

Acceso total a todos los archivos y directorios con independencia de

propietarios y permisos.

Controla la administración de cuentas de usuarios.

Ejecuta tareas de mantenimiento del sistema.

Puede detener el sistema.

Instala software en el sistema.

Puede modificar o reconfigurar el kernel, controladores, etc.

Usuarios especiales

Ejemplos: bin, daemon, adm, lp, sync, shutdown, mail, operator, squid,

apache, etc.

Se les llama también cuentas del sistema.

No tiene todos los privilegios del usuario root, pero dependiendo de la

cuenta asumen distintos privilegios de root.

Lo anterior para proteger al sistema de posibles formas de vulnerar la

seguridad.

No tienen contraseñas pues son cuentas que no están diseñadas para

iniciar sesiones con ellas.

También se les conoce como cuentas de "no inicio de sesión" (nologin).

Se crean (generalmente) automáticamente al momento de la instalación de

Linux o de la aplicación.

Generalmente se les asigna un UID entre 1 y 100 (definifo en

/etc/login.defs)

Page 4: 3.4.- Directorios de trabajo de los usuarios y 3.5.- Seguridad en los sistemas de archivos

Usuarios normales

Se usan para usuarios individuales.

Cada usuario dispone de un directorio de trabajo, ubicado generalmente

en /home.

Cada usuario puede personalizar su entorno de trabajo.

Tienen solo privilegios completos en su directorio de trabajo o HOME.

Por seguridad, es siempre mejor trabajar como un usuario normal en vez

del usuario root, y cuando se requiera hacer uso de comandos solo de root,

utilizar el comando su.

En las distros actuales de Linux se les asigna generalmente un UID

superior a 500.

3.5.- Seguridad en los sistemas de archivos

Sistemas de archivos: Una norma básica de seguridad radica en la asignación a

cada usuario sólo de los permisos necesarios para poder cubrirlas necesidades de

su trabajo sin poner en riesgo el bajo de los demás.

Dentro del sistema Linux todo son archivos: desde la memoria física del equipo

hasta el ratón, pasando por módems, teclado, impresoras etc. Esta filosofía de

diseño es uno de los factores que más éxito y potencia proporciona a Linux, pero

también uno de los que más peligros, debido a que un simple error en un permiso

puede permitir a un usuario modificar todo el disco duro, o leer los datos tecleados

desde una terminal etc.

El sistema de archivos es la parte del núcleo (Kernel) más visible por los usuarios;

se encarga de abstraer propiedades físicas de los diferentes dispositivos para

proporcionar una interfaz única de almacenamiento: el archivo. Cada sistema

Linux tiene su sistema de archivos nativo.

Un primer criterio para mantener un sistema seguro es una correcta distribución

del espacio de almacenamiento. Esto limita el riesgo de que el deterioro de una

Page 5: 3.4.- Directorios de trabajo de los usuarios y 3.5.- Seguridad en los sistemas de archivos

partición afecte a todo el sistema. La pérdida se limitaría al contenido de esa

partición.

Protección de archivos

Los permisos de cada archivo son la protección más básica de estos objetos del

sistema operativo; definen quien puede acceder a cada uno de ellos, y de qué

forma puede hacerlo. Cuando hacemos un ls l podemos ver sus permisos junto al

tipo de archivo correspondiente en la primera columna de cada línea: user:~# ls l

texto.txt

Propiedad: Qué usuario y grupo posee el control de los permisos del inodo. Se

almacenan como dos valores numéricos, el uid (user id) y gid (group id).

Permisos: Bits individuales que definen el acceso a un Archivo o directorio. Los

permisos para directorio tienen un sentido diferente a los permisos para Archivos.

Más abajo se explican algunas diferencias.

Lectura (r):

Archivo: Poder acceder a los contenidos de un Archivo

Directorio: Poder leer un directorio, ver qué Archivos contiene

Escritura (w):

Archivo: Poder modificar o añadir contenido a un Archivo

Directorio: Poder borrar o mover Archivos en un directorio

Ejecución(x):

Archivo: Poder ejecutar un programa binario o guión de shell

Directorio: Poder entrar en un directorio

Atributos de un archivo: En el sistema de archivos ext2 (Second Extended File

System) de Linux existen ciertos atributos para los archivos que pueden ayudar a

incrementar la seguridad de un sistema.

Page 6: 3.4.- Directorios de trabajo de los usuarios y 3.5.- Seguridad en los sistemas de archivos

Almacenamiento seguro

Cifrado de archivos:

PGP: Pretty Good Privacy

GnuPG: Gnu Privacy Guard

TCFS: Transparent Cryptographic File System (Posiblemente prontamente

abandonado)

Cryptographic File System CFS

Auditoria del sistema

Casi todas las actividades realizadas en un sistema Linux son susceptibles a ser

monitorizadas: desde las horas de acceso de cada usuario al sistema hasta las

páginas web más frecuentemente visitadas, pasando por los intentos fallidos de

conexión, los programas ejecutados o incluso el tiempo de CPU que cada usuario

consume.

Es evidente que esta facilidad para recolectar información tiene grandes ventajas

para la seguridad. Existe también una gran desventaja, ya que la gran cantidad de

información que potencialmente se registra puede ser aprovechada para crea

ataques de negaciones de servicio.

Control de acceso de red

Inetd:

Al crecer el número de servicios que se necesitaban, se optó por una mejor idea,

se empezó a utilizar un sólo demonio llamado /etc/inetd (El daemon de Internet).

Este programa escuchaba en varios puertos a la vez y ejecutaba los servidores

que se necesitaran en el momento en que se recibía la petición de conexión.

Cuando empieza su ejecución revisa el archivo de configuración /etc/inetd.conf

para determinar qué servicios de red debe controlar.

Page 7: 3.4.- Directorios de trabajo de los usuarios y 3.5.- Seguridad en los sistemas de archivos

¿Cómo funciona?

Cuando un host cliente intenta conectarse a un servicio de red controlado por

inetd, el súper servicio recibe la petición y verifica por cualquier regla de control de

acceso wrappers TCP.

Si se permite el acceso, inetd verifica que la conexión sea permitida bajo sus

propias reglas para ese servicio y que el servicio no esté consumiendo más de la

cantidad de recursos o si está rompiendo alguna regla. Luego comienza una

instancia del servicio solicitado y pasa el control de la conexión al mismo.

TCP wrappers

El wrappers TCP proporciona control de acceso basado en host a los servicios de

red. El componente más importante dentro del paquete es la librería

/usr/lib/libwrap.a.

Cuando un intento de conexión es hecho a un servicio wrapped TCP, el servicio

primero referencia los archivos de acceso de host (/etc/hosts.allow y

/etc/hosts.deny) para determinar si el cliente tiene permitido conectarse. Luego

utiliza el demonio syslog (syslogd) para escribir el nombre del host solicitante y el

servicio solicitado a /var/log/secureo/var/log/messages.

Si a un cliente se le permite conectarse, los TCP wrappers liberan el control de la

conexión al servicio solicitado y no interfieren más con la comunicación entre el

cliente y el servidor. Algunas de los demonio que utilizan TCP wrappers son

/usr/sbin/sshd, /usr/sbin/sendmail, y /usr/sbin/xinetd.

Técnicas de autentificación

Método clásico

– Uso del archivo /etc/passwd

Uno podría tratar de romper la contraseña, aunque esto es poco probable, el atacante cifrara una palabra junto a un determinado salt, y comparar el resultado con la cadena almacenada en el archivo de claves.

Page 8: 3.4.- Directorios de trabajo de los usuarios y 3.5.- Seguridad en los sistemas de archivos

De esta forma, un atacante leerá el archivo /etc/passwd y mediante un programa adivinador (o crackeador) como Crack o John the Ripper cifrará todas las palabras de un archivo denominado diccionario, comparando el resultado obtenido en este proceso con la clave cifrada del archivo de contraseñas; si ambos coinciden, ya ha obtenido una clave para acceder al sistema de forma no autorizada

Shadow Password

La idea básica de este mecanismo es impedir que los usuarios sin privilegios puedan leer el archivo donde se almacenan las claves cifradas. En equipos con /etc/shadow el archivo /etc/passwd sigue siendo legible para todos los usuarios, pero a diferencia del mecanismo tradicional, las claves cifradas no se guardan en él, sino en el archivo /etc/shadow, que sólo el root puede leer.

El aspecto de /etc/shadow es en cierta forma similar al de /etc/passwd que ya hemos comentado: existe una línea por cada usuario del sistema, en la que se almacena su login y su clave cifrada. Sin embargo, el resto de campos de este archivo son diferentes; corresponden a información que permite implementar otro mecanismo para proteger las claves de los usuarios.

Claves de un solo uso (one time password)

Existen dos métodos para implementar esta técnica:

Tokens de hardware: es un dispositivo electrónico que se le da a un usuario autorizado de un servicio computarizado para facilitar el proceso de autenticación.

Code books: es un método para implementar un algoritmo de cifrado por bloques, cuando se necesita descomponer el texto de entrada en bloques de longitud fija

Bibliografía:

Baldomero Sánchez Pérez. (9 de febrero de 2015). Cuaderno Práctico de Linux. Sistemas

Operativos Monopuesto. Ciclo Formativo de Grado Medio. Reino Unido.

Anónimo. (S/N). ARBOL DE DIRECTORIOS, INSTALACION Y DESINSTALACION DE PAQUETES,

GIMP. 13 de octubre de 2015, de Universidad de Antioquia Sitio web:

http://docencia.udea.edu.co/cci/linux/dia4/directorio.htm#directorio