Windows AD域中的Linux机器(使用sssd和krb5)

需要将Ubuntu计算机输入Windows域。 为此,通常使用Samba和Winbind。 但是sssd可以替代,下面是它的简要指南。

例如,我们将使用:

= contoso.com
域控制器 = dc.contoso.com

启动Ubuntu终端:

1.切换到root

sudo -i 

2.安装必要的软件包

 apt install sssd heimdal-clients msktutil 

3.我们编辑/etc/krb5.conf,制表符用作缩进

 [libdefaults] default_realm = CONTOSO.COM [realms] CONTOSO.COM = { kdc = DC admin_server = dc.contoso.com default_domain = contoso.com } [login] krb4_convert = true krb4_get_tickets = false [domain_realm] .contoso.com = CONTOSO.COM contoso.com = CONTOSO.COM 

4.编辑文件/ etc / hosts,为此主机指定FQDN:

 127.0.0.1 localhost 127.0.1.1 <hostname>.contoso.com <hostname> 

5.我们尝试代表域管理员获取Kerberos票证:

 root@ubuntu:~# kinit YourDomainAdmin YourDomainAdmin@CONTOSO.COM's Password: 

我们检查:

 root@ubuntu:~# klist Credentials cache: FILE:/tmp/krb5cc_0 Principal: YourDomainAdmin@CONTOSO.COM Issued Expires Principal Dec 1 15:08:27 2018 Dec 2 01:08:22 2018 krbtgt/CONTOSO.COM@CONTOSO.COM 

如果成功接收到票证,则现在可以为此主机生成Kerberos主体,该寄存器很重要:

 msktutil -c -b 'CN=YourComputersOU' -s HOST/HOSTNAME.contoso.com -k /etc/sssd/HOSTNAME.keytab --computer-name HOSTNAME --upn HOSTNAME$ --server dc.contoso.com —user-creds-only msktutil -c -b 'CN=YourComputersOU' -s HOST/HOSTNAME -k /etc/sssd/HOSTNAME.keytab --computer-name HOSTNAME --upn HOSTNAME$ --server dc.contoso.com --user-creds-only 

现在,我们的主机应出现在目录中的计算机列表中。 如果是这样,请删除收到的Kerberos票证:

 kdestroy 

6.创建具有以下内容的文件/etc/sssd/sssd.conf:

 [sssd] services = nss, pam config_file_version = 2 domains = contoso.com [nss] entry_negative_timeout = 0 debug_level = 3 [pam] debug_level = 3 [domain/contoso.com] debug_level = 3 ad_domain = contoso.com ad_server = dc.contoso.com enumerate = false id_provider = ad auth_provider = ad chpass_provider = ad access_provider = simple simple_allow_groups = users #   ,  .   —       . ldap_schema = ad ldap_id_mapping = true fallback_homedir = /home/%u default_shell = /bin/bash ldap_sasl_mech = gssapi ldap_sasl_authid = <HOSTNAME>$ ldap_krb5_init_creds = true krb5_keytab = /etc/sssd/<HOSTNAME>.keytab 

可以在此处找到sssd配置文件参数的说明

设置sssd.conf文件的权限:

 chmod 600 /etc/sssd/sssd.conf 

重新启动SSSD服务

 service sssd restart 

7.编辑PAM设置

错误的解决方案:

在该行之后编辑文件/etc/pam.d/common-session

 session required pam_unix.so 

加线

 session required pam_mkhomedir.so skel=/etc/skel umask=0022 

好的解决方案:

通过PAM系统设置覆盖参数,调用

 pam-auth-update 

检查 sss authmakehomdir项目 。 这将自动添加
在普通会话中位于上述行,并且在更新系统时不会被覆盖。

现在,我们可以在计算机上登录到允许登录的域用户。

PS:您可以授予使用sudo域组的权利。 使用visudo,编辑文件/ etc / sudoers,或者更好,如maxzhurkiniluvar建议 ,在/etc/sudoers.d/中创建一个新文件并进行编辑

 visudo -f /etc/sudoers.d/_ 

添加所需的组-例如,域管理员(如果组名中有空格-必须将其转义):

 %Domain\ Admins ALL=(ALL) ALL 


PSS:感谢gotch提供有关realmd的信息。 这非常方便-如果不需要特定的设置,那么进入一台机器进入域实际上需要三个命令:
1.安装必要的软件包:
 sudo apt install realmd samba-common-bin samba-libs sssd-tools krb5-user adcli 

2.检查我们的域在网络上是否可见:
 realm discover contoso.com 

3.将计算机输入域:
 sudo realm --verbose join contoso.com -U YourDomainAdmin --install=/ 

4.编辑PAM设置
 sudo pam-auth-update 

该选项的另一个优点是对域文件资源的端到端授权。

为了不指定登录名以外的域,您可以添加默认后缀。 在文件/etc/sssd/sssd.conf中的[sssd]块中,添加以下行:
 default_domain_suffix = contoso.com 

Source: https://habr.com/ru/post/zh-CN437546/


All Articles