Tôi muốn gắn một chia sẻ NFS4 nhưng đã bật bảo mật Kerberos.
Đây là thiết lập của tôi:
Máy chủ Debian (dns fqdn: nfsv4test.subnet.example.org)
Máy khách Debian (dns fqdn: nfsv4client.subnet.example.org)
Windows ADC, cũng hoạt động như KDC
Vương quốc của tôi là REALM.EXAMPLE.ORG
Mạng con chứa cả hai máy Debian được gọi là subnet.example.org
Không có NAT đang diễn ra.
Cả hai máy đều được cập nhật.
Vì vậy, khi tôi vẫn đang vật lộn với Kerberos, đó là cách tôi đã cố gắng đạt được mục tiêu của mình:
Chương I: Thiết lập
1- Đặt cả hai máy vào cùng một Vương quốc/Miền (Cái này đã được người khác thiết lập và hoạt động)
2- Tạo hai người dùng (người dùng, không phải máy tính!) trên mỗi máy: nfs-nfsv4client, host-nfsv4client, nfs-nfsv4test và host-nfsv4test
Sau khi tạo, tôi đã bật mã hóa AES256 Bit cho tất cả các tài khoản.
3- Đặt hiệu trưởng dịch vụ cho người dùng:
setspn -S nfs/[email protected] nfs-nfsv4test
Tôi đã làm điều này cho cả 4 người dùng/người đứng đầu.
3- Tạo keytab trên Windows KDC:
ktpass -princ host/[email protected] +rndPass -mapuser [email protected] -pType KRB5_NT_PRINCIPAL -out c:\temp\host-nfsv4test.keytab -crypto AES256- SHA1
Vì vậy, sau đó tôi đã có 4 keytabs.
4- Hợp nhất các tab bàn phím trên máy chủ (và máy khách):
ktutil
read_kt host-nfsv4test.keytab
read_kt nfs-nfsv4test.keytab
write_kt /etc/krb5.keytab
Tệp có 640 quyền.
5- Đã xuất các thư mục trên máy chủ; điều này đã hoạt động mà không cần kerberos. Khi bật Kerberos, tệp xuất sẽ trông như thế này:
/srv/kerbnfs4 gss/krb5(rw,sync,fsid=0,crossmnt,no_subtree_check,insecure)
/srv/kerbnfs4/homes gss/krb5(rw,sync,no_subtree_check,insecure)
Chạy exportfs -rav hoạt động:
root@nfsv4test:~# exportfs -rav
xuất gss/krb5:/srv/kerbnfs4/homes
xuất gss/krb5:/srv/kerbnfs4
...và trên máy khách, tôi có thể xem các giá treo trên máy chủ:
root@nfsv4client:~# showmount -e nfsv4test.subnet.example.org
Xuất danh sách cho nfsv4test.subnet.example.org:
/srv/kerbnfs4/homes gss/krb5
/srv/kerbnfs4 gss/krb5
6a- krb5.conf có cấu hình mặc định cho môi trường mà nó đã được thiết lập và tôi không thay đổi bất cứ điều gì:
[libdefaults]
ticket_lifetime = 24000
default_realm = REALM.EXAMPLE.ORG
default_tgs_entypes = rc4-hmac des-cbc-md5
default_tkt__enctypes = rc4-hmac des-cbc-md5
được phép_enctypes = rc4-hmac des-cbc-md5
dns_lookup_realm = đúng
dns_lookup_kdc = đúng
dns_fallback = có
# Các biến krb5.conf sau chỉ dành cho MIT Kerberos.
kdc_timesync = 1
ccache_type = 4
có thể chuyển tiếp = đúng
có thể thay thế = đúng
# Các tham số libdefaults sau chỉ dành cho Heimdal Kerberos.
fcc-mit-ticketflags = true
[cõi]
REALM.EXAMPLE.ORG = {
kdc = kdc.realm.example.org
default_domain = kds.realm.example.org
}
[miền_cõi]
.realm.example.org = KDC.REALM.EXAMPLE.ORG
lĩnh vực.example.org = KDC.REALM.EXAMPLE.ORG
[ứng dụng mặc định]
chiều = {
gỡ lỗi = sai
ticket_lifetime = 36000
refresh_lifetime = 36000
có thể chuyển tiếp = đúng
krb4_convert = sai
}
6- Sau đó, tôi thiết lập sssd.conf của mình như thế này, nhưng tôi không thực sự hiểu chuyện gì đang xảy ra ở đây:
[sssd]
miền = lĩnh vực.example.org
dịch vụ = nss, pam
config_file_version = 2
[nss]
filter_groups = gốc
filter_users = root
default_shell = /bin/bash
[pam]
kết nối lại_retries = 3
[tên miền/realm.example.org]
krb5_validate = Đúng
krb5_realm = REALM.EXAMPLE.ORG
tên miền phụ_homedir = %o
default_shell = /bin/bash
cache_credentials = Đúng
id_provider = quảng cáo
access_provider = quảng cáo
chpass_provider = quảng cáo
auth_provide = quảng cáo
ldap_schema = quảng cáo
ad_server = kdc.realm.example.org
ad_hostname = nfsv4test.realm.example.org
ad_domain = lĩnh vực.example.org
ad_gpo_access_control = dễ dãi
use_fully_qualified_names = Sai
ad_enable_gc = Sai
7- idmap.conf trên cả hai máy:
[Tổng quan]
Độ dài = 0
Pipefs-Directory = /run/rpc_pipefs
Miền = lĩnh vực.example.org
[Lập bản đồ]
Không ai sử dụng = không ai
Không ai-Nhóm = nogroup
8- Và /etc/default/nfs-common trên cả hai máy:
NEED_STATD=có
NEED_IDMAPD=có
NEED_GSSD=có
9- Cuối cùng nhưng không kém phần quan trọng, nfs-kernel-server trên máy chủ:
RPCNFSDCOUNT=8
RPCNFSDPRIORITY=0
RPCMOUNTDOPTS="--manage-gids --no-nfs-version 3"
NEED_SVCGSSD="có"
RPCSVCGSSDOPTS=""
10- Sau đó, sau khi khởi động lại cả máy chủ và máy khách, tôi đã cố gắng gắn kết chia sẻ (với tư cách là người dùng root):
mount -t nfs4 -o sec=krb5 nfsv4test.subnet.example.org:/srv/kerbnfs4/homes /media/kerbhomes -vvvv
Nhưng đáng buồn thay, gắn kết không hoạt động. Tôi không nhận được quyền truy cập. Trong lần thử đầu tiên, sẽ mất khá nhiều thời gian và đây là kết quả:
root@nfsv4client:~# mount -t nfs4 -o sec=krb5 nfsv4test.subnet.example.org:/srv/kerbnfs4/homes /media/kerbhomes
mount.nfs4: thời gian chờ được đặt cho Thứ Tư ngày 15 tháng 12 15:38:09 năm 2021
mount.nfs4: thử các tùy chọn dựa trên văn bản 'sec=krb5,vers=4.2,addr=*********,clientaddr=*******'
mount.nfs4: mount(2): Quyền bị từ chối
mount.nfs4: truy cập bị máy chủ từ chối trong khi cài đặt nfsv4test.subnet.example.org:/srv/kerbnfs4/homes
Chương II: Gỡ lỗi
Để có nhật ký chi tiết hơn, tôi đã chạy
rpcdebug -m nfsd -s lockd
cuộc gọi rpcdebug -m rpc -s
trên máy chủ nhưng tôi thực sự không nhận được nhiều nhật ký như vậy.
Tuy nhiên, khi cố gắng gắn kết, nhật ký hệ thống cho tôi biết rằng:
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.771800] svc: máy chủ 00000000c1c7fb25, pool 0, vận chuyển 00000000c5641df0, inuse=2
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.771808] svc: svc_authenticate (0)
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.771811] svc: bộ điều phối cuộc gọi
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.771840] svc: máy chủ 00000000c1c7fb25, pool 0, vận chuyển 00000000c5641df0, inuse=2
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.773222] svc: máy chủ 00000000c1c7fb25, nhóm 0, vận chuyển 00000000fc9bd395, inuse=2
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.774697] svc: máy chủ 00000000c1c7fb25, nhóm 0, vận chuyển 00000000fc9bd395, inuse=2
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.774705] svc: svc_authenticate (6)
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.774711] RPC: Muốn cập nhật, refage=120, age=0
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.774712] svc: svc_ process close
[...7x cùng một tin nhắn]
Ngày 6 tháng 12 11:20:02 nhân máy chủ kiểm tra: [ 2088.791514] svc: máy chủ 00000000c1c7fb25, pool 0, vận chuyển 00000000c5641df0, inuse=2
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.791519] svc: svc_authenticate (1)
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.791521] svc: xác thực không thành công (1)
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.791538] svc: máy chủ 00000000c1c7fb25, pool 0, vận chuyển 00000000c5641df0, inuse=2
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.791913] svc: máy chủ 00000000c1c7fb25, nhóm 0, vận chuyển 00000000c5641df0, inuse=2
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.791918] svc: svc_authenticate (1)
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.791920] svc: xác thực không thành công (1)
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.791940] svc: máy chủ 00000000c1c7fb25, pool 0, vận chuyển 00000000c5641df0, inuse=2
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.792292] svc: máy chủ 00000000c1c7fb25, pool 0, vận chuyển 00000000c5641df0, inuse=2
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.792296] svc: svc_authenticate (1)
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.792298] svc: xác thực không thành công (1)
Ngày 6 tháng 12 11:20:02 nhân máy chủ thử nghiệm: [ 2088.792316] svc: máy chủ 00000000c1c7fb25, nhóm 0, vận chuyển 00000000c5641df0, inuse=2
Vì điều này không thực sự giúp tôi chút nào, nên tôi đã ghi lại lưu lượng truy cập bằng tcpdump, điều này mang lại cho tôi điều này:
11:12:02.856200 IP ip-client.740 > ip-server.nfs: Flags [S], seq 763536441, win 65160, tùy chọn [mss 1460,sackOK,TS val 2364952579 ecr 2826266858,nop,wscale 7], độ dài 0
11:12:02.856295 IP ip-server.nfs > ip-client.740: Flags [S.], seq 2444950221, ack 763536442, win 65160, tùy chọn [mss 1460,sackOK,TS val 2826266858 ecr 2364952579,nop,wscale 7 ], chiều dài 0
11:12:02.856304 IP ip-client.740 > ip-server.nfs: Flags [.], ack 1, win 510, tùy chọn [nop,nop,TS val 2364952579 ecr 2826266858], độ dài 0
11:12:02.856324 IP ip-client.740 > ip-server.nfs: Flags [P.], seq 1:245, ack 1, win 510, tùy chọn [nop,nop,TS val 2364952579 ecr 2826266858], độ dài 244 : Yêu cầu NFS xid 4035461122 240 getattr fh 0,2/42
11:12:02.856408 IP ip-server.nfs > ip-client.740: Flags [.], ack 245, win 508, tùy chọn [nop,nop,TS val 2826266858 ecr 2364952579], độ dài 0
11:12:02.856421 IP ip-server.nfs > ip-client.740: Flags [P.], seq 1:25, ack 245, win 508, tùy chọn [nop,nop,TS val 2826266858 ecr 2364952579], độ dài 24 : NFS reply xid 4035461122 reply ERR 20: Auth Bogus Credentials (con dấu bị hỏng)
11:12:02.856425 IP ip-client.740 > ip-server.nfs: Flags [.], ack 25, win 510, tùy chọn [nop,nop,TS val 2364952579 ecr 2826266858], độ dài 0
11:12:02.867582 IP ip-client.740 > ip-server.nfs: Flags [F.], seq 245, ack 25, win 510, tùy chọn [nop,nop,TS val 2364952590 ecr 2826266858], độ dài 0
11:12:02.867751 IP ip-server.nfs > ip-client.740: Flags [F.], seq 25, ack 246, win 508, tùy chọn [nop,nop,TS val 2826266869 ecr 2364952590], độ dài 0
11:12:02.867759 IP ip-client.740 > ip-server.nfs: Flags [.], ack 26, win 510, tùy chọn [nop,nop,TS val 2364952590 ecr 2826266869], độ dài 0
(Tôi đã xử lý lại các địa chỉ IP thực)
Vì vậy, phần thú vị ở đây là Auth Bogus (Seal bị phá vỡ)? Thực sự có điều gì đó tồi tệ hay đó chỉ là lỗi xuất hiện khi có gì đó không ổn?
Tôi không thể tìm thấy bất cứ điều gì hữu ích về lỗi này trên web.
Vì vậy, để quay lại chính Kerberos, keytab có vẻ ổn:
root@nfsv4client:~# klist -k -e
Tên tab khóa: TỆP:/etc/krb5.keytab
Hiệu trưởng KNO
---- ------------------------------------------ ----------------------------
7 máy chủ/[email protected]
6 nfs/[email protected]
Khi thử kiểm tra tệp keytab, nó có vẻ hoạt động:
root@nfsv4client:~# kinit -k nfs/nfsv4client.realm.example.org
root@nfsv4client:~#
Nhưng trên trang này người ta nói rằng keytab nên được kiểm tra với
kinit -k `tên máy chủ -s`$
mà giải quyết
kinit -k nfsv4client
không hoạt động vì không tìm thấy khóa nào [email protected]
.
Vì vậy, là keytab sai hoặc phương pháp kiểm tra?
Một nhật ký khác tôi tìm thấy trên máy khách đang lắp (trong tin nhắn):
nhân nfsv4client: [ 4355.170940] svc: khởi tạo nhóm 0 cho gọi lại NFSv4
nhân nfsv4client: [ 4355.170940] nfs_callback_create_svc: đã tạo dịch vụ
hạt nhân nfsv4client: [ 4355.170941] NFS: tạo dữ liệu gọi lại trên mỗi mạng; lưới=f0000098
hạt nhân nfsv4client: [ 4355.170942] svc: tạo vận chuyển tcp-bc[0]
hạt nhân nfsv4client: [ 4355.171032] nfs_callback_up: dịch vụ đã bắt đầu
nhân nfsv4client: [ 4355.171033] svc: svc_destroy(Gọi lại NFSv4, 2)
hạt nhân nfsv4client: [ 4355.171034] NFS: nfs4_Discover_server_trunking: thử nghiệm 'nfsv4test.subnet.example.org'
nhân nfsv4client: [ 4355.171040] RPC: khởi tạo tác vụ mới, procpid 9204
hạt nhân nfsv4client: [ 4355.171041] RPC: nhiệm vụ được phân bổ 000000006bdb9e01
nhân nfsv4client: [ 4355.171042] RPC: 110 __rpc_execute flags=0x5280
hạt nhân nfsv4client: [ 4355.171044] RPC: 110 call_start nfs4 proc EXCHANGE_ID (đồng bộ hóa)
hạt nhân nfsv4client: [ 4355.171045] RPC: 110 call_reserve (trạng thái 0)
hạt nhân nfsv4client: [ 4355.171046] RPC: Wake_up_first(000000005af696f3 "xprt_sending")
hạt nhân nfsv4client: [ 4355.171047] RPC: 110 req dành riêng 00000000d1a7d1a4 xid 04f914c3
hạt nhân nfsv4client: [ 4355.171047] RPC: 110 call_reserveresult (trạng thái 0)
hạt nhân nfsv4client: [ 4355.171048] RPC: 110 call_refresh (trạng thái 0)
nfsv4client kernel: [ 4355.171049] RPC: gss_create_cred cho uid 0, hương vị 390004
hạt nhân nfsv4client: [ 4355.171050] RPC: gss_create_upcall cho uid 0
hạt nhân nfsv4client: [ 4355.171052] RPC: __gss_find_upcall không tìm thấy gì
nhân nfsv4client: [ 4355.201976] RPC: __gss_find_upcall đã tìm thấy msg 000000000e5abcbc
hạt nhân nfsv4client: [ 4355.201978] RPC: gss_fill_context trả về lỗi 13
nhân nfsv4client: [ 4355.201982] RPC: gss_pipe_downcall trả về 16
hạt nhân nfsv4client: [ 4355.201986] RPC: gss_create_upcall cho kết quả uid 0 -13
hạt nhân nfsv4client: [ 4355.201987] RPC: 110 call_refreshresult (trạng thái -13)
hạt nhân nfsv4client: [ 4355.201988] RPC: 110 call_refreshresult: làm mới tín dụng không thành công với lỗi -13
hạt nhân nfsv4client: [ 4355.201989] RPC: 110 trả về 0, trạng thái -13
hạt nhân nfsv4client: [ 4355.201990] RPC: 110 tác vụ phát hành
Có rất nhiều thứ, nhưng tôi không thể tìm ra ý nghĩa của lỗi -13, ngoại trừ việc nó bị Từ chối cấp phép.
Chương III: Câu hỏi
Các hiệu trưởng có trong keytab. Vì vậy, khi máy khách hỏi máy chủ về phần chia sẻ NFS và cố gắng truy cập nó, thì cả hai nên có các khóa để tương tác với nhau.
Nhưng vì một số lý do nó không hoạt động.
Có thể là do việc gán hiệu trưởng cho tài khoản người dùng?
Làm thế nào tôi có thể làm cho nó hoạt động? Làm cách nào để tôi nhận được thông tin tốt hơn khi gỡ lỗi?
Xin lỗi cho bức tường của Trung Quốc của văn bản.
tái bút
Tôi chủ yếu theo dõi hướng dẫn này.
Nó dường như là một sự kết hợp hoàn hảo cho môi trường của tôi..