将Samba设置为Active Directory域控制器

一 简介

从版本4.0开始,samba可以作为Active Directory(AD)域控制器(DC)运行,如果在生产环境中安装samba,建议运行两个或者多个DC用于故障转移

本文介绍如何让将一个Samba设置为新AD集群的第一个DC,另外,如果要将samba NT4域迁移到Samaba AD,也可以参考本文

samba作为AD DC支持:

集成的LDAP服务器作为AD后端

在heimdal的kerberos密钥分发中心(KDC)

如果运行Samba 4.7或者更高版本并且已经使用该选项构建,samba为您的操作系统提供的MIT Kerberos  KDC提供的实验支持with-system-mitkrb5.在其他情况下,Samba使用Samba中包含的heimdal KDC。

二 准备安装

选择AD DC的主机名

不要将仅使用NT4的术语作为主机名,例如PDC或者BDC。这些模式在AD中不存在并导致混淆

选择AD林的DNS域。该名称也将作为 AD Kerberos领域

确保使用不需要更改的DNS域来配置AD。Samba不支持重命名AD DNS区域和Kerberos领域。不要.local用于TLD,Avahi使用它。

在DC上使用静态的IP地址

禁用resolvconf自动更新/etc/resolv.confDNS解析程序配置文件的工具,例如。AD DC和域成员必须使用能够解析AD DNS区域的DNS服务器。

验证没有正在运行的Samba进程

#ps ax | egrep“samba | smbd | nmbd | winbindd”

如果输出列出的任何sambasmbdnmbd或winbindd进程,关掉进程。

验证/etc/hosts DC上的文件是否正确解析了完全限定域名(FQDN)和短主机名到DC的LAN IP地址。例如

127.0.0.1 localhost localhost.localdomain
10.99.0.1 DC1.samdom.example.com DC1

主机名和FQDN不得解析为127.0.0.1IP地址或任何其他IP地址,而不是DC的LAN接口上使用的IP地址。

如果您之前在此主机上运行了Samba安装

  删除现有smb.conf文件。列出文件的路径:

#smbd -b | grep“CONFIGFILE”
   CONFIGFILE:/usr/local/samba/etc/samba/smb.conf

删除所有Samba数据库文件,例如*.tdb*.ldb文件。列出包含Samba数据库的文件夹

#smbd -b | egrep“LOCKDIR | STATEDIR | CACHEDIR | PRIVATE_DIR”
  LOCKDIR:/ usr / local / samba / var / lock /
  STATEDIR:/ usr / local / samba / var / locks /
  CACHEDIR:/ usr / local / samba / var / cache /
  PRIVATE_DIR :/ usr / local / samba / private /

从干净的环境开始有助于防止混淆,并确保来自任何先前Samba安装的文件不会与您的新域DC安装混合

  删除现有/etc/krb5.conf文件:

#rm /etc/krb5.conf

三 安装Samba

3.1 操作系统要求

  构建Samba所需要的程序包安装依赖

安装以下软件包以在最小的Red Hat Enterprise Linux 7,CentOS 7或Scientific Linux 7安装上将Samba构建为Active Directory(AD)域控制器(DC):

#yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \
       libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \
       perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \
       python2-crypto gnutls-devel libattr-devel keyutils-libs-devel \
       libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \
       pam-devel popt-devel python-devel readline-devel zlib-devel systemd-devel \
       lmdb-devel jansson-devel gpgme-devel pygpgme libarchive-devel
Red Hat Enterprise Linux 7不包含构建Samba AD DC所需的所有软件包。在安装软件包之前,请启用Enterprise Linux(EPEL)存储库的外部Extra Packages。有关详细信息,请参阅https://fedoraproject.org/wiki/EPEL。在CentOS 7和Scientific Linux 7上不需要启用EPEL存储库。

  如果DC应作为CUPS后端的打印服务器(不推荐),另外安装:

#yum install cups-devel

  Samba域名成员

  Red Hat Enterprise Linux / CentOS / Scientific Linux

# yum install autoconf automake gcc gdb krb5-devel krb5-workstation \
   openldap-devel make pam-devel python-devel docbook-style-xsl \
   libacl-devel libattr-devel libxslt 

3.2 文件系统支持

  要设置具有扩展访问控制列表(ACL)支持的共享,托管共享的文件系统必须xattr启用用户和系统名称空间。在Samba Active Directory(AD)域控制器(DC)上,samba-tool自动为创建Sysvol共享的文件系统验证此设置。

  EXT4

  fstab文件,不必修改/ etc / fstab,ext4默认使用所有必需的选项。

  内核支持,确保您的内核启用了以下选项:

CONFIG_EXT4_FS_SECURITY = Y
CONFIG_EXT4_FS_POSIX_ACL = Y

  EXT3

  fstab文件,对于Samba共享的该类型的文件系统,请将以下选项添加到/ etc / fstab:

/dev/...          /srv/samba/demo          ext3          user_xattr,acl,barrier=1          1 1

注意:该barrier=1选项可确保tdb事务可以安全地防止意外断电。

请小心修改你的fstab。它可能导致无法启动的系统!

内核支持,确保您的内核启用了以下选项:

CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT3_FS_POSIX_ACL=y

  XFS

  fstab文件,您的fstab中不需要特殊的挂载选项

  内核支持,确保您的内核启用了以下选项:

CONFIG_XFS_POSIX_ACL=y

  没有xattr支持的文件系统

  注意:这不推荐!!!

  如果您没有支持xattr的文件系统,可以通过在smb.conf中添加以下行来模拟它:

 posix:eadb = /usr/local/samba/private/eadb.tdb

  这将在该tdb中放置所有额外的文件属性(NT ACL,DOS EA,流等)。

  注意:这种方式效率不高,不能很好地扩展。这就是它不应该用于生产的原因!

  测试你的文件系统

  注意:没有xattr支持的文件系统不需要这样做。

  在开始测试之前,请确保已attr安装软件包!

  以root身份运行以下命令以测试xattr支持:

# touch test.txt
# setfattr -n user.test -v test test.txt
# setfattr -n security.test -v test2 test.txt

  以下命令应返回显示的输出:

#getfattr -d test.txt #file
:test.txt
user.test =“test” 

#getfattr -n security.test -d test.txt #file
:test.txt
security.test =“test2”

  以root用户身份运行以下命令,测试扩展ACL支持:

#touch test.txt #setfacl -mg:adm:rwx test.txt

  以下命令应返回显示的输出:

#getfacl test.txt #file
:test.txt
#owner:root
#group
:root user :: rw-
group :: r--
group:adm:rwx
mask :: rwx
other :: r--

  如果Operation not supported显示错误:

你的内核配置不正确,
或者您的文件系统未使用正确的选项安装,或
你没有使用root用户运行命令。

或者从source构建Samba

特定于分发的程序包安装

四 配置Samba Active Directory

Samba AD配置过程创建AD数据库并添加初始记录,例如域管理账户所需的DNS条目

如果要将Samba NT4域迁移到AD,对Samba经典升级

AD配置需要root权限才能创建文件和设置权限。

samba-tool domain provision命令提供了几个用于交互式和非交互式设置的参数,可以使用help看详细指令

#samba-tool domain provision --help

配置新AD时,建议通过将--use-rfc2307参数传递给samba-tool domain provision命令来启用NIS扩展。这使您可以在AD中存储Unix属性,例如用户ID(UID),主目录路径,组ID(GID)。启用NIS扩展没有任何缺点。但是,在现有域中启用它们需要手动扩展AD架构。

4.1 参数说明

在配置期间设置一下参数


交互式设置


非交互模式参数


说明


--use-rfc2307


--use-rfc2307


启用NIS扩展。


Realm


--realm


Kerberos领域。AD DNS域的大写版本。例如:SAMDOM.EXAMPLECOM。


Domain


--domain


NetBIOS域名(工作组)。这可以是任何东西,但它必须是一个单词,不超过15个字符且不包含点。建议使用AD DNS域的第一部分。例如:samdom。不要使用计算机短主机名。


Server Role


--server-role


安装域控制器DC角色。


DNS backend


--dns-backend


设置DNS后端。必须使用DNS后端安装AD中的第一个DC。请注意,该BIND9_FLATFILE版本不受支持,将在以后的Samba版本中删除。


DNS forwarder IP address


无法使用


此设置仅在使用SAMBA_INTERNAL DNS后端时可用。


Administrator password


--adminpass


设置域管理员密码。如果密码与复杂性要求不匹配,则配置将失败。

samba-tool domain provision 命令经常使用的其他参数:

--option="interfaces=lo eth0" --option="bind interfaces only=yes":如果您的服务器具有多个网络接口,请使用这些选项将Samba绑定到指定的接口。这使samba-tool命令能够在连接期间在目录中注册正确的LAN IP地址。

不要NONE用作DNS后端,它不受支持,将在以后的Samba版本中删除。
如果使用Bind作为DNS后端,请不要使用BIND9_FLATFILE,它不受支持,将在以后的Samba版本中删除。
在AD域中配置第一个DC后,请不要在同一域中配置任何其他DC,再加入任何DC。

4.2 以交模式配置Samba AD

要以交互的方式配置Samba AD,请运行:

# samba-tool domain provision --use-rfc2307 --interactive
Realm [SAMDOM.EXAMPLE.COM]: SAMDOM.EXAMPLE.COM
 Domain [SAMDOM]: SAMDOM
 Server Role (dc, member, standalone) [dc]: dc
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: SAMBA_INTERNAL
 DNS forwarder IP address (write ‘none‘ to disable forwarding) [10.99.0.1]: 8.8.8.8
Administrator password: Passw0rd
Retype password: Passw0rd
Looking up IPv4 addresses
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=samdom,DC=example,DC=com
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Modifying display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=samdom,DC=example,DC=com
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf
Setting up fake yp server settings
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              DC1
NetBIOS Domain:        SAMDOM
DNS Domain:            samdom.example.com
DOMAIN SID:            S-1-5-21-2614513918-2685075268-614796884

交互式配置模式支持将其他参数传递给samba-tool domain provision命令。这使您可以修改不属于交互式设置的参数。

4.3 以非交互式配置Samba AD

例如,要使用以下配置设置非交互式配置Samba AD:

  服务器角色:AD

  一起用NIS扩展

  内部DNS后端

  Kerberos领域和AD DNS区域:samdom.example.com

  NetBIOS域名:SAMDOM

  域管理员密码:Passw0rd

#samba-tool domain provision --server-role = dc --use-rfc2307 --dns-backend = SAMBA_INTERNAL --realm = SAMDOM.EXAMPLE.COM --domain = SAMDOM --adminpass = Passw0rd

五 设置AD DNS后端

如果使用SAMBA_INTERNAL DNS后端配置DC请跳过此步骤:

设置BIND DNS服务器和BIND_DLZ 模块。

启动BIND DNS服务器。例如

#systemctl start named

六 配置DNS解析器

AD中的域成员使用DNS来定位服务,例如LDAP和Kerberos。为此,他们需要使用能够解析AD DNS区域的DNS服务器。

在DC上,在文件domainnameserver参数中设置DC中的AD DNS域和DC的IP /etc/resolv.conf。例如:

search samdom.example.com
nameserver 10.99.0.1

七 创建一个反向区域

可以添加反向查找区域

# samba-tool dns zonecreate <Your-AD-DNS-Server-IP-or-hostname> 0.99.10.in-addr.arpa
Password for [[email protected]]:
Zone 0.99.10.in-addr.arpa created successfully

如果您需要多个反向区域(多个子网),只需再次运行上述命令,但使用另一个子网的数据

反向区域直接生效,无需重启Samba或BIND

八 配置Kerberos

在AD中,kerberos用于对用户,计算机和服务进行身份验证

在配置期间,Samba为您创建了kerberos配置文件,将此配置文件复制到操作系统的Kerberos配置中。例如

# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
不要创建指向生成的krb5.conf文件的符号链接。在Samba 4.7及更高版本中,/usr/local/samba/private/除用户之外的其他用户不再可以访问该目录root。如果文件是符号链接,则其他用户无法读取该文件,例如,如果使用BIND_DLZDNS后端,则动态DNS更新将失败。

预先创建Kerberos配置使用DBNS服务(SRV)资源记录来定位KDC

九 测试Samba AD DC

要samba手动启动服务

#samba

samba不提供System V init的脚本,systemd,upstart,或者其他的配置文件

如果使用软件包安装Samba,请使用软件包中包含的脚本或服务配置文件来启动Samba。

如果您构建了Samba,可以使用 init的脚本,systemd,upstart管理

9.1 验证文件服务器

列出DC提供的共享

$ smbclient -L localhost -U%
Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk
        sysvol          Disk
        IPC$            IPC       IPC Service (Samba x.y.z)
Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------

The netlogon and sysvol shares were auto-created during the provisioning and must exist on a DC.

要验证身份验证,请netlogon使用域管理员帐户连接到共享:

$ smbclient //localhost/netlogon -UAdministrator -c ‘ls‘
Enter Administrator‘s password:
Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z]
 .                                   D        0  Tue Nov  1 08:40:00 2016
 ..                                  D        0  Tue Nov  1 08:40:00 2016

               49386 blocks of size 524288. 42093 blocks available

9.2 验证DNS

要验证您的AD DNS配置是否正常工作,请查询一些DNS记录:

_ldap域中基于tcp的SRV记录:

$ host -t SRV _ldap._tcp.samdom.example.com.
_ldap._tcp.samdom.example.com has SRV record 0 100 389 dc1.samdom.example.com.

_kerberos域中基于udp的SRV资源记录:

$ host -t SRV _kerberos._udp.samdom.example.com.
_kerberos._udp.samdom.example.com has SRV record 0 100 88 dc1.samdom.example.com.

域控制器的A记录:

$ host -t A dc1.samdom.example.com.
dc1.samdom.example.com has address 10.99.0.1

9.3 验证Kerberos

请求域管理员帐户的Kerberos票证:

$ kinit administrator
Password for [email protected]:

如果未将[email protected]格式中的主体传递给kinit命令,则会自动附加Kerberos域。
将Kerberos域设置为大写

列出缓存的Kerberos票证:

$ klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: [email protected]

Valid starting       Expires              Service principal
01.11.2016 08:45:00  12.11.2016 18:45:00  krbtgt/[email protected]
    renew until 02.11.2016 08:44:59

9.4 配置时间同步

Kerberos需要在所有域成员上同步时间。

9.5 使用域控制器作为文件服务器

虽然Samba AD DC能够提供文件共享,但与所有其他安装模式一样,Samba团队不建议将DC用作文件服务器,原因如下:

除了最小的组织之外,拥有多个DC是一个非常好的备份措施,并使升级更安全
它鼓励DC的升级也是每年或每两年升级主机操作系统,因为没有复杂的数据要转换或涉及其他服务。
这意味着升级可以通过安装新的,并在更改中进行复制来完成,这些更改在Samba中得到了更好的测试,获得了新功能并避免了许多挥之不去的数据损坏风险。
DC和文件服务器具有组织希望升级的不同点。DC和文件服务器上的新功能需要在不同的时间。目前,AD DC正在快速发展以获得功能,而文件服务器在20多年后,更为保守。
在DC上强制执行强制smb签名。

如果您决定将Samba DC用作文件服务器,请考虑在DC上运行包含单独的Samba Unix域成员的VM并使用它。

如果必须将Samba DC用作文件服务器,则应注意自动启用的acl_xattr虚拟文件系统(VFS)对象使您只能使用Windows访问控制列表(ACL)配置共享。将POSIX ACL与Samba DC上的共享一起使用不起作用。

要为网络共享提供Samba的全部功能,请使用文件共享设置Samba域成员。

如果您只有一个小域(小型办公室,家庭网络)并且不想遵循Samba团队的建议并将DC另外用作文件服务器,请在开始设置共享之前配置Winbindd。

如果您确实使用AD DC作为文件服务器,请不要添加Unix域成员上使用的任何“idmap config”行。他们不会工作,会造成问题。
如果确实使用AD DC作为文件服务器,则必须从Windows设置权限,不要尝试使用任何旧方法(强制用户等)。它们无法正常工作并会导致问题。

参考文献:

https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller

原文地址:https://www.cnblogs.com/zyxnhr/p/10981108.html

时间: 2024-10-08 20:00:27

将Samba设置为Active Directory域控制器的相关文章

您真的会修改Active Directory域控制器计算机名称吗

从我开始做微软这行开始,就经常听说某某公司由于什么原因需要修改Active Directory域控制器计算机名称,但发现好多公司都是直接修改,导致了各种奇葩的问题,今天就给大家推荐一个修改Active Directory域控制器计算机名称的方式. 往往有很多朋友会直接在计算机属性里修改计算机的FQDN名称,如图所示:会报出如下警告信息: 通过以上方式修改,有时候会莫名其妙的出现各种奇葩问题,所以强烈不建议这么玩. 建议修改方式如下: 1.我们可以看到我这环境中这台AD的名称是ADSrv01,如图

修改Active Directory域控制器IP地址

在企业中,部署微软Active Directory域控制器时,常常因为以下几个原因需要重新配置DC服务器的IP地址: a) 管理员配置了错误的DC服务器的IP地址: b) 因网络变更,重新规划企业IP地址. 这两种现象常常在企业中出现,也经常会出现域中资源与DC服务器无法正常通信,而造成一些未知的错误.今天给大家演示当修改企业Active Directory域控制器IP地址时,需要注意的相关事项以及验证修改IP地址后是否可以正常工作. 1)登陆DC服务器,查看当前DC服务器的IP地址.点击服务器

您修改Active Directory域控制器IP地址方法是对的吗

最近好多朋友问我修改Active Directory域控制器的IP地址需要注意什么,如何修改.今天就简单给各位老铁介绍下. 修改Active Directory域控制器IP地址大致步骤如下: 登录DC服务器,检查当前DC服务器的IP地址,一般情况下DC服务器都是跟DNS集成的,所以要关注下DNS的配置,如图所示. 根据需求,将IP地址从192.168.1.10修改为192.168.1.11.如图所示(DNS也记得修改奥): 运行"Ipconfig /all"检查IP地址配置 使用&qu

cmd 执行Dcpromo错误:在该 SKU 上不支持 Active Directory 域服务安装向导,Windows Server 2008 R2 Enterprise 配置AD(Active Directory)域控制器

今天,要安装AD域控制器,运行dcpromo结果提示:在该 SKU 上不支持 Active Directory 域服务安装向导. 以前弄的时候直接就通过了,这次咋回事?终于搞了大半天搞定了. 主要原因:我的Windows 2008 R2的版本是WEB版.不支持AD角色,只有DNS和IIS两个角色,醉了......,安装的时候说明是:web版也支持全部的角色. 只能重新安装一个Enterprise版的了: 主要说下选版本这一步: Enterprise=旗舰版,功能较全 Standard=标准版 D

修改Active Directory域控制器计算机名称

上一篇讲到了修改Active Directory的IP地址,以及修改后需要验证的地方,今天主要给大家介绍当修改DC服务器的计算机名称后需要验证的地方,以及注意事项. 1.本篇幅介绍所使用的机器依然是"SH-DC-01",并且准备重命名为"BJ-DC-01" 2.使用以下命令验证当前DC服务器的完全合格域名,即FQDN 3.为DC服务器添加一条新的FQDN名称.即在Active Directory数据库中注册新的服务主题名称(SPN),并在DNS服务器中注册新计算机名

无法与&quot;***&quot;域的active directory域控制器(AD DC)连接

上周五出现上面的问题,倒腾半天,下班也没搞好,不干了.周一过来继续搞,发现网上的资料各种胡扯..解决办法如下: 先说下我的环境,我是建了个虚拟机做DNS和DC,然后物理机加入虚拟机的AD 1.保证DC的DNS是自己的ip(127.0.0.1) 2.物理机的dns要写上dc的ip 3.物理机加入域的时候域名不要加后缀.(如域名为“test.com”,只需要填写‘test’就ok) 做到这三点,基本就ok了.

C# AD(Active Directory)域信息同步,组织单位、用户等信息查询

Windows Server 2008 R2 配置AD(Active Directory)域控制器 目录 配置环境 配置DNS服务器 配置Active Directory 域服务 C# AD(Active Directory)域同步 组织单位.用户等信息查询 PDF下载 配置环境 Windows版本:Windows Server 2008 R2 Enterprise Service Pack 1 系统类型:       64 位操作系统 配置DNS服务器 这一步不是必须的,在安装Active D

Windows Server 笔记(六):Active Directory域服务:额外域控制器

额外域控制器: 额外域控制器是指除了第一台安装的域控制器(主域控制器)意外的所有域控制器: 那么额外域控制器有什么好处呢? 1.可以提供容错.即一台DC出问题后,另一台仍可以可以继续工作,提供服务: 2.提高用户登录效率.多台域控可以分担用户审核,加快用户登录速度: 3.备份.域控制器之间会相互复制,就等于多了一份备份: 1.首先设置好IP配置:这里首选DNS指向自己,备用DNS指向主域:将服务器加入域: 2.选择"添加角色和功能": 3.选择"下一步": 4.选择

Windows Server 笔记(六):Active Directory域服务:域信任

域使一个安全边界,在有些情况下,我们需要越过这个边界,那么这个时候,我们就需要使用域信任了. 举个例子,有两个域,nswl.local和xuelan.local这两个域,如果当nswl.local域的用户需要访问xuelan.local域中的资源,或xualan.local域中账户需要在nswl.local的域中进行账户验证,那么,你可以通过在两个域之间设置信任来实现: 信任可以分为单向信任和双向信任,单向信任就是A信任B,而B不信任A:双向信任则是,A信任B,B也信任A:同时域的信任也是可传递