Kerberos
Zkrácený příkaz | Příkaz | Popis |
---|---|---|
Práce s principaly | ||
? nebo lr |
list_request |
Přehled dostupných příkazů |
getprivs |
get_privs |
Výpis práv přihlášeného uživatele |
ank nebo addprinc |
add_principal |
Přidání nového uživatele |
delprinc |
delete_principal |
Odstranění uživatele z Kerbera |
getprinc |
get_principal |
Výpis nastavení pro uživatele |
modprinc |
modify_principal |
Úprava nastavení pro uživatele |
cpw |
change_password |
Změna hesla pro uživatele |
getprincs nebo listprincs |
get_principals nebo list_principals |
Výpis uživatelů |
Práce s politikami | ||
addpol |
add_policy |
Přidání nové politiky do Kerbera |
delpol |
delete_policy |
Odstranění politiky z Kerbera |
getpol |
get_policy |
Výpis nastavení politiky |
modpol |
modify_policy |
Úprava politiky |
getpols nebo listpols |
get_policies nebo list_policies |
Výpis existujících politik |
Práce s klíči | ||
xst |
ktadd |
Export klíče z Kerbera do souboru |
ktrem |
ktremove |
Odstranění klíče ze souboru |
q |
quit nebo exit |
Ukončení administrace |
Instalace a konfigurace kerbera
Instalační balíky kerbera (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
Základní konfigurace testovacího stroje pro kerberos
Hostname: ldap-server
Nastavení sítě ( stroj je 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 uživatele root: zatím nemí
Nastavení souboru /etc/hosts
127.0.0.1 localhost.localdomain localhost
172.16.54.131 ldap-server.virtual ldap-server
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
Spouštění Kebera
Spuštění démona pro administraci Kerbera po síti:
/etc/init.d/krb5-admin-server start
Pozn.: V případě, že je Kerberos spravován lokálně není nutné démona spouštět
Spuštění Kerbera:
/etc/init.d/krb5-kdc start
Administrace kerberovy říše
Administraci kerbera lze provádět přes administrační konzoli buď lokálně, nebo je-li na serveru spuštěný démon kadmind
, přes síť. V takovém případě pak záleží jaké je nastavení přístupových práv v souboru krb5.acl
, protože pro stroj z něhož je k databázi přistupováno by měl být nastavený také odpovídající default_realm
Administrační konzole
Administrační konzole je na Debianu součástí instalačního balíku krb5-user
Lokální přihlášení do konzole
kadmin.local -p krbadmin/admin
Přihlášení do konzole přes démona
kadmin -p krbadmin/admin
Nastavení pro práci s administrační konzolou na vzdáleném stroji
- Je třeba mít nainstalovaný balík
krb5-user
který obsahuje administrační konzoli - Pro práci s administrační konzolí kerbera
kadmin
musí být bezpodmínečně v konfiguračním souboru/etc/krb5.conf
nakonfigurován přístup pro administrovaný REALM:
[libdefaults]
default_realm = VIRTUAL
[realms]
VIRTUAL = {
kdc = ldap-server.virtual:88
admin_server = ldap-server.virtual
}
- Pokud nemá stroj kde běží administrační démon kerbera záznam v DNS, pak je třeba do souboru
/etc/hosts
nastavit IP adresu s jeho doménovým jménem. V případě našeho testovacího stroje tedy..
172.16.54.131 ldap-server.virtual ldap-server
- Konzole se pak spustí s následujícími parametry..
/usr/sbin/kadmin -r VIRTUAL -p krbadmin/admin
Základní operace
V záhlaví této stránky je tabulka s dostupnými příkazy. Stejnou nápovědu lze v administrační konzoli vypsat příkazem lr
(zkrácená forma příkazu list_requests
), ale také i mnohem stručnějším ?
kadmin: ?
Nápověda pro jednotlivé příkazy se vypíše vždy, zadáním příkazu bez dalších parametrů (pokud tedy příkaz vůbec nějaké další parametry má mít). Příklady použití příkazů a formát jejich parametrů viz níže.
Výpis principálů
Lze provádět příkazem listprincs
(zkrácená forma příkazu list_principals
). Bez dalších parametrů vypíše z databáze všechny uživatele. Parametrem příkazu může být řetězec se zástupnými znaky ?, * a [ ]
kadmin: listprincs user[0-9]@VIRTUAL
Příkaz tak jak je uveden v příkladu by vypsal uživatele user0 ..až.. user9 ale uživatele user10 již nikoliv.
Pozn.: Pokud nelze výpis provést, je třeba zkontrolovat zda je správně nastavena cesta k souboru kadm5.acl
a také zda jsou práva správně nastavena.
Přidání uživatele (principálu)
Přidávání principálu uživatele či služby ( v příkladu je přidáván user0 s heslem 'tester' ) lze provádět příkazem addprinc
( zkrácená forma příkazu add_principal
), nebo ještě stručnějším ank
a to jak interaktivně přes administrační konzoli..
kadmin: addprinc user0
..tak lokálně, jedním neinteraktivním příkazem:
kadmin.local -q "ank -pw tester user0"
Jak lze vidět z druhého uvedeného příkladu, lze při přidávání nového uživatele rovnou zadat volbou -pw i jeho heslo. To se hodí, pokud chceme aby měl uživatel nastaveno nějaké předem známé výchozí heslo. Místo volby -pw však lze použít také volbu -randpw
Pozor! Do databáze lze přidávat principály se zástupnými znaky, takové však může být později problém odfiltrovat při výpisu přes listprincs
!
Změna hesla
kadmin.local -q "cpw -pw nove_heslo user0"
Odstranění uživatele (principálu)
kadmin: delprinc user1
Syntaxe pro nastavení času a data
Formát času | |
---|---|
Syntaxe | Příklad |
hh[:mm][:ss][am/pm/a.m./p.m.] | 1p.m.; 1:35; 1:35:30pm |
Formát data | |
Syntaxe | Příklad |
mm/dd[/yy] | 12/24; 12/24/08 |
yyyy-mm-dd | 2008-12-24 |
dd-month-yyyy | 24-December-2008 |
month dd[,yyyy] | Dec 24; December 24,2008 |
dd month[ yyyy] | 24 Dec; 24 Dec 2008 |
Další možnosti nastavení času | |
Klíčové slovo | Popis výsledného efektu |
year | ..za rok |
month | ..za měsíc |
fortnight | ..za čtrnáct dní |
week | ..za týden |
day | ..za den |
hour | ..za hodinu |
minute (nebo zkráceně - min ) | ..za minutu |
second (nebo zkráceně - sec ) | ..za sekundu |
tomorrow | ..zítra |
yesterday | ..včera |
today | ..dnes |
sunday, monday, tuesday, wednesday, thursday, friday, saturday | ..v Ne, Po, Út, St, Čt, Pá, So |
now | ..právě teď |
this(+...) | tento.. |
last(+...) | poslední.. |
next(+...) | příští.. |
never | nikdy |
Příklady
now+1hour | Výsledkem bude aktuální čas s přidanou hodinou |
tomorrow+next+tomorrow | Výsledkem bude aktuální čas s přidanou hodinou |
2008-12-24+day+1hour | Výsledný čas bude 25.12.2008 01:00:00 |
20:35:00+day | Výsledný čas bude 20:35:00 následujícího dne |
next+day | Výsledný čas bude pozítří touto dobou |
2day | Výsledný čas bude pozítří touto dobou |
day+day | Výsledný čas bude pozítří touto dobou |
tomorrow+tomorrow | Výsledný čas bude pozítří touto dobou |
Pozn.: Kromě + lze při spojování použít i - nicméně odečtení funguje je pouze u časových jednotek (hour, day,...), nikoliv u relativního určení času (jako např. tomorrow, atp.). V případě relativních jednotek určení času se jednotky vždy sčítají!
Práce s tikety
- kinit [user]
- vytáhne tiket pro uživatele user
- 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 přes kerberos 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
- 3, Vytvoří se soubor hosts, který se umístí (na Win XP) do adresáře C:\Windows\system32\system32\drivers\etc
- 4, Jeho syntaxe je následující..
- 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í
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
Zdroje
http://www.abclinuxu.cz/clanky/bezpecnost/kerberos-prihlasovani-snadno-a-rychle - seriál na abclinuxu.cz