Kerberos es un protocolo de autenticación de red.
Kerberos proporciona una fuerte autenticación criptográfica contra los dispositivos que permite que el cliente y los servidores se comuniquen de una manera más segura. Está diseñado para abordar los problemas de seguridad de la red.
Cuando los firewalls actúan como una solución para abordar la intrusión de las redes externas, Kerberos generalmente se usa para abordar la intrusión y otros problemas de seguridad dentro de la red.
La versión actual de Kerberos es la versión 5, que se denomina KRB5 .
Para implementar Kerberos, necesitamos tener el servicio de autenticación centralizado ejecutándose en el servidor.
Este servicio se denomina CENTRO DE DISTRIBUCIÓN DE LLAVES (KDC).
Todas las demás computadoras en el reino de Kerberos confían en un servidor registrado con KDC.
Archivo krb5.conf de muestra
Aquí hay un archivo krb5.conf de ejemplo que contiene toda la información de asignación de REALM y de dominio a REALM,
# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] EXAMPLE.COM = { kdc = kerberos.example.com admin_server = kerberos.example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM
Instalar servidor Kerberos KDC
Por motivos de seguridad, se recomienda ejecutar el servidor Kerberos (KDC) en un servidor independiente.
Descargue e instale el paquete del servidor krb5.
# rpm -ivh krb5-server-1.10.3-10.el6_4.6.x86_64.rpm Preparing... ########################################### [100%] 1:krb5-server ########################################### [100%]
Verifique que los siguientes rpm estén instalados antes de configurar KDC:
# rpm -qa | grep -i krb5 pam_krb5-2.3.11-9.el6.x86_64 krb5-server-1.10.3-10.el6_4.6.x86_64 krb5-workstation-1.10.3-10.el6_4.6.x86_64 krb5-libs-1.10.3-10.el6_4.6.x86_64
Modificar archivo /etc/krb5.conf
Cambie /etc/krb5.conf para que se refleje como se muestra a continuación con las asignaciones REALM y DOMAIN_REALM adecuadas.
# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = MYREALM.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] MYREALM.COM = { kdc = elserver1.example.com admin_server = elserver1.example.com } [domain_realm] .myrealm.com = MYREALM.COM myrealm.com = MYREALM.COM
Modificar archivo kdc.conf
También se debe modificar kdc.conf como se muestra a continuación.
# cat /var/kerberos/krb5kdc/kdc.conf [kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] MYREALM.COM = { #master_key_type = aes256-cts acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal }
Crear base de datos KDC
Luego, cree la base de datos KDC usando el comando kdb5_util como se muestra a continuación. En esta etapa, ingrese la contraseña adecuada para la clave maestra de la base de datos de KDC.
# /usr/sbin/kdb5_util create -s Loading random data Initializing database '/var/kerberos/krb5kdc/principal' for realm 'MYREALM.COM', master key name 'K/[email protected]' You will be prompted for the database Master Password. It is important that you NOT FORGET this password. Enter KDC database master key: Re-enter KDC database master key to verify:
Asignar privilegios de administrador
A los usuarios se les pueden otorgar privilegios de administrador de la base de datos usando el archivo /var/kerberos/krb5kdc/kadm5.acl.
# cat /var/kerberos/krb5kdc/kadm5.acl */[email protected] *
En el ejemplo anterior, cualquier principal en MYREALM con una instancia de administrador tiene todos los privilegios de administrador.
Crear un director
Cree el principal con el siguiente comando. En este ejemplo, creé el principal con el nombre de usuario "eluser".
# kadmin.local -q "addprinc eluser/admin" Authenticating as principal root/[email protected] with password. WARNING: no policy specified for eluser/[email protected]; defaulting to no policy Enter password for principal "eluser/[email protected]": Re-enter password for principal "eluser/[email protected]": Principal "eluser/[email protected]" created.
Iniciar el servicio Kerberos
Inicie los demonios KDC y kadmin como se muestra a continuación.
# service krb5kdc start Starting Kerberos 5 KDC: [ OK ] # service kadmin start Starting Kerberos 5 Admin Server: [ OK ]
Configurar cliente Kerberos
Configure el cliente de Kerberos para autenticarse en la base de datos de KDC:
Ahora veamos cómo configurar el cliente krb5 para autenticarse en la base de datos Kerberos KDC que creamos anteriormente.
Paso 1:Instale los paquetes krb5-libs y krb5-workstation en la máquina cliente.
Paso 2:copie /etc/krb5.conf desde el servidor KDC a la máquina cliente.
Paso 3:Ahora necesitamos crear el principal para el cliente en la base de datos KDC/Kerberos.
Puede usar los siguientes comandos para crear el principal para la máquina cliente en el servidor maestro de KDC. En el siguiente ejemplo, estoy creando un principal de host para el cliente elserver3.example.com en el servidor KDC maestro elserver1.example.com
# kadmin.local -q "addprinc host/elserver3.example.com" Authenticating as principal root/[email protected] with password. WARNING: no policy specified for host/[email protected]; defaulting to no policy Enter password for principal "host/[email protected]": Re-enter password for principal "host/[email protected]": Principal "host/[email protected]" created.
Paso 4:extraiga el archivo krb5.keytab para el cliente del servidor maestro de KDC con el siguiente comando:
# kadmin.local -q "ktadd -k /etc/krb5.keytab host/elserver3.example.com" Authenticating as principal root/[email protected] with password. Entry for principal host/elserver3.example.com with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des3-cbc-sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type arcfour-hmac added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des-hmac-sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des-cbc-md5 added to keytab WRFILE:/etc/krb5.keytab.
Esto completa la configuración. Ya has terminado en esta etapa.
A partir de ahora, cada vez que establezca una conexión SSH, RSH, el host verificará su identidad con la base de datos de KDC mediante el archivo keytab y establecerá una conexión segura a través de Kerberos.
Ktadd se usa para generar una nueva tabla de claves o agregar un principal a una tabla de claves existente desde el comando kadmin.
Ktremove se usa para eliminar el principal de una tabla de claves existente. El comando para eliminar el principal que creamos anteriormente es,
kadmin.local -q "ktremove -k /etc/krb5.keytab –q all"
Eliminar una base de datos KDC
Por alguna razón, si tiene que eliminar una base de datos KDC, use el siguiente comando:
# kdb5_util -r MYREALM.COM destroy kdb5_util: Deleting KDC database stored in /usr/local/var/krb5kdc/principal, you sure (type yes to confirm)? <== yes OK, deleting database '/usr/local/var/krb5kdc/principal'...
La opción -f en el comando anterior fuerza la eliminación de la base de datos KDC.
Copia de seguridad y restauración de la base de datos KDC
Para hacer una copia de seguridad de una base de datos KDC en un archivo, use krb5_util_dump.
# kdb5_util dump kdcfile # ls -l kdcfile -rw-------. 1 root root 5382 Apr 10 07:25 kdcfile
Para restaurar la base de datos KDC desde el archivo de volcado creado en el paso anterior, haga lo siguiente:
# kdb5_util load kdcfile