Seguridad en Sistemas Operativos

ÍNDICE
  1. Introducción
  2. Identificación y autenticación.Passwords.
  3. Sistemas monousuario/multiusuario, monotarea/multitarea
  4. Seguridad en UNIX.
    1. Acceso a ficheros y directorios.
    2. Bit suid.
    3. Passwords.
    4. Mantener seguro el sistema.
    5. Actuación ante ataques.
  5. Consejos de seguridad para otros SO's
    1.  
    2. Windows 95-98
    3. Windows NT
  6. Copias de seguridad
    1.  
    2. Introducción
    3. Sistemas RAID
  7. Conclusión

 
 
 
 
 
 

Introducción


La seguridad dentro de cualquier sistema operativo debería ser de especial atención, tanto de cara a empresas como a particulares, pues el resultado de un deficiente nivel de seguridad puede repercutir en serios problemas en caso de intrusión no autorizada.

Para alcanzar la seguridad dentro del sistema operativo, éste tendrá que hacerlo ya sea por medio de "passwords" (para restringir el acceso al sistema), utilizando las opciones de configuración pertinentes de cada SO, u otros.
 
 
 
 
 
 

Identificación y autenticación. Passwords


Antes de poder entrar a nuestro sistema, será conveniente cerciorarnos de la identidad del usuario que intenta acceder, además de asegurarnos de que realmente es quien dice ser. Si bien existen técnicas más o menos sofisticadas (sistemas para escanear el iris de los ojos, huellas dactilares,...), uno de los más usados y simples es el empleo de passwords.

Cuando vayamos a entrar al sistema se nos requerirá:

El proceso a seguir será verificar que dicho usuario existe y la contraseña proporcionada es la correcta.

Por último, será preciso señalar que la efectividad de las contraseñas dependen de varios factores:

  1. La ocultación de la misma. Evitar que nadie más pueda conocerla.
  2. Su "oscuridad". Evitar que sea fácilmente deducible, intentando hacerla lo más rebuscada posible.
  3. El tiempo que lleve en uso. No mantenerla eternamente, sino cambiarla cada cierto tiempo.

 
 
 
 

Sistemas monousuario/multiusuario, monotarea/multitarea


Tenemos que hacer una diferenciación dentro de los SO's, porque la seguridad no siempre será la misma.

Un SO podría dividirse de la siguiente forma:

 
  • Monousuario
  • Multiusuario
  • Monotarea
  • Multitarea
Monousuario:
 
 
Un único usuario con permiso para hacer cualquier cosa.
-No requiere password.
Multiusuario:
 
 
 
Varios usuarios que acceden simultáneamente al mismo SO.
-Requiere password.
-Proteger la información de los diferentes usuarios.
 
Los siguientes serán independientes de si el SO es monousuario o multiusuario:
Monotarea:
 
 
Un único proceso en ejecución cada vez.
-No requiere protección sobre el proceso.
Multitarea:
 
 
 
Varios procesos que se ejecutan simultáneamente.
-Proteger los procesos (un proceso no puede acceder
 a la memoria de otro).

 
 
 

Seguridad en UNIX


A continuación se indicará la forma que tiene este SO para proporcionar seguridad, además algunar recomendaciones.

Acceso a ficheros y directorios

En UNIX, tenemos la posibilidad de controlar los accesos a través de los diferentes directorios o ficheros por diferentes métodos, por ejemplo:
Permisos
Consiste en otorgar diferentes tipos de permisos tanto a los archivos como a los directorios. Los más importantes son: Su efecto dependerá de a qué se le asigne:
 
Fichero  
  r
w
x
  Leer
Escribir
Ejecutarlo
Directorio  
  r
w
x
  Ver contenido
Modificar
Buscar un fichero concreto dentro del mismo
Estos permisos tendrán la siguiente estructura:
 
Fichero:   -   rwx   r-x   r-x
Directorio:   d   rwx   r-x   r-x
En donde, dividido de esta forma, cada bloque de permisos tendrá el siguiente significado:
  1. Tipo de archivo (fichero ordinario, directorio, link,...).
  2. Permisos para el usuario propietario.
  3. Permisos para el grupo al que pertenezca el usuario.
  4. Permisos para otros (el resto de personas).

ACL
Esta lista de control de accesos consiste en una extensión de los permisos ya explicados. Con su empleo conseguiremos afinar más la funcionalidad de los permisos puesto que podremos limitar/permitir el acceso a individuos o grupos concretos sin que queden afectados los permisos originales. Su formato es el siguiente:

 
extended permissions: 
  enabled | disabled
    permit   Mode  UserInfo...: 
    deny     Mode  UserInfo...:
    specify  Mode  UserInfo...:
Activar o no los permisos extendidos
Añadir permisos al usuario
Sustraer permisos al usuario
Si cumple lo especificado, éstos permisos               
En donde:
  • Mode serán los permisos a aplicar.
  • UserInfo representará al usuario/s a quien le serán modificados los permisos.

Ejemplo:

attributes: SUID
base permissions:
      owner(frank):  rw-
      group(system): r-x
      others: ---
extended permissions:
      enabled
        permit  rw-  u:dhs
        deny    r--  u:chas, g:system
        specify r--  u:john, g:gateway, g:mail
        permit  rw-  g:account, g:finance
Bit suid
Es otro tipo de permiso, con la particularidad que si se activa para un ejecutable que tengamos, quien lo llame asumirá nuestra identidad, se ejecutará el programa como su fuéramos nosotros quien lo ha invocado.

Cuando el mencionado programa se ejecuta de este modo, cobran especial importancia 4 variables:

Ejemplo:
 
Tenemos los siguientes permisos para un ejecutable:
  - rwx r-s r-s
Cuando alguien lo ejecute, en EUID y EGID aparecerá nuestro UID y GID respectivamente, como si fueramos nosotros quien lo ha llamado, en vez de quien realmente lo pretende utilizar. Aun así, el UID y GID de quien lo ejecuta no cambiará.
 
Passwords
Para acceder al sistema bajo UNIX, al principio de una sesión se nos pide un nombre de usuario y un password. Como ya se ha mencionado, así autenticaremos en cierta forma quienes somos.

La forma de UNIX a la hora de trabajar con los passwords para verificarlos es la siguiente:

  1. Recibe el password y lo cifra.
  2. Buscará el usuario introducido y comprobará que el password introducido cifrado sea igual al password almacenado.
Ficheros relacionados
  /etc/passwd____ Información de los usuarios y passwords (opcional)
  /etc/shadow Passwords, caducidad, tiempo de cambio,... 
Nota: es preferible que en (passwd) en lugar del password aparezca un símbolo, y sea en shadow donde esté realmente almacenado el password cifrado. Además, la política correcta del uso del fichero (shadow) debería ser olvidarse de lo que pone en (passwd) si aparece en (shadow).
 
 
Mantener seguro el sistema
Todos métodos que hemos visto hasta ahora para mantener seguro el sistema están bien, pero tenemos que verificar fallos de seguridad en la utilización de éstos.

Antes de empezar, debemos tener en consideración lo siguiente:

Acceso a ficheros y directorios

Es potencialmente peligroso. Buscar regularmente cambios en los permisos, especialmente en los referidos al sistema que no deban ser accesibles.

Para que restringir los permisos en los ficheros, acudir a /etc/profile y poner el umask para los usuarios lo más restrictivo posible. De este modo, todos los ficheros o directorios creados a partir de entonces tendrán los permisos rentringidos por defecto.
 
 

Bit suid
Mucho cuidado con este tipo de ficheros. Tenerlos bien controlados. Para buscarlos podemos utilizar el siguiente comando:
find / -type f \( -perm -04000 -o -perm -02000 \)
Por último, proteger todos los ficheros setuid root que no se usen.
 
 
Passwords
Tener las passwords dentro del fichero /etc/shadow por mayor seguridad. Si se encuentran dentro de /etc/passwd, fichero accesible por otros usuarios, con programas específicos (que usan diccionarios con palabras habituales) será posible descifrar por "fuerza bruta" los passwords. Para realizar esta tarea, si no están ya dentro de este fichero, realizar lo siguiente como root:
pwconv
Se creará o actualizará el fichero. Para comprobar si ha funcionado, loguearse desde una consola. En caso de problemas, volver atrás con el comando:
pwunconv
 
 
Mantener un cierto nivel de seguridad acerca de los passwords. Exigir un mínimo de caracteres, algunos numéricos, comprobar que no se haya utilizado con anterioridad, solicitar su cambio cada cierto tiempo,...

Aunque todo esto esté muy bien, ser consecuentes con la finalidad del sistema; no hastiar con cambios constantes de password, ni relajarse en exceso. Mantener una cierta coherencia entre la seguridad aplicada y lo que se pretende proteger.

Otros

Actuación ante ataques
Si por más que hayamos tratado de evitar ataques externos y garantizar la seguridad dentro de nuestro SO, todo ha fracasado, la única solución es hacer frente a esta situación e intentar restablecer la seguridad lo antes posible.

Estos deberán ser los pasos a seguir:

A. Recuperarse de la intrusión.

  1. Recuperar el control
  2. Deshacer las modificaciones del intruso e instalar un sistema limpio.
  3. Ponerse en contacto con sitios remotos que pudieran estar involucrados o afectados.
B. Asegurar el sistema
  1. Instalar todos los parches de seguridad.
  2. Consultar documentos de consejos de CERTs*, sumarios y boletines informativos del vendedor.
  3. Instalar herramientas de seguridad.
  4. Habilitar los registros del sistema (logging).
  5. Configurar "firewalls" para defender redes.
  6. Revisar la seguridad por medio de guías de configuración.
  7. Cambiar todos los passwords.
  8. Reconectarte a Internet.
  9. Cumplimentar un formulario para reportes de incidentes CERT.
Por último, un pequeña recomendación: aunque hallamos descubierto una intrusión en el sistema NO dar a conocer la noticia, de lo contrario lo único que conseguiremos será dar a conocer que nuestro sistema es vulnerable, dejando la puerta abierta a otros ataques. Lo mejor será solucionar antes el problema.

* Equipo de Respuesta a Emergencias de Cómputo