Kerberos je síťový autentizační protokol jehož hlavními vlastnostmi jsou:
Existují dvě hlavní implementace tohoto protokolu. MIT Kerberos je původní implementací, která ovšem v době svého vydání podléhala zákazu exportu kryptografických nástrojů. Proto vznikla švédská implementace Heimdal. Obě implementace jsou stále ve vývoji a jsou navzájem kompatibilní.
Kerberos podporuje replikaci serveru na principu master/slave. Master slouží jako primární server a z něj se replikují data na jeden nebo více slave (sekundárních) serverů, které primární server zastoupí v případě jeho výpadku.
primary[/instance]@REALM
.
primary
je jméno uživatele/služby,
instance
rozšiřující údaj k primary
, může být prázdný.Získání ticket-granting ticketu (kinit
):
Pokud nechceme využívat TGT, můžeme uvést přímo principal služby, kterou chceme využít a následující krok se pak vynechá.
Získání ticketu pro službu:
Prokázání klienta vůči službě:
Konfigurace klienta se nachází v /etc/krb5.conf
a může vypadat
například takto:
[logging]
default = FILE:/var/log/krb5.log
[libdefaults]
default_realm = MYCORP.COM
ticket_lifetime = 24h
forwardable = yes
[realms]
MYCORP.COM = {
kdc = kerberos.mycorp.com
admin_server = kerberos.mycorp.com
default_domain = mycorp.com
}
[domain_realm]
.mycorp.com = MYCORP.COM
mycorp.com = MYCORP.COM
Informace o konfiguraci klienta najdete v man krb5.conf
kinit
- získá ticket-granting ticketklist
- vypíše seznam získaných ticketůkdestroy
- zničí aktivní ticketyPAM je modulární autentizační systém jehož účelem je odstranit autentizační logiku ze zdrojových kódů programů a umožnit tak snadnou změnu autentizační metody.
PAM rozlišuje následující fáze autentizace:
account
auth
password
session
Všechny tyto fáze jsou obsluhovány moduly, které definujeme v konfiguračním souboru.
Konfigurační direktivy se ukládají buď do jediného souboru /etc/pam.conf
, ve formátu:
service type control module-path module-arguments
Nebo do souboru v adresáři /etc/pam.d
(pokud tento adresář
existuje, /etc/pam.conf
je ignorován).
Soubor má název shodný se službou pro kterou se mají pravidla aplikovat a jejich formát je:
type control module-path module-arguments
Pro stejnou kombinaci service
a type
může být
použito i více než jeden modul.
service
je název služby ke které se direktiva vztahuje,
type
označuje fázi autentizace (account
,
auth
, password
, session
),
module-path
určuje cestu k modulu, který chceme použít, a
module-arguments
jeho argumenty.
control
určuje jakým způsobem naložit s výsledkem modulu
a může nabývat těchto hodnot:
required
requisite
required
, ale výsledek se vrátí okamžitě aniž by se volaly ostatní moduly.sufficient
optional
include
type
z jiného souboru určeného v module-path
.
Jednotlivé moduly jsou typicky uloženy v /lib/security
.
Například:
/etc/passwd
a /etc/shadow
)
#include <security/pam_appl.h>
#include <security/pam_misc.h>
pam_handle_t *pam_handle;
struct pam_conv pam_conv = {misc_conv, NULL};
int pam_ret;
pam_ret = pam_start("service_name", "user_name", &pam_conv, &pam_handle);
if (pam_ret != PAM_SUCCESS) {
fprintf(stderr, "pam_start() failed: %s\n", pam_strerror(pam_handle, pam_ret));
goto fail;
}
pam_ret = pam_authenticate(pam_handle, PAM_DISALLOW_NULL_AUTHTOK);
switch(pam_ret) {
case PAM_SUCCESS:
/* success */
break;
default:
/* error */
fprintf(stderr, "pam_authenticate() failed: %s\n",
pam_strerror(pam_handle, pam_ret));
ret = 0;
goto fail;
}
pam_end(pam_handle, pam_ret);
Více informací v man 3 pam
.
man krb5.conf
man 8 pam
man 3 pam
man pam.conf