日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

Kerberos 简单安装配置

發布時間:2024/6/21 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 Kerberos 简单安装配置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Kerberos 簡單安裝配置

標簽(空格分隔): Kerberos


一,Kerberos簡史

Kerberos是一種網絡安全認證協議,最早由麻省理工研發,用來保護項目 Athena提供的網絡服務器。這個協議以希臘神話中的人物Kerberos(或者Cerberus)命名,他在希臘神話中是Hades的一條兇猛的三頭保衛神犬。

kerberos

Internet是一個非常不安全的地方。在Internet中使用的很多協議并沒有提供任何安全保障。一些站點嘗試使用防火墻來解決網絡安全問題。不幸的是,防火墻假設“壞蛋”都在外邊,往往這是非常愚蠢的假設?,F實情況是大多數計算機犯罪的毀滅事件都從內部發起。

Kerberos作為網絡安全問題的解決方案,使用強加密技術,以便客戶端可以在不安全網絡連接上向服務器端證明身份。在客戶端和服務器端使用Kerberos證明彼此身份之后,它們也可以加密所有通信以確保隱私和數據的完整性。在系統設計上Kerberos采用C/S架構,基于DEC加密技術,支持客戶端和服務器端雙向認證。

總之,Kerberos是一種網絡安全問題的解決方案。它提供了認證和強加密工具用以在整個企業基于網絡幫助你保護你的信息系統。

二,Kerberos 基本原理

1,Kerberos 認證原理

Kerberos是第三方的認證機制,通過它,用戶和用戶希望訪問的服務依賴于Kerberos服務器彼此認證。這種機制也支持加密用戶和服務之間的所有通信。Kerberos 服務器作為密鑰分發中心,簡稱KDC。在高級別上,它包含三部分:
1,用戶和服務的數據庫(即principals)以及他們各自的Kerberos 密碼
2,認證服務器(AS),執行初始認證并簽發授權票據(TGT)
3,Ticket授予服務器(TGS)基于初始的TGT簽發后續的服務票據(ST)

關于AS, TGS , user client , Application server , TGT 以及ST的關系,可以參考下圖:

用戶principal,從AS請求認證,AS返回一個使用用戶principal的kerberos密碼加密的TGT,它僅被用戶principal和AS知曉。用戶principal使用Kerberos密碼本地解密這個TGT,并且從這個點開始,直到票據過期,用戶principal可以使用這個TGT從TGS獲取服務票據(ST)。

Kerberos 認證系統使用一系列的加密消息向驗證機證明客戶端正在以指定用戶身份運行。Kerberos通過使用時間戳來減少需要基礎校驗的消息數量,除了“tikcket-granting”(TGS)服務被用來支持后續的認證外,不需要重復輸入principal的密碼。

最初,客戶端和服務器端并沒有共享加密密鑰。無論何時客戶端到一個新的驗證機認證自己都依賴于AS生成的新的加密密鑰,并且將其安全地分發給彼此。這個新的加密密鑰叫做 session key, Kerberos ticket被用來分發它到驗證機。

由于服務principal不可能每次提供密碼來解密TGT,它會使用一個特定的文件,叫做keytab,這個文件包含了它的認證授權。
這種服務票據允許principal訪問各種服務。Kerberos服務器控制的一套主機,用戶和服務被稱作一個域(realm)。

2,Kerberos 注意事項

用戶名/FQDN(Full Quafilied Domain Name)的主機名@REALM(受保護的域,全大寫)

當然這個用戶名需要是Linux下存在的用戶

FQDN全限定域名,就是一定要帶上hostname.domain這種形式,當然,如果你的主機并沒有給出domain,那么不寫域名也可以。反正就是要全部的主機名加域名(如果存在域名的話),也就是hostname -f所輸出的主機名。但實際上,在Kerberos里面,這個并不稱之為主機名,而是叫做Instance,實例名,他可以不是任何服務器的主機名稱,但是便于理解和認識,我們還是先把他當初主機名來看待吧。

REALM,受到Kerberos保護的域名稱,就是一類或一組受到Kerberos保護服務的服務器集合,你可以想象成Windows里面的域。由于一個KDC可以同時保護多個域,比如你可以在一個KDC上既保護HADOOP服務器組,也保護MYSQL服務器組,所以我們通常會使用域名來進行區別。

如果你的hostname里面使用了domain name,那么你必須在Principal的第二部分寫完整,否則KDC將無法驗證主機的合法性,加密的tgt是要帶著主機名信息的。

還有,特別需要注意的是,這里面第二部分的domain(域名),第三部分的realm(域),在中文里的字是一樣,但是英文單詞完全不同,他們所表達的含義也完全不同。由于通常Kerberos的Realm部分也會寫成域名的形式,所以就會讓人迷惑,而實際上,你把realm部分理解成windows里面的workgroup或者home這種域也是可以的。名稱可以隨便起,不一定用你的真實域名。只是個區分不同服務集合的代號。

注意:Kerberos是時間敏感型協議,在域內的所有主機必須是時間同步的。既使客戶端的本地系統時間和KDC的差異小到5分鐘,客戶端都可能認證失敗。

三,KDC服務安裝及配置

1,確保hosts 能夠解析

hostname -f 獲取的是 hosts 文件中 FQDN 格式的 的hostname(大小寫按照hosts 文件中的),Kerberos必須要求FQDN格式的主機名為小寫。
所以hosts 文件中按照如下格式:

ip vecs02583.domain.com vecs02583

如果沒有domain.com 類似的長域名,則一定注意主機名英文字母一定要為小寫。
確保所有的clients與servers之間的時間同步以及DNS正確解析。

2,安裝KDC服務

KDC的主機必須非常自身安全,一般該主機只運行KDC程序。
在安裝完上述的軟件之后,會在KDC主機上生成配置文件/etc/krb5.conf和/var/kerberos/krb5kdc/kdc.conf,它們分別反映了realm name 以及 domain-to-realm mappings。
進入vecs02583(該節點為KDC Server 節點) 的root 用戶下

yum -y install krb5-server krb5-libs krb5-auth-dialog krb5-workstation openldap-clients

3,修改主配置文件/etc/krb5.conf,這個配置文件后續將被下發給所有kerberos客戶端服務器。

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

vim /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 = HADOOP.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
[realms]
 HADOOP.COM = {
  kdc = vecs02583
  admin_server = vecs02583
 }
[domain_realm]
 .hadoop.com = HADOOP.COM
 hadoop.com = HADOOP.COM

說明:
[logging]:表示server端的日志的打印位置
[libdefaults]:每種連接的默認配置,需要注意以下幾個關鍵的小配置
default_realm = HADOOP.COM 默認的realm,必須跟要配置的realm的名稱一致。
udp_preference_limit = 1 禁止使用udp可以防止一個Hadoop中的錯誤
oticket_lifetime表明憑證生效的時限,一般為24小時。
orenew_lifetime表明憑證最長可以被延期的時限,一般為一個禮拜。當憑證過期之后,
對安全認證的服務的后續訪問則會失敗。
kdc:代表要kdc的位置。格式是 機器:端口
admin_server:代表admin的位置。格式是機器:端口
default_domain:代表默認的域名。

4,配置kdc.conf

默認放在 /var/kerberos/krb5kdc/kdc.conf。或者通過覆蓋KRB5_KDC_PROFILE環境變量修改配置文件位置。
vim /var/kerberos/krb5kdc/kdc.conf

[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88
[realms]
 HADOOP.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
 }

說明:
HADOOP.COM:是設定的realms。名字隨意。Kerberos可以支持多個realms,會增加復雜度。本文不探討。大小寫敏感,一般為了識別使用全部大寫。這個realms跟機器的host沒有大關系。
max_renewable_life = 7d 涉及到是否能進行ticket的renwe必須配置。
master_key_type:和supported_enctypes默認使用aes256-cts。由于,JAVA使用aes256-cts驗證方式需要安裝額外的jar包,更多參考2.2.9關于AES-256加密:。推薦不使用。
acl_file:標注了admin的用戶權限。文件格式是
Kerberos_principal permissions [target_principal] [restrictions]支持通配符等。
admin_keytab:KDC進行校驗的keytab。后文會提及如何創建。
supported_enctypes:支持的校驗方式。注意aes256-cts需要JDK 下安裝額外的jar。

五,創建/初始化Kerberos database

初始化并啟動:完成上面兩個配置文件后,就可以進行初始化并啟動了。

[root@VECS02583 ~]# /usr/sbin/kdb5_util create -s -r HADOOP.COM

其中,[-s]表示生成stash file,并在其中存儲master server key(krb5kdc);還可以用[-r]來指定一個realm name —— 當krb5.conf中定義了多個realm時才是必要的。
保存路徑為/var/kerberos/krb5kdc 如果需要重建數據庫,將該目錄下的principal相關的文件刪除即可
在此過程中,我們會輸入database的管理密碼。這里設置的密碼一定要記住,如果忘記了,就無法管理Kerberos server。
當Kerberos database創建好后,可以看到目錄 /var/kerberos/krb5kdc 下生成了幾個文件:

-rw------- 1 root root   22 Nov 23  2016 kadm5.acl
-rw------- 1 root root  405 Feb 23 20:25 kdc.conf
-rw------- 1 root root 8192 Feb 23 22:26 principal
-rw------- 1 root root 8192 Feb 23 21:56 principal.kadm5
-rw------- 1 root root    0 Feb 23 21:56 principal.kadm5.lock
-rw------- 1 root root    0 Feb 23 22:26 principal.ok

六,添加kdc database administrator

我們需要為Kerberos database添加administrative principals (即能夠管理database的principals) —— 至少要添加1個principal來使得Kerberos的管理進程kadmind能夠在網絡上與程序kadmin進行通訊。
在maste KDC(vecs02583)上執行:

/usr/sbin/kadmin.local -q "addprinc admin/admin"

并為其設置密碼.

kadmin.local
可以直接運行在master KDC上,而不需要首先通過Kerberos的認證,實際上它只需要對本
地文件的讀寫權限。

七,為database administrator設置ACL權限

在KDC上我們需要編輯acl文件來設置權限,該acl文件的默認路徑是 /var/kerberos/krb5kdc/kadm5.acl(也可以在文件kdc.conf中修改)。Kerberos的kadmind daemon會使用該文件來管理對Kerberos database的訪問權限。對于那些可能會對pincipal產生影響的操作,acl文件也能控制哪些principal能操作哪些其他pricipals。

我們現在為administrator設置權限:將文件/var/kerberos/krb5kdc/kadm5.acl的內容編輯為

vim /var/kerberos/krb5kdc/kadm5.acl

*/admin@HADOOP.COM

代表名稱匹配/admin@HADOOP.COM 都認為是admin,權限是 。代表全部權限。

八,啟動并設置 kerberos 后臺進程 為deamon

在master KDC啟動Kerberos daemons

[root@VECS02583 /]# service krb5kdc start
[root@VECS02583 /]# service kadmin start

開機自動啟動

[root@VECS02583 /]# chkconfig krb5kdc on
[root@VECS02583 /]# chkconfig kadmin on

現在KDC已經在工作了。這兩個daemons將會在后臺運行,可以查看它們的日志文件(/var/log/krb5kdc.log 和 /var/log/kadmind.log)。
可以通過命令kinit來檢查這兩個daemons是否正常工作。

九,關于AES-256加密

對于使用 centos5 , 6及以上的系統,默認使用 AES-256 來加密的。這就需要集群中的所有節點上安裝 Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy File。
下載的文件是一個 zip 包,解開后,將里面的兩個文件放到下面的目錄中:$JAVA_HOME/jre/lib/security

配置JCE,這是因為CentOS6.5及以上系統默認使用AES-256加密,因此需要所有節點安裝并配置JCE,JCE下載路徑: http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html

十,配置集群其他Kerberos Clients

在使用到 kerberos client 機器上安裝如下

yum install krb5-workstation krb5-libs krb5-auth-dialog

配置krb5.conf
配置這些主機上的/etc/krb5.conf,這個文件的內容與KDC中的文件保持一致即可。

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = HADOOP.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 HADOOP.COM = {
  kdc = vecs02583
  admin_server = vecs02583
 }

[domain_realm]
 .hadoop.com = HADOOP.COM
 hadoop.com = HADOOP.COM

參考:
https://www.jianshu.com/p/69e211cc39ca
https://blog.51cto.com/slaytanic/2102931

總結

以上是生活随笔為你收集整理的Kerberos 简单安装配置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。