centos7安裝Kerberos


Kerberos是一個c/s架構的服務軟件,通過向服務端獲取票據來實現安全通訊。

下面講如何配置kerberos服務並獲取票據通信

1. 服務端的配置

 1.1 下載對應服務的軟件包

yum -y install   krb5-server    openldap-clients

在安裝完上述的軟件之后,會在KDC主機上生成配置文件/etc/krb5.conf和/var/kerberos/krb5kdc/kdc.conf

 

1.2 配置/etc/krb5.conf

/etc/krb5.conf:包含Kerberos的配置。例如,KDC的位置,Kerberos的admin realms等。需要所有使用的Kerberos的機器上的配置文件都同步。這里僅列舉需要的基本配置。

[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
 rdns = false
 # default_ccache_name = KEYRING:persistent:%{uid}

[realms]
  EXAMPLE.COM = {
   kdc = master   
   admin_server = master
  }

[domain_realm]
  .example.com = EXAMPLE.COM
  example.com = EXAMPLE.COM

說明:

  • [logging]:表示server端的日志的打印位置
  • [libdefaults]:每種連接的默認配置,需要注意以下幾個關鍵的小配置
    • default_realm = EXAMPLE.COM 默認的realm,必須跟要配置的realm的名稱一致。
    • udp_preference_limit = 1 禁止使用udp,可以防止一個Hadoop中的錯誤
    • ticket_lifetime表明憑證生效的時限,一般為24小時
    • renew_lifetime表明憑證最長可以被延期的時限,一般為一周。當憑證過期之后,對安全認證的服務的后續訪問則會失敗。  
  •  [realms]:列舉使用的realm。
    • kdc:代表kdc的位置,格式是:機器hostname或ip地址
    • admin_server:代表admin的位置,格式是:機器hostname或ip地址
    • default_domain:代表默認的域名
  • [appdefaults]:可以設定一些針對特定應用的配置,覆蓋默認配置。

1.3  配置kdc.conf

默認放在/var/kerberos/krb5kdc/kdc.conf

[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
 EXAMPLE.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 = aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
  max_life = 25h
  max_renewable_life = 8d
 }

說明:

  • EXAMPLE.COM:是設定的realms,名字隨意。Kerberos可以支持多個realms,會增加復雜度。一般為大寫。
  • max_renewable_life = 8d 涉及到是否能進行ticket的renew必須配置。
  • master_key_type:和supported_enctyps默認使用aes256-cts。由於,JAVA使用aes256-cts驗證方式需要安裝額外的jar包,推薦不使用。
  • acl_file:標注了admin的用戶權限。文件格式是Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。
  • admin_keytab:KDC進行校驗的keytab。
  • supported_enctypes:支持的校驗方式。注意把aes256-cts去掉。

1.4  配置kadm5.acl

修改服務端上的配置文件/var/kerberos/krb5kdc/kadm5.acl,以允許具備匹配條件的admin用戶進行遠程登錄權限:

*/admin@EXAMPLE.COM	*

 說明:

  • 標注了admin的用戶權限,需要用戶自己創建。文件格式是Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。最簡單的寫法是*/admin@EXAMPLE.COM * 代表名稱匹配*/admin@EXAMPLE.COM都認為是admin,權限是*代表全部權限。

 1.5  創建Kerberos數據庫

在服務端上對數據庫進行初始化,默認的數據庫路徑為/var/kerberos/krb5kdc,如果需要重建數據庫,將該目錄下的principal相關的文件刪除即可,請牢記數據庫密碼。

kdb5_util create -r EXAMPLE.COM -

 

 說明:

  • [-s] 表示生成stash file,並在其中存儲master server key(krb5kdc)
  • [-r] 來指定一個realm name,當krb5.conf中定義了多個realm時使用
  • 當Kerberos database創建好了之后,在/var/kerberos/中可以看到生成的principal相關文件

 

1.6 啟動Kerberos服務

服務端執行

# 啟動服務命令
systemctl start krb5kdc
systemctl start kadmin

# 加入開機啟動項
systemctl enable krb5kdc
systemctl enable kadmin

 

 

1.7 創建Kerberos管理員principal

# 需要設置兩次密碼
kadmin.local -q "addprinc root/admin"

 

pincipal的名字的第二部分是admin,那么根據之前配置的kadm5.acl文件,該principal就擁有administrative privileges,這個賬號將會被用來生成其他用戶/服務的principal。

注意:需要先kinit保證已經有principal緩存。

[root@master ~]# kinit root/admin
Password for root/admin@EXAMPLE.COM: 
[root@master ~]# klist 
Ticket cache: KEYRING:persistent:0:0
Default principal: root/admin@EXAMPLE.COM

Valid starting       Expires              Service principal
07/14/2020 11:51:17  07/15/2020 11:51:16  krbtgt/EXAMPLE.COM@EXAMPLE.COM
    renew until 07/21/2020 11:51:16

 Kerberos客戶端支持兩種,一是使用principal + Password,二是使用principal + keytab。前者適合用戶進行交互式應用,例如hadoop fs -ls 這種,后者適合服務,例如yarn的rm、nm等。principal + keytab就類似於ssh免密碼登錄,登錄時不需要密碼了

 

2. 客戶端安裝kerberos

2.1 安裝軟件包

yum -y install krb5-devel krb5-workstation

 在安裝完上述的軟件之后,在kerberos客戶端主機上生成配置文件/etc/krb5.conf。

  把服務端的/etc/krb5.conf文件拷貝到其他各節點客戶端同路徑/etc/krb5.conf中。

--- Linux連接服務端和上述的緩存票據一樣

--- windows的略有不同,復制服務端的/etc/krb5.conf文件,然后刪除其他多余的配置,剩下下面三個標簽下的東西,注意不是只剩下三個標簽,是保留三個標簽以及三個標簽包含的內容。

[libdefaults]

[realms]

[domain_realm]

備注:Kerberos進入admin管理模式需要使用root用戶。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM