搭建kerberos和NTP服務器以及安全的NFS服務

說明:這裏是Linux服務綜合搭建文章的一部分,本文能夠做爲單獨搭建Kerberos和NTP時鐘服務的參考。html

注意:這裏全部的標題都是根據主要的文章(Linux基礎服務搭建綜合)的順序來作的。web

若是須要查看相關軟件版本和主機配置要求,請根據目錄自行查看。

Linux服務綜合搭建的文章目錄shell

====================================================數據庫

Linux基礎服務搭建綜合編程

一、foundation建立yum倉庫vim

二、部署DNS瀏覽器

三、將YUM源經過httpd發佈出來緩存

四、rhel7主機安裝JDKtomcat

五、foundation經過Rsyslog搭建集中日誌服務器安全

六、foundation LAMP環境搭建

七、foundation搭建NFS服務

八、rhel7 JAVA web環境搭建(使用Tomcat8整合httpd)

九、foundation自建CA實現HTTPS

十、foundation配置kerberos和NTP服務以及安全的NFS掛載

十一、foundation提供SAMBA服務

十二、rhel7 配置軟ISCSI存儲

13 rhel7主機配置端口轉發和地址假裝

====================================================

主機角色說明

十、foundation配置kerberos

注意:先搭建好時鐘同步服務器(這裏介紹兩種方案,固然,也能夠直接使用國內一些現成的時鐘服務器,好比阿里雲的)而後再開始搭建kerberos

10.1一些概念

10.1.1 什麼是NTP?

NTP(Network Time Protocol,網絡時間協議)是用來使網絡中的各個計算機時間同步的一種協議。它的用途是把計算機的時鐘同步到世界協調時UTC,其精度在局域網內可達0.1ms,在互聯網上絕大多數的地方其精度能夠達到1-50ms。NTP服務器就是利用NTP協議提供時間同步服務的。

10.1.2 爲何要作時間同步?

       時間同步有不少好處,這裏咱們必須讓時間同步的緣由就是咱們使用的kerberos它依賴時間的準確性。在kerberos官方文檔中有以下的信息:

kerberos官方文檔:https://web.mit.edu/kerberos/krb5-latest/doc/admin/install.html

(雖然是英文,可是技術文檔通常都不會有很難的單詞,實在不行可使用瀏覽器的翻譯插件看,千萬不要抵觸英文)

同步時鐘最大的好處就是相關係統上日誌文件中的數據,若是網絡中使用中央日誌主機集中管理日誌,

獲得的日誌結果就更能反映真實狀況。在同步了時鐘的網絡中,集中式的性能監控、服務監控系統能實時的反應系統信息,

系統管理員能夠快速的檢測和解決系統錯誤。若是時間不一樣步,不少應用將沒法正常運行,

同時大數據系統也是對時間很敏感的,時間同步才能使得大數據處理更加精確。

10.1.3 ntpd、ntpdate和chronyd的區別

ntpd和chronyd均可以做爲時間同步服務器,同時ntpd和chronyd不只僅是時間同步服務器,它還能夠作客戶端與標準時間服務器進行同步時間,而且是平滑同步。而ntpdate並是當即同步,並非平滑同步,在生產環境中慎用ntpdate,也正如此二者不可同時運行。

ntpdate依賴於NTP服務器的安全,若是ntpdate被攻擊,時間同步則會有問題,而且NTP服務器一旦宕機,跟隨它的服務器也就沒法同步,另外使用ntpdate也不夠優雅,它是當即同步,時間是跳變,依賴於時間的應用就會出問題。

       因此在這裏咱們僅僅使用ntpdate來作測試。

10.1.4 kerberos

Kerberos協議主要用於計算機網絡的身份鑑別(Authentication), 它的特色是用戶只需輸入一次身份驗證信息就能夠憑藉此驗證得到的票據(ticket-granting ticket)訪問多個服務,即SSO(Single Sign On)。因爲在每一個Client和Service之間創建了共享密鑰,使得該協議具備至關的安全性。

Kerberos協議分爲兩個部分:

1.Client向KDC發送本身的身份信息,KDC從Ticket Granting Service獲得TGT(ticket-granting ticket),並用協議開始前Client與KDC之間的密鑰將TGT加密回覆給Client。

此時只有真正的Client才能利用它與KDC之間的密鑰將加密後的TGT解密,從而得到TGT。

(此過程避免了Client直接向KDC發送密碼,以求經過驗證的不安全方式)

2.Client利用以前得到的TGT向KDC請求其餘Service的Ticket,從而經過其餘Service的身份鑑別。

用對話場景來解釋kerbeors的設計過程請參考:

https://blog.csdn.net/dog250/article/details/5468741

kerberos認證原理請參考:

http://www.javashuo.com/article/p-xocegveq-bx.html

kerberos認證簡易流程:這裏就不詳解kerberos的原理和搭建設計思路了。

概念補充:

一、principal

認證的主體,簡單來講就是"用戶名"

二、realm

  realm有點像編程語言中的namespace。在編程語言中,變量名只有在某個"namespace"裏纔有意義。一樣的,一個principal只有在某個realm下才有意義。
因此realm能夠當作是principal的一個"容器"或者"空間"。相對應的,principal的命名規則是"what_name_you_like@realm"。
在kerberos, 你們都約定成俗用大寫來命名realm, 好比"EXAMPLE.COM"

三、password

  某個用戶的密碼,對應於kerberos中的master_key。password能夠存在一個keytab文件中。因此kerberos中須要使用密碼的場景均可以用一個keytab做爲輸入。

四、credential

  credential是「證實某我的肯定是他本身/某一種行爲的確能夠發生」的憑據。在不一樣的使用場景下, credential的具體含義也略有不一樣:

對於某個principal個體而言,他的credential就是他的password。

在kerberos認證的環節中,credential就意味着各類各樣的ticket。

 

10.2 使用ntp搭建NTP時間服務器

10.2.1 安裝軟件包

在咱們RHEL7.4的ISO鏡像文件中有ntp的包,因此直接yum安裝便可。

1 [root@foundation ~]# yum install ntp

10.2.2 配置

#簡化配置文件,去掉全部註釋,可使用egrep -v [root@foundation ~]# grep -v -E "^$|#" /etc/ntp.conf driftfile /var/lib/ntp/drift restrict default nomodify notrap nopeer noquery restrict 172.25.0.55 nomodify notrap nopeer noquery restrict 127.0.0.1 restrict ::1 server 127.127.1.0 fudge 127.127.1.0 stratum 10 includefile /etc/ntp/crypto/pw keys /etc/ntp/keys disable monitor

配置參數的解釋

#如下是配置項的解釋 [root@foundation ~]# cat /etc/ntp.conf # For more information about this file, see the man pages # ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5). driftfile /var/lib/ntp/drift #預約義的時間差別分析檔案存放的路徑,通常不做更改 # Permit time synchronization with our time source, but do not # permit the source to query or modify the service on this system. restrict default nomodify notrap nopeer noquery #拒絕IPV4的用戶 #restrict -6 default kod nomodify notrap nopeer noquery #拒絕 IPv6 的用戶 restrict 172.25.0.55 nomodify notrap nopeer noquery #當前節點的IP地址 # Permit all access over the loopback interface. This could # be tightened as well, but to do so would effect some of # the administrative functions. #放行局域網用戶來源,也能夠單獨列出IP地址 restrict 172.25.0.0 mask 255.255.255.0 nomodify #通常是局域網中網關的IP或者直接是網段 #單獨列出IP放行主機(上游主機)進入本NTP源的格式以下 restrict 172.25.0.11 #下面的是默認值,放行本機來源 restrict 127.0.0.1 restrict ::1 # Hosts on local network are less restricted. #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html).
#設置上游主機來源,通常會先註釋掉默認的幾個 #server 0.rhel.pool.ntp.org iburst #server 1.rhel.pool.ntp.org iburst #server 2.rhel.pool.ntp.org iburst #server 3.rhel.pool.ntp.org iburst #上游主機 #server 172.25.0.77 prefer #加上prefer表示這臺主機優先 #默認當上遊主機找不到,咱們就使用本機的時間做爲時間服務 server 127.127.1.0 fudge 127.127.1.0 stratum 10 #broadcast 192.168.1.255 autokey # broadcast server #broadcastclient # broadcast client #broadcast 224.0.1.1 autokey # multicast server #multicastclient 224.0.1.1 # multicast client #manycastserver 239.255.254.254 # manycast server #manycastclient 239.255.254.254 autokey # manycast client # Enable public key cryptography. #crypto includefile /etc/ntp/crypto/pw # Key file containing the keys and key identifiers used when operating # with symmetric key cryptography. keys /etc/ntp/keys # Specify the key identifiers which are trusted. #trustedkey 4 8 42 # Specify the key identifier to use with the ntpdc utility. #requestkey 8 # Specify the key identifier to use with the ntpq utility. #controlkey 8 # Enable writing of statistics records. #statistics clockstats cryptostats loopstats peerstats # Disable the monitoring facility to prevent amplification attacks using ntpdc # monlist command when default restrict does not include the noquery flag. See # CVE-2013-5211 for more details. # Note: Monitoring will not be disabled with the limited restriction flag. disable monitor
restrict [ 客戶端IP ] mask [ IP掩碼 ] [參數] 「客戶端IP」 和 「IP掩碼」 指定了對網絡中哪些範圍的計算機進行控制,若是使用default關鍵字,則表示對全部的計算機進行控制,參數指定了具體的限制內容,常見的參數以下: ◆ ignore:拒絕鏈接到NTP服務器 ◆ nomodiy: 客戶端不能更改服務端的時間參數,可是客戶端能夠經過服務端進行網絡校時。 ◆ noquery: 不提供客戶端的時間查詢 ◆ notrap: 不提供trap遠程登陸功能,trap服務是一種遠程時間日誌服務。 ◆ notrust: 客戶端除非經過認證,不然該客戶端來源將被視爲不信任子網 。 ◆ nopeer: 提供時間服務,但不做爲對等體。 ◆ kod: 向不安全的訪問者發送Kiss-Of-Death報文。
server host [ key n ] [ version n ] [ prefer ] [ mode n ] [ minpoll n ] [ maxpoll n ] [ iburst ] 其中host是上層NTP服務器的IP地址或域名,隨後所跟的參數解釋以下所示: ◆ key: 表示全部發往服務器的報文包含有祕鑰加密的認證信息,n是32位的整數,表示祕鑰號。 ◆ version: 表示發往上層服務器的報文使用的版本號,n默認是3,能夠是1或者2。 ◆ prefer: 若是有多個server選項,具備該參數的服務器有限使用。 ◆ mode: 指定數據報文mode字段的值。 ◆ minpoll: 指定與查詢該服務器的最小時間間隔爲2的n次方秒,n默認爲6,範圍爲4-14。 ◆ maxpoll: 指定與查詢該服務器的最大時間間隔爲2的n次方秒,n默認爲10,範圍爲4-14。 ◆ iburst: 當初始同步請求時,採用突發方式接連發送8個報文,時間間隔爲2秒

啓動服務並設置服務爲自啓動並配置防火牆放行123端口

1 [root@foundation ~]# systemctl restart ntpd 2 [root@foundation ~]# systemctl enable ntpd 3 [root@foundation ~]# firewall-cmd --permanent --add-service=ntp && firewall-cmd --reload 4 [root@foundation ~]# ntpq -p #服務端檢查ntp同步是否正常 5 [root@foundation ~]# netstat -lntup|grep 123  #查看端口監聽狀況

注意:ntpq -p  命令在服務端檢查ntp同步是否正常時,通常有輸出不報錯就沒問題的,

可是也可能遇到當全部遠程服務器的jitter值都爲4000,而且reach和dalay的值是0時,就表示時間同步有問題。

主要緣由有兩個,一是服務端防火牆沒有容許123端口經過,而是NTP服務重啓後和客戶端創建鏈接通常須要3-5分鐘,

這個時間段可能不會正常同步。(下圖爲正常狀況,圖中的*LOCAL()表示正在使用本機時間做爲NTP的時間服務)。

10.2.3 測試(在rhel7這臺主機)

這裏咱們使用chronyd做爲客戶端,也可使用ntpd做爲客戶端

1 [root@rhel7 /]# systemctl restart chronyd 2 [root@rhel7 /]# systemctl enable chronyd 3 [root@rhel7 /]# vim /etc/chrony.conf 4 註釋掉之前的上游服務器地址,而後添加咱們的foudation.mei.com主機

注意,剛配置完服務器端,立刻就用chronyc測試,可能會一直同步不到,

固然也多是以前配置時服務器端忘記了防火牆放行123端口,建議直接使用ntpdate命令來測試。

若是ntpdate測試出現no server suitable for synchronization found錯誤提示,前面防火牆也沒問題,

那麼多是每次重啓ntp服務器以後,大約3-5分鐘客戶端才能與服務端創建鏈接,

創建鏈接以後才能進行時間同步,這段時間內可能客戶端確實尚未和服務端鏈接,因此就報錯。

出現這種狀況稍等片刻再測試就行。

使用ntpdate測試

1 [root@rhel7 ~]# date
2 Mon Jul  8 06:10:22 CST 2019
3 [root@rhel7 ~]# date -s 2017-09-01
4 Fri Sep  1 00:00:00 CST 2017
5 [root@rhel7 ~]# ntpdate 172.25.0.55 #這裏是NTP服務器的地址,能夠是域名 6  8 Jul 06:10:41 ntpdate[13649]: step time server 172.25.0.55 offset 58342229.655396 sec 7 [root@rhel7 ~]# date #再次獲取時間可以看到時間已經同步 8 Mon Jul  8 06:21:59 CST 2019

10.3 使用chronyd搭建NTP時間服務器

10.3.1 安裝

由於RHEL7默認安裝了chronyd的,因此咱們直接就可使用了,若是沒有直接yum安裝便可。

10.3.1 配置

直接編輯配置文件以下

 

[root@foundation ~]# grep -v -E "^$|#" /etc/chrony.conf server 0.rhel.pool.ntp.org iburst server 1.rhel.pool.ntp.org iburst server 2.rhel.pool.ntp.org iburst server 3.rhel.pool.ntp.org iburst stratumweight 0 driftfile /var/lib/chrony/drift rtcsync makestep 10 3 allow 172.25.0.0/16 bindcmdaddress 127.0.0.1 bindcmdaddress ::1 bindcmdaddress 172.25.0.55 local stratum 10 keyfile /etc/chrony.keys commandkey 1 generatecommandkey noclientlog logchange 0.5 logdir /var/log/chrony

配置選項(參數)解釋

# 用於添加時鐘服務器,能夠添任意多個 server 0.rhel.pool.ntp.org iburst server 1.rhel.pool.ntp.org iburst server 2.rhel.pool.ntp.org iburst server 3.rhel.pool.ntp.org iburst # Ignore stratum in source selection. # stratumweight指令設置當chronyd從可用源中選擇同步源時,每一個層應該添加多少距離到同步距離。默認狀況下,設置爲0,讓chronyd在選擇源時忽略源的層級。 stratumweight 0 # Record the rate at which the system clock gains/losses time. # chronyd程序的主要行爲之一,就是根據實際時間計算出計算機增減時間的比率,將它記錄到一個文件中是最合理的,它會在重啓後爲系統時鐘做出補償,甚至可能的話,會從時鐘服務器得到較好的估值。 driftfile /var/lib/chrony/drift # Enable kernel RTC synchronization. # rtcsync指令將啓用一個內核模式,在該模式中,系統時間每11分鐘會拷貝到實時時鐘(RTC)。 rtcsync # In first three updates step the system clock instead of slew # if the adjustment is larger than 10 seconds. 一般,chronyd將根據需求經過減慢或加速時鐘,使得系統逐步糾正全部時間誤差。在某些特定狀況下,系統時鐘可能會漂移過快,致使該調整過程消耗很長的時間來糾正系統時鐘。該指令強制chronyd在調整期大於某個閥值時步進調整系統時鐘,但只有在由於chronyd啓動時間超過指定限制(可以使用負值來禁用限制),沒有更多時鐘更新時才生效。 makestep 10 3 # Allow NTP client access from local network. # 這裏你能夠指定一臺主機、子網,或者網絡以容許或拒絕NTP鏈接到扮演時鐘服務器的機器。 #allow 172.25.0.0/24 #deny 172.25.0.11 # Listen for commands only on localhost. # 該指令容許你限制chronyd監聽哪一個網絡接口的命令包(由chronyc執行)。該指令經過cmddeny機制提供了一個除上述限制之外可用的額外的訪問控制等級。 bindcmdaddress 127.0.0.1 bindcmdaddress ::1 # Serve time even if not synchronized to any NTP server. #local stratum 10 keyfile /etc/chrony.keys # Specify the key used as password for chronyc. commandkey 1 # Generate command key if missing. generatecommandkey # Disable logging of client accesses. noclientlog # Send a message to syslog if a clock adjustment is larger than 0.5 seconds. logchange 0.5 logdir /var/log/chrony #log measurements statistics tracking

重啓服務而且防火牆放行123端口經過

1 [root@foundation ~]# systemctl restart chronyd && systemctl enable chronyd 2 [root@foundation ~]# firewall-cmd --permanent --add-service=ntp 3 [root@foundation ~]# firewall-cmd --reload

10.3.2 客戶端配置和測試(在rhel7這臺主機)

配置:

在上游服務器的配置參數中添加咱們剛纔建立的服務器地址,能夠是域名,也能夠直接是IP地址。

而後測試:

注意,剛配置完服務器端,立刻就用chronyc測試,可能會一直同步不到,固然也多是以前配置時服務器端忘

記了防火牆放行123端口,建議直接使用ntpdate命令來測試。

若是ntpdate測試出現no server suitable for synchronization found錯誤提示,前面防火牆也沒問題,

那麼多是每次重啓ntp服務器以後,大約3-5分鐘客戶端才能與服務端創建鏈接,創建鏈接以後才能進行時間同步,

這段時間內可能客戶端確實尚未和服務端鏈接,因此就報錯。

出現這種狀況稍等片刻再測試就行。

使用ntpdate測試

1 [root@rhel7 ~]# date
2 Mon Jul  8 06:10:22 CST 2019
3 [root@rhel7 ~]# date -s 2017-09-01
4 Fri Sep  1 00:00:00 CST 2017
5 [root@rhel7 ~]# ntpdate 172.25.0.55 #這裏是NTP服務器的地址,能夠是域名 6  8 Jul 06:10:41 ntpdate[13649]: step time server 172.25.0.55 offset 58342229.655396 sec 7 [root@rhel7 ~]# date #再次獲取時間可以看到時間已經同步 8 Mon Jul  8 06:21:59 CST 2019

10.4 kerberos搭建

10.4.1 安裝軟件包

1 [root@foundation ~]# yum install krb5-server krb5-libs krb5-workstation -y

10.4.2 編輯配置文件

配置文件的具體含義和配置參數請直接參考官方文檔(雖然是英文,可是技術文檔通常都不會有很難的單詞

,實在不行可使用瀏覽器的翻譯插件看,千萬不要抵觸英文)。

https://web.mit.edu/kerberos/krb5-latest/doc/admin/conf_files/index.html

[root@foundation ~]# cat /etc/krb5.conf # Configuration snippets may be placed in this directory as well includedir /etc/krb5.conf.d/ [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] dns_lookup_realm = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true rdns = false # default_realm = EXAMPLE.COM default_realm = MEI.COM default_ccache_name = KEYRING:persistent:%{uid} [realms] # EXAMPLE.COM = { # kdc = kerberos.example.com # admin_server = kerberos.example.com # } MEI.COM = { kdc = foundation.mei.com admin_server = foundation.mei.com } [domain_realm] # .example.com = EXAMPLE.COM # example.com = EXAMPLE.COM .mei.com = MEI.COM
[root@foundation ~]# cat /var/kerberos/krb5kdc/kdc.conf [kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] MEI.COM = { kadmind_port = 749 max_life = 12h 0m 0s max_renewable_life = 7d 0h 0m 0s #master_key_type = aes256-cts #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 }/var/kerberos/krb5kdc/kadm5.acl
[root@foundation ~]# cat /var/kerberos/krb5kdc/kadm5.acl */admin@MEI.COM *

10.4.3建立數據庫

1 kdb5_util create -s -r MEI.COM  #若是有多個realm這樣就頗有必要

10.4.4 添加數據庫的管理員

添加database administrator 咱們須要爲Kerberos database添加administrative principals (即可以管理database的principals) —— 至少要添加1個principal來使得Kerberos的管理進程kadmind可以在網絡上與程序kadmin進行通信。: kadmin.local -q "addprinc admin/admin" 或者: [root@foundation ~]# kadmin.local Authenticating as principal root/admin@MEI.COM with password. kadmin.local: addprinc admin/admin WARNING: no policy specified for admin/admin@MEI.COM; defaulting to no policy Enter password for principal "admin/admin@MEI.COM": Re-enter password for principal "admin/admin@MEI.COM": Principal "admin/admin@MEI.COM" created.

10.4.4 啓動服務並添加防火牆策略

1 [root@foundation ~]# systemctl restart krb5kdc kadmin 2 [root@foundation ~]# systemctl enable krb5kdc kadmin 3 [root@foundation ~]# firewall-cmd --permanent --add-service=kerberos 4 [root@foundation ~]# firewall-cmd --reload

10.4.5 添加principal

使用下面這種語法添加用戶的同時添加密碼(密碼會顯示在命令行輸出中): kadmin.local -q "addprinc -pw <password> <username>" 或者下面這種語法,交互式輸入密碼 kadmin.local -q "addprinc <username>" 再或者交互式添加和設置密碼(建議使用): [root@foundation ~]# kadmin.local Authenticating as principal host/admin@MEI.COM with password. kadmin.local: addprinc host/rhel7 ---中間輸出省略--- 按照此方法依次添加principal: nfs/rhel7 host/rhel6 nfs/rhel6 host/foundation nfs/foundation 後面若是有須要就按上面的方式添加principal便可 #下面爲查看KDC的principal(簡單說就是用戶名)配置: kadmin.local: listprincs K/M@MEI.COM admin/admin@MEI.COM host/foundation@MEI.COM host/rhel6@MEI.COM host/rhel7@MEI.COM kadmin/admin@MEI.COM kadmin/changepw@MEI.COM kadmin/foundation@MEI.COM kiprop/foundation@MEI.COM krbtgt/MEI.COM@MEI.COM nfs/foundation@MEI.COM nfs/rhel6@MEI.COM nfs/rhel7@MEI.COM

10.4.6 服務端驗證principal是否添加成功

1 可以使用下面命令驗證咱們添加的principal,這裏只驗證一個做爲例子。 2 [root@foundation ~]# kinit host/foundation 3 Password for host/foundation@MEI.COM: 4 [root@foundation ~]#

10.4.7 導出keytab文件而且不修改密碼

kadmin:xst -norandkey  -k /path/to/name.keytab <username> 或者: ktadd -norandkey -k /path/to/name.keytab <username> 咱們須要導出爲某臺主機添加的全部相關principal的keytab文件(即host/rhel7和nfs/rhe7) 例如: [root@foundation ~]# kadmin.local Authenticating as principal root/admin@MEI.COM with password. kadmin.local: ktadd -norandkey -k /root/rhel7.keytab host/rhel7 ---輸出信息省略--- kadmin.local: ktadd -norandkey -k /root/rhel7.keytab nfs/rhel7 ---輸出信息省略--- 注意:若是每次導出keytab文件的路徑指向同一個文件,它將自動追加,這也正是咱們須要的(讓keytab存儲多個信息)。 查看keytab文件 klist -kt /ptah/to/name.keytab [root@foundation ~]# klist -kt /root/rhel7.keytab Keytab name: FILE:/root/rhel7.keytab KVNO Timestamp Principal ---輸出信息省略---

10.4.6 客戶端配置

1 安裝軟件包: 2 [root@rhel7 ~]# yum install krb5-workstation krb5-libs 3 拷貝服務端的krb5.conf文件替換客戶端的krb5.conf文件,並保持隨時同步。 4 使用scp 等方式拷貝便可。

10.5 配置安全的NFS來測試kerberos

這裏咱們使用NFS的安全掛載來測試,安全方式使用kerb5p,NFS的搭建和客戶端配置這裏就不贅述了,而且這裏咱們使用前面搭建好的NFS環境便可。

注意,全程要保證時鐘可以正常同步

10.5.1 NFS配置服務端

1 [root@foundation ~]# mkdir /nfssecure 2 [root@foundation ~]# grep "nfssecure" /etc/exports 3 [root@foundation ~]# vim /etc/sysconfig/nfs

從kerberos導出foudation這臺主機相關的keytab文件,放到/etc/目錄下面,而且重命名爲krb5.keytab。

1 [root@foundation ~]# systemctl enable nfs-secure 2 
3 [root@foundation ~]# systemctl restart nfs-secure

10.5.2 NFS客戶端配置

從kerberos導出客戶端這臺主機的相關的keytab文件,放到/etc/目錄下面,而且重命名爲krb5.keytab。

編輯/etc/fstab文件

添加以下內容

1 foundation.mei.com:/nfssecure/   /mnt/ nfs defaults,v4.2,sec=krb5p 0 0

而後 mount -a 掛載

10.5.3 kerberos故障排除

掛載過程當中可能會遇到下面的問題

1 [root@rhel7 ~]# mount -a 2 mount.nfs: access denied by server while mounting foundation.mei.com:/nfssecure/

排除故障的思路:

一、使用kinit -kt /path/to/name.keytab <username> 確認能不能初始化

二、若是不能初始化,看服務端krb5kdc kdamin服務是否啓動,防火牆是否容許kerberos經過;

三、在防火牆和服務都沒有問題的狀況下看/var/log/krb5kdc.log 裏面的錯誤日誌信息。

四、下面是查看日誌排錯過程:

[root@foundation ~]# tail -f /var/log/krb5kdc.log #實時查看錯誤日誌信息

而後在客戶端執行mount -a

返回到foundation看剛纔的實時日誌,這裏個人錯誤以下:

Jul 09 19:05:26 foundation krb5kdc[11244](info): TGS_REQ (4 etypes {18 17 16 23}) 172.25.0.15: LOOKING_UP_SERVER: authtime 0,  host/rhel7@MEI.COM for nfs/www.mei.com@MEI.COM, Server not found in Kerberos database

顯然,客戶端在認證是它要驗證的是nfs/www.mei.com@MEI.COM,而咱們的kerberos數據庫中確實沒有,

這裏咱們直接使用kadmin.local命令添加一個這樣的用戶,而後導出它的keytab文件並追加到以前導出

的foundation相關的keytab文件中便可,注意,這裏指的追加是指導出時直接指定同一個文件,而不是控制檯的追加劇定向。

10.6 kerberos相關的一些命令介紹

服務端可使用kadmin.local直接登陸kerberos交互式進行管理,能補全,也能夠非交互式的方式管理,但不能補全。 1、生成keytab:使用xst命令或者ktadd命令 不加/path/to/name.keytab(路徑)和-k參數就存儲到/etc/krb5.keytab kadmin:xst -k /path/to/name.keytab username 或者 kadmin.local -q "ktadd -norandkey -k /path/to/name.keytab <username>"
2、查看當前的認證用戶 klist 3、刪除當前的認證的緩存 kdestroy 4、驗證用戶 kinit -kt /path/to/name.keytab username #使用keytab文件加用戶名 kinit username #直接使用用戶名驗證 5、建立principal kadmin.local -q "addprinc -pw <password> <username>" 或者: kadmin.local -q "addprinc <username>"
6、查詢keytab文件內容 klist -kt /path/to/name.keytab 7、查詢KDC用戶列表 kadmin.local: listprincs 8、刪除用戶 kadmin.local -q "delprinc -force <username>"
9、修改密碼 kpasswd 用戶名 10、klist命令 klist 命令顯示 Kerberos 憑證高速緩存或密鑰表的內容。具體能夠看man幫助 12、kadmin.local命令 具體能夠看幫助或者shell執行kadmin.local而後進入後輸入問號,可以顯示命令的用法。


最後但願你們提意見、轉發、評論和交流!!!

相關文章
相關標籤/搜索