Kerberos+LDAP+NFSv4: Diferenzas entre revisións

De Wiki do Ciclo ASIR do IES de Rodeira
Saltar á navegación Saltar á procura
Liña 100: Liña 100:
'''LDAP''' (''LightWeight Directory Access Protocol'') é un protocolo de acceso a bases de datos de directorio (Servicios de Directorio) que implementa un subconxunto do estándar X.500. Os servicios de directorio caracterízanse por ser sistemas con moitos accesos de lectura e moi poucas insercións e actualizacións, polo tanto están optimizadas para consultas rápidas.
'''LDAP''' (''LightWeight Directory Access Protocol'') é un protocolo de acceso a bases de datos de directorio (Servicios de Directorio) que implementa un subconxunto do estándar X.500. Os servicios de directorio caracterízanse por ser sistemas con moitos accesos de lectura e moi poucas insercións e actualizacións, polo tanto están optimizadas para consultas rápidas.


Este tipo de bases de datos poden almacenar e organizar, por exemplo, a información sobre usuarios dunha rede e os recursos da mesma.''LDAP'' xunto con ''Kerberos'' forma o núcleo do sistema de [[wikipedia:Active Directory|Active Directory]] de [[wikipedia:Microsoft Windows|Microsoft Windows]], e de moitas outras implementacións como [[wikipedia|Novell eDirectory]] ou o [[wikipedia:RedHat Directory Service|RedHat Directory Service]].
Este tipo de bases de datos poden almacenar e organizar, por exemplo, a información sobre usuarios dunha rede e os recursos da mesma.''LDAP'' xunto con ''Kerberos'' forma o núcleo do sistema de [[wikipedia:Active Directory|Active Directory]] de [[wikipedia:Microsoft Windows|Microsoft Windows]], e de moitas outras implementacións como [[wikipedia|Novell eDirectory]] ou o [[wikipedia:389_Directory_Server|RedHat Directory Service]].
As bases de datos LDAP teñen forma de árbore, dandolle ao administrador a posibilidade de crear as distintas ramas (DIT, Directory Information Tree). En primeiro lugar se debe especificar a raíz da árbore, utilizándose normalmente o dominio da organización, como pode ser dc=iesrodeira, dc=com (dc quere dicir Domain Component).
As bases de datos LDAP teñen forma de árbore, dandolle ao administrador a posibilidade de crear as distintas ramas (DIT, Directory Information Tree). En primeiro lugar se debe especificar a raíz da árbore, utilizándose normalmente o dominio da organización, como pode ser dc=iesrodeira, dc=com (dc quere dicir Domain Component).
As distintas entradas na árbore LDAP se representan habitualmente en formato LDIF (LDAP Data Interchange Format) que indican o nome (dn) da nova entrada e os distintos atributos da entrada. O dn (Distinguished Name), consta de alguns atributos da entrada combinados co dn do pai.
As distintas entradas na árbore LDAP se representan habitualmente en formato LDIF (LDAP Data Interchange Format) que indican o nome (dn) da nova entrada e os distintos atributos da entrada. O dn (Distinguished Name), consta de alguns atributos da entrada combinados co dn do pai.

Revisión como estaba o 29 de setembro de 2013 ás 22:15

Kerberos

Diálogo Kerberos de Acceso a Servidor NFS

Kerberos é un protocolo de autenticación que permite a ordenadores nunha rede insegura identificarse mutuamente de xeito seguro. Tanto os clientes coma o servidor verificarán a identidade un do outro. Kerberos básase en criptografía de chave simétrica e precisa dun terceiro de confianza, ainda que existen extensións que permiten o uso de criptografía de chave asimétrica. Kerberos establece tamén unha duración das autorizacións, de xeito que únicamente é necesario autenticarse unha vez ata que caduque a concesión.

Boxinfo info.png
Kerberos permite evitar o envío de contrasinais sen cifrar pola rede, centralizar a xestión de usuarios e contrasinais, e almacenar as credenciais en unha única máquina.

O funcionamento de Kerberos emprega 2 entidades (servidores), o Servidor de Autenticación (SA) e o Servidor de Tickets de Acceso (TGS) co obxecto de asegurar o acceso a un servicio ofrecido por un Proveedor de Servizo (SS) como NFS. Estes dous servidores forman parte do servidor kerberos, que atenderá as solicitudes mediante o seguinte intercambio de mensaxes:

  1. O usuario introduce no cliente o seu usuario e contrasinal
  2. O cliente transforma o contrasinal con cifrado de un so sentido, creando a chave segreda do cliente.
  3. O cliente envía unha mensaxe en claro ao SA solicitando servicio para o usuario identificado.
  4. O SA verifica que o usuario está na súa base de datos obtendo a súa contrasinal da BBDD e xerando a chave segreda do cliente que cotexará coa recibida. Si coinciden se crearán dúas mensaxes que se envían ao cliente:
Mensaxe A
O SA Crea unha mensaxe cifrada coa chave segreda do cliente, chamada Client/TGS Session Key.
Mensaxe B
O SA obteń o contrasinal do TGS da BBDD e xenera con ela unha mensaxe cifrada que conten: ID de cliente, dirección IP do cliente, periodo de validez do ticket, e o Client/TGS Session Key. Esta mensaxe é o Ticket Granting Ticket (TGT).
  1. O cliente descifra a Client/TGS Session Key da Mensaxe A, que se utilizará para a comunicación co TGS.
  1. Cando o cliente precise un servicio, necesitará solicitarllo ao TGS mediante as seguintes mensaxes:
Mensaxe C
Composta polo TGT e a ID do servicio solicitado.
Boxinfo info.png
Debemos recordar que o cliente non ten acceso ao contido do TGT xa que está cifrado coa contrasinal do TGS.
Mensaxe D
Cifrado coa Client/TGS Session Key obtida da Mensaxe A e composta polo ID de cliente e unha marca de tempo, chamada Autenticador.
  1. O TGS descifra o TGT da Mensaxe C obtendo a Client/TGS Session Key necesaria para descifrar a Mensaxe D (Autenticador) e obtendo así o ID de cliente e a marca de tempo
  1. O TGS con esta información crea unha mensaxe composta pola ID de cliente,IP do cliente,Periodo de validez e a Client/Server Session Key xenerada para a comunicación. Esta mensaxe se cifra coa Chave Segreda do Servizo e se chama Client-To-Server Ticket (Mensaxe E). Tamén se crea outra mensaxe composta pola Client/Server Session Key cifrada coa Client/TGS Session Key (Mensaxe F). Se envían estas dúas mensaxes ao cliente
  1. Unha vez recibidas estas mensaxes, o cliente poderá autenticarse para acceder ao servizo enviando ao Proveedor do Servizo (SS) a Mensaxe E, e unha nova mensaxe cifrada coa Client/Server Session Key obtida da Mensaxe F que terá o ID do cliente e unha Marca de Tempo.
  1. O proveedor de servizo (SS) descifrará a Mensaxe E coas súa chave sergreda obtendo así a Client/Server Session Key que lle permitirá descifrar a Mensaxe F e crear unha mensaxe de autorización de acceso ao servizo (Mensaxe H) composta pola marca de tempo obtida da Mensaxe F+1 e cifrada coa Client/Server Session Key.
  1. O cliente descifra a mensaxe de autorización e confirma a corrección da marca de tempo. Si é correcto, poderá empezar a utilizar o servizo.

Instalación de Kerberos

En Linux existen dúas versións de Kerberos: Heimdall e MIT. Utilizaremos MIT.

Os tickets kerberos teñen periodos de validez establecidos, polo que resulta importante a sincronización dos distintos ordenadores da rede. Para manter a sincronización podemos facer uso de ntp ou do paquete ntpdate, que combinado con cron nos permitirá manter o tempo en sincronía en todos os ordenadores da rede. Se recomenda a versión 5 de Kerberos, xa que a versión 4 ten diversas vulnerabilidades e debilidades no cifrado. E tamén necesario que todos os equipos que utilicen Kerberos sexan resoltos de modo axeitado, tanto de modo directo como inverso, polo que e convinte un servidor DNS, e incluso engadir ao /etc/hosts os servidores e clientes implicados para asegurar o posible fallo do DNS.

Kerberos soporta replicación a múltiples servidores, recomendándose o uso de polo menos dous, un maestro que será o servidor Primario (PDC) e outro Secundario que estará dispoñible para cubrir posibles fallos do maestro (BDC). Os clientes Kerberos utilizarán o servidor secundario automáticamente no caso de fallo do primario.

Boxinfo info.png
Para utilizar as ferramentas administrativas como kadmin e imprescindible a existencia dun servidor Primario. En caso de fallo do PDC será imposible a agregación ou modificación de entradas no dominio Kerberos mentras que o PDC non sexa posto de novo en liña

Instalaremos o servidor Kerberos:

  1. Instalación do software:
 apt-get install krb5-kdc krb5-admin-server

Durante a instalación se solicitará:

  • O nome do dominio Kerberos (Realm), que normalmente será o noso dominio en maiúsculas: IESRODEIRA.COM
  • Os servidores Kerberos para o dominio, que serán en primeiro lugar o PDC, e logo o BDC: krbldap-pdc.iesrodeira.com krbldap-bdc.iesrodeira.com
  • O nome do servidor administrativo (PDC): krbldap-pdc.iesrodeira.com
  1. Debemos modificar /etc/krb5.conf para incluir a información do noso dominio kerberos na sección [domain-realm] e un apartado para configurar os log de kerberos
 mkdir /var/log/kerberos
 chmod 750 /var/log/kerberos
 [domain-realm]
       .iesrodeira.com = IESRODEIRA.COM
       iesrodeira.com = IESRODEIRA.COM
 [logging]
       kdc=FILE:/var/log/kerberos/krb5kdc.log
       admin_server=FILE:/var/log/kerberos/kadmin.log
       default=FILE:/var/log/kerberos/krb5lib.log
  1. A continuación creamos a base de datos para Kerberos, para o que necesitará recolectar información aleatoria (tardará un pouco) e solicitarnos unha password que será imprescindible para o decodificado da base de datos:
 krb5_newrealm
  service krb5-admin-server restart && service krb5-kdc restart
  1. Xa podemos empezar a engadir servidores e usuarios a base de datos Kerberos (principals) mediante a utilidade kadmin.local. Os principals Kerberos teñen a forma SPEC@REALMKERBEROS (no noso caso SPEC@IESRODEIRA.COM), donde SPEC normalmente ten a forma de usuario/rol ou servizo/hostname (por exemplo, root/admin, ou nfs/nfs.iesrodeira.com). Estas SPEC se poden utilizar logo no ficheiro /etc/krb5kdc/kadm5.acl para establecer ACLS especificando permisos.


As password para os principals poden organizarse mediante políticas (policies) que forzan distintos graos de fortaleza (-minlength, -minclasses, -maxlife, -minlife, -maxfailure, -failurecountinterval, -lockoutduration), creando primeiro as políticas como por exemplo:
  add_policy  -minlength 8  -minclasses 1 user
  add_policy  -minlength 8  -minclasses 3 admin
Para posteriormente crear o principal cunha política determiñada:
  addprinc -policy user root/admin
Ou cambiar de política un principal existente:
  modprinc -policy admin root/admin
Polo tanto, creamos as políticas e un principal para poder acceder a configuración Kerberos dende calqueira equipo cliente:
  add_policy -minlength 6 -minclasses 1 user
  add_policy -minlength 8 -minclasses 2 admin
  addprinc -policy admin root/admin
E editaremos /etc/krb5kdc/kadm5.acl, especificando */admin *, indicando que todos os usuarios co rol admin teñen todos os privilexios de administración. A partir deste momento poderemos administrar o servicio Kerberos dende calqueira cliente coa utilidade kadmin, crear tickets coa utilidade kinit, examinalos (klist) e eliminalos (kdestroy).
Boxinfo info.png
Nos clientes Kerberos será necesario instalar os paquetes krb5-config, krb5-clients e krb5-user. En caso de problemas se deberá verificar en /etc/krb5.conf que:
  • [domain_realm] conten o mapeo ao dominio correcto
  • default_realm ten o valor correcto
  • o realm está definido na sección [realms]

Podemos comprobar o correcto funcionamento creando un ticket para o principal creado, listando o ticket (TGT) e destruíndolo:

 kinit -p root/admin
 klist
 kdestroy

LDAP

LDAP (LightWeight Directory Access Protocol) é un protocolo de acceso a bases de datos de directorio (Servicios de Directorio) que implementa un subconxunto do estándar X.500. Os servicios de directorio caracterízanse por ser sistemas con moitos accesos de lectura e moi poucas insercións e actualizacións, polo tanto están optimizadas para consultas rápidas.

Este tipo de bases de datos poden almacenar e organizar, por exemplo, a información sobre usuarios dunha rede e os recursos da mesma.LDAP xunto con Kerberos forma o núcleo do sistema de Active Directory de Microsoft Windows, e de moitas outras implementacións como Novell eDirectory ou o RedHat Directory Service. As bases de datos LDAP teñen forma de árbore, dandolle ao administrador a posibilidade de crear as distintas ramas (DIT, Directory Information Tree). En primeiro lugar se debe especificar a raíz da árbore, utilizándose normalmente o dominio da organización, como pode ser dc=iesrodeira, dc=com (dc quere dicir Domain Component). As distintas entradas na árbore LDAP se representan habitualmente en formato LDIF (LDAP Data Interchange Format) que indican o nome (dn) da nova entrada e os distintos atributos da entrada. O dn (Distinguished Name), consta de alguns atributos da entrada combinados co dn do pai. Realizaremos unha instalación de OpenLDAP para almacenar a base de datos dos usuarios e servicios Kerberos, e configuraremos os clientes do modo apropiado. Neste exemplo, o servicio LDAP e Kerberos estarán na mesma máquina, si estiveran en máquinas distintas sería convinte que a comunicación se realizase de xeito seguro mediante SSL.

NFSv4