当前位置:   article > 正文

0x09 在Debian12.0中部署SAMBA4活动目录,实现DC域控 【base:SAMBA4+Debian12+vSphere】_debian12 samba

debian12 samba

1.概要

摘抄samba.org的摘要,开源的,注明出处给大家。https://samba.org

Samba is a free Open Source software which provides a standard interoperability between Windows OS and Linux/Unix Operating Systems.

Samba 是一个免费的开源软件,它提供了Windows操作系统和Linux/Unix操作系统之间的标准互操作性。

Samba can operate as a standalone file and print server for Windows and Linux clients through the SMB/CIFS protocol suite or can act as an Active Directory Domain Controller or joined into a Realm as a Domain Member. The highest AD DC domain and forest level that currently Samba4 can emulate is Windows 2008 R2.

Samba 可以通过SMB/CIFS协议套件作为Windows和Linux客户端的独立文件和打印服务器运行,也可以充当Active Directory域控制器或作为域成员加入域。目前Samba 4可以模拟的最高AD DC域和林级别是Windows 2008 R2。

Windows 2008 R2和之后的Windows server2016这些特性没差多少。

2.整体架构流程

3.1 准备一个终端工具。
3.2 vSphere中新建Debian12,开启SSH配置。
3.3 终端工具连接Debian12的SSH
3.4 Debian12安装SAMBA4的准备工作
3.5 Debian12完成SAMBA4的安装
3.6 Debian12完成Kerberos安装
3.7 安装完成后配置启动服务
3.8 安装完成后其它工作
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3.技术细节

3.1 准备一个终端工具。

mobaxterm、xshell、windterm各有千秋,都好用。windterm全免费,但是各种密码输入界面BUG,但不影响使用。

3.2 vSphere中新建Debian12,开启SSH配置。

此前我们都是通过ESXI创建或者运行主DNS的那台Debian12克隆,这次我们在vSphere上演示如何起虚拟机。Debian12的镜像之前DNS配置的时候,已经上传到ESXI中,无需二次上传。

首先正常登录进入vSphere(vCenter Server控制台)
在这里插入图片描述
在我们创建的集群上右键,选择新建虚拟机。

在这里插入图片描述

提供多种方式创建一个新的虚拟机,这里为了演示选择第一种,往后我推荐大家起一个模板,从模板创建,这样就以后不需要重复添加源这些操作。创建过程大家直接看图。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
创建完虚拟机后,在虚拟机列表找到你的新虚拟机,右键——控制台——启动远程控制台,会打开提示:问你是否通过VMware workstation来管理,点击打开,你就跳转到你电脑本机安装的VMware workstation里了。什么?你电脑没有VMware workstation!装一个,别在ESXI的网页界面里折磨自己。
在这里插入图片描述
跳转到VMware workstation后,你发现ESXI其实是帮你在VMware workstation连接了一个远程服务器,接下来所有步骤就像正常的虚拟机哪有操作就行,安装Debian12过程中的重点地方,我会在下面截图中说明。

其实都没啥重点,我写了这么多篇,安装部分不多于赘述了,就放些关键图吧,这部分太呆了。

在这里插入图片描述
扫描完组件后,进入到配置主机名和域名,正常写,我们这是LDAP服务主机名就写LDAP,域也正常写就行了。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后等待安装就行,Debian12的安装真没啥说的,动手强的兄弟批量装机,这玩意可能就三分钟内点完安装了。安装完成后,你的ssh服务是默认打开的。

3.3 终端工具连接Debian12的SSH

先在Debian12里面打开终端,su提权到root身份

su
  • 1

在这里插入图片描述
一般开始都是DHCP获得的IP,正常情况服务器IP地址是需要固定的,无论你用网络高级选项配置还是nmtui,你固定IP就行配置完成后,正常保存退出,通过“ip a”命令检查IP地址是否正确,通过ping www.baidu.com检查是否与外网通讯正常。

ip a
ping www.baidu.com
  • 1
  • 2

接着修改SSH配置文件,调整为默认允许root身份登录

nano /etc/ssh/sshd_config
  • 1

在这里插入图片描述

把PermitRootLogin前面的#号去掉,后面改为yes,然后按ctrl+x再加Y确认修改(ctrl+u撤销上一步),接着重启ssh服务

systemctl restart sshd
  • 1

以windtrem为例,右键新建会话,如下配置,root是你登录的用户名,正常连接即可。
在这里插入图片描述
进入到ssh后,再次检查

ip a
ping www.baidu.com
  • 1
  • 2

开局都是0配置,你的内网是即插即用的,这一步应该没毛病,有问题ping不通就去检查你的路由器。
在这里插入图片描述
接着去修改Debian软件仓库源,我喜欢同时指定为国内的阿里和清华源,流程如下

nano /etc/apt/sources.list
  • 1

把里面的所有内容清空,把下面的内容粘贴进去,这里就提醒终端软件的好处了,wind支持你直接你在CSDN复制,然后在终端里面右键直接粘贴

deb https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye main non-free contrib
deb https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb-src https://mirrors.aliyun.com/debian-security/ bullseye-security main
deb https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib
deb https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.aliyun.com/debian/ bullseye-backports main non-free contrib

deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bullseye-security main contrib non-free
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

编辑好如下,按ctrl+x再加Y确认修改(ctrl+u撤销上一步)
在这里插入图片描述
接着apt-get update更新源

apt-get update
  • 1

3.4 Debian12安装SAMBA4的准备工作

根据SAMBA官网的建议,要确保你的Linux文件系统(如ext 3、ext4、xfs或btrfs)支持ACL,这不用去管,现在的Linux发行版都支持。然后规划好你的主机名(注意主机名就不要加域名后缀了)和静态IP地址,从这步开始就很重要,请通过nmtui命令,先完成这些配置。

正式安装samba前,结合官方samba wiki:
在这里插入图片描述

Note1,咱们的DC域控搭建完成后,是作为服务端工作,其它Linux的机器如果要通过我们域控samba DC里面创建的账号登录域,那么它只充当客户端角色,只安装libpam-winbind和libnss-winbind包就行。

Note2,是告诉我们samba DC域控,一般是顶级管理设备,它可以直接提供DNS、NTP等基础服务,如果你要让你的samba DC域控充当NTP,你还需要安装一个ntp包,然后参考我写的0x04文章配置NTP就行。

再看官方wiki的语句,要求我们安装如下内容:

apt-get install acl attr samba winbind libpam-winbind libnss-winbind krb5-config krb5-user dnsutils python3-setproctitle
  • 1

如果你是新手,把官方的安装命令一个一个拆开,分解如下:

  • apt-get install acl
  • apt-get install attr
  • apt-get install samba //在debian里其实是安装samba-ac-dc
  • apt-get install winbind
  • apt-get install libpam-winbind
  • apt-get install libnss-winbind
  • apt-get install krb5-config
  • apt-get install krb5-user
  • apt-get install dnsutils
  • apt-get install python3-setproctitle

截止20230911,我发现在Debian12里,安装samba,做文件共享功能和做DC域控是不一样的,不是同一个包名,这一点在官方的安装语句中并没有提及,只是要求安装samba,但安装samba后,可能导致直接无法工作。真正需要安装的是samba-ac-dc包,直接说可能没概念,直接上图:在这里插入图片描述

3.5 Debian12完成SAMBA4的安装


所以前情提要说完,接下来我们正式进入安装过程


首先更新你的源,注意更新update就行了。

apt-get update 
  • 1

接着执行apt-get install安装命令

apt-get install samba-ad-dc
  • 1

在这里插入图片描述你发现大量的依赖包报错,注意不要直接使用aptitude命令整体自动解决依赖包问题进行安装,最好的解决办法是吧上述的Depends包单独拎出来,先查询版本,再使用aptitude进行分解安装,分解命令如下:

aptitude install samba=2:4.17.10+dfsg-0+deb12u1~bpo11+1		//按要求指定版本安装

apt-cache policy samba-dsdb-modules				//先查版本,找最新版本,然后再指定版本安装
aptitude install samba-dsdb-modules=2:4.17.10+dfsg-0+deb12u1~bpo11+1

apt-cache policy samba-vfs-modules
aptitude install samba-vfs-modules=2:4.17.10+dfsg-0+deb12u1~bpo11+1

apt-cache policy winbind
aptitude install winbind=2:4.17.10+dfsg-0+deb12u1~bpo11+1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

aptitude命令的工作逻辑是检查依赖问题,然后给出建议,输入y代表接受第一个建议,输入n代表不同意这个建议,系统会给你下一个提示,输入q代表退出,下面我从winbind往上依次执行命令,包含截图:

apt-cache policy winbind
aptitude install winbind=2:4.17.10+dfsg-0+deb12u1~bpo11+1
  • 1
  • 2

在这里插入图片描述

apt-cache policy samba-vfs-modules
aptitude install samba-vfs-modules=2:4.17.10+dfsg-0+deb12u1~bpo11+1
  • 1
  • 2

在这里插入图片描述

apt-cache policy samba-dsdb-modules				//先查版本,找最新版本,然后再指定版本安装
aptitude install samba-dsdb-modules=2:4.17.10+dfsg-0+deb12u1~bpo11+1		//安装samba-vfs-modules后,这个一般都会自动安装
  • 1
  • 2

在这里插入图片描述

aptitude install samba=2:4.17.10+dfsg-0+deb12u1~bpo11+1		//按要求指定版本安装
  • 1

在这里插入图片描述
这些依赖包单独安装完后,最好执行samba-ad-dc安装命令

apt-get install samba-ad-dc
aptitude install samba-ad-dc
//两个命令都可以,因为依赖问题已经全部解决
  • 1
  • 2
  • 3

在这里插入图片描述


如何检查自己是否安装成功了呢,使用dpkg命令,可以检查如下输出:

dpkg -s samba
  • 1

在这里插入图片描述

3.6 Debian12完成Kerberos安装

开始前说明一下Kerberos的Realm在这篇博客里为cluster.io。

Realm :Kerberos所管理的一个领域或范围,称之为一个 Realm。


再看官方wiki的语句,要求我们安装如下内容:

apt-get install acl attr samba winbind libpam-winbind libnss-winbind krb5-config krb5-user dnsutils python3-setproctitle
  • 1

如果你是新手,把官方的安装命令一个一个拆开,分解如下:

  • apt-get install acl
  • apt-get install attr
  • apt-get install samba //在debian里其实是安装samba-ac-dc
  • apt-get install winbind
  • apt-get install libpam-winbind
  • apt-get install libnss-winbind
  • apt-get install krb5-config
  • apt-get install krb5-user
  • apt-get install dnsutils
  • apt-get install python3-setproctitle

samba官网Wiki的内容我们通过上一轮安装就差acl、attr、libpam-winbind、libnss-winbind、krb5-config、krb5-user 、dnsutils、python3-setproctitle没装了。

其中libpam-winbind、libnss-winbind是客户端需要装的,服务端咱们就不安装(并且细心的看官会发现,安装这两行会破坏samba-ac-dc的samba-common包依赖,客户端要求这个降低版本)

acl、attr、这两个,正常Linux发行版都是默认安装的。咱们直接执行一下:

在这里插入图片描述krb5-config、krb5-user 、dnsutils、python3-setproctitle咱们一起执行安装

apt-get install krb5-config krb5-user dnsutils python3-setproctitle
//如果遇到依赖包问题,就使用aptitude安装
aptitude install krb5-config krb5-user dnsutils python3-setproctitle
  • 1
  • 2
  • 3

在这里插入图片描述安装Krb期间会有三配置框,都输人一样的内容,区别只是第一个框要大写输入:
在这里插入图片描述
这样安装完了,一般这个kerboros安装没啥报错。

3.7 安装完成后配置启动服务

安装完成后,运行前,先要把samba默认的smbd和nmbd这些功能关掉,因为他们会占用端口,影响samba做DC域控的功能

    systemctl stop samba-ad-dc smbd nmbd winbind
    systemctl disable samba-ad-dc smbd nmbd winbind
  • 1
  • 2

在这里插入图片描述
samba的配置生成方式wiki上介绍有两种,一种是一条命令交互方式配置,一种是改配置文件,官方建议用交互式命令,使用前要把samba默认的smb.conf文件,给改名,我们需要重新生成配置文件,然后执行samba-tool

mv /etc/samba/smb.conf /etc/samba/smb.conf.initial
samba-tool domain provision --use-rfc2307 --interactive
  • 1
  • 2

这里又有一些区别了,其它linux版本,在交互配置第一个就要求你输入Realm,但Debian12不需要,它会匹配出来,直接回车默认就行
在这里插入图片描述在这里插入图片描述Server Role角色咱们肯定是做DC域控
DNS backend选samba默认就行,如果你准备把samba这个作为DNS服务器,你就要选BIND9_DLZ,我建议使用我们之前博客自建的DNS服务器,这样域控死了,DNS还能工作,在业务上不至于一锅端,至于你以后想all in one你自己倒腾。
DNS forwarder配置上,默认Debian12会填写你的网卡的DNS地址第一个。
Password写复杂点,写简单了会报错,报错又要去删除smb.conf文件
配置完后,你会看到一堆输出,主要看后面红框部分,前面一长串都是输出来源,后面才是配置内容
在这里插入图片描述接着,把Kerberos安装过程的默认配置文件重命名或者删掉,把samba自动配置产生的Kerberos配置文件给替换掉,或者简单点ln软连接过去

mv /etc/krb5.conf /etc/krb5.conf.initial
ln -s /var/lib/samba/private/krb5.conf /etc/
  • 1
  • 2

去/etc检查一下

ll /etc/krb5.conf
  • 1

在这里插入图片描述
OK到这里,samba4 作为DC的基本安装和配置就结束,咱们启动一下看看

    systemctl start samba-ad-dc		//启动
    systemctl status samba-ad-dc 		//检查状态
    systemctl enable samba-ad-dc		//设为开机启动
  • 1
  • 2
  • 3

如遇到**Failed to start samba-ad-dc.service: Unit samba-ad-dc.service is masked.**问题,先执行解unmask:

    systemctl unmask samba-ad-dc

  • 1
  • 2

mask被屏蔽这个问题是samba默认不提供systemctl等命令脚本来管理服务,会默认屏蔽mask掉,在wiki中有介绍,我不建议你按wiki去操作,因为sammb-ad-dc.service是一个设备文件,你无法编辑它,直接命令解mask就行了:解释超链接
在这里插入图片描述最后,检验你的samba作为DC是否配置完成,使用下面语句:

    samba-tool domain level show
  • 1

在这里插入图片描述
你应该能看到上面的各种输出,它告诉你samba4现在能实现的最高等级是window 2008 R2级。


别高兴,samba作为DC还缺少认证访问,下面的Kerberos的各种测试都能过,才说明samba和Kerberos连接起来了。

3.8 安装完成后其它工作

samba作为DC,kerberos是他的认证服务器,为了让DC能解析到kerberos,需要把DNS为DC设备本机,并且添加搜索域:

nmtui
  • 1

在这里插入图片描述改完以后最保险的做法是重启一次,保证修改生效。

当然你也可以把自己的主机名和IP地址,手动添加到etc的hosts文件,方便自己能解析到自己。

nano /etc/hosts
  • 1

在这里插入图片描述重启,保证配置生效。

ping -c4 pdc						//检查通过主机名能否访问自己
ping -c4 cluster.io			//检查通过realm能否访问安装的Kerberos
ping -c4 pdc.cluster.io		//检查通过域名能否访问自己
  • 1
  • 2
  • 3

在这里插入图片描述
这里配置正确能解析的话,都应该共同指向你的本机地址。

接下来检查域控DC的配置:

host -t A cluster.io
host -t A pdc.cluster.io
host -t SRV _kerberos._udp.cluster.io
host -t SRV _ldap._tcp.cluster.io
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述你应该要看到正常解析主机host的各类资源,SRV是用来查询主机端口资源的服务类型。

最后我们检查Kerberos的配置:

kinit administrator@CLUSTER.IO		//administrator是安装Kerberos时的默认账号
klist
  • 1
  • 2

在这里插入图片描述你应该看到正常输出Kerberos的通讯内容。

4.小结

到这里,每天花点时间折腾,没想到五天的时间安装配置终于写完,中间遇到各种情况,比如一开始Debian依赖包的问题,一个一个查包解决,后面再使用aptitude;又或者samba4安装后服务被屏蔽,走弯路看官网wiki折腾文件,最后发现命令解屏蔽;还有Kerberos的配置和解析一直不对…说实话在Debian12上,第一次这样折腾域控,整合了太多学习资料,最后搭建完毕,成就感之余,都是累。

可能之前我win ad用多了,没啥感觉,现在想起来搭域控感觉真的不一样,对这个东西的理解加深了很多。

当然它支持all in one,把NTP\DNS都结合起来,我不太喜欢这种做法,这种会造成单点故障,这很显然不是运维人员希望看到的,这些都是后话了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/182412
推荐阅读
  

闽ICP备14008679号