curso avanzado seguridad acceso

Download Curso Avanzado Seguridad Acceso

If you can't read please download the document

Upload: antonio-duran

Post on 16-Apr-2017

2.586 views

Category:

Documents


7 download

TRANSCRIPT

Curso Avanzado de Administradores Seguridad en sistemas GNU/Linux:Acceso a sistemasAntonio Durn Terrs

Contenidos

Entrada al sistema de los usuarios

Ficheros Unix

Conceptos generales sobre PAM

Autenticacin con LDAP

Asegurando la autenticacin de usuarios

Seguridad fsica

PAM

LDAP

Contraseas

Ficheros Unix

/etc/passwd

Cuentas de los usuarios del sistema, incluyendo sus contraseas si no se usan shadow passwords.

Este fichero es legible por todos los usuarios

/etc/shadow

Contraseas cifradas de los usuarios, si se usan shadow passwords.

Este fichero solo es accesible para root

Ficheros Unix

/etc/passwd

Cuentas de los usuarios del sistema, incluyendo sus contraseas si no se usan shadow passwords.

/etc/shadow

Contraseas cifradas de los usuarios, si se usan shadow passwords.

En la actualidad, el algoritmo de cifrado de claves ms usado es MD5, que obtiene a partir de la clave un hash de 16 bytes.

Ficheros Unix

En la actualidad, el algoritmo de cifrado de claves ms usado es MD5, que obtiene a partir de la clave un hash de 16 bytes.

El algorimto de hash es de slo de ida, lo que significa que a partir del hash no se puede obtener la clave.

Aunque en los sistemas GNU/Linux modernos siempre se activan por defecto contraseas MD5, en algunas instalaciones de LDAP de los I.E.S. se usa crypt, que es un algoritmo mucho ms dbil

Ficheros Unix

El algorimto de hash es de slo de ida, lo que significa que a partir del hash no se puede obtener la clave.

Este mismo algoritmo se usa para verificar los paquetes que bajamos de Internet

Aunque en los sistemas GNU/Linux modernos siempre se activan por defecto contraseas MD5, en algunas instalaciones de LDAP de los I.E.S. se usa crypt, que es un algoritmo mucho ms dbil

PAM

PAM = Pluggable Authentication Modules

Coleccin de libreras que permiten al administrador elegir como se autenticarn los usuarios.

Permite cambiar la autenticacin que usan las aplicaciones PAM sin necesidad de recompilarlas. Por ejemplo: login, gdm, etc.

PAM

Objetivo: separar el SW dedicado a otorgar privilegios del SW dedicado a desarrollar sistemas de autenticacin seguros y apropiados.

Configuracin:

Configuracin basada en un solo fichero: /etc/pam.conf

Configuracin basada en directorios: /etc/pam.d/

Mdulos: /lib/security

PAM

PAM trata con cuatro tipos de tareas:

Gestin de autenticacin

Gestin de cuentas

Gestin de sesines

Gestin de contraseas

PAM

En los I.E.S. se usa configuracin basada en directorios

Usa los ficheros de /etc/pam.d

Cada fichero tiene el nombre de un servicio, que corresponde con la configuracin para ese servicio.

Formato de las lneas de cada fichero:

tipo_modulo bandera_control path_modulo args

PAM

Configuracin

tipo_modulo

Uno de los 4 tipos de mdulos actuales:

auth

account

session

password

PAM

Tipos de mdulo

auth

Proporciona dos aspectos de la autenticacin de usuarios. Primero establece que el usuario es quien dice ser. Segundo, puede otorgar mebresas de grupo independientemente del fichero /etc/groups, u otros privilegios.

PAM

Tipos de mdulo

account. Se encarga de la gestin de cuentas no relacionada con la autenticacin. Suele usarse para permitir/denegar accesos basandose en la hora/da, recursos del sistema disponibles o la localizacin del usuario (por ej: root slo puede hacer login en la consola)

PAM

Tipos de mdulo

session. Principalmente este mdulo se encarga de las cosas que se deben hacer por el usuario antes/despus de que se le conceda el servicio. Estas actividades se refieren, por ejemplo, a la escritura de informacin de registro sobre la apetura/cierre de sesiones, el montaje de directorios, etc.

PAM

Tipos de mdulo

password. Es necesario para actualizar los tokens utilizados para la autenticacin. Normalmente hay uno para cada mdulo del tipo auth.

PAM

Configuracin

bandera de control

Se utiliza para indicar como reaccionar la librera PAM al tener xito o fracaso el mdulo al que est asociada.

Como los mdulos pueden ser apilados, la bandera de control representa la importancia relativa de cada mdulo.

La aplicacin no recibe el resultado de mdulos individuales, sino slo un resultado de la librera.

PAM

Configuracin

bandera de control

2 formas de especificar la bandera de control. Vemos slo la simple (la que usamos en los IES).

Representamos la bandera de control con una sola palabra que indica la severidad de un acierto o fracaso en el mdulo. Las cuatro opciones son:

required, requisite, sufficient, optional e include.

PAM

Configuracin

bandera de control

required: Indica que es necesario el xito de este mdulo.

requisite: como required, sin embargo si falla no se siguen ejecutando ms modulos.

suffcient: El xito de ste mdulo se considera como suficiente para conceder el permiso.

optional: No es crtico para el xito o fracaso de la aplicacin.

PAM

Configuracin

bandera de control

include: Indica al sistema PAM que incluya los contenidos del fichero indicado.

path_modulo

Ruta hacia el mdulo.

args

Argumentos que se pasan al mdulo.

PAM

Configuracin

Argumentos opcionales generales:

debug: informacin de debug en los logs.

no_warn: no dar mensajes de aviso a la aplicacin.

use_first_pass: El mdulo no debe pedir una contrasea al usuario. En cambio, debe usar la contrasea introducida anteriormente en el primer mdulo de tipo auth. Si no funciona, el acceso ser denegado.

PAM

Configuracin

Argumentos opcionales generales:

try_first_pass: El mdulo debe intentar la autentiaccin con la contrasea introducida anteriormente. Si no funciona, se pide otra contrasea al usuario.

expose_account: da mas informacin al usuario sobre las cuentas.

PAM

Programas sin fichero asociado en pam.d/

En lugar de una entrada other en pamd.conf, hay un fichero other que incluye estos cuatro:

common-account

common-auth

common-password

common-session

PAM

Ejemplos de common-auth usados en los clientes

Versin 1:

auth sufficient pam_unix.so

auth sufficient pam_ldap.so user_first_pass

Versin 2:

auth sufficient pam_unix.so

auth required pam_ldap.so user_first_pass

PAM

Descripcin de los mdulos

pam_unix: Mdulo de autenticacin estandar. Ficheros passwd y shadow.

pam_ldap: Autentiacin contra directorios LDAP.

pam_nologin: Encargado de la funcionalidad Unix nologin, que deshabilita la entrada de usuarios que no sean root.

pam_env: Para asignar valores a variables de entorno.

pam_unix_auth: Mdulo de autenticacin estandar.

Autenticacin con LDAP

LDAP: Lightweight Directory Access Protocol.

LDAP es un protocol de acceso a un servicio de directorio.

Basicamente es como una base de datos, pero organizado jerrquicamente y basado en atributos.

Al usar autenticacin LDAP, simplemente sustituimos las consultas sobre usuarios a la BD local (ficheros passwd y shadow) por consultas al servidor LDAP. PAM se encarga de ello.

Autenticacin con LDAP

El servicio de directorio LDAP se basa en un modelo cliente-servidor.

Uno o ms servidores LDAP contienen los datos que conforman el rbol del directorio LDAP o base de datos troncal.

El cliente ldap se conecta con el servidor LDAP y le hace una consulta.

El servidor contesta con la respuesta correspondiente, o bien con una indicacin de dnde puede el cliente hallar ms informacin (normalmente otro servidor LDAP).

Autenticacin con LDAP

El modelo de informacin de LDAP est basado en entradas. Una entrada es una coleccin de atributos que tienen un nico y global Nombre Distinguido (DN).

El DN se utiliza para referirse a una entrada sin ambigedades. Cada atributo de una entrada posee un tipo y uno o ms valores.

Los tipos son normalmente palabras nemotcnicas, como cn para common name, o mail para una direccin de correo.

La sintaxis de los atributos depende del tipo de atributo. Por ejemplo, un atributo cn puede contener el valor Sergio Gonzlez.

Autenticacin con LDAP

En LDAP, las entradas estn organizadas en una estructura jerrquica en rbol.

Tradicionalmente, esta estructura reejaba los lmites geogrcos y organizacionales.

Las entradas que representan pases aparecen en la parte superior del rbol.

Debajo de ellos, estn las entradas que representan los estados y las organizaciones nacionales.

Autenticacin con LDAP

Debajo de ests, pueden estar las entradas que representan las unidades organizacionales, empleados, impresoras, documentos o todo aquello que pueda imaginarse.

En nuestro caso tenemos:

dc=ex

dc=instituto

ou=People, ou=Groups

Autenticacin con LDAP

Autenticacin con LDAP

Programa servidor: slapd

Configuracin: /etc/ldap/slapd.conf

Para conocer todas las opciones:

$man 5 slapd.conf

Opciones importantes:

replogfile: Fichero de logs del servidor.

loglevel: Nivel de detalle en los logs. Dejar a 0 para mejorar el rendimiento.

database: estilo de BD. Usamos ldbm.

Autenticacin con LDAP

Programa servidor: slapd

Configuracin: /etc/ldap/slapd.conf

Opciones importantes:

sufix: La base del directorio.

directory: donde se almacena fisicamente la BD.

access: indican permisos para diferentes acciones y usuarios.

Autenticacin con LDAP

Control de acceso. Indica:

Atributos a los que se concede acceso.

A que usuarios ser permite cada acceso.

El tipo de acceso concedido.

Vemos la configuracin de los I.E.S.

Autenticacin con LDAP

Para importar y exportar informacin de directorio entre servidores de directorios basados en LDAP, o para describir una serie de cambios que han de aplicarse al directorio, se usa en general del fichero de formato conocido como LDIF (siglas de "LDAP interchange format", formato de intercambio de LDAP).

Un fichero LDIF almacena informacin en jerarquas de entradas orientadas a objeto.

Autenticacin con LDAP

Fragmento de fichero ldif:

dn: uid=root,ou=People,dc=elbrocense,dc=ex

uid: root

cn::cm9vdA==

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

userPassword: {crypt}$1$btERS/EE$l6bMnEg3Yiyt4g0D7u6Yq.

shadowLastChange: 12809

shadowMax: 99999

Autenticacin con LDAP

Ejemplo: preparacin de un servidor alternativo de LDAP con una rplica del real.

Parar slapd y sacar los datos de la BD actual, mediante slapcat.

Editar el fichero ldif de forma que preserve un orden lgico en la creacin de entradas. Esto es necesario porque no puedes aadir entradas hijas de entradas no creadas. Al usar muy poca ramificacin en los IES, es facil hacer esto manualmente.

Instalar slapd en el servidor alternativo y pararlo.

Introducir los nuevos datos mediante slapadd.

Autenticacin con LDAP

Actualizacin del directorio en los I.E.S.

Actualizacin por phpldapadmin

Los cambios slo se aplican al directorio LDAP.

Acceso por web

Actualizacin de la BD local de usuarios y grupos del servidor, y posterior migracin de los datos al directorio LDAP.

Los cambios se hacen en LDAP y en la BD local del servidor.

Acceso por consola: migrar

Actualizaciones de los usuarios al cambiar sus claves.

Autenticacin con LDAP

Actualizacin del directorio en los I.E.S.

/usr/bin/migrar

Script encargado de realizar la migracin de datos de la BD local del servidor al directorio LDAP.

Pasos:

Construir ficheros ldif a partir de la BD de usuarios y grupos del servidor:

migrate_passwd.pl y migrate_group.pl

Hacer el trasvase de informacin al directorio LDAP:

ldapadd, ldapmodify

Autenticacin con LDAP

Actualizacin del directorio en los I.E.S.

/usr/bin/migrar

Aade los nuevos usuarios creados.

Aade los nuevos grupos creados.

NO modifica los atributos de usuarios o grupos que ya estn creados.

/usr/bin/migrar2

Cambio de ldapadd por ldapmodify en la migracin de grupos, para aplicar los cambios. No en los usuarios, ya que se perderan los cambios de contrasea de los usuarios, hechos solo en LDAP mediante herramientas web.

Autenticacin con LDAP

Configuracin en los clientes

Instalacin del software necesario. Antes de poder autenticar a los usuarios a travs de un servidor LDAP, es necesario instalar algunas utilidades en el cliente, como pam_ldap y nss_ldap.

pam_ldap permite hacer uso de un servidor LDAP para la autenticacin de usuarios (comprobacin de claves) a aquellas aplicaciones que utilicen PAM.

Autenticacin con LDAP

Configuracin en los clientes

Instalacin del software necesario.

nss-ldap permite a un servidor LDAP actuar como un servidor de nombres. Esto significa que provee la informacin de las cuentas de usuario, los IDs de los grupos, la informacin de la mquina, los alias, los grupos de red y bsicamente cualquier cosa que normalmente se obtiene desde los archivos almacenados bajo /etc o desde un servidor NIS.

Autenticacin con LDAP

Configuracin en los clientes

/etc/nsswitch.conf

nsswitch.conf es el fichero de configuracin de las Bases de Datos del Sistema y del sistema de Conmutacin de los Servicios de Nombres (Name Service Switch).

En otras palabras, es un archivo que indica el orden y el procedimiento a seguir para la bsqueda de la informacin requerida, por ejemplo, para hacer bsquedas de usuarios y contraseas.

Autenticacin con LDAP

Configuracin en los clientes

/etc/nsswitch.conf

La forma de configurar este archivo es muy simple:

Primero se especifica la base de datos sujeta a la bsqueda(primera columna) seguida del procedimiento que se va a emplear para realizar una bsqueda sobre la misma(columnas siguientes).

De esta forma, basta con configurar el procedimiento de bsqueda para que haga uso de LDAP en algn momento:

passwd: files ldap

Autenticacin con LDAP

Configuracin en los clientes

/etc/libnss-ldap.conf

Configuracin del servidor LDAP al que el cliente conectar. Opciones:

host: Indica la direccin del servidor LDAP.

base: Nombre distinguido de la base de bsqueda.

ldap_version: Nmero de versin LDAP a usar.

binddn: Nombre distinguido con el que hacer bind al servidor.

Autenticacin con LDAP

Configuracin en los clientes

/etc/libnss-ldap.conf

Configuracin del servidor LDAP al que el cliente conectar. Opciones:

bindpw: Las credenciales con las que hacer bind.

/etc/pam-ldap.conf

Mismo contenido que libnss-ldap.conf

Nueva opcin: pam_password. Indica el cifrado a realizar por el cliente antes de enviar la contrasea.

Autenticacin con LDAP

Funcionamiento del protocolo LDAP

Cliente -> ServidorBIND REQUEST

Servidor -> Cliente BIND RESULT

Cliente -> ServidorSEARCH REQUEST

Servidor -> ClienteSEARCH ENTRY

Servidor -> Cliente SEARCH RESULT

Mas informacin: RFC 2251

Autenticacin con LDAP

Funcionamiento del protocolo LDAP

Operacin BIND.

Sirve para conectar a un servidor LDAP. Normalmente protegemos el acceso al servidor LDAP, de modo que solo clientes que conocen la bind password (bindpw) pueden conectarse.

Si el par usuario/contrasea suministrada al servidor no coincide con las credenciales definidas para hacer bind (en slapd.conf), no se permitir el acceso.

Autenticacin con LDAP

Funcionamiento del protocolo LDAP

Operacin SEARCH REQUEST

El cliente pide informacin al servidor

Operacin SEARCH ENTRY

El servidor entrega informacin al cliente

Operacin SEARCH RESULT

El servidor indica al cliente el resultado de la operacin de bsqueda.

Seguridad fsica

Servidor

Lugar de acceso restringido

No dejar sesiones abiertas, en caso de usar la consola.

No usar X

Eliminar cuentas inactivas (apagado1,...)

Clientes

Limitar el acceso a los usuarios que deben usar cada puesto -> no alumnos en puesto profesor

Seguridad fsica

Clientes

Instruir a los usuarios para no dejar sesiones abiertas

Usar salvapantallas con contrasea por si esto no funciona

No dar a los usuarios privilegios de administrador

No permitir el uso de cuentas de grupo, como general

No permitir acceso de root ni de Configuracin en GDM

AllowRoot=false

ConfigAvailable=false

Seguridad fsica

Clientes

No permitir acceso de root desde las consolas

/etc/securetty

No permitir acceso de alumnos en ordenadores de profesor

Fichero /etc/security/limits.conf

@alumnos - maxlogins 0

Comprobar que el profesor tiene sesin abierta al enceder los alumnos

comprueba_profesor_logged.sh

Seguridad fsica

BIOS

Desactivar arranque desde medios removibles

Activar contrasea en la BIOS

No muy seguro

Contraseas por defecto

Eliminacin de la contrasea reseteando la BIOS abriendo la caja

Seguridad fsica

GRUB

Activar la contrasea en GRUB para que sea necesario introducirla para editar las opciones de arranque

Impide arrancar como root en modo single si el usuario conoce la contrasea de administrador pero no la de GRUB

Impide el problema de de aadir init=/bin/sh a la linea de arranque para arrancar con una shell de root directamente

Seguridad fsica

Contrasea de GRUB

Ejecutar:

# /sbin/grub-md5-crypt

introducir una contrasea

Devuelve un hash MD5 de la clave

Editar menu.lst

Aadir password --md5 debajo de la lnea de timeout

Ahora, antes de editar grub, pulsar 'p' para meter la clave

Asegurando PAM

Tener un /etc/pam.d/other fuerte

Este fichero se aplica a programas que no tienen fichero concreto

Si configuramos los ficheros de todos los programas necesarios, este fichero no debera usarse nunca.

Por ejemplo, un common-auth as:

auth required pam_deny.so

auth required pam_warn.so

Asegurando PAM

Otra posibilidad menos paranoica es:

auth required pam_unix.so

auth required pam_warn.so

De este modo, cuando una aplicacin que no tenga configuracin PAM especfica se ejecute, quedar reflejados en los logs.

Sera buena idea tener un common-passwd que no permita el cambio de contraseas, de modo que controlemos los programas usados para realizar esta tarea.

Asegurando PAM

Eliminar accesos sin contrasea

No usar nullok en los mdulos de autenticacin, de modo que los usuarios que no tengan una contrasea puesta no pueda entrar al sistema

Eliminar servicios no usados

Es buena idea eliminar los ficheros de configuracin de los servicios que no se usen, de modo que tengan que recaer en la configuracin por defecto, ms restrictiva.

Asegurando LDAP

El acceso al servidor LDAP est restringido por la bind password, que permite iniciar el dilogo

Las contraseas actuales usadas en los I.E.S. son de dominio pblico, por lo que deberan cambiarse en cada I.E.S. para mejorar la seguridad.

Para ello, es necesario:

Cambiar la contrasea de cn=cliente (en phpmyadmin)

Cambiar en los clientes /etc/libnss-ldap y /etc/pam-ldap la bind pw

Contraseas seguras

Riesgo de que usuarios no autorizados accedan a informacin confidencial si averiguan la contrasea de un usuario legtimo

Es necesario que las contraseas elegidas sean fuertes, y que no puedan ser sacadas por prueba y error

Mtodos

Prevenir: Hacer que los usuarios usen herramientas para cambiar las contraseas que implementen una plitica sobre como deben ser las contraseas.

Contraseas seguras

Mtodos

Curar: Usar herramientas que comprueban la calidad de las contraseas elegidas intentando crackearlas.

Uso del john the ripper

Para que las contraseas sean seguras, deben cumplir:

Ms de un determinado nmero de caracteres

Usar nmeros, letras y signos de puntuacin.

No hacer referencia a datos personales facilmente accesibles.

Contraseas por defecto

Algunos programas necesitan para funcionar usuarios locales en los clientes

Aulalinex,...

Las contraseas por defecto que usan son de acceso pblico, por lo que cualquier atacante podra usarlas como punto de entrada al sistema

Estas contraseas deberan cambiarse para que no puedan ser usadas

Seguridad de ficheros y sistemas de ficheros

No permitir programas SUID/SGID en los directorios de los usuarios

Opcin nosuid en /etc/fstab en /home

Tambin debemos usar:

noexec: impide ejecucin de programas

Los usuarios deben pedir que el administrador instale los programas que desee.

nodev: impide creacin de ficheros de dispositivo.

Seguridad de ficheros y sistemas de ficheros

Configurar en el servidor /etc/exports del modo ms restrictivo posible

Configurar, en /etc/exports, las opciones antes comentadas para el home local

nosuid, nodev, noexec

Los programas SUID son una amenaza para la seguridad

Si un atacante explota un fallo en un programa que se ejecuta con privilegios de root, puede obtener una cuenta

Seguridad de ficheros y sistemas de ficheros

La lista de programas SUID instalados en el sistema debe ser controlada

Este comando encuentra todos los ficheros SUID/SGID instalados en el sistema:

# find / -type f \( -perm -04000 -o -perm -02000 \)

Los ficheros con acceso de escritura para todos pueden ser un riesgo, sobre todo en ficheros de sistema. Para encontrarlos todos:

# find / -perm -2 ! -type l -ls

Seguridad de ficheros y sistemas de ficheros

Los ficheros .rhosts son peligrosos, ya que permiten el acceso sin pedir contrasea, y no deberan estar permitidos. Para encontrarlos:

# find /home -name .rhosts -print

Seguridad de ficheros y sistemas de ficheros

Configurar los directorios personales de los usuarios con permisos slo para el propietario.

Configurar los directorios comunes con permisos solo para aquellos que deban usarlos

Creacin de grupos especficos para actividades concretas

Usar la configuracin de umask ms restrictiva posible

0022 es la ms usual, y es la que usamos por defecto, creando ficheros con permisos de lectura para el resto de los usuarios.

Seguridad de ficheros y sistemas de ficheros

Instruir a los usuarios sobre el funcionamiento del sistema de usuarios, grupos y permisos.

Instruir a los usuarios para que no apliquen permisos generales a sus ficheros cuando quieran compartirlos, si no slo a los grupos necesarios.