CentOS 7 設定Kerberos 認證的NFS共享
Kerberos 認證的NFS共享
RHCE 考試其中有一道題是需要配置kerberos 認證的nfs 檔案共享,設定nfs共享比較簡單,但是keberos伺服器的設定雖然不在考點之內,確是需要完成這個實驗搭建的重要一環,其實通過幾天的資料查詢和試驗,我發現kerberos的搭建過程並不是很複雜,但是也遇到了一些讓人抓耳撓腮的bug, 所以這裡將整個過程跟大家分享一下,本文使用的OS版本為 RHEL 7.0, 有問題的地方也請批評指正。
試驗的環境共有三臺虛擬機器構成,其名稱和IP 配置如下:
- Kerberos 伺服器:
hostname : remote.exmaple.com
IP: 192.168.57.2
- NFS 伺服器:
hostname :server.exmaple.com
IP: 192.168.57.3
- 客戶端:
hostname : client.exmaple.com
IP: 192.168.57.204
Kerberos 伺服器端設定
1.安裝軟體
yum -y install krb5-server krb5-workstation
2.編輯 /etc/krb5.conf 檔案, 取消註釋所有行,並替換kdc, admin server的設定,這裡用default realm EXAMPLE.COM , 最後配置檔案如下:
[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 = falsei
default_realm = EXAMPLE.COM
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
EXAMPLE.COM = {
kdc = remote.example.com
admin_server = remote.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
3. 修改 /etc/hosts 檔案
192.168.57.3 server.example.com remote
192.168.57.2 remote.example.com server
192.168.57.204 client.example.com client
4.修改 /var/kerberos/krb5kdc/kdc.conf 檔案
由於我們使用default realm 所以無需修改此檔案,若用另外的realm,需替換此檔案中的EXAMPLE.COM
5. 執行命令以下命令建立資料庫,並按照提示設定資料庫密碼
[[email protected] ~]# kdb5_util create -s
Loading random data
Initializing database '/var/kerberos/krb5kdc/principal' for realm 'EXAMPLE.COM',
master key name 'K/[email protected]'
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter KDC database master key:
6. 啟動kerberos
systemctl start kerberos kadmin
systemctl enable kerberos kadmin
7. 允許防火牆
firewall-cmd --permanent --add-service=kerberos
firewall-cmd --reload
8. 執行kadmin.local 來管理kdc 並新增nfs server 和 client的 主機資訊
[[email protected] ~]# kadmin.local
Authenticating as principal root/[email protected] with password.
kadmin.local: addprinc -randkey host/server.example.com
WARNING: no policy specified for host/[email protected]; defaulting to no policy
Principal "host/[email protected]" created.
kadmin.local: addprinc -randkey host/client.example.com
WARNING: no policy specified for host/[email protected]; defaulting to no policy
Principal "host/[email protected]" created.
9. 新增nfs server 和 client的 nfs 服務主機和客戶端
kadmin.local: addprinc -randkey nfs/server.example.com
WARNING: no policy specified for nfs/[email protected]; defaulting to no policy
Principal "nfs/[email protected]" created.
kadmin.local: addprinc -randkey nfs/client.example.com
WARNING: no policy specified for nfs/[email protected]; defaulting to no policy
Principal "nfs/[email protected]" created.
10. 執行 listprincs 來檢查kdc設定
kadmin.local: listprincs
K/[email protected]
host/[email protected]
host/[email protected]
kadmin/[email protected]
kadmin/[email protected]
kadmin/[email protected]
krbtgt/[email protected]
nfs/[email protected]
nfs/[email protected]
[[email protected] ~]#
11. 為伺服器和客戶端生成各自的祕鑰檔案,並儲存在/tmp資料夾下, quit退出 kadmin
kadmin.local: ktadd -k /tmp/server.keytab nfs/server.example.com
[以下省略輸出]
kadmin.local: ktadd -k /tmp/client.keytab nfs/client.example.com
[以下省略輸出]
kadmin.local: quit
12. 配置時間伺服器
為了保證kerberos 認證能夠進行,需要在三臺裝置統一時間, 現在設定kdc 為ntp server, 另外兩臺同步kdc的時間。
- 安裝npt服務
yum -y install ntp
配置 npt服務 /etc/ntp.conf
第15行新增:restrict 192.168.57.0 mask 255.255.255.0
21 行到26行,設定伺服器為自己:
#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 127.127.1.0 fudge 127.127.1.0 stratum 11
啟動ntp並開機啟動
systemctl restart ntpd systemctl enable ntpd
NFS 伺服器端設定
1. 安裝軟體
yum -y install nfs-utils krb5-workstation pam_krb5
2.編輯/etc/hosts檔案,新增三臺裝置的dns資訊
192.168.57.3 server.example.com remote
192.168.57.2 remote.example.com server
192.168.57.204 client.example.com client
3. 從kdc伺服器拷貝配置檔案和keytab祕鑰檔案並儲存在/etc目錄下
scp remote:/etc/krb5.conf /etc/krb5.conf
scp remote:/tmp/server.keytab /etc/krb5.keytab
4.設立共享目錄 /nfs1
mkdir /nfs1
5. 編輯/etc/exports 檔案如下
/nfs1 *.example.com(ro,sec=krb5p)
6. 修改 /etc/sysconfig/nfs, 第13行的位置以下條目新增 -V 4.2
RPCNFSDARGS="-V 4.2"
7. 開啟nfs,nfs-secure並設為開機啟動
systemctl restart nfs nfs-secure
systemctl enable nfs nfs-secure
8. 設定防火牆
firewall-cmd --permanent --add-service=kerberos
firewall-cmd --reload
9. 設定時間同步
安裝chrony
yun -y install chrony
配置 /etc/chrony.conf
第3行到第7行 修改設定kdc為ntp伺服器#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 192.168.57.2 iburst
啟動/開機啟動chronyd
systemctl restart chronyd
檢視同步狀態, 顯示 NTP synchronized: yes 表示同步成功
時間同步肯能需要幾分鐘的時間,這裡可能要等待以下。timedatectl status
NFS 客戶端設定
1. 安裝軟體
yum -y install nfs-utils krb5-workstation pam_krb5
2.編輯/etc/hosts檔案,新增三臺裝置的dns資訊
192.168.57.3 server.example.com remote
192.168.57.2 remote.example.com server
192.168.57.204 client.example.com client
3. 從kdc伺服器拷貝配置檔案和keytab祕鑰檔案並儲存在/etc目錄下
scp remote:/etc/krb5.conf /etc/krb5.conf
scp remote:/tmp/client.keytab /etc/krb5.keytab
4. 建立掛載點/mnt/nfs1
mkdir /mnt/nfs1
5.編輯/etc/fstab 檔案實現自動掛載
remote:/nfs1 /mnt/nfs1 nfs defaults,v4.2,sec=krb5p 0 0
6.啟動 nfs-secure ,這裡注意nfs-server這個服務不要啟動,否則可能掛載不了
systemctl restart nfs-secure
mount -a
常見問題及注意事項
1.注意事項
- 防火牆的新增,建議三臺虛擬機器firewall新增kerberos, nfs服務
- NFS server 端啟用 nfs-secure 和nfs-server , 客戶端只啟用 nfs-secure
注意 /etc/hosts 檔案的設定,三臺虛擬機器都需要設定且保障長名字在前面,例如 remote.example.com 在remote的前面
192.168.57.2 remoete.example.com remote
檢視日誌資訊:
kdc 日誌: /var/log/krb5kdc.log
nfs server和client的日誌顯示在: /var/log/messages
2.常見問題
nfs client 報錯: No such file or directory:
mount.nfs: mounting remote:/nfs1 failed, reason given by server: No such file or directo
ry
Debug方法
- 確認/nfs1共享目錄確實存在
修改nfs server的共享設定(/etc/exports)為如下
/nfs1 *(ro,sync,sec=krb5p)
重新mount 客戶端,如果問題解決,可能是域名解析錯誤或此處填寫錯誤。
nfs client 報錯: access denied:
mount.nfs: access denied by server while mounting remote:/nfs1
Debug方法
- 檢視 NFS server端日誌,若顯示:
Aug 24 07:54:32 remote rpc.svcgssd[5833]: ERROR: GSS-API: error in handle_nullreq:
gss_accept_sec_context(): GSS_S_FAILURE (Unspecified GSS failure.
Minor code may provide more information) - Ticket not yet valid
或者
Aug 24 12:43:37 remote rpc.svcgssd[5833]: ERROR: GSS-API: error in handle_nullreq:
gss_accept_sec_context(): GSS_S_FAILURE (Unspecified GSS failure.
Minor code may provide more information) - Key table file '/etc/krb5.keytab' not found
是由於NFS Server端的keytab檔案有問題,請根據前文介紹重新拷貝keytab檔案
nfs client 報錯: access denied 且nfs server端無報錯:
mount.nfs: access denied by server while mounting remote:/nfs1
Debug方法
檢視kdc伺服器的日誌 /var/log/krb5kdc.log
正常情況應有類似以下輸出:Aug 25 00:23:45 remote.example.com krb5kdc[3464](info): TGS_REQ (6 etypes {18 17 16 23 25 26}) 192.168.57.204: ISSUE: authtime 1535127825, etypes {rep=18 tkt=18 ses=18}, nfs/[email protected] for nfs/[email protected]
nfs client 報錯: access denied 且nfs server端無報錯並且kdc日誌顯示正常:
mount.nfs: access denied by server while mounting remote:/nfs1
這個Bug也是困擾了我三天的bug,確實很難Debug,嘗試了各種方法仍找不到原因,因為原因出現在一個很容易被忽略的細節.
Debug方法重新命名NFS server端的keytab檔案
mv /etc/krb5.keytab /etc/krb5.keytab.bak
這一步是強迫NFS server報錯,無keytab檔案,如果此時仍無報錯(我遇到的情況),(最後才意識到)由於這個報錯是由rpc.svcgssd 這個服務產生的,如上文所示。如果沒有報錯那原因是因為rpc.svcgssd 沒有啟動, 至於為什麼沒有啟動我也沒有弄清楚。進一步確認的話可以執行命令:ps -aux | grep rpc.svcgssd
輸出應該有以下一行:
root 5833 0.0 0.4 46752 4676 ? Ss Aug24 0:00 /usr/sbin/rpc.svcgssd
如果沒有執行以下命令開啟:
/usr/sbin/rpc.svcgssd
nfs客戶端重新 mount, 這下應該可以從nfs server看到久違的報錯資訊了。
相關推薦
CentOS 7 設定Kerberos 認證的NFS共享
Kerberos 認證的NFS共享 RHCE 考試其中有一道題是需要配置kerberos 認證的nfs 檔案共享,設定nfs共享比較簡單,但是keberos伺服器的設定雖然不在考點之內,確是需要完成這個實驗搭建的重要一環,其實通過幾天的資料查詢和試驗,我發現k
Centos 7設定默認運行級別
centos 7設定默認運行級別Centos 7設定默認運行級別Centos7 中不再是使用 /etc/inittab 來配置運行級別,而是使用 systemd 來進行管理[[email protected]/* */ ~]# ll /lib/systemd/system/runlevel3.ta
centos 7設定limit,不生效問題
1:記錄未修改之前的ulimit值 [[email protected] ~]# ulimit -a 2:修改配置檔案 vim /etc/security/limits.conf 在後面新增 * &
CentOS 7設定iptables
CentOS 7預設使用的是firewall作為防火牆,使用iptables必須重新設定一下 1.接關閉防火牆systemctl stop firewalld.service #停止firewall sy
CentOS 7 設定 svn 開機啟動
出處 安裝好 svn 服務後,預設是沒有隨系統啟動自動啟動的, CentOS 7 的 /etc/rc.d/rc.local 是沒有執行許可權的, 系統建議建立 systemd service 啟動服務 於是檢視 systemd 裡 svn 的配置檔案 /lib/systemd/system/
CentOS 7設定靜態ip
1) Linux網路配置 # vi /etc/sysconfig/network-scripts/ifcfg-eno16777736 TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=
Centos 7 設定ip地址
(一)動態獲取ip:前提是路由器已經開啟了DHCP (1)修改網絡卡配置檔案/etc/sysconfig/network-scripts/ifcfg-ens33 (最後一個為網絡卡名稱): BOOTPROTO=dhcp ONBOOT=yes (2)重啟網路服務 systemctl re
CentOS 7設定開機CLI模式
systemctl get-default //檢視當前模式,預設是5 cat /etc/inittab //檢視3、5模式對應的名稱 multi-user.target: analogous to runlevel 3 graphical.target
Centos 7 squid 使用者認證
一、安裝安裝過程十分簡便,只需要安裝一下squid,一條命令搞定yum install squidrpm -qa | grep squidsquid-3.5.20-2.el7_3.2.x86_64 二、配置修改squid的配置檔案 /etc/squid/squid.conf主要就是配置一下埠,快取,日誌和訪
Centos 7 設定 SFTP
近期要給伺服器設定一個SFTP使用者,可以上傳刪除修改的SFTP,但是禁止該使用者SSH登入。這裡記錄下來 先升級 yum update fox.風 建立使用者組 sftp 使用者組名為sftp groupadd sftp 建立
CentOS 7設定ssh服務自動啟動
實驗環境:CentOS7 Minimal安裝,安裝過程及軟體包見http://blog.csdn.net/capricorn90/article/details/52556174 SSH的英文全稱是Secure SHell。通過使用SSH,你可以把所有傳輸的資
Centos 7 設定系統預設執行級別
1. 執行級別表如下:init級別systemctl target0shutdown.target1emergency.target2rescure.target3multi-user.target4無5graphical.target6無2. 設定預設執行級別,例如:
CentOS 7設定開機啟動服務,新增自定義系統服務
CentOS 7設定開機啟動服務 建立服務檔案 儲存目錄 設定開機自啟動 其他命令 1.建立服務檔案 檔案路徑 vim /usr/lib/systemd/system/nginx.service 服務檔案內容 1.nginx.servi
linux(centos) 7 設定執行模式
發現熟悉的/etc/inittab中沒有了修改預設執行級別,開啟inittab如下 [root@localhost init.d]# vi /etc/inittab # inittab is no longer used when using systemd. #
[CentOS 7系列]使用密鑰認證機制遠程登錄
private 用戶名 輸入密碼 服務器 操作系統 當服務器操作系統沒有配置遠程密鑰認證時,默認需要手動輸入密碼口令。以下用putty為例:1、使用putty遠程ssh登錄192.168.137.100這臺主機2、第一次登錄選擇“是(Y)”,信任該主機,緩存該主機登錄信息。3、登錄時,要輸
CentOS 7中一些參數的設定
linux1、設置時區timedatectl list-timezones #列出所有時區 timedatectl set-local-rtc 1 #將硬件時鐘調整為與本地時鐘一致,0為設置為UTC時間 timedatectl set-timezone Asia/Shan
CentOS 7 使用Google-Authenticator進行多因素認證
linux centos mfa 多因素認證什麽是多因素認證(Multi-Factor Authentication, MFA)? MFA,顧名思義使用多種獨立的驗證機制,對用戶進行身份驗證,只有全部通過時才能授權訪問。MFA的目的是建立一個多層次的防禦,使未經授權的人訪問計算機系統或網絡更加困難。驗證機制可
CentOS 7 使用PuTTY、Xshell遠程連接和密鑰認證登錄
linux 教程 1.9 使用PuTTY遠程連接Linux下載putty客戶端,可以直接訪問https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html這個鏈接進行下載選擇網頁的 Package files 下面的 MSI(‘Window
VirtualBox 下 CentOS 7.2 設置共享文件夾
服務器 centos7 kernel jdk emctl sha ons vbox 軟件 安裝virtualBox工具包 virtualBox有如下功能: 共享文件 共享剪貼板內容 無縫窗口 – 實現虛擬機和主機間的鼠標平滑移動 自動登錄 目前要安裝一些軟件,主要需要用
CentOS 7.3 NFS服務器的安裝與配置
nfs nfs服務器 nfs配置 nfs安裝 nfs server 一、NFS服務簡介? ? ? ?NFS 是Network File System的縮寫,即網絡文件系統。一種使用於分散式文件系統的協定,由Sun公司開發,於1984年向外公布。功能是通過網絡讓不同的機器、不同的操作系統能夠