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

本文主要是介绍0x09 在Debian12.0中部署SAMBA4活动目录,实现DC域控 【base:SAMBA4+Debian12+vSphere】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1.概要
    • 2.整体架构流程
    • 3.技术细节
      • 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 安装完成后其它工作
    • 4.小结

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 安装完成后其它工作

3.技术细节

3.1 准备一个终端工具。

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

  • mobaxterm网址:https://mobaxterm.mobatek.net/,下载Free版就够用了,英文界面。
  • xshell网址:https://www.xshell.com/zh/xshell/,xshell自称最强,付费以后的确是的。
  • windterm网址:https://github.com/kingToolbox/WindTerm,中文开源免费,各种指令补全快捷执行。

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

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

ip a
ping www.baidu.com

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

nano /etc/ssh/sshd_config

在这里插入图片描述

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

systemctl restart sshd

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

ip a
ping www.baidu.com

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

nano /etc/apt/sources.list

把里面的所有内容清空,把下面的内容粘贴进去,这里就提醒终端软件的好处了,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 contribdeb 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

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

apt-get update

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

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

  • 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 

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

apt-get install samba-ad-dc

在这里插入图片描述你发现大量的依赖包报错,注意不要直接使用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+1apt-cache policy samba-vfs-modules
aptitude install samba-vfs-modules=2:4.17.10+dfsg-0+deb12u1~bpo11+1apt-cache policy winbind
aptitude install winbind=2:4.17.10+dfsg-0+deb12u1~bpo11+1

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

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

在这里插入图片描述

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

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

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

在这里插入图片描述


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

dpkg -s samba

在这里插入图片描述

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

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

  • 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

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

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

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

    systemctl stop samba-ad-dc smbd nmbd winbindsystemctl disable samba-ad-dc smbd nmbd winbind

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

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

这里又有一些区别了,其它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/

去/etc检查一下

ll /etc/krb5.conf

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

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

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

    systemctl unmask samba-ad-dc

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

    samba-tool domain level show

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


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

3.8 安装完成后其它工作

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

nmtui

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

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

nano /etc/hosts

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

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

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

接下来检查域控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

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

最后我们检查Kerberos的配置:

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

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

4.小结

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

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

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

这篇关于0x09 在Debian12.0中部署SAMBA4活动目录,实现DC域控 【base:SAMBA4+Debian12+vSphere】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/357173

相关文章

闲置电脑也能活出第二春?鲁大师AiNAS让你动动手指就能轻松部署

对于大多数人而言,在这个“数据爆炸”的时代或多或少都遇到过存储告急的情况,这使得“存储焦虑”不再是个别现象,而将会是随着软件的不断臃肿而越来越普遍的情况。从不少手机厂商都开始将存储上限提升至1TB可以见得,我们似乎正处在互联网信息飞速增长的阶段,对于存储的需求也将会不断扩大。对于苹果用户而言,这一问题愈发严峻,毕竟512GB和1TB版本的iPhone可不是人人都消费得起的,因此成熟的外置存储方案开

hdu1043(八数码问题,广搜 + hash(实现状态压缩) )

利用康拓展开将一个排列映射成一个自然数,然后就变成了普通的广搜题。 #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#include<stdlib.h>#include<ctype.h>#inclu

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

C#实战|大乐透选号器[6]:实现实时显示已选择的红蓝球数量

哈喽,你好啊,我是雷工。 关于大乐透选号器在前面已经记录了5篇笔记,这是第6篇; 接下来实现实时显示当前选中红球数量,蓝球数量; 以下为练习笔记。 01 效果演示 当选择和取消选择红球或蓝球时,在对应的位置显示实时已选择的红球、蓝球的数量; 02 标签名称 分别设置Label标签名称为:lblRedCount、lblBlueCount

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略

Kubernetes PodSecurityPolicy:PSP能实现的5种主要安全策略 1. 特权模式限制2. 宿主机资源隔离3. 用户和组管理4. 权限提升控制5. SELinux配置 💖The Begin💖点点关注,收藏不迷路💖 Kubernetes的PodSecurityPolicy(PSP)是一个关键的安全特性,它在Pod创建之前实施安全策略,确保P

工厂ERP管理系统实现源码(JAVA)

工厂进销存管理系统是一个集采购管理、仓库管理、生产管理和销售管理于一体的综合解决方案。该系统旨在帮助企业优化流程、提高效率、降低成本,并实时掌握各环节的运营状况。 在采购管理方面,系统能够处理采购订单、供应商管理和采购入库等流程,确保采购过程的透明和高效。仓库管理方面,实现库存的精准管理,包括入库、出库、盘点等操作,确保库存数据的准确性和实时性。 生产管理模块则涵盖了生产计划制定、物料需求计划、