Kerberos je síťový ověřovací protokol.
Kerberos poskytuje silnou kryptografickou autentizaci vůči zařízením, která umožňuje klientům a serverům komunikovat zabezpečenějším způsobem. Je navržen tak, aby řešil problémy se zabezpečením sítě.
Když firewally fungují jako řešení pro narušení z vnějších sítí, Kerberos se obvykle používá k řešení narušení a dalších bezpečnostních problémů v síti.
Aktuální verze Kerberos je verze 5, která se nazývá KRB5 .
Abychom mohli implementovat Kerberos, potřebujeme mít na serveru spuštěnou službu centralizovaného ověřování.
Tato služba se nazývá KEY DISTRIBUTION CENTER (KDC).
Server registrovaný u KDC je důvěryhodný pro všechny ostatní počítače v oblasti Kerberos.
Ukázkový soubor krb5.conf
Zde je příklad souboru krb5.conf, který obsahuje všechny informace o mapování REALM a domény na REALM,
# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] EXAMPLE.COM = { kdc = kerberos.example.com admin_server = kerberos.example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM
Nainstalujte server Kerberos KDC
Z bezpečnostních důvodů se doporučuje provozovat server Kerberos (KDC) na samostatném serveru.
Stáhněte a nainstalujte serverový balíček krb5.
# rpm -ivh krb5-server-1.10.3-10.el6_4.6.x86_64.rpm Preparing... ########################################### [100%] 1:krb5-server ########################################### [100%]
Před konfigurací KDC ověřte, že jsou nainstalovány následující otáčky:
# rpm -qa | grep -i krb5 pam_krb5-2.3.11-9.el6.x86_64 krb5-server-1.10.3-10.el6_4.6.x86_64 krb5-workstation-1.10.3-10.el6_4.6.x86_64 krb5-libs-1.10.3-10.el6_4.6.x86_64
Upravte soubor /etc/krb5.conf
Změňte /etc/krb5.conf tak, aby odrážel jako níže, s příslušným mapováním REALM a DOMAIN_REALM.
# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = MYREALM.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] MYREALM.COM = { kdc = elserver1.example.com admin_server = elserver1.example.com } [domain_realm] .myrealm.com = MYREALM.COM myrealm.com = MYREALM.COM
Upravit soubor kdc.conf
Také kdc.conf by měl být upraven, jak je uvedeno níže.
# cat /var/kerberos/krb5kdc/kdc.conf [kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] MYREALM.COM = { #master_key_type = aes256-cts acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal }
Vytvořit databázi KDC
Dále vytvořte databázi KDC pomocí příkazu kdb5_util, jak je ukázáno níže. V této fázi zadejte příslušné heslo pro hlavní klíč databáze KDC.
# /usr/sbin/kdb5_util create -s Loading random data Initializing database '/var/kerberos/krb5kdc/principal' for realm 'MYREALM.COM', master key name 'K/[email protected]' 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:
Přidělit oprávnění správce
Uživatelům lze udělit administrátorská práva k databázi pomocí souboru /var/kerberos/krb5kdc/kadm5.acl.
# cat /var/kerberos/krb5kdc/kadm5.acl */[email protected] *
Ve výše uvedeném příkladu má jakýkoli principál v MYREALM s instancí správce všechna administrátorská oprávnění.
Vytvořte ředitele
Vytvořte objekt pomocí následujícího příkazu. V tomto příkladu jsem vytvořil principál s uživatelským jménem „eluser“.
# kadmin.local -q "addprinc eluser/admin" Authenticating as principal root/[email protected] with password. WARNING: no policy specified for eluser/[email protected]; defaulting to no policy Enter password for principal "eluser/[email protected]": Re-enter password for principal "eluser/[email protected]": Principal "eluser/[email protected]" created.
Spusťte službu Kerberos
Spusťte démony KDC a kadmin, jak je znázorněno níže.
# service krb5kdc start Starting Kerberos 5 KDC: [ OK ] # service kadmin start Starting Kerberos 5 Admin Server: [ OK ]
Konfigurace klienta Kerberos
Nakonfigurujte klienta Kerberos pro ověřování proti databázi KDC:
Nyní se podívejme, jak nakonfigurovat klienta krb5 pro ověřování proti databázi Kerberos KDC, kterou jsme vytvořili výše.
Krok 1:Nainstalujte balíčky krb5-libs a krb5-workstation na klientský počítač.
Krok 2:Zkopírujte soubor /etc/krb5.conf ze serveru KDC do klientského počítače.
Krok 3:Nyní musíme vytvořit principála pro klienta v databázi KDC/Kerberos.
Pomocí níže uvedených příkazů můžete vytvořit objekt pro klientský počítač na hlavním serveru KDC. V níže uvedeném příkladu vytvářím hlavní hostitel pro klienta elserver3.example.com na hlavním serveru KDC elserver1.example.com
# kadmin.local -q "addprinc host/elserver3.example.com" Authenticating as principal root/[email protected] with password. WARNING: no policy specified for host/[email protected]; defaulting to no policy Enter password for principal "host/[email protected]": Re-enter password for principal "host/[email protected]": Principal "host/[email protected]" created.
Krok 4:Extrahujte krb5.keytab pro klienta z hlavního serveru KDC pomocí níže uvedeného příkazu:
# kadmin.local -q "ktadd -k /etc/krb5.keytab host/elserver3.example.com" Authenticating as principal root/[email protected] with password. Entry for principal host/elserver3.example.com with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des3-cbc-sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type arcfour-hmac added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des-hmac-sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des-cbc-md5 added to keytab WRFILE:/etc/krb5.keytab.
Tím je konfigurace dokončena. V této fázi je vše hotovo.
Od této chvíle pokaždé, když navážete připojení SSH, RSH, hostitel ověří svou identitu proti databázi KDC pomocí souboru keytab a vytvoří zabezpečené připojení přes Kerberos.
Ktadd se používá ke generování nové tabulky klíčů nebo k přidání principála do existující tabulky klíčů z příkazu kadmin.
Ktremove se používá k odstranění principála z existující tabulky klíčů. Příkaz k odstranění principála, který jsme vytvořili výše, je,
kadmin.local -q "ktremove -k /etc/krb5.keytab –q all"
Odstranit databázi KDC
Z nějakého důvodu, pokud musíte odstranit databázi KDC, použijte následující příkaz:
# kdb5_util -r MYREALM.COM destroy kdb5_util: Deleting KDC database stored in /usr/local/var/krb5kdc/principal, you sure (type yes to confirm)? <== yes OK, deleting database '/usr/local/var/krb5kdc/principal'...
Volba -f ve výše uvedeném příkazu vynutí smazání databáze KDC.
Zálohování a obnovení databáze KDC
Chcete-li zálohovat databázi KDC do souboru, použijte krb5_util_dump.
# kdb5_util dump kdcfile # ls -l kdcfile -rw-------. 1 root root 5382 Apr 10 07:25 kdcfile
Chcete-li obnovit databázi KDC ze souboru výpisu vytvořeného ve výše uvedeném kroku, proveďte následující:
# kdb5_util load kdcfile