Samba 是一个自由的开源软件套件,用于实现 Windows 操作系统与 Linux/Unix 系统之间的无缝连接及共享资源。
Samba 不仅可以通过 SMB/CIFS 协议组件来为 Windows 与 Linux 系统之间提供独立的文件及打印机共享服务,它还能实现活动目录域控制器的功能,或者让 Linux 主机加入到域环境中作为域成员服务器。当前的 Samba4 版本实现的 AD DC 域及森林级别可以取代 Windows 2008 R2 系统的域相关功能。
本系列的文章的主要内容是使用 Samba4 软件来配置活动目录域控制器,涉及到 Ubuntu、CentOS 和 Windows 系统相关的以下主题:
第 1 节:在 Ubuntu 系统上使用 Samba4 来创建活动目录架构
第 2 节:在 Linux 命令行下管理 Samba4 AD 架构
第 3 节:在 Windows 10 操作系统上安装 RSAT 工具来管理 Samba4 AD
第 4 节:从 Windows 中管理 Samba4 AD 域控制器 DNS 和组策略
第 5 节:使用 Sysvol Replication 复制功能把 Samba 4 DC 加入到已有的 AD
第 6 节:从 Linux DC 服务器通过 GOP 来添加一个共享磁盘并映射到 AD
第 7 节:把 Ubuntu 16.04 系统主机作为域成员服务器添加到 AD
第 8 节:把 CenterOS 7 系统主机作为域成员服务器添加到 AD
第 9 节:在 AD Intranet 区域创建使用 kerberos 认证的 Apache Website
这篇指南将阐明在 Ubuntu 16.04 和 Ubuntu 14.04 操作系统上安装配置 Samba4 作为域控服务器组件的过程中,你需要注意的每一个步骤。
以下安装配置文档将会说明在 Windows 和 Linux 的混合系统环境中,关于用户、机器、共享卷、权限及其它资源信息的主要配置点。
环境要求:
Ubuntu 16.04 服务器安装
Ubuntu 14.04 服务器安装
为你的 AD DC 服务器设置静态IP地址
第一步:初始化 Samba4 安装环境
1、在开始安装 Samba4 AD DC 之前,让我们先做一些准备工作。首先运行以下命令来确保系统已更新了最新的安全特性,内核及其它补丁:
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
2、其次,打开服务器上的 /etc/fstab 文件,确保文件系统分区的 ACL 已经启用 ,如下图所示。
通常情况下,当前常见的 Linux 文件系统,比如 ext3、ext4、xfs 或 btrfs 都默认支持并已经启用了 ACL 。如果未设置,则打开并编辑 /etc/fstab 文件,在第三列添加 acl,然后重启系统以使用修改的配置生效。
3、最后使用一个具有描述性的名称来设置主机名 ,比如这往篇文章所使用的 adc1。通过编辑 /etc/hostname 文件或使用使用下图所示的命令来设置主机名。
$ sudo hostnamectl set-hostname adc1
为了使修改的主机名生效必须重启服务器。
第二步:为 Samba4 AD DC 服务器安装必需的软件包
4、为了让你的服务器转变为域控制器,你需要在服务器上使用具有 root 权限的账号执行以下命令来安装 Samba 套件及所有必需的软件包。
$ sudo apt-get install samba krb5-user krb5-config winbind libpam-winbind libnss-winbind
5、安装包在执行的过程中将会询问你一系列的问题以便完成域控制器的配置。
在第一屏中你需要以大写为 Kerberos 默认 REALM 输入一个名字。以大写为你的域环境输入名字,然后单击回车继续。
6、下一步,输入你的域中 Kerberos 服务器的主机名。使用和上面相同的名字,这一次使用小写,然后单击回车继续。
7、最后,指定 Kerberos realm 管理服务器的主机名。使用更上面相同的名字,单击回车安装完成。
第三步:为你的域环境开启 Samba AD DC 服务
8、在为域服务器配置 Samba 服务之前,先运行如下命令来停止并禁用所有 Samba 进程。
$ sudo systemctl stop samba-ad-dc.service smbd.service nmbd.service winbind.service
$ sudo systemctl disable samba-ad-dc.service smbd.service nmbd.service winbind.service
9、下一步,重命名或删除 Samba 原始配置文件。在开启 Samba 服务之前,必须执行这一步操作,因为在开启服务的过程中 Samba 将会创建一个新的配置文件,如果检测到原有的 smb.conf 配置文件则会报错。
$ sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.initial
10、现在,使用 root 权限的账号并接受 Samba 提示的默认选项,以交互方式启动域供给。
还有,输入正确的 DNS 服务器地址并且为 Administrator 账号设置强密码。如果使用的是弱密码,则域供给过程会失败。
$ sudo samba-tool domain provision --use-rfc2307 –interactive
11、最后,使用以下命令重命名或删除 Kerberos 认证在 /etc 目录下的主配置文件,并且把 Samba 新生成的 Kerberos 配置文件创建一个软链接指向 /etc 目录。
$ sudo mv /etc/krb6.conf /etc/krb5.conf.initial
$ sudo ln –s /var/lib/samba/private/krb5.conf /etc/
12、启动并开启 Samba 活动目录域控制器后台进程
$ sudo systemctl start samba-ad-dc.service
$ sudo systemctl status samba-ad-dc.service
$ sudo systemctl enable samba-ad-dc.service
13、下一步,使用 netstat 命令 来验证活动目录启动的服务是否正常。
$ sudo netstat –tulpn| egrep ‘smbd|samba’
第四步:Samba 最后的配置
14、此刻,Samba 应该跟你想像的一样,完全运行正常。Samba 现在实现的域功能级别可以完全跟 Windows AD DC 2008 R2 相媲美。
可以使用 samba-tool 工具来验证 Samba 服务是否正常:
$ sudo samba-tool domain level show
15、为了满足 DNS 本地解析的需求,你可以编辑网卡配置文件,修改 dns-nameservers 参数的值为域控制器地址(使用 127.0.0.1 作为本地 DNS 解析地址),并且设置 dns-search 参数为你的 realm 值。
$ sudo cat /etc/network/interfaces
$ sudo cat /etc/resolv.conf
设置完成后,重启服务器并检查解析文件是否指向正确的 DNS 服务器地址。
16、最后,通过 ping 命令查询结果来检查某些重要的 AD DC 记录是否正常,使用类似下面的命令,替换对应的域名。
$ ping –c3 tecmint.lan # 域名
$ ping –c3 adc1.tecmint.lan # FQDN
$ ping –c3 adc1 # 主机
执行下面的一些查询命令来检查 Samba 活动目录域控制器是否正常。
$ host –t A tecmint.lan
$ host –t A adc1.tecmint.lan
$ host –t SRV _kerberos._udp.tecmint.lan # UDP Kerberos SRV record
$ host -t SRV _ldap._tcp.tecmint.lan # TCP LDAP SRV record
17、并且,通过请求一个域管理员账号的身份来列出缓存的票据信息以验证 Kerberos 认证是否正常。注意域名部分使用大写。
$ kinit administrator@TECMINT.LAN
$ klist
至此!你当前的网络环境中已经完全运行着一个 AD 域控制器,你现在可以把 Windows 或 Linux 系统的主机集成到 Samba AD 中了。