INTRODUCCIÓN

 

1. El termino seguridad

 

2. Características de un sistema seguro

2.1. Confidencialidad

2.2. Integridad

2.3. Disponibilidad

3. El Root y las cuentas de usuario

3.1. Crear y administrar cuentas       

3.1.1. Política de cuentas.

3.1.2. Estructura de cuentas.

3.1.3. Debilidad de contraseñas

4. Control de acceso (permisos)

 

 

1. El termino seguridad

 

 

La seguridad se ha convertido en los últimos años en una necesidad para cualquiera que quiera tener un sistema en condiciones de poder trabajar sin el riesgo de perder sus datos o de que estos sean espiados por otras personas sobre todo desde el auge de Internet que ha posibilitado que cualquier persona pueda tener una conexión aceptable. En los titulares de los periódicos a menudo aparecen suculentas historias de piratas informáticos, intrusos que bien por afán de superación y reconocimiento o por hacer daño consiguen hacer cosas impensables contra sistemas informáticos aparentemente seguros, aunque la seguridad total es imposible de conseguir, además habría que ver si seria factible ya que también hay que tener en cuenta que un sistema muy seguro requiere sistemas mas complejos y a veces incómodos de utilizar por personas sin formación en el tema.

 

Esta seguridad ya sea de un sistema informático o no (un coche por ejemplo) nos asegura que este libre de todo peligro. Pero los expertos prefieren utilizar el termino fiabilidad (probabilidad de que un sistema se comporte tal y como se espera de el) por tanto, se habla de sistemas fiables en lugar de hacerlo de sistemas seguros.

 

El grafico que viene a continuación lo he sacado del documento de Antonio Villalón y me ha parecido interesante ya que basicamente resume las ideas generales de este apartado y los que prosiguen:

 

 

 

 

2. Características de un sistema seguro

 

 

Un sistema seguro se caracteriza por su confidencialidad  , integridad y disponibilidad. También hay ideas (que apoyan una minoría) que integran la seguridad dentro de una propiedad mas general de los sistemas, la confiabilidad, entendida como el nivel de calidad del servicio ofrecido. Consideran la disponibilidad como un aspecto al mismo nivel que la seguridad y no como parte de ella, por lo que dividen esta última en solo las dos facetas restantes, confidencialidad e integridad.

A continuación explico cada una de las características:

 

 

2.1 Confidencialidad

 

La confidencialidad se encarga de asegurar que cada objeto o documento de un sistema sea accedido solo por aquellas personas autorizadas y ocultada o inaccesible a aquellos que no lo estén.

 

 El Root crea las cuentas de los usuarios, define los grupos

y establece los derechos de acceso a los archivos

 

 

 

2.2 Integridad

 

Significa que los objetos solo pueden ser modificados por elementos autorizados, y de una manera controlada.

 

 

2.3 Disponibilidad

 

Nos asegura que los objetos del sistema tienen que permanecer accesibles a elementos autorizados, es decir, que siempre que un ser autorizado quiera disponer de esos datos pueda hacerlo sin problemas.

 

 

Los 3 aspectos son importantes aunque se dará mas importancia a uno u otro según los intereses principales del administrados, es decir, en un sistema en el que los datos puedan ser peligrosos en malas manos interesaría principalmente la confidencialidad ya que es preferible que esa información antes que poder ser leída se borre. O por ejemplo en un servidor en el que lo que interesa es tener siempre a punto la información para ser leída, interesa una disponibilidad lo mas fuerte posible aunque esto suponga que sea mas fácilmente atacada por intrusos. O en un banco en el que interesa sobre todo conservar la integridad de la información sin posibilidad de ser modificada aunque esta pueda ser leída por intrusos

 

Para conseguir que cada usuario acceda a sus datos de manera individual y hacer que este usuario posea solo los derechos que debe o necesita, debemos crear cuentas individuales que identifiquen a un usuario y le den acceso solo a lo que le corresponde.

 

 

 

3. El Root y las cuentas de usuario

 

 

Podríamos decir que el root es el "usuario" que tiene acceso a todo la información del sistema, el root en si también es una cuenta, pero Dicha cuenta no se debe utilizar nunca para fines personales, salvo que sea absolutamente necesario, como por ejemplo durante una situación de restablecimiento. Esta restricción se debe a varios motivos. En primer lugar, tiene todos los permisos posibles sobre los archivos y ninguna restricción de acceso; puede cambiar cualquier cosa en cualquier momento. Este poder es muy útil, pero si se utiliza indiscriminadamente, se pueden provocar de forma invo­luntaria daños irreparables.

Para crear cuentas se empieza con usuarios individuales o un conjunto de ellos. Al crear sus cuentas, dichos usuarios se organizan en grupos dependiendo de sus tareas respectivas y de sus necesidades de acceso. Finalmente, se definen con mayor precisión los derechos de acceso individuales de cada usuario en aquellos lugares en los que difieran de los de su grupo. Mas detalladamente para crear cuentas en un sistema se siguen los siguientes pasos.

viñeta

Crear y gestionar cuentas de usuario.

viñeta

Definir políticas para grupos

viñeta

Asignar y revocar privilegios de acceso

viñeta

Asegurarse de que los usuarios autorizados pueden utilizar los recursos del sistema

viñeta

Apagar el sistema sin que corra peligro

 

3.1 Crear y administrar cuentas

En esta sección explico cómo crear y administrar cuentas. Estas son creadas por el root que en nuestro ordenador por ejemplo seriamos nosotros, que haríamos cuentas por ejemplo para amigos (grupo) a la vez cada amigo tendría su cuenta y por supuesto yo también tendría mi cuenta ya que acceder a través de la cuenta "root" seria peligroso ya no solo para el acceso de información sino también para la integridad del sistema si hacemos alguna chapuza inconsciente :) (lo digo por experiencia, aunque es la única forma de aprender, enredando todo). Así pues convendría seguir los siguientes pasos:

viñeta

Establecer una política de cuentas

viñeta

Estructurar las cuentas.

 

3.1.1 Política de cuentas

Una cuenta, en su sentido más general, consta de dos elementos:

viñeta

Autorización para iniciar una sesión.

viñeta

Autorización para acceder a los servicios

La autorización para iniciar la sesión es un privilegio que no hay que conceder nunca a la ligera. Si es posible hay proporcionar a los usuarios servicios críticos sin concederles acceso a la shell. El acceso a la shell se produce cuando los usuarios tienen acceso remoto por telnet a una shell local del servidor. Otorgar este acceso supone un problema, ya que cuantos más usuarios tengan acceso a la shell, más probable es que aparezca una brecha en la seguridad.

Los usuarios de la shell pueden aprovecharse de archivos y servicios a los que no pueden acceder los atacantes remotos. Estos deben obtener acceso a la shell antes de aprovechar los agujeros internos; un usuario válido de la shell ya ha recorrido la mitad del camino. Pero, aunque no tengan intenciones malvadas, los usuarios de la shell también pueden causar problemas. Incluso los comportamientos más inocentes pueden socavar la seguridad.

 

Si es obligado otorgar a los usuarios acceso a la shell durante la creación de una red Unix, con estas medidas al menos se reducen los riesgos:

- Dedique una máquina exclusivamente para el acceso a la shell. Restrinja dicha máquina solamente   para el uso de la shell.

- Elimine de ella todos los servicios de red que no sean esenciales.

- Instale un conjunto genérico de aplicaciones y al crear las particiones tenga en cuenta el restablecimiento tras algún desastre. En otras palabras, es de esperar que haya que reinstalar el sistema con frecuencia. Las máquinas con la shell no suelen recibir muy buen trato.

- Prohíba las relaciones de confianza entre la shell y otras máquinas.

- Considere la posibilidad de separar los sistemas de archivos importantes (/tmp, /home, /var) en otras particiones.

- Redirija los registros a un servidor de registros o, si el presupuesto lo permite, a algún medio en el que sólo se pueda escribir una vez y registre todo.

 

 

3.1.2 Estructura de cuentas

Una cuenta, esta estructurada en::

viñeta

Nombre de usuario y contraseña validos

viñeta

Directorio inicial.

viñeta

Acceso a la shell

El archivo passwd se encuentra en el directorio /etc. Cada línea almacena el registro de una cuenta y consta cada uno de 7 campos:

Este es el significado de los campos:

 

Username: Almacena el nombre de usuario del usuario. Es aconsejable crear nombres de usuario que se parezcan a los nombres reales de los usuarios, esto no es imprescindible, pero facilita el reconocimiento de los usuarios mediante sus nombres de usuario, lo que resulta de especial importancia en los entornos empresariales. La longitud de los nombres de usuario no debe superar los ocho caracteres y debe escribirse en minúsculas. En la uji mi nombre de usuario es al052064.
 

Password: Almacena la contraseña de acceso del usuario. Cada una de las versiones de Unix almacena la contraseña de los usuarios de forma distinta. Las anteriores distribuciones almacenaban la contraseña del usuario en forma cifrada (como, por ejemplo, xlmmmFtgA8), mientras que las nuevas que emplean shadowing* sólo almacenan una reseña de la contraseña (x) y ocultan la contraseña cifrada en otra parte.
 

UserID: Almacena el número de identificación de usuario (UID) del usuario. Este número se adjunta a los procesos del usuario. Cuando se elige el UID de un usuario nuevo se puede asignar cualquier número único y arbitrario entre el O y el 65534 (no utilice el 0, ya que es root). Sin embargo, no es aconsejable que los UID sean demasiado arbitrarios. En su lugar, es mejor reservar un bloque de números específicamente para los usuarios y asígnelos secuencialmente. Por ejemplo, puede restringir los UID a números entre 500 y 700. El primer usuario es el 501, el segundo el 502 y así sucesivamente. De esta forma, con un solo vistazo a la lista de procesos puede saber quién está realizando cada tarea. Si la lista de procesos informa de que hay varios UID en el rango 500-700, sabrá qué usuarios poseen cada uno de los procesos.
 

GrouplD: Almacena el número de identificación de grupo del usuario, que refleja el grupo nativo del usuario. Los usuarios pueden pertenecer o no a otros grupos, pero siempre pertenecen a su grupo nativo. Cada versión asigna este campo de forma distinta, la mayoría de las distribuciones colocan a todos los usuarios en el mismo grupo predeterminado (por ejemplo, users). Caldera y Red Hat asignan a cada usuario su propio grupo, llamado grupo privado. De nuevo, no se debe utilizar el 0, ya que es root.

Real name: Suele recibir el nombre de campo General Electric Comprehensive Operating System (GECOS) y almacena el nombre real del usuario, entre otras cosas. Si no se define, se ajustará automáticamente. Este campo se utiliza principalmente para temas relacionados con los informes, como por ejemplo en respuesta a las consultas. Tenga en cuenta que en este campo se puede definir otra información, entre la que se incluye el número de teléfono de casa o del trabajo del usuario.
 

User home: Almacena la ubicación del directorio de inicio del usuario. Si durante la instalación se ha creado una partición y un directorio especiales para los usuarios (que no sea /home), ése es el que hay que seleccionar. Sin embargo, hay que asegurarse de que todos los directorios de los usuarios se mantienen en la misma partición y bajo la misma jerarquía de directorios. A menos que exista una buena razón para no hacerlo, es muy aconsejable almacenar los directorios de los usuarios en /home.
 

User shell: Almacena la shell predeterminada del usuario. Esta es la shell en la que entra el usuario la primera vez que se conecta. Es recomendable restringir a todos los usuarios a una shell común. Cuantas más debilidades tengan las shells que se proporcionen, más oportunidades tendrán los crackers de encontrar un agujero en alguna de ellas.


Pero hay algo más además de las entradas de /etc/passwd. Durante el proceso de creación de cuentas también hay que crear directorios, entre los que se incluye el directorio de inicio del nuevo usuario, habitualmente /home/user.

Además, si las cuentas se añaden manualmente, será necesario copiar los archivos de inicio predeterminados (que se encuentran en /etc/skel) en el directorio de inicio del nuevo usuario (y definir los permisos apropiados).

 

3.1.3 Debilidad en las contraseñas

Muchos de los problemas de seguridad asociados a sistemas Unix, tienen que ver con las contraseñas de los usuarios: una contraseña débil puede ser fácilmente averiguada por un password cracker y utilizada para comprometer el sistema.

El fichero /etc/passwd es un fichero de texto, y además legible para cualquier usuario, de modo que cualquiera podría utilizar un password cracker contra este fichero y encontrar bastantes contraseñas válidas en un tiempo relativamente corto realizando pruebas con diccionarios para realizar combinaciones, cifrarlas, y compararlas con las entradas del fichero /etc/passwd, de modo que si utilizamos contraseñas fáciles de encontrar en diccionarios o combinaciones de éstas, podemos estar casi seguros que va a ser descubierta en un ataque por diccionario. Para que una contraseña se considere segura, debe tener al menos 8 caracteres como he dicho antes, mayúsculas y minúsculas, números y letras, y algún carácter de puntuación o símbolo matemático. Aún así, nuestra clave no será infalible pero costara mas tiempo de ser descubierta.

Shadow password

Ante tantos problemas ocasionados por las contraseñas, se ideó un sistema que intentaba prevenir todos ataques, dificultando la obtención del fichero de contraseñas haciéndolo legible sólo para el root. Shadow password se ha convertido en un estándar en todos los sistemas Unix actuales, siendo extraño no encontrarlo preinstalado en cualquiera de ellos.
El fichero /etc/passwd sigue siendo legible para todos los usuarios, pero donde antes aparecía la contraseña cifrada, ahora aparecerá un símbolo característico que indica que Shadow Password ha sido instalado (concretamente una x). De este modo, es indiferente que se lleven fichero de contraseñas, porque el realmente las almacena será ahora /etc/shadow, que sólo será legible por el root.

Envejecimiento de contraseñas

Otra medida de seguridad que se puede tomar cuando está instalado Shadow Password es el envejecimiento de contraseñas, que no es más que evitar que los usuarios mantengan sus contraseñas invariables siempre. Con este sistema, se obliga a que se cambie la contraseña después de un período de tiempo, que puede ser fijado por el administrador del sistema. Este tipo de medidas son las que se toman en la UJI ya que nos obligan a cambiar la contraseña cada cierto tiempo. Con este método, conseguimos que si alguien consigue llevarse /etc/shadow para crackear las contraseñas, haya algunas que caduquen en el tiempo que tarde en crackearlas, y que si alguien captura alguna contraseña por la red le dure lo menos posible.

 

 

4. Control de acceso (permisos)
 

El acceso de los usuarios a los distintos archivos y directorios se limita mediante la concesión de permisos. Hay tres tipos básicos de permisos:

• De lectura: permite a los usuarios leer el archivo especificado.
• De escritura: permite a los usuarios modificar el archivo especificado.
• De ejecución: permite a los usuarios ejecutar el archivo especificado.

Cuando se asignan estos permisos, el sistema guarda un registro de los mismos que posteriormente aparece reflejado en las listas de archivos. El estado de los permisos de cada uno de los archivos se expresa mediante marcas. Las marcas de permiso son:

r: acceso de lectura.

w: acceso de escritura.

x: acceso de ejecución.

 


 

Estos permisos se modifican mediante chmod utilizando los operadores +, - y = para asignar con los codigos mencionados antes los permisos (siempre que se tenga permiso para hacerlo :) , el root es el que normalmente se encarga de esto).