【大數據安全】Kerberos集群安裝配置

      網友投稿 911 2025-03-31

      1. 概述


      Kerberos是一種計算機網絡認證協議,它允許某實體在非安全網絡環境下通信,向另一個實體以一種安全的方式證明自己的身份。它也指由麻省理工實現此協議,并發布的一套免費軟件。它的設計主要針對客戶-服務器模型,并提供了一系列交互認證——用戶和服務器都能驗證對方的身份。Kerberos協議可以保護網絡實體免受竊聽和重復攻擊。

      Kerberos協議基于對稱密碼學,并需要一個值得信賴的第三方。Kerberos協議的擴展可以為認證的某些階段提供公鑰密碼學支持。

      2. 環境說明:

      CDH版本:5.11.2

      Linux版本:Centos 7

      Docker版本:Docker version 18.06.0-ce

      JDK版本:1.8

      操作用戶:root

      機器部署:

      各節點之間可以通過ssh免密碼登錄

      Kerberos服務器和客戶之間的時間同步

      3. Kerberos 安裝

      cdh-node-1作為Kerberos主節點安裝服務:

      yum?install?krb5-libs?krb5-server?krb5-workstation

      通過命令查看安裝列表rpm -qa|grep krb5:

      [root@cdh-node-1?/]#?rpm?-qa??|?grep?krb5krb5-workstation-1.15.1-19.el7.x86_64 krb5-devel-1.15.1-19.el7.x86_64 krb5-server-1.15.1-19.el7.x86_64 krb5-libs-1.15.1-19.el7.x86_64 [root@cdh-node-1?/]#

      4. 配置

      kdc服務器包含三個配置文件:

      #?集群上所有節點都有這個文件而且內容同步/etc/krb5.conf#?主服務器上的kdc配置/var/kerberos/krb5kdc/kdc.conf#?能夠不直接訪問?KDC?控制臺而從?Kerberos?數據庫添加和刪除主體,需要添加配置/var/kerberos/krb5kdc/kadm5.acl

      1. 首先配置/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??#此處需要進行配置,把默認的EXAMPLE.COM修改為自己要定義的值 ?dns_lookup_kdc?=?false ?dns_lookup_realm?=?false ?ticket_lifetime?=?86400 ?renew_lifetime?=?604800 ?forwardable?=?true ?default_tgs_enctypes?=?rc4-hmac ?default_tkt_enctypes?=?rc4-hmac ?permitted_enctypes?=?rc4-hmac ?udp_preference_limit?=?1 ?kdc_timeout?=?3000[realms] ?EXAMPLE.COM?=?{ ?kdc?=?cdh-node-1???#此處配置的為主機名 ?admin_server?=?cdh-node-1??#同上 ?}

      配置項說明:

      更多參數設置請參考:官方文檔。

      以下是幾個核心參數的說明:

      [logging]:日志輸出設置 (可選)

      [libdefaults]:連接的默認配置

      default_realm:Kerberos應用程序的默認領域,所有的principal都將帶有這個領域標志

      ticket_lifetime: 表明憑證生效的時限,一般為24小時

      renew_lifetime: 表明憑證最長可以被延期的時限,一般為一個禮拜。當憑證過期之后,對安全認證的服務的后續訪問則會失敗

      clockskew:時鐘偏差是不完全符合主機系統時鐘的票據時戳的容差,超過此容差將不接受此票據。通常,將時鐘扭斜設置為 300 秒(5 分鐘)。這意味著從服務器的角度看,票證的時間戳與它的偏差可以是在前后 5 分鐘內

      udp_preference_limit= 1:禁止使用 udp 可以防止一個 Hadoop 中的錯誤

      default_ccache_name:credential緩存名,默認值為

      [realms]:列舉使用的 realm

      kdc:代表要 kdc 的位置。格式是 機器:端口

      admin_server:代表 admin 的位置。格式是 機器:端口

      default_domain:代表默認的域名

      [domain_realm]:域名到realm的關系 (可選)

      2.配置/var/kerberos/krb5kdc/kdc.conf文件

      此處為EXAMPLE.COM與/etc/krb5.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?=?aes256-cts:normal?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 ?}

      配置項說明:

      -?`kdcdefaults`:kdc相關配置,這里只設置了端口信息 -?`realms`:realms的配置 ????-?`EXAMPLE.COM`:設定的realms領域 ????-?`master_key_type`:和?supported_enctypes?默認使用?aes256-cts。JAVA?使用?aes256-cts?驗證方式需要安裝?JCE包(推薦不使用) ????-?`acl_file`:標注了?admin?的用戶權限,文件格式是:Kerberos_principal?permissions?[target_principal]?[restrictions] ????-?`supported_enctypes`:支持的校驗方式 ????-?`admin_keytab`:KDC?進行校驗的?keytab

      關于AES-256加密:

      對于使用 Centos5.6 及以上的系統,默認使用?AES-256來加密的。這就需要集群中的所有節點上安裝 Java?Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy File。

      下載的文件是一個 zip 包,解開后,將里面的兩個文件放到下面的目錄中:$JAVA_HOME/jre/lib/security

      3. 創建/var/kerberos/krb5kdc/kadm5.acl

      內容為:*/admin@EXAMPLE.COM *

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

      在KDC上我們需要編輯acl文件來設置權限,該acl文件的默認路徑是?/var/kerberos/krb5kdc/kadm5.acl(也可以在文件kdc.conf中修改)。

      Kerberos的kadmind daemon會使用該文件來管理對Kerberos database的訪問權限。對于那些可能會對pincipal產生影響的操作,acl文件也能控制哪些principal能操作哪些其他pricipals。

      4. 創建Kerberos數據庫

      此步可能用時較長,創建完成會在/var/kerberos/krb5kdc/下面生成一系列文件。并且會提示輸入數據庫管理員的密碼。

      db5_util?create?-r?EXAMPLE.COM?–s?#?此處為EXAMPLE.COM與/etc/krb5.conf中的配置保持一致。

      其中,[-s]表示生成stash file,并在其中存儲master server key(krb5kdc);還可以用[-r]來指定一個realm name —— 當krb5.conf中定義了多個realm時才是必要的。

      如果需要重建數據庫,將/var/kerberos/krb5kdc目錄下的principal相關的文件刪除即可.

      當Kerberos database創建好后,可以看到目錄?/var/kerberos/krb5kdc?下生成了幾個文件:

      kadm5.aclkdc.confprincipalprincipal.kadm5principal.kadm5.lockprincipal.ok

      5. 添加database administrator

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

      創建管理員并輸入密碼admin。kadmin.local可以直接運行在KDC上,而無需通過Kerberos認證。

      為用戶設置密碼:

      [root@cdh-node-1?/]#?kadmin.local?-q?"addprinc?admin/admin"Authenticating?as?principal?root/admin@EXAMPLE.COM?with?password. WARNING:?no?policy?specified?for?admin/admin@EXAMPLE.COM;?defaulting?to?no?policy Enter?password?for?principal?"admin/admin@EXAMPLE.COM": Re-enter?password?for?principal?"admin/admin@EXAMPLE.COM":?? Principal?"admin/admin@EXAMPLE.COM"?created.

      6. 設置kerberos服務為開機啟動,關閉防火墻

      chkconfig?krb5kdc?onchkconfig?kadmin?onchkconfig?iptables?off

      7. 啟動krb5kdc和kadmind進程

      /usr/sbin/kadmind/usr/sbin/krb5kdc

      service?krb5kdc?startservice?kadmin?startservice?krb5kdc?status

      現在KDC已經在工作了。這兩個daemons將會在后臺運行,可以查看它們的日志文件(/var/log/krb5kdc.log 和 /var/log/kadmind.log)。

      8. 檢查Kerberos正常運行

      kinit?admin/admin

      9. 集群中的其他主機安裝Kerberos Client

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

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

      10. 在cm節點安裝ldap客戶端

      yum?install?openldap-clients

      【大數據安全】Kerberos集群安裝配置

      5. Kerberos使用

      常用命令:

      kinit?admin/admin@EXAMPLE.COM?#?初始化證書klist?#?查看當前證書kadmin.local?-q?"list_principals"???#?列出Kerberos中的所有認證用戶kadmin.local?-q?"addprinc?user1"??#?添加認證用戶,需要輸入密碼kinit?user1??#?使用該用戶登錄,獲取身份認證,需要輸入密碼klist??#?查看當前用戶的認證信息ticketkinit?–R??#?更新ticketkdestroy??#?銷毀當前的ticketkadmin.local?-q?"delprinc?user1"??#?刪除認證用戶

      5.1 管理員使用

      1. 登錄

      登錄到管理員賬戶,如果在本機上,可以通過kadmin.local直接登錄:

      [root@cdh-node-1?/]#?kadmin.localAuthenticating?as?principal?root/admin@EXAMPLE.COM?with?password. kadmin.local:

      其它機器的,先使用kinit進行驗證:

      [root@cdh-server-1?/]#?kinit?admin/adminPassword?for?admin/admin@EXAMPLE.COM: [root@cdh-server-1?/]#?kadminAuthenticating?as?principal?admin/admin@EXAMPLE.COM?with?password. Password?for?admin/admin@EXAMPLE.COM: kadmin:

      2. 增刪改查賬戶

      在管理員的狀態下使用addprinc,delprinc,modprinc,listprincs命令。使用?可以列出所有的命令。

      [root@cdh-node-1?/]#?kadmin.localAuthenticating?as?principal?root/admin@EXAMPLE.COM?with?password. kadmin.local:??delprinc?test Are?you?sure?you?want?to?delete?the?principal?"test@EXAMPLE.COM"??(yes/no):?yesPrincipal?"test@EXAMPLE.COM"?deleted. Make?sure?that?you?have?removed?this?principal?from?all?ACLs?before?reusing. kadmin.local:??listprincs HTTP/cdh-node-1@EXAMPLE.COM HTTP/cdh-node-2@EXAMPLE.COM HTTP/cdh-node-3@EXAMPLE.COM ...

      3. 生成keytab:使用xst命令或者ktadd命令

      [root@cdh-node-1?/]#?kadmin:xst?-k?/xxx/xxx/kerberos.keytab?hdfs/hadoop1

      5.2 用戶使用

      1. 查看當前認證用戶

      [root@cdh-node-2?/]#?klistTicket?cache:?FILE:/tmp/krb5cc_0Default?principal:?hdfs@EXAMPLE.COMValid?starting???????Expires??????????????Service?principal08/08/2018?17:49:41??08/09/2018?17:49:41??krbtgt/EXAMPLE.COM@EXAMPLE.COM

      2. 認證用戶

      [root@cdh-node-2?/]#?kinit?-kt?/xx/xx/kerberos.keytab?hdfs/hadoop1

      3. 刪除當前的認證的緩存

      [root@cdh-node-2?/]#?kdestroy[root@cdh-node-2?/]#?klistklist:?No?credentials?cache?found?(filename:?/tmp/krb5cc_0)

      6. 一些概念

      Kerberos principal用于在kerberos加密系統中標記一個唯一的身份。

      kerberos為kerberos principal分配tickets使其可以訪問由kerberos加密的hadoop服務。

      對于hadoop,principals的格式為username/fully.qualified.domain.name@YOUR-REALM.COM.

      keytab是包含principals和加密principal key的文件。

      keytab文件對于每個host是唯一的,因為key中包含hostname。keytab文件用于不需要人工交互和保存純文本密碼,實現到kerberos上驗證一個主機上的principal。

      因為服務器上可以訪問keytab文件即可以以principal的身份通過kerberos的認證,所以,keytab文件應該被妥善保存,應該只有少數的用戶可以訪問。

      Kerberos 安全 大數據

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Excel中ACCRINTM的公式語法和用法
      下一篇:如何基于MindSpore實現萬億級參數模型算法?
      相關文章
      亚洲国产福利精品一区二区| 亚洲视频在线不卡| 精品亚洲AV无码一区二区三区| 中文字幕在线观看亚洲| 亚洲日韩图片专区第1页| 亚洲免费精彩视频在线观看| 亚洲AV日韩AV永久无码免下载| 亚洲成AV人片在线观看无码| 亚洲国产精品一区二区成人片国内| 亚洲伊人久久大香线蕉综合图片| 337p日本欧洲亚洲大胆裸体艺术| 久久久精品国产亚洲成人满18免费网站| 亚洲人成影院在线观看| 久久久精品国产亚洲成人满18免费网站 | 亚洲AV无码一区东京热| 亚洲AV无码AV男人的天堂| 亚洲国产精品久久久久婷婷老年| 伊人久久综在合线亚洲2019| 亚洲精品人成电影网| 亚洲AV无码国产精品色| 亚洲熟女综合色一区二区三区| 亚洲日韩AV一区二区三区中文| 精品国产亚洲一区二区三区在线观看| 337p日本欧洲亚洲大胆人人| 亚洲第一区精品观看| 亚洲综合网站色欲色欲| 亚洲国产精品无码专区影院 | 亚洲国产午夜精品理论片在线播放 | 亚洲国产成人九九综合| 亚洲熟女综合色一区二区三区| 国产成人人综合亚洲欧美丁香花 | 亚洲高清无码综合性爱视频| 亚洲综合色视频在线观看| 亚洲欧洲日产国码av系列天堂| 亚洲av无码专区国产乱码在线观看| 亚洲国产人成在线观看69网站 | 亚洲国产成人va在线观看网址| 亚洲一级视频在线观看| 亚洲AV无码之国产精品| 亚洲人成网站色在线入口| 亚洲国产精品成人精品无码区在线|