Introducción – ¿Qué es kerberos?
Kerberos es un protocolo de autenticación de redes creado por el MIT que permite a dos ordenadores en una red insegura demostrar su identidad mutuamente de manera segura.
En este tutorial vamos a ver como raalizar la configuración de kerberos en un sistema operativo debian wheezy.
Configuración
Primero comprobamos que todos los equipos del subdominio están definidos correctamente:
root@targaryen:/var/cache/bind# cat db.manuelluna.gonzalonazareno.org $ORIGIN manuelluna.gonzalonazareno.org. $TTL 86400 ; 1 day @ IN SOA targaryen.manuelluna.gonzalonazareno.org. admin.manuelluna.gonzalonazareno.org. ( 1 ; serial 21600 ; refresh (6 hours) 3600 ; retry (1 hour) 604800 ; expire (1 week) 21600 ; minimum (6 hours) ) @ IN NS targaryen.manuelluna.gonzalonazareno.org. targaryen IN A 10.0.0.16 stark IN A 10.0.0.25
Comprobamos que tanto targaryen como stark, resuelven su propio FQDN correctamente.
root@targaryen:/var/cache/bind# hostname --fqdn targaryen.manuelluna.gonzalonazareno.org
root@stark:/home/debian# hostname --fqdn stark.manuelluna.gonzalonazareno.org
Instalamos el paquete «nptdate» en ambas máquinas para tener sincronizados los relojes:
# apt-get install ntpdate
Una vez instalado configuramos el mismo servidor de hora en ambas máquinas, para evitar errores, paramos el servicio y después lo iniciamos:
# service ntp stop # ntpdate papion.gonzalonazareno.org # service ntp start
Ahora procedemos a instalar kerberos en el servidor targaryen:
root@targaryen:/var/cache/bind# apt-get install krb5-kdc krb5-admin-server
Durante la instalación debemos introducir como dominio:
MANUELLUNA.GONZALONAZARENO.ORG
Y como servidor kerberos y servidor administrativo:
targaryen.manuelluna.gonzalonazareno.org
Moficiamos el fichero «/etc/krb5kdc/kdc.conf« y quitamos el puerto 750:
[kdcdefaults] kdc_ports = 88 [realms] MANUELLUNA.GONZALONAZARENO.ORG = { database_name = /var/lib/krb5kdc/principal admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab acl_file = /etc/krb5kdc/kadm5.acl key_stash_file = /etc/krb5kdc/stash kdc_ports = 88 max_life = 10h 0m 0s max_renewable_life = 7d 0h 0m 0s master_key_type = des3-hmac-sha1 supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-c$ default_principal_flags = +preauth }
Ahora modificamos el fichero «/etc/default/krb5-kdc« y lo dejamos así:
KRB4_MODE=disable RUN_KRB524D=false
El fichero debe «/etc/krb5.conf» tener el siguiente contenido:
[libdefaults] default_realm = MANUELLUNA.GONZALONAZARENO.ORG [realms] MANUELLUNA.GONZALONAZARENO.ORG = { kdc = targaryen.MANUELLUNA.gonzalonazareno.org admin_server = targaryen.MANUELLUNA.gonzalonazareno.org } [domain_realm] .MANUELLUNA.gonzalonazareno.org = MANUELLUNA.GONZALONAZARENO.ORG MANUELLUNA.gonzalonazareno.org = MANUELLUNA.GONZALONAZARENO.ORG
Una vez modificado, ejecutamos el siguiente comando para definir nuestro nuevo «realm«:
root@targaryen:/home/debian# krb5_newrealm
Nos pedirá una contraseña y una vez termine el proceso los servicios se reiniciarán automáticamente.
Usamos «kadmin.local» ya que sólo podemos acceder desde local y creamos un nuevo usuario:
kadmin.local: add_principal root/admin@MANUELLUNA.GONZALONAZARENO.ORG WARNING: no policy specified for root/admin@MANUELLUNA.GONZALONAZARENO.ORG; defaulting to no policy Enter password for principal "root/admin@MANUELLUNA.GONZALONAZARENO.ORG": Re-enter password for principal "root/admin@MANUELLUNA.GONZALONAZARENO.ORG": Principal "root/admin@MANUELLUNA.GONZALONAZARENO.ORG" created.
Creamos el usuario «usuario» para hacer las pruebas correspondientes.
kadmin.local: add_principal usuario@MANUELLUNA.GONZALONAZARENO.ORG WARNING: no policy specified for usuario@MANUELLUNA.GONZALONAZARENO.ORG; defaulting to no policy Enter password for principal "usuario@MANUELLUNA.GONZALONAZARENO.ORG": Re-enter password for principal "usuario@MANUELLUNA.GONZALONAZARENO.ORG": Principal "usuario@MANUELLUNA.GONZALONAZARENO.ORG" created.
Ahora debemos modificar el fichero » /etc/krb5kdc/kadm5.acl » que es una lista ACL y descomentamos la linea */admin* y añadimos la siguiente linea:
usuario@MANUEL.GONZALONAZARENO.ORG *
Ya podemos acceder a kinit con el usuario creado y ver información de la sesión con «klist«.
root@targaryen:/home/debian# kinit usuario Password for usuario@MANUELLUNA.GONZALONAZARENO.ORG:
root@targaryen:/home/debian# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: usuario@MANUELLUNA.GONZALONAZARENO.ORG
Valid starting Expires Service principal 29/01/2015 02:00 29/01/2015 12:00 krbtgt/MANUELLUNA.GONZALONAZARENO.ORG@MANUELLUNA.GONZALONAZARENO.ORG renew until 30/01/2015 01:59
Ahora procedemos a configurar el cliente stark:
Instalamos los siguientes paquetes y nos preguntará lo mismo que en la instalación del servidor, introducimos los mismos datos.
root@stark:/home/debian# apt-get install krb5-user krb5-config
Una vez instalado y configurado, modificamos el fichero /etc/krb5.conf y lo dejamos igual que en el servidor.
Ya podemos autenticarnos con kinit desde el cliente:
root@stark:/home/debian# kinit usuario Password for usuario@MANUELLUNA.GONZALONAZARENO.ORG:
root@stark:/home/debian# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: usuario@MANUELLUNA.GONZALONAZARENO.ORG
Valid starting Expires Service principal 29/01/2015 02:02 29/01/2015 12:02 krbtgt/MANUELLUNA.GONZALONAZARENO.ORG@MANUELLUNA.GONZALONAZARENO.ORG renew until 30/01/2015 02:02
Ahora en el servidor definimos los principales:
kadmin.local: add_principal -randkey host/targaryen.manuelluna.gonzalonazareno.org@MANUELLUNA.GONZALONAZARENO.ORG WARNING: no policy specified for host/targaryen.manuelluna.gonzalonazareno.org@MANUELLUNA.GONZALONAZARENO.ORG; defaulting to no policy Principal "host/targaryen.manuelluna.gonzalonazareno.org@MANUELLUNA.GONZALONAZARENO.ORG" created. kadmin.local: add_principal -randkey host/stark.manuelluna.gonzalonazareno.org@MANUELLUNA.GONZALONAZARENO.ORG WARNING: no policy specified for host/stark.manuelluna.gonzalonazareno.org@MANUELLUNA.GONZALONAZARENO.ORG; defaulting to no policy Principal "host/stark.manuelluna.gonzalonazareno.org@MANUELLUNA.GONZALONAZARENO.ORG" created.
Ahora exportamos a un fichero los keytabs:
kadmin.local: ktadd host/targaryen.manuelluna.gonzalonazareno.org kadmin.local: ktadd -k /tmp/krb5.keytab host/stark.manuelluna.gonzalonazareno.org
Enviamos el keytab del directorio «/tmp» por scp al cliente stark:
root@targaryen:/home/debian# scp /tmp/krb5.keytab debian@10.0.0.25:/home/debian
Modificamos los permisos y el propietario del keytab en el servidor:
root@targaryen:/home/debian# chmod 400 /etc/krb5.keytab root@targaryen:/home/debian# chown sshd:ssh /etc/krb5.keytab
En el cliente stark movemos el keytab al directorio «/etc/» y modificamos sus permisos como en el servidor.
root@stark:/home/debian# mv /home/debian/krb5.keytab /etc/ root@stark:/home/debian# chmod 400 /etc/krb5.keytab root@stark:/home/debian# chown sshd:ssh /etc/krb5.keytab
Ahora tanto en el servidor como en el cliente editamos el fichero «/etc/ssh/sshd_config« y modificamos la siguientes lineas de tal forma:
#GSSAPI options GSSAPIAuthentication yes GSSAPICleanupCredentials yes
También debemos modificar las siguientes lineas en el fichero «/etc/ssh/ssh_config«:
GSSAPIAuthentication yes GSSAPIDelegateCredentials yes
Una vez modificados, reiniciamos el servicio ssh en ambas máquinas y añadimos el usuario «usuario» para realizar las comprobaciones:
# useradd -m -s /bin/bash usuario
Iniciamos con kinit e iniciamos la conexión por ssh desde targaryen a stark:
root@targaryen:/home/debian# kinit usuario Password for usuario@MANUELLUNA.GONZALONAZARENO.ORG: root@targaryen:/home/debian# ssh usuario@stark.manuelluna.gonzalonazareno.org Linux stark 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u1 x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. usuario@stark:~$
Ahora desde stark a targaryen:
root@stark:/home/debian# ssh usuario@targaryen.manuelluna.gonzalonazareno.org Linux targaryen 3.2.0-4-amd64 #1 SMP Debian 3.2.63-2+deb7u2 x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Thu Jan 29 02:30:57 2015 from stark.manuelluna.gonzalonazareno.org usuario@targaryen:~$