系統說明:html
kerberos安裝的組件分配:java
74做爲master節點,其餘節點做爲slave節點。咱們在74節點安裝kerberos Server,在其餘節點安裝kerberos client.web
在74上安裝包 krb五、krb5-server 和 krb5-client。算法
# yum install krb5-server -y
在其餘節點(7四、7五、7六、77)安裝 krb5-devel、krb5-workstation:數據庫
# yum install krb5-devel krb5-workstation -y
kdc 服務器涉及到三個配置文件:centos
/etc/krb5.conf /var/kerberos/krb5kdc/kdc.conf /var/kerberos/krb5kdc/kadm5.acl
配置 Kerberos 的一種方法是編輯配置文件 /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 = BIGDATA.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true clockskew = 120 udp_preference_limit = 1 [realms] BIGDATA.COM = { kdc = bd-ops-test-74 admin_server = bd-ops-test-74 } [domain_realm] .bigdata.com = BIGDATA.COM bigdata.com = BIGDATA.COM
說明:bash
[logging]
:表示 server 端的日誌的打印位置[libdefaults]
:每種鏈接的默認配置,須要注意如下幾個關鍵的小配置
default_realm = BIGDATA.COM
:設置 Kerberos 應用程序的默認領域。若是您有多個領域,只需向 [realms] 節添加其餘的語句。ticket_lifetime
: 代表憑證生效的時限,通常爲24小時。renew_lifetime
: 代表憑證最長能夠被延期的時限,通常爲一個禮拜。當憑證過時以後,對安全認證的服務的後續訪問則會失敗。clockskew
:時鐘誤差是不徹底符合主機系統時鐘的票據時戳的容差,超過此容差將不接受此票據。一般,將時鐘扭斜設置爲 300 秒(5 分鐘)。這意味着從服務器的角度看,票證的時間戳與它的誤差能夠是在先後 5 分鐘內。udp_preference_limit= 1
:禁止使用 udp 能夠防止一個 Hadoop 中的錯誤[realms]
:列舉使用的 realm。
kdc
:表明要 kdc 的位置。格式是 機器:端口
admin_server
:表明 admin 的位置。格式是 機器:端口
[default_domain]
:表明默認的域名[appdefaults]
:能夠設定一些針對特定應用的配置,覆蓋默認配置。修改 /var/kerberos/krb5kdc/kdc.conf
,該文件包含 Kerberos 的配置信息。例如,KDC 的位置,Kerbero 的 admin 的realms 等。須要全部使用的 Kerberos 的機器上的配置文件都同步。這裏僅列舉須要的基本配置。詳細介紹參考:krb5conf服務器
[kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] BIGDATA.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 default_principal_flags = +renewable, +forwardable max_renewable_life = 10d }
說明:oracle
BIGDATA.COM
: 是設定的 realms。名字隨意。Kerberos 能夠支持多個 realms,會增長複雜度。大小寫敏感,通常爲了識別使用所有大寫。這個 realms 跟機器的 host 沒有大關係。master_key_type
:和 supported_enctypes
默認使用 aes256-cts
。JAVA 使用 aes256-cts
驗證方式須要安裝 JCE 包,見下面的說明。爲了簡便,你能夠不使用 aes256-cts
算法,這樣就不須要安裝 JCE 。acl_file
:標註了 admin 的用戶權限,須要用戶本身建立。文件格式是:Kerberos_principal permissions [target_principal] [restrictions]
supported_enctypes
:支持的校驗方式。admin_keytab
:KDC 進行校驗的 keytab。關於AES-256加密:
對於使用 centos5. 6 及以上的系統,默認使用
AES-256
來加密的。這就須要集羣中的全部節點上安裝 JCE,若是你使用的是 JDK1.6 ,則到 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE 6 頁面下載,若是是 JDK1.7,則到 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files for JDK/JRE 7 下載。下載的文件是一個 zip 包,解開後,將裏面的兩個文件放到下面的目錄中:
$JAVA_HOME/jre/lib/security
爲了可以不直接訪問 KDC 控制檯而從 Kerberos 數據庫添加和刪除主體,請對 Kerberos 管理服務器指示容許哪些主體執行哪些操做。經過編輯文件 /var/lib/kerberos/krb5kdc/kadm5.acl 完成此操做。ACL(訪問控制列表)容許您精確指定特權。
#cat kadm5.acl */admin@BIGDATA.COM *
將 kdc 中的 /etc/krb5.conf
拷貝到集羣中其餘服務器便可。
# scp /etc/krb5.conf bd-ops-test-75:/etc/krb5.conf # scp /etc/krb5.conf bd-ops-test-76:/etc/krb5.conf # scp /etc/krb5.conf bd-ops-test-77:/etc/krb5.conf
在 bd-ops-test-74 上運行初始化數據庫命令。其中 -r
指定對應 realm。
# kdb5_util create -r BIGDATA.COM -s
出現 Loading random data
的時候另開個終端執行點消耗CPU的命令如 cat /dev/sda > /dev/urandom
能夠加快隨機數採集。該命令會在 /var/kerberos/krb5kdc/
目錄下建立 principal 數據庫。
若是遇到數據庫已經存在的提示,能夠把 /var/kerberos/krb5kdc/
目錄下的 principal 的相關文件都刪除掉。默認的數據庫名字都是 principal。能夠使用 -d
指定數據庫名字。
在74節點上運行:
# chkconfig --level 35 krb5kdc on # chkconfig --level 35 kadmin on # service krb5kdc start # service kadmin start
關於 kerberos 的管理,能夠使用 kadmin.local
或 kadmin
,至於使用哪一個,取決於帳戶和訪問權限:
kadmin.local
kadmin
在 74 上建立遠程管理的管理員:
#手動輸入兩次密碼,這裏密碼爲 bigdata # kadmin.local -q "addprinc root/admin"
密碼務必記住,妥善保存。
查看當前的認證用戶:
# 查看principals $ kadmin: list_principals # 添加一個新的 principal kadmin: addprinc user1 WARNING: no policy specified for user1@BIGDATA.COM; defaulting to no policy Enter password for principal "user1@BIGDATA.COM": Re-enter password for principal "user1@BIGDATA.COM": Principal "user1@BIGDATA.COM" created. # 刪除 principal kadmin: delprinc user1 Are you sure you want to delete the principal "user1@BIGDATA.COM"? (yes/no): yes Principal "user1@BIGDATA.COM" deleted. Make sure that you have removed this principal from all ACLs before reusing. kadmin: exit
也能夠直接經過下面的命令來執行:
# 提示須要輸入密碼 $ kadmin -p root/admin -q "list_principals" $ kadmin -p root/admin -q "addprinc user2" $ kadmin -p root/admin -q "delprinc user2" # 不用輸入密碼 $ kadmin.local -q "list_principals" $ kadmin.local -q "addprinc user2" $ kadmin.local -q "delprinc user2"
建立一個測試用戶 test,密碼設置爲 test:
# echo -e "test\ntest" | kadmin.local -q "addprinc test"
獲取 test 用戶的 ticket:
#kinit test Password for test@BIGDATA.COM: #klist -e Ticket cache: FILE:/tmp/krb5cc_0 Default principal: test@BIGDATA.COM Valid starting Expires Service principal 09/02/16 16:43:50 09/03/16 16:43:50 krbtgt/BIGDATA.COM@BIGDATA.COM renew until 09/02/16 16:43:50, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
銷燬該 test 用戶的 ticket:
#kdestroy #klist klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_0)
更新 ticket:
# kinit -R
查看keytab文件詳情:
klist -k /etc/krb5.keytab Keytab name: FILE:/etc/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 3 kadmin/admin@LASHOU-INC.COM 3 kadmin/admin@LASHOU-INC.COM 3 kadmin/admin@LASHOU-INC.COM 3 kadmin/admin@LASHOU-INC.COM 3 kadmin/admin@LASHOU-INC.COM