Kerberos+LDAP+NFSv4: Diferenzas entre revisións

De Wiki do Ciclo ASIR do IES de Rodeira
Saltar á navegación Saltar á procura
Liña 64: Liña 64:
<ol start='4'><li>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.
<ol start='4'><li>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, creando primeiro as políticas como por exemplo
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:</li></ol>


add_policy -minlength 8 -minclasses 1 user
add_policy -minlength 8 -minclasses 1 user
add_policy -minlength 8 -minclasses 3 admin
add_policy -minlength 8 -minclasses 3 admin


:Para posteriormente crear o ''principal'' cunha política determiñada:
</li></ol>

addprinc -policy user root/admin

:Ou cambiar de política un ''principal'' existente:

modprinc -policy admin root/admin


=LDAP=
=LDAP=

Revisión como estaba o 29 de setembro de 2013 ás 21:41

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

LDAP

NFSv4