Centos 配置 Kerberos 访问 Synology NAS

https://www.alibabacloud.com/help/zh/nas/user-guide/mount-and-use-an-smb-file-system-on-a-linux-client-as-an-ad-domain-user?spm=a2c63.p38356.0.0.6454432fHtBYXb

测试环境

域控:
windows server 2022

NAS(加域):
DSM 7.2.1 update5

Clinet:
Centos 7.9

Centos 加入域

客户端配置

安装域组件以及Kerberos认证组件:

yum install sssd realmd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-devel krb5-workstation openldap-clients policycoreutils-python-utils -y

修改客户端名称:

hostnamectl set-hostname centos9.zhugh.local

修改DNS,将DSN服务器调整为域控

vi /etc/resolv.conf

search zhugh.local
nameserver 192.168.0.20

修改Kerberos配置

vi /etc/krb5.conf

    default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
    default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
    permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5

检查域控是否可以正常连接

nslookup zhugh.local

realm discover zhugh.local

加入域

realm join -U administrator zhugh.local

检查加域是否成功

realm list

授权指定域群组可以登录Centos

realm permit -g 'Domain Users' 'Domain Admins'

授予所有用户可以登录Centos

realm permit --all

授权指定域用户可以登录Centos

realm permit user@zhugh.local

取消授权

realm deny user@zhugh.local

配置SSH允许密码登录

vi /etc/ssh/sshd_config

修改以下配置

PasswordAuthentication yes

可选配置

AD域用户添加sudo权限

vi /etc/sudoers.d/domain_admins

为指定域用户添加sudo权限。

user@zhugh.local ALL=(ALL) ALL

例如:

zhughcentos@zhugh.local ALL=(ALL) ALL

为指定用户组添加sudo权限。

%group@zhugh.local ALL=(ALL) ALL

例如:

%domain\ users@zhugh.local ALL=(ALL) ALL

NFS

NAS部分配置请参考:
https://www.zhugh.com/synology-nas-nfs-kerberos-pei-zhi-yu-shi-yong/

安装nfs客户端

yum -y install nfs-utils

切换root测试挂载

mount -t nfs -o vers=4,sec=krb5 ds3617xs7.zhugh.local:/volume1/docker /nfsmount

编辑fstab创建自动挂载任务(以下为案例):

vi /etc/fstab

ds3617xs7.zhugh.local:/volume1/docker /nfsmount nfs noauto,x-systemd.automount,vers=4,sec=krb5 0 2

由于krb5认证比较特殊,如果开机自动挂载可能会无法正常通过认证,通过以下指令调整为在首次使用时进行装载就可以避免这个问题。

noauto,x-systemd.automount

权限测试

如果用户还未被获取到NAS但是已经通过nfs访问了会导致用户权限变成nobody,此时需要在Centos重新挂载NFS才可以恢复正常:

SMB

安装smb客户端

yum install keyutils cifs-utils -y

切换使用授权的域用户进行挂载

sudo mount -t cifs -o sec=krb5,soft,iocharset=utf8,nounix,file_mode=0777,dir_mode=0777,nocase,vers=3.02,noserverino,mfsymlinks //ds3617xs7.zhugh.local/docker /smbmount

如果希望开机自动挂载,则需要切换到root用户,使用root用户获取对应用户的Kerberos凭据(域名部分需要大写):

kinit jishu3@ZHUGH.LOCAL

编辑fstab创建自动挂载任务,不区分用户(以下为案例):

vi /etc/fstab

//ds3617xs7.zhugh.local/docker /smbmount cifs noauto,x-systemd.automount,sec=krb5,soft,iocharset=utf8,nounix,file_mode=0777,dir_mode=0777,nocase,vers=3.02,noserverino,mfsymlinks 0 2

由于krb5认证比较特殊,如果开机自动挂载可能会无法正常通过认证,通过以下指令调整为在首次使用时进行装载就可以避免这个问题。

noauto,x-systemd.automount

权限测试

编辑fstab创建自动挂载任务,区分用户(以下为案例):

vi /etc/fstab

//ds3617xs7.zhugh.local/docker /smbmount cifs noauto,x-systemd.automount,sec=krb5,soft,nocase,vers=3.02,noserverino,mfsymlinks,multiuser 0 2

权限测试

其他命令

退域

realm leave -U administrator

手动获取Kerberos凭据(此处域名要大写)

kinit zhughcentos@ZHUGH.LOCAL

手动获取server Kerberos凭据

kvno cifs/ds3617xs7.zhugh.local@ZHUGH.LOCAL

清除Kerberos凭据

kdestroy

解决root用户凭据重启后丢失问题

vi .bash_profile
export KRB5CCNAME=/etc/krb5/cache

取消系统管理DNS

/etc/NetworkManager/NetworkManager.conf

在[main]添加:

dns=none

kinit自动获取小写问题

cat /etc/sssd/sssd.conf

domains = SUPHYPERV.LOCAL
[domain/SUPHYPERV.LOCAL]

Kerberos凭据有效期过短问题

kinit zhughcentos@ZHUGH.LOCAL -l 365d