Cuenta de usuario: Información que define, para el sistema, al usuario. 3 tipos de usuario: root, especiales y normales. Grupos: Conjunto de usuarios que comparten permisos o derechos. Acciones sobre usuarios: Añadir, eliminar, activar, desactivar y modificar. Acciones sobre grupos: Crear, eliminar, añadir y eliminar usuarios. Buenas prácticas para contraseñas seguras a los usuarios Contraseñas compuestas por mínimo de 8 caracteres ASCII que incluyan: signos de puntuación y caracteres alfanuméricos. No es bueno que sean palabras que formen parte del diccionario. No repetir contraseñas para un mismo usuario a lo largo de su vida Vigencia mínima y máxima Directiva de bloqueo de contraseña ante un umbral de intentos Usuarios normales: Información relevante sobre los usuarios: shell de trabajo, directorio home, UID y GID. Suele almacenarse en /etc/passwd nombre:clave:UID:GID:info:home_dir:shell /etc/shadow Sólo visible por root Guarda contraseñas de usuario nombre:clave:dias_cambio:min_cambio:max_cambio:dias_aviso:dias_inhabilitar:tiempo_inhabilitar:reser. Conjunto de librerías que permiten establecer una política, método y funcionamiento de la autentificación (del sistema operativo y de aplicaciones) sin necesidad de recompilar los programas de autentificación Se definen 4 tipos de módulos Auth: autenticación del usuario mediante un método y le proporciona privilegios. Account: comprueba que el usuario tiene permisos para usar el servicio o si éste está permitido (por control horario, pe.). Passwd: para actualizar el mecanismo de autenticación. Session: para indicar acciones que se deben ejecutar antes o después del acceso del usuario. Los módulos pueden apilarse. Servicio: nombre del programa utilizado para acceder al servicio Configuración /etc/pam.d Cada servicio tiene su propio fichero en /etc/pam.d La sintaxis es: • Tipo de módulo flag de control path del módulo argumentos Flag de control: Indica cómo se comporta PAM ante un fallo en las condiciones del módulo. El mecanismo simple: • • • • Required: éxito obligatorio, aunque se consultarán otros módulos si hay fallo. Requisite: se devuelve fallo sin consultar otros módulos. Suffcient: éxito es suficiente para el éxito de la autentificación, sino existe un fallo anterior. Optional: módulos opcionales. • • • • • • • • • • • • • • • • auth sufficient pam_pwdb.so debug likeauth nullok shadow auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so auth requisite pam_securetty.so password sufficient pam_pwdb.so use_authtok nullok md5 shadow password sufficient pam_ldap.so use_authtok account sufficient pam_pwdb.so account sufficient pam_ldap.so account required pam_deny.so account required pam_access.so password sufficient pam_pwdb.so use_authtok nullok md5 shadow password sufficient pam_ldap.so use_authtok password required pam_deny.so session optional pam_mkhomedir.so skel=/etc/skel umask=0077 session required pam_pwdb.so session optional pam_ldap.so Ejemplo ssh: Ejemplo login: • • • • • • • • • • • • • • • • • • • • • auth required pam_issue.so issue=/etc/issue auth requisite pam_securetty.so auth requisite pam_nologin.so auth required pam_env.so auth sufficient pam_pwdb.so debug likeauth nullok shadow auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account required pam_access.so account sufficient pam_pwdb.so account sufficient pam_ldap.so account required pam_deny.so session required pam_pwdb.so session optional pam_ldap.so session optional pam_lastlog.so session optional pam_motd.so session optional pam_mail.so standard noenv session optional pam_mkhomedir.so skel=/etc/skel umask=0077 session required pam_tmpdir.so password sufficient pam_pwdb.so use_authtok nullok md5 shadow password sufficient pam_ldap.so use_authtok password required pam_deny.so Necesidad de control administrativo del sistema. Modelo de propiedad de Unix: basados en permisos que se cumplen salvo para root. Propiedad de ficheros • Se dispone de usuarios y grupos propietarios. El propietario de un fichero tiene la facultad, que no comparte con nadie, de modificar los permisos del fichero (salvo root) Para ello se dispone, en todos los Unix, del comando chmod. • El propietario de un fichero sólo puede ser un usuario, mientras que muchos usuarios pueden ser propietarios de grupo de un mismo fichero. • Sólo root puede cambiar el propietario y grupo de un fichero. Para ello dispone de los comandos chown y chgrp. • La propiedad de un fichero se consulta con el comando ls y algunas opciones, dependientes del SO: – ls –l para sistemas ATT (Linux, Iris, Solaris) – ls –lg para sistemas BSD Propiedad de procesos • UID real y efectivo • GID real y efectivo. Los número reales son la identidad verdadera y coinciden con el UID del usuario que lanza el proceso. Los números reales se usan para la contabilidad y los efectivos para proponer determinados permisos de acceso. Normalmente los números reales y efectivos son los mismos. (tipo especial de permiso setuid o setgid • La mayoría de las versiones de Unix (y Solaris, Iris y Linux, la tienen) tienen identificadores de sesión, de procesos de grupo y de auditoría asociados a un terminal. – Un identificador de sesión se asocia con los procesos conectados a un terminal y se pueden generar que indican “sesión abierta” – Un identificador de grupo designa a un grupo de procesos que estarán en primer o segundo plano en los sistemas que permiten control de flujo de procesos. – Un identificador de auditoría indica un hilo de actividad que debe usarse en el proceso de auditoría. Aunque Root …: UID=0 Funciones •Puede hacer cambios directamente sobre los dispositivos Puede ejecutar operación sobre fichero o proceso y o desmontar el cualquier F.S. y volver a montarlo en L/E. cualquier llamada al sistema. •Averiguar los procesos tienen ficheros abiertos y Inicia y termina sesiones deque usuarios pararlos, fichero Registraliberando informaciónelcontable Administra los dispositivos de E/S •Cambiar las contraseñas de todos los usuarios, además cambiar las credenciales de un proceso, su prioridad, dePuede capturar el teclado ejecución,... … todo Controla todo el sistema operativo •Parar el sistema Lo que NO puede hacer root: Cambios en un sistema de archivos de sólo lectura Desmontar un sistema de archivos con ficheros abiertos Descifrar contraseñas del /etc/passwd Parar un proceso que entre en modo de espera en el núcleo Cómo llegar a ser root Login su (registro en /var/log/sulog) sudo grupo wheel # sudoers file. # # This file MUST be edited with the 'visudo' command as root. # # See the man page for details on how to write a sudoers file. # # Host alias specification # User alias specification # Cmnd alias specification # User privilege specification root ALL=(ALL) ALL www-data origin = NOPASSWD: /bin/mount, /bin/umount #wwwadm2 origin = NOPASSWD: /usr/sbin/apache, /bin/mv, /bin/ln, /bin/rm, /bin/kill, /usr/sbin/named wwwadm4 origin = NOPASSWD: /bin/chmod, /usr/sbin/named El uso de sudo tiene las siguientes ventajas: Alta contabilidad Se limita el conocimiento del passwd de root Es más rápido que usar su Los privilegios pueden ser revocados sin cambiar la contraseña de root Tenemos una lista de todos los usuarios con privilegios de root Las restricciones de acceso son dependientes del host, un fichero simple puede ser usado para el control de acceso a una entidad de red Los operadores pueden realizar una labor sin la limitación de los privilegios de usuario. Existen varias desventajas: Una brecha en la seguridad de la cuenta de usuarios es equivalente a una brecha en la de root. Además, la entrada a comandos de sudo puede ser desconocida, engañándole con ejecuciones del shell como si fuera un programa permitido. Uso sin path absolutos. Definido por un conjunto de especificaciones (RFC´s) Esp. Originales RFCs 2251-2256 Servidor ClienteX.500 Métodos de autorización RFC 2829 Servidor LDAP Extensión en la seguridad en la capa de transporte RFC 2830 Aplicación (DAP) Especificaciones técnicas RFC 3377 Datos Cliente LDAP Presentación Nace como alternativa “ligera” a X.500 Sesión Sobre TCP/IP Aplicación (LDAP) Transporte Conjunto de operaciones reducidas Red Servicio de directorio TCP UDP diferencias con DBIPy FS Enlace Optimizado para lectura vs bloqueo y transacciones Independencia backend Física del dispositivo de almacenamiento Medio Físico Protocolo de acceso diferente a Servidor LDAP y Árbol LDAP Red de Comunicación Protocolo cliente/servidor basado en mensajes Comunicación asíncrona Representa los servicios que proporciona un Servidor LDAP vistos por el cliente Se pueden distinguir cuatro modelos: Modelo de información • Establece la estructura y tipos de datos (esquemas, entradas, atributos) • Directorio formado por entradas estructuradas en forma de árbol. Cada entrada está definida por un conjunto de atributos (par nombre y valor) que se define en el esquema Modelo de asignación de nombres • Define cómo referenciar de forma única las entradas y los datos en el árbol de directorios RDN y DN Modelo funcional • El protocolo LDAP operaciones para acceder al árbol de directorio: autenticación, solicitudes y actualizaciones. Modelo de seguridad • Para el cliente, cómo probar su identidad (autenticación) • Para el servidor, cómo controlar el acceso (autorización) #Ejemplo de archivo LDIF para la entrada de un usuario Entrada dn: cn=Alex García Pérez, ou=profesores, dc=dtic, dc=ua,dc=es Unidad básica de LDAP equivalente a un nodo del árbol objectclass: top objectclass: person Refleja conceptos del mundo real (usuarios, organizaciones, hosts...) cn: Alex García Pérez sn: García Pérez Definición relativa al nodo padre telephoneNumber: 96 590 3400 Formada por pares atributo:valor Atributos $ "$ . $ " . $ " Cada atributo posee unas reglas de sintaxis Concepto similar a las variables de programación Son multivaluados / " " $# # Dos tipos: & 'ou, # (sn) )*+), Atributos atómicos (cn, dc, % ! -,, Atributos que indican conjunto de! atributos (ObjectClass) Esquemas Plantillas que definen atributos y configuraciones prototítipicas (ObjectClass) #Ejemplo de archivo LDIF para la entrada de un usuario ObjectClass dn: cn=Alex García Pérez, ou=profesores, dc=dtic, dc=ua,dc=es objectClass::person objectclass: top objectclass: person cn: cn: Alex García Pérez sn: sn: García Pérez telephoneNumber: 96 590 3400 userPassword: telephoneNumber: $ "$ . $ " . seeAlso: $ " description: Debe aparecer como mínimo una vez en cada entrada Define los atributos optativos y obligatorios / " # que tendrá dicha entrada " $# Se pueden conjugar varios en función de las % ! necesidades & ' #( )*+), -,, ! Poseen un identificador único (OID) objectClass::referral ref: Puede utilizar DBs como back-storage Puede dividir el árbol de directorios en subárboles de tal manera que un Servidor LDAP controle cada $ "$ . subárbol por los siguientes casos: $ " . server1.dtic.ua.es $ " Rendimiento #LDIF para la nueva entrada ou profesores Localización Geográfica dn: ou=profesores, dc=dtic, " $# / " # dc=ua,dc=es objectclass: referral Cuestiones Administrativas ref: ldap://server2.dtic.ua.es/ou=profesores,dc=dtic,dc=ua,dc=es Cada subárbol o rama será referenciada desde el / árbol padre $ objectClass::referral "$ $ " $ " server2.dtic.ua.es Modos de funcionamiento: El servidor LDAP resuelve la solicitud % ! El cliente resuelve #Ejemplo de archivo LDIF para la entrada de un usuario Protocolo orientado a la conexión y basado en intercambio de mensajes dn: cn=Alex García Pérez, ou=profesores, dc=dtic, dc=ua,dc=es objectclass: top objectclass: person objectClass::person cn: Alex García Pérez cn: sn: García Pérez sn: telephoneNumber: 96 590 3400 userPassword: {MD5}Xr3j2zPw45eeQbdaaQxx userPassword: telephoneNumber: $ "$ . $ " . seeAlso: $ " description: Peligro en el trasiego de información Todas las operaciones se controlan mediante el nivel de autorización del usuario autenticado / " " $# # Autenticación mediante login y password (encriptación: CRYPT, MD5, SHA, SSHA) % ! & ' #( )*+), -,, ! 0 objectClass::person $ 12 + 34 5 ! 0 -+ 6 ($ 6 %% Anónima: dn vacío + password Acceso a información pública Simple: dn + password La información viaja sin codificar (no recomendada) Simple sobre SSL/TLS: Se negocia una capa de transporte seguro La información viaja de forma segura Simple y Capa de Seguridad (SASL) Módulo configurable que permite negociar previamente el mecanismo de autenticación y la capa de transporte seguro (kerberos, GSSAPI, S/Key, EXTERNAL) Clásica: base de datos compuesta por los ficheros /etc/passwd, /etc/group y /etc/shadow /etc/passwd • Login:contraseña:UID:GID:GECOS:home:shell /etc/shadow • Login:contraseña:ult. Cambio:min días cambio:max días cambio:nºdías aviso expiración:nº\ días inactivo:fecha expiración:flags /etc/group • Nombre:contraseña:GID:lista usuarios miembro Utilidades: Adduser/useradd Userdel Groupadd Groupdel passwd LDAP: protocolo ligero del X500 que se estructura en árbol con una base a partir de la cual se define los objetos. PAM + nsswitch (como todos) Lógica necesaria: PAM LDAP (libpam-ldap) Nss_ldap (libnss-ldap) /etc/nsswitch.conf Passwd:files ldap Group:files ldap Shadow:files ldap /etc/ldap.conf (cliente) /etc/pam.d/ Clases (nis.schema): posixAccount • Require: cn, uid, uidNumber, gidNumber, homeDirectory • Autorise: userPassword, loginShell, gecos, description shadowAccount • Require: uid • Autorise:userPassword, shadowLastChange, shadowMin, shadowMax, shadowWarning, shadowInactive, shadowExpire, shadowFlag, description posixGroup • Require: cn, gidNumber • Autorise:userPassword, memberUid, description. Definición de usuario: dn: cn=wwwadm, ou=eps, o=ua, c=es cn: wwwadm objectClass: top objectClass: posixAccount uid: wwwadm uidNumber: 1000 gidNumber: 1000 homeDirectory: /home/wwwadm userPassword: {crypt}1FFO5k13sgQRg loginShell: /bin/ksh Grupo usuarios: dn: cn=usuarios, ou=Groups, ou=eps, o=ua, c=es cn: usuarioss objectClass: top objectClass: posixGroup gidNumber: 500 memberUid: wwwadm memberUid: wwwadm2 Utilidades: Ldappasswd Ldapadd ldapdelete Ldapmodify Ldapsearch Principales características de LDAP: Autenticación Capacidad de almacenamiento de datos Carácter distribuido Ideal como servidor de autenticación y autorización para otras aplicaciones y mecanismos de Autenticación del tipo AAA (Authentication, Authorization and Accounting). Ejemplos de este tipo de aplicaciones son: Sistemas Operativos: Linux (PAM), Windows (pgina),.. Correo electrónico Kerberos Radius HTTP, FTP, SAMBA, … Evitar el envío de contraseñas por la red Cliente y Servidor comparten un secreto con el cual encriptan la información (Password) para autenticarse Utilizado en ISP y redes inalámbricas Permite el acceso a recursos de otras redes Atributos:Valores Utiliza LDAP de dos formas Para autenticar Para autenticar y almacenar información de autorización => Se mapean los atributos de Radius con los de LDAP => Se encarga el administrador Punto de Servidor Radius Servidor LDAP Servidor Radius acceso /principales NAS Una de las características de LDAP es la Cliente autenticación que junto con la capacidad de almacenamiento de datos y sus características distribuibles leServidor hace ideal como LDAP Servidor KDC servidor de autenticación y autorización para otras aplicaciones $ $ $ (correo, servidor de archivos...) y mecanismos de Autenticación delPetición tipodeAAA (authentication,authorization and BD Accounting). JPEG JPEG acceso Solicitud dede estos mecanismos AAA son: Ejemplos ' autenticación 7 $ 8Datos ( de •autenticación Kerberos 9 ( Datos a autenticar Datos de autenticación JPEG JPEG Ticket • Radius Aceptación + Datos de acceso Acceso al recurso $ Respuesta de aceptación + datos de usuario y servicio JPEG JPEG TGT JPEG JPEG Ticket