Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.
sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.
Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).
Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.
Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.
Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.
Již tuto středu proběhne 50. Virtuální Bastlírna, tedy dle římského číslování L. Bude L značit velikost, tedy více diskutujících než obvykle, či délku, neboť díky svátku lze diskutovat dlouho do noci? Bude i příští Virtuální Bastlírna virtuální nebo reálná? Nejen to se dozvíte, když dorazíte na diskuzní večer o elektronice, softwaru, ale technice obecně, který si můžete představit jako virtuální posezení u piva spojené s učenou
… více »Český statistický úřad rozšiřuje Statistický geoportál o Datový portál GIS s otevřenými geografickými daty. Ten umožňuje stahování datových sad podle potřeb uživatelů i jejich prohlížení v mapě a přináší nové možnosti v oblasti analýzy a využití statistických dat.
Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.
Základním pojmem v Kerberu je principal. Principal v podstatě představuje identitu uživatele. Nemusí se však vždy jednat pouze o fyzického člověka, který se někam přihlašuje. Může se jednat i o identitu počítače nebo o identitu služby. Principal se skládá ze tří částí: primary, instance a realm. Zapisuje se ve formátu primary/instance@REALM.
Část primary představuje buď uživatelské jméno v případě, že se jedná o uživatele, nebo jméno služby, pokud se jedná o službu. Část instance má různý význam pro různé typy principalů. V případě uživatele se jedná o rozšiřující část, která může blíže specifikovat účel, ke kterému se identita používá nebo může být i nulová. Jedná-li se o principal počítače, pak tato část obsahuje jeho plné doménové jméno. Část REALM obsahuje překvapivě jméno realmu. Realm je logická entita, ve které se naše účty nacházejí. Její význam je prakticky totožný s významem pojmu doména ve světě Windows. V praxi se používá jméno realmu totožné se jménem DNS domény převedeným na velká písmena.
Řekněme, že máme v naší testovací síti DNS doménu se jménem firma.local, pak se náš Kerberos realm bude jmenovat FIRMA.LOCAL. Naše principaly mohou vypadat podobně jako v následující tabulce.
user0@FIRMA.LOCAL |
pricipal běžného uživatelského účtu uživatele user0 |
administrator/admin@FIRMA.LOCA L |
pricipal speciálního uživatelského účtu uživatele administrator |
host/srv-file1.firma.local@FIRMA.LOCAL |
principal počítače srv-file1.firma.local |
nfs/srv-file1.firma.local@FIRMA.LOCAL |
principal služby NFS na počítači |
Předběhněme teď trošku a představme si, že již máme správně nakonfigurovanou klientskou i serverovou část. Dříve než uživatel může použít nějakou službu v naší síti, musí být nejprve řádně autentizován. Autentizace proběhne ve čtyřech krocích:
Kroky 1 a 2 mohou proběhnout již při přihlášení uživatele k PC pomocí PAM modulu nebo mohou být výsledkem příkazu kinit spuštěném na klientském PC. Vzhledem k tomu, že se v průběhu komunikace kontrolují časová razítka v authenticatorech, neměly by se hodiny na zúčastněných strojích příliš rozcházet. Použití synchronizace času v síti pomocí NTP je nanejvýš vhodné. Maximální velikost povolené odchylky je konfigurovatelná. Služby AS a TGS spolu tvoří tzv. Key Distribution Center (KDC) – server Kerbera. Teď, když alespoň mlhavě tušíme, jak celá věc funguje, můžeme si s ní začít hrát. Nakonfigurujeme si náš první KDC v realmu FIRMA.LOCAL.
urpmi krb5-server
Server, na němž KDC poběží, se bude jmenovat srv-infra1.firma.local. Protože v naší síti zatím nepoužíváme DNS, upravíme si soubor /etc/hosts tohoto serveru následovně:
# Soubor /etc/hosts na stroji srv-infra1.firma.local 127.0.0.1 localhost.localdomain localhost 172.16.51.10 srv-infra1.firma.local srv-infra1
Upravíme soubor /etc/krb5.conf, ve kterém konfigurujeme knihovny Kerbera. Tento soubor najdeme s mírnou obměnou obsahu jak na KDC, tak na klientu. Ovlivňuje chování serverových i klientských programů Kerbera, včetně pomocných nástrojů.
# Soubor /etc/krb5.conf na stroji srv-infra1.firma.local
[realms]
FIRMA.LOCAL = {
kdc = srv-infra1.firma.local:88
admin_server = srv-infra1.firma.local:749
default_domain = firma.local
}
[domain_realm]
.firma.local = FIRMA.LOCAL
firma.local = FIRMA.LOCAL
[libdefaults]
default_realm = FIRMA.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
[kdc]
profile = /etc/kerberos/krb5kdc/kdc.conf
[logging]
default = FILE:/var/log/kerberos/krb5libs.log
kdc = FILE:/var/log/kerberos/krb5kdc.log
admin_server = FILE:/var/log/kerberos/kadmind.log
[realm]
definujeme, kde běží naše KDC. Dále říkáme, kde běží služba admin serveru, který nám umožní spravovat Kerbera vzdáleně pomocí řádkového nástroje kadmin.[domain_realm]
říká, jak se převádí jméno tohoto počítače na jméno Kerberos realmu. Kdybychom tuto sekci vynechali, nic by se nemělo stát. Automaticky by se použila doménová část jména převedená na velká písmena.[libdefaults]
nastavíme výchozí realm pro klientské programy (včetně admin nástrojů) na FIRMA.LOCAL.[kdc]
uvedeme, kde leží konfigurace KDC. Tou se budeme zabývat za chvilku.Ostatní sekce a položky konfiguračního souboru, které jsme nepopsal, nejsou pro nás v tuto chvíli důležité, ale myslím, že jejich názvy jsou dostatečně vypovídající. Další informace můžeme nalézt v manuálové stránce k souboru krb5.conf.
KDC se konfiguruje pomocí souborů v adresáři /etc/kerberos/krb5kdc/
. Vlastní konfiguraci KDC najdeme v souboru kdc.conf
a v souboru kadm.acl
najdeme konfiguraci přístupových oprávnění k databázi Kerbera.
# Soubor /etc/kerberos/krb5kdc/kdc.conf na stroji srv-infra1.firma.local
[kdcdefaults]
kdc_ports = 88
acl_file = /etc/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /etc/kerberos/krb5kdc/kadm5.keytab
[realms]
FIRMA.LOCAL = {
master_key_type = des3-hmac-sha1
supported_enctypes = des3-hmac-sha1:normal des-cbc-crc:normal
profile = /etc/krb5.conf
database_name = /etc/kerberos/krb5kdc/principal
admin_database_name = /etc/kerberos/krb5kdc/kadm5_adb
admin_database_lockfile = /etc/kerberos/krb5kdc/kadm5_adb.lock
admin_keytab = FILE:/etc/kerberos/krb5kdc/kadm5.keytab
acl_file = /etc/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
key_stash_file = /etc/kerberos/krb5kdc/.k5stash
kdc_ports = 88
kadmind_port = 749
max_life = 10h 0m 0s
max_renewable_life = 7d 0h 0m 0s
}
Sekce [kdcdefaults]
obsahuje výchozí hodnoty pro KDC jako celek. Sekce [realms]
obsahuje konfiguraci specifickou pro jednotlivé realmy. Důležitou položkou je supported_enctypes, jež obsahuje seznam typů šifrování, které bude KDC podporovat. To má zásadní vliv na kompatibilitu s klienty. Určité klienty podporují pouze určité typy šifrování. Dále nastavíme port, na kterém má KDC běžet, na 88/udp a port, na kterém poběží admin server, na 749/tcp. Důležitá je také maximální doba platnosti tiketu.
Nastavením administrátorských oprávnění k databázi se moc zabývat nebudeme. Uvádím zde pouze minimalistické nastavení souboru kadm.acl
, které umožňuje všem principalům s instancí admin spravovat databázi Kerbera.
# Soubor /etc/kerberos/krb5kdc/kadm.acl na stroji srv-infra1.firma.local
*/admin@FIRMA.LOCAL *
Spuštěním příkazu kdb5_util podle následujícího příkladu vytvoříme databázi Kerbera. Na výzvu zadáme master key.
[root@srv-infra1 kerberos]# kdb5_util create -s
Loading random data
Initializing database '/etc/kerberos/krb5kdc/principal' for realm 'FIRMA.LOCAL',
master key name 'K/M@FIRMA.LOCAL'
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:
Vytvoříme principal krbadmin/admin@FIRMA.LOCAL
, pod kterým budeme databázi administrovat. Použijeme k tomu příkaz kadmin.local. Ten nám umožňuje spravovat Kerbera pouze lokálně, avšak bez autentizace, což se nám teď hodí.
[root@srv-infra1 kerberos]# kadmin.local -q "addprinc krbadmin/admin"
Authenticating as principal root/admin@FIRMA.LOCAL with password.
WARNING: no policy specified for krbadmin/admin@FIRMA.LOCAL; defaulting to no policy
Enter password for principal "krbadmin/admin@FIRMA.LOCAL":
Re-enter password for principal "krbadmin/admin@FIRMA.LOCAL":
Principal "krbadmin/admin@FIRMA.LOCAL" created.
Nejprve nastartujeme admin server, poté nastartujeme vlastní KDC.
[root@srv-infra1 kerberos]# service kadmin start
[root@srv-infra1 kerberos]# service krb5kdc start
Ověříme, zda se služby startují automaticky při startu počítače.
[root@srv-infra1 ~]# chkconfig --list | grep kadmin kadmin 0:off 1:off 2:off 3:on 4:on 5:on 6:off
[root@srv-infra1 ~]# chkconfig --list | grep krb5kdc krb5kdc 0:off 1:off 2:off 3:on 4:on 5:on 6:off
Pokud by náhodou automatický start nebyl nastaven, opravíme to.
[root@srv-infra1 ~]# chkconfig kadmin on
[root@srv-infra1 ~]# chkconfig krb5kdc on
Administrační nástroj Kerbera spustíme příkazem kadmin s identitou uživatele krbadmin/admin@FIRMA.LOCAL
.
[root@srv-infra1 etc]# kadmin -p krbadmin/admin
Nyní se nacházíme v příkazové řádce kadmin a můžeme začít administrovat databázi.
Vypíšeme obsah databáze příkazem listprincs z příkazové řádky kadmin.
kadmin: listprincs
K/M@FIRMA.LOCAL
kadmin/admin@FIRMA.LOCAL
kadmin/changepw@FIRMA.LOCAL
kadmin/history@FIRMA.LOCAL
kadmin/srv-infra1.firma.local@FIRMA.LOCAL
krbadmin/admin@FIRMA.LOCAL
krbtgt/FIRMA.LOCAL@FIRMA.LOCAL
Povšimněme si, že databáze obsahuje principal krbadmin/admin@FIRMA.LOCAL
. Ten jsme vytvořili v kroku 6. Dále obsahuje několik systémových principalů vytvořených automaticky při inicializaci databáze v kroku 5.
Stále se nacházíme v příkazovém řádku kadmin. Chceme vytvořit principal testovacího uživatele user0. Použijeme příkaz addprinc
.
kadmin: addprinc user0
WARNING: no policy specified for user0@FIRMA.LOCAL; defaulting to no policy
Enter password for principal "user0@FIRMA.LOCAL":
Re-enter password for principal "user0@FIRMA.LOCAL":
Principal "user0@FIRMA.LOCAL" created.
Příkazovou řádku kadmin opustíme příkazem quit.
kadmin: quit
Vyzkoušíme, zda jsme schopni od Kerbera získat TGT pro uživatele user0.
[root@srv-infra1 etc]# kinit user0
Password for user0@FIRMA.LOCAL:
Pokud vše proběhne správně, měli bychom být schopni zobrazit získaný TGT pomocí příkazu klist.
[root@srv-infra1 etc]# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: user0@FIRMA.LOCAL Valid starting Expires Service principal 03/31/08 22:00:10 04/01/08 08:00:10 krbtgt/FIRMA.LOCAL@FIRMA.LOCAL renew until 04/01/08 22:00:10
Při pokusech se nám bude hodit možnost získané tikety smazat. To můžeme provést příkazem kdestroy
.
Zdá se, že vše běží jak má; můžeme přistoupit ke konfiguraci klientského PC.
Jako první klientský stroj vytvoříme stroj s názvem pc1.firma.local.
[root@pc1 ~]# urpmi krb5-workstation
Ze stejného důvodu jako u serveru nastavíme /etc/hosts
.
# Soubor /etc/hosts na stroji pc1.firma.local 127.0.0.1 localhost.localdomain localhost 172.16.51.10 srv-infra1.firma.local srv-infra1
Opět upravíme /etc/krb5.conf, tentokrát však na klientském PC.
# Soubor /etc/krb5.conf na stroji pc1.firma.local
[realms]
FIRMA.LOCAL = {
kdc = srv-infra1.firma.local:88
admin_server = srv-infra1.firma.local:749
default_domain = firma.local
}
[domain_realm]
.firma.local = FIRMA.LOCAL
firma.local = FIRMA.LOCAL
[libdefaults]
default_realm = FIRMA.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
[logging]
default = FILE:/var/log/kerberos/krb5libs.log
Vyzkoušíme, zda jsme od Kerbera schopni získat TGT pro uživatele user0 na stroji pc1.
[root@pc1 ~]# kinit user0
Password for user0@FIRMA.LOCAL:
Pokud vše proběhne dobře zobrazíme si získaný TGT.
[root@pc1 ~]# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: user0@FIRMA.LOCAL Valid starting Expires Service principal 03/31/08 22:39:01 04/01/08 08:39:01 krbtgt/FIRMA.LOCAL@FIRMA.LOCAL renew until 04/01/08 22:38:18
Na pc1 vytvoříme lokálního uživatele user0
. Bude se nám hodit pro testování.
root@pc1 ~]# adduser user0
[root@pc1 ~]# urpmi pam_krb5
Konfiguraci provedeme v souboru /etc/pam.d/system-auth.
#Soubor /etc/pam.d/system-auth na stroji pc1.firma.local auth required pam_env.so auth sufficient pam_unix.so likeauth nullok auth sufficient pam_krb5.so use_first_pass auth required pam_deny.so account sufficient pam_unix.so account required pam_deny.so password sufficient pam_unix.so nullok use_authtok md5 shadow password sufficient pam_krb5.so password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session required pam_unix.so
Pokusíme se přihlásit jako user0 k pc1.firma.local. Můžeme to provést buď z testové konzole nebo v grafickém prostředí pomocí Display Manageru. Při svých pokusech jsem narazil na určité chyby v XDM a KDM, které vedly k tomu, že po úspěšné autentizaci byl získaný TGT smazán. Pro experimenty doporučuji GDM.
Pokud se úspěšně přihlásíme, zkontrolujeme získaný TGT příkazem klist.
[user0@pc1 ~]$ klist Ticket cache: FILE:/tmp/krb5cc_501_esGeeF Default principal: user0@FIRMA.LOCAL Valid starting Expires Service principal 04/12/08 20:56:54 04/13/08 06:56:54 krbtgt/FIRMA.LOCAL@FIRMA.LOCAL renew until 04/13/08 20:55:25
Uživatel může změnit své heslo pomocí příkazu kpasswd. Máme-li však správně nakonfigurovaný PAM modul pro Kerbera, lze změnu hesla provést i standardním příkazem passwd.
[user0@pc1 ~]$ passwd
Změna hesla uživatele user0.
Změna hesla pro user0.
(současné) UNIX heslo:
New Kerberos 5 Password:
Repeat New Kerberos 5 Password:
passwd: všechny autentizační tokeny byly úspěšně změněny.
Základní konfiguraci klienta i serveru jsme zvládli. Mít centrální databázi hesel a přitom zakládat uživatelské účty lokálně není asi moc užitečné. Příště si ukážeme, jak sdílet uživatelské účty v síti pomocí LDAPu. Kerberos a LDAP jsou silná dvojka. Místo LDAPu bychom mohli použít třeba NIS, ale to už by dneska asi nikoho nezajímalo.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej: