Kerberos

Z DCEwiki
Skočit na navigaci Skočit na vyhledávání

Uvedení do problematiky

http://www.abclinuxu.cz/clanky/bezpecnost/kerberos-prihlasovani-snadno-a-rychle

Linuxový autorizační server s kerberosem

Hostname: ldap-server

Nastavení sítě (prozatím je stroj za NAT):

auto lo
iface lo inet loopback
allow-hotplug eth0
iface eth0 inet static
	address 172.16.54.131
	netmask 255.255.255.0
	network 172.16.54.0
	broadcast 172.16.54.255
	gateway 172.16.54.2

Heslo root: zatím nemá

Nastavení souboru /etc/hosts

127.0.0.1	localhost.localdomain	localhost
172.16.54.131	ldap-server.virtual	ldap-server

Nainstalované balíky

(platné pro debian)

krb5-admin-server
administrační server pro kerberos
krb5-config
výchozí konfigurační soubor
krb5-kdc
vlastní kerberos
krb5-user
utility pro práci s kerberem
libkrb53
knihovny pro kerberos
libkadm55
knihovny pro administrační server kerberosu

Konfigurace Kerbera

Konfigurační soubor /etc/krb5.conf

  • default_realm VIRTUAL
  • Definuje umístění souboru kdc.conf
[libdefaults]
	default_realm = VIRTUAL
	dns_lookup_realm = false
	dns_lookup_kdc = false
[realms]
	VIRTUAL = {
		kdc = ldap-server.virtual:88
		admin_server = ldap-server.virtual:749
		default_domain = virtual
	}

[domain_realm]
	.virtual = VIRTUAL
	virtual = VIRTUAL
	nula.virtual = VIRTUAL
	.nula.virtual = VIRTUAL

[kdc]
	profile = /etc/krb5kdc/kdc.conf

[logging]
	default = FILE:/var/log/krb5libs.log
	kdc = FILE:/var/log/krb5kdc.log
	admin_server = FILE:/var/log/kadmind.log

Definice databáze

Konfigurační soubor /etc/krb5kdc/kdc.conf

  • principal - databáze uživatelů
  • kadm5.acl - soubor s oprávněními pro přístup k databázi
[kdcdefaults]
kdc_ports = 88
acl_file = /etc/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /etc/krb5kdc/kadm5.keytab

[realms]
VIRTUAL = {
master_key_type = des-cbc-crc

supported_enctypes = des-cbc-crc:normal des3-cbc-raw:normal des3-cbc-sha1:normal des-cbc-crc:v4 des-cbc-crc:afs3 des3-hmac-sha1:normal

profile = /etc/krb5.conf
database_name = /etc/krb5kdc/principal
admin_database_name = /etc/krb5kdc/kadm5_adb
admin_database_lockfile = /etc/krb5kdc/kadm5_adb.lock
admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
acl_file = /etc/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
key_stash_file = /etc/krb5kdc/.k5stash

kdc_ports = 88
kadmind_port = 749

max_life = 0h 3m 0s
max_renewable_life = 1d 0h 0m 0s

V kadm5.acl nastavena všechna práva pro principal krbadmin/admin:

krbadmin/admin@VIRTUAL *

Master key databáze: lablink

Principal pro uživatele krbadmin/admin@VIRTUAL : ldap

Spuštění Kebera

Spuštění administračního serveru

/etc/init.d/krb5-admin-server start

Spuštění samotného kerbera

/etc/init.d/krb5-kdc start

Administrační konzole

kadmin -p krbadmin/admin

Pozn: Když stávkuje výpis principálů (listprincs) je třeba zkontrolovat jestli je správně nastavena cesta k souboru kadm5.acl

Nastavení uživatele

První uživatel nastaven na user0 ( heslo 'tester' )

kadmin: addprinc user0

Práce s tikety

kinit [user] - vytáhne tiket klist - vypíše tikety kdestroy - zruší tiket

Kerberizace služeb

Probíhá tak, že se vytvoří pro každou službu tzv. principal

kadmin:  addprinc -randkey cifs/virtual
kadmin:  ktadd cifs/srv-file1.firma.local

Druhým příkazem se vyexportuje keytab principalu služby (defaultně exportuje do konfiguračního adresáře /etc) do souboru. Tento soubor se pak zpřístupní službě. Výpis obsahu keytabu (příklad):

klist -ek /etc/krb5.keytab


Nastavení autorizace MS Windows přes kerberos

Pro autorizaci pracovních stanic MS Windows není nutný ani ldap ani samba.

Stačí kdc server a uživatelé v databázi kerberosu.

Nastavení principalu pro službu krbtgt/virtual - není nezbytně nutné

kadmin.local -q "addprinc -randkey krbtgt/virtual"

Přidání stroje a hesla které bude použito pro přihlášení k lokálnímu účtu tohoto stroje (volba ksetup /setcomppassword tester )..

kadmin.local -q "ank -pw tester host/nula.virtual"

Přes ksetup nastavenu doménu a výchozího lokálního uživatele. Lze mít i pro každého uživatele účet extra (pak je místo namapovaného uživatele uvedena *)

důležité je nastavení hesla pro comp. musí odpovídat nastavení pro hosta v kerberosu

screenshot 00 - zachycuje výpis principálu screenshot 01 - zachycuje nastavení souboru hosts (není nezbytně nutné), výpis ksetup a nastavení pracovní skupiny screenshot 02 - zachycuje přihlašovací dialog při volbě s lokální autentizací screenshot 03 - zachycuje přihlašovací dialog při volbě s autentizací do kerberovy říše screenshot 04 - tuto chybovou hlášku vyhodí když není v databázi principal pro službu krbtgt/virtual screenshot 05 - zachytí chybu - když není nastaveno heslo pro počítač na klientské stanici screenshot 06 - zachytil chybu která se objeví když neexistuje uživatel user0 screenshot 07 - tuto chybovou hlášku vyhodí když není nastaven uživatel host/nula.virtual

Nastavení klientské stanice

Nastavení DNS pro pracovní skupinu je rozhodující pro přihlášení do REALMU

1, instalace utility ksetup - je součástí system tools na instalačním CD v balíku support.cab

2, tato utilita se zkopíruje do adresáře C:\Windows\system32

  1. 3, Vytvoří se soubor hosts, který se umístí (na Win XP) do adresáře C:\Windows\system32\system32\drivers\etc
  1. 4, Jeho syntaxe je následující..
  2. 172.16.54.131 virtual

5, Nastaví se kdc pro sféru kerbera (REALM) ksetup /addkdc VIRTUAL ldap-server Tento REALM se pak objeví jako přihlašovací doména (sféra) kerbera. Pro jeden REALM může být nastaveno více kdc serverů, a stejně tak může být nastaveno více REALMů (jeden KDC server může obsluhovat více realmů) V případě že jde o neexistující REALM objeví se hlášení o neexistující doméně (viz screenshot 05)

6, Nastaví se heslo pro přihlášení stroj Toto heslo není závislé na hesle lokálního uživatele, ale musí odpovídat heslu pro službu host!!!


7, Nastaví se.. ...výchozí lokální uživatel (musí existovat, jinak vzniká problém.. ) ksetup /mapuser VIRTUAL user0 ...nebo se nastaví že uživatel z kerbera s REALM VIRTUAL má i lokální účet ksetup /mapuser VIRTUAL * ...nebo že to může být libovolný uživatel z libovolného realmu ksetup /mapuser * * V případě že je nastaveno více REALMů, může být namapováno více uživatelů, každý pro jeden REALM

Pozn.: Po tiketu se znovu ptá pokud mu vyprší platnost stávajícího tiketu, který je uložen v profilu. Je třeba tedy raději začít od krátkodobějších tiketů, než naopak.

http://beemerworld.com/tips/xphosts.htm - nastavení hosts

Přihlášení

Kerberos-02.png
Kerberos-03.png

Vlevo je dialog pro lokální přihlášení (uživatel je autorizován vůči lokálně uloženému heslu)

Vpravo dialog pro přihlášení s autorizací vůči kerberosu.


Chybové hlášky

Oznámení když není přes ksetup nastaveno heslo pro klientský počítač shodné s heslem pro principal host/nula.virtual
Oznámení když klientské stanici neodpovídá žádný domain_realm
Oznámení když pro uživatele neexistuje lokální účet
Oznámení když není nastaven na kdc principal pro host/nula.virtual