1,导出CA证书
打开证书颁发机构,右键选择域证书,点击所有任务,单击备份CA,下一步
勾选私钥和CA证书和证书数据库和证书数据库日志,选择保存位置,下一步
密码选项留空,设置密码也可以,但是必须要记住,后面要用到。下一步,单击完成备份。
2,安装SSSD和LDAP组件
- yum install -y sssd nss-pam-ldapd sssd-ad sssd-tools
复制代码
3,生成所需文件和目录,注意域名更换为自己的
- authconfig --enablesssd --enablesssdauth --enableldap --enableldapauth --disableforcelegacy --enableldaptls --disablekrb5 --ldapserver ldap://ad.lzuvdi.local --ldapbasedn "dc=lzuvdi,dc=local" --enablemkhomedir --update
复制代码
然后
4,把第1步备份的CA证书上传到/etc/openldap/cacerts
5,转换证书为LDAP可识别的证书格式
- openssl pkcs12 -in lzuvdi-AD-CA.p12 -out ad.pem
复制代码
第一次提示输入备份时设置的密码,我备份CA时密码为空,则这里也留空。第二次提示设置一个PEM证书的密码,输入即可。
B,配置LDAPS
1,打开ldp.exe
2,点击左上角连接,单击连接,端口输入636,勾选SSL,单击确定。
此时左上角的链接已变为ldaps
3,点击左上角连接,单击绑定,勾选作为当前已登录用户绑定,单击确定。
4,点击浏览-搜索,在DN一栏输入域控DC和OU信息,进行查询,如我建立的VDI_Users
5,正常查询到我建立的65个用户
此时,说明LDAPS正常工作
C,配置SSSD
1,修改sssd配置文件参数,注意替换相关参数
- cat > /etc/sssd/sssd.conf << "EOF"
- [domain/lzuvdi.local]
- ldap_schema = ad
- cache_credentials = True
- ldap_search_base = dc=lzuvdi,dc=local
- id_provider = ldap
- auth_provider = ldap
- chpass_provider = ldap
- sudo_provider = ldap
- ldap_uri = ldap://ad.lzuvdi.local
- ldap_tls_reqcert = allow
- ldap_id_use_start_tls = True
- ldap_tls_cacertdir = /etc/openldap/cacerts
- #general
- debug_level = 7
- enumerate = false
- cache_credentials = true
- min_id = 7
- #ldap
- ldap_default_bind_dn = cn=administrator,cn=Users,dc=lzuvdi,dc=local
- ldap_user_search_base = ou=VDI_Users,dc=lzuvdi,dc=local
- ldap_sudo_search_base = OU=sudorules,DC=lzuvdi,DC=local
- #ldap provider
- full_name_format = %1$s
- fallback_homedir = /home/%u
- default_shell = /bin/bash
- ldap_id_mapping = True
- [sssd]
- services = nss,pam,sudo
- config_file_version = 2
- domains = lzuvdi.local
- [nss]
- [pam]
- [sudo]
- [autofs]
- [ssh]
- [pac]
- [ifp]
- [secrets]
- [session_recording]
- EOF
复制代码
继续输入
- sss_obfuscate --domain lzuvdi.local
复制代码
这里是为了加密sssd配置文件中用来绑定的和域控制器通信的管理员的密码,不让密码明文保存。我的配置参数中绑定的是超级管理员,则我在这里输入域控管理员administrator的密码,这一步是为了让域控的密码加密保存。
重启sssd
2,测试ldaps
- id user01
- id user10
- id user60
复制代码
都可以正常查询
3,测试创建/home目录
自动创建home目录正常,并且默认shell 正常
D,配置sudo权限
配置之前先测试下sudo权限,提示用户user30不允许执行sudo命令
1,修改/etc/nsswitch.conf
- cat >> /etc/nsswitch.conf << "EOF"
- sudoers: files sss
- EOF
复制代码
2,进入/usr/share/doc/sudo-1.8.23文件夹,不同的版本,sudo后面的版本不同。
复制schema.ActiveDirectory文件到域控制器。
3,在域控执行下面的命令,注意替换关键参数
- ldifde -i -f schema.ActiveDirectory -c dc=x dc=lzuvdi,dc=local
复制代码
4,打开ADSI编辑器
5,右键单击ADSI编辑器,点击连接到,名称自定义,链接点键入名称即可,按如下图填写,dc参数自行更换,确定
6,右键单击顶级容器,即DC=lzuvdi,DC=local,选择新建-对象,
7,选择类为organizationalUnit,即我们常用的OU(组织单位),下一步
8,输入这个组织单位的值,即名称,我这里输入sudorules,名称自定义,要记住
9,右键单击新建的sudorules,选择新建-对象
10,选择类为sudoRole,输入值为sudoers,下一步,直至完成。
至此,建立一个OU,值为sudorules,建立一个cn,值为sudoers。那么调用这个容器的参数值即为:cn=sudoers,ou=sudorules,dc=lzuvdi,dc=local
11,为组和用户添加权限
有两种情况。一种是某个组下所有用户使用所有权限,或者部分权限,另一种是特定的用户具有所有权限或者部分权限,先以第一种情况为例。
根据man sudoers.ldap查看手册后,得知,让某个组下的所有成员具有所有的命令权限参数如下
- dn: cn=%wheel,ou=SUDOers,dc=my-domain,dc=com
- objectClass: top
- objectClass: sudoRole
- cn: %wheel
- sudoUser: %wheel
- sudoHost: ALL
- sudoCommand: ALL
复制代码
上述参数里面的cn是域控制器下的组或者用户,不是第10步创建的cn,%wheel代表wheel这个组下所有成员。此时来套用一下,要让我建立的VDI_Group这个组下的所有用户具有所有的sudo权限除useradd外,参数如下
- dn: cn=%VDI_Group,ou=sudorules,dc=lzuvdi,dc=local
- objectClass: top
- objectClass: sudoRole
- cn: %VDI_Group
- sudoUser: %VDI_Group
- sudoHost: ALL
- sudoCommand: ALL
- sudoCommand:!/usr/sbin/useradd
复制代码
右键点击第10步新建的cn,单击属性,双击displayName,键入如下值,这里的值即为上述参数中第一行的dn,点击确定
- CN=%VDI_Group,OU=sudorules,DC=lzuvdi,DC=local
复制代码
双击sudoHost,输入ALL,点击添加,单击确定
双击sudoUser,输入%VDI_Group,点击添加,单击确定
双击sudoCommand,输入ALL,点击添加,输入!/usr/sbin/useradd,点击添加,单击确定
12,编辑/etc/sssd/sss.conf,修改第21行内容为如下,此为调用sudo规则的基准位置
- ldap_sudo_search_base = OU=sudorules,DC=lzuvdi,DC=local
复制代码
OU=sudorules是规则容器
修改完之后,重启sssd
查看sssd日志,过滤关键词sudo
- cat /var/log/sssd/sssd_lzuvdi.local.log |grep sudo
复制代码
来具体测试一下,具有除useradd的所有权限
如需要配置单个用户权限,也很简单,以user30为例
- dn: cn=user30,ou=sudorules,dc=lzuvdi,dc=local
- objectClass: top
- objectClass: sudoRole
- cn: user30
- sudoUser: user30
- sudoHost: ALL
- sudoCommand: ALL
- sudoCommand:!/usr/bin/ls
- sudoCommand:!/usr/bin/rm
- sudoCommand:!/usr/bin/mkdir
复制代码
配置过程跟上面配置组一样,配置完记得重启sssd。测试下user30的sudo权限
E,配置桌面
1,安装agent 程序,然后重启虚拟机
2,清理虚拟机内产生的各种测试信息包括/home下的用户文件夹,以及agent程序和安装虚拟机所用到的各种命令
- echo > ~/.bash_history
- history -c
复制代码
3,虚拟机关机,克隆为模板
4,派生桌面
5,登录测试
至此,使用SSSD通过LDAP认证域用户配置结束