Linux下使用Samba做域控

Linux下使用Samba做域控_第1张图片

 AI画妹子的工作先暂告一段落。毕竟戗行也是要有门槛的。

企业中使用Windows Server使用活动目录集中管理PC、服务器是很成熟的方案。突然想到,如果有一天出于某种原因不再使用微软方案了,AD该如何替代?问了一下chatGPT,它说:

在Linux下替代微软活动目录的方案有多种,其中比较受欢迎和常用的包括:

  1. FreeIPA:FreeIPA 是一个自由和开源的安全身份框架,提供集中管理身份、策略、密钥和主机等功能。可以使用 FreeIPA 来中央管理 Linux 和 Unix 系统的用户帐户、认证和授权。

  2. Samba 4:Samba 4 是一个开源实现 Active Directory 的软件,它可以和 Windows 客户端无缝集成。Samba 4 能够处理域账户、组策略等基本的 AD 功能,并支持 LDAP、Kerberos 等协议。

  3. OpenLDAP:OpenLDAP 是一个开源的 LDAP(轻量级目录访问协议)服务器,可以作为 Active Directory 的替代方案,主要提供中心化存储和管理用户、组和计算机帐户的功能。

以上三个方案在国内都有一定的应用,其中 FreeIPA 可能会更受欢迎一些。您可以根据自己的需求和具体情况选择合适的方案。

 先试试看samba吧。

先设定实验环境和目标:

1、本机hostname改为dc01;
2、本机固定IP:192.168.100.73;
3、要设置的域名:ki1381.local
4、本机FQDN:dc01.ki1381.local

第一步,设置hostname:

sudo hostnamectl set-hostname dc01

第二步,设置固定IP(根据不同发行版编辑相应配置文件,具体步骤略)

第三步:修改/etc/hosts,加一句:192.168.100.73    dc01.ki1381.local    dc01

第四步:暂时停用当前resolv:

sudo systemctl disable --now systemd-resolved
sudo unlink /etc/resolv.conf

编辑 /etc/resolv.conf,内容如下:

​​​​​​​# your Samba server IP Address
nameserver 192.168.100.73
# fallback resolver
nameserver 8.8.8.8
# your Samba domain
search ki1381.local

赋权:

sudo chattr +i /etc/resolv.conf

然后重启。

第五步:接下来就是配置的重头戏了。先安装samba-ad-dc:

sudo apt install -y acl attr samba samba-dsdb-modules samba-vfs-modules smbclient winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user dnsutils chrony net-tools

安装过程中会被要求提供域的信息,参考如下设置:
realm:ki1381.local
kerberos:dc01.ki1381.local
Administrative:dc01.ki1381.local    

第六步:启用服务、备份重要配置文件: 

# 启用服务
sudo systemctl disable --now smbd nmbd winbind
sudo systemctl unmask samba-ad-dc
sudo systemctl enable samba-ad-dc

# 备份文件
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.bak 
sudo mv /etc/krb5.conf /etc/krb5.conf.bak

第七步:配置域:

sudo samba-tool domain provision --use-rfc2307 --interactive

同样需要提供一些信息,参考如下:
realm:ki1381.local
domain:ki1381
server role:dc
dns forward ip:8.8.8.8

第八步:启用新配置及启动服务:

sudo cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
sudo systemctl start samba-ad-dc
sudo systemctl status samba-ad-dc

第九步:测试:

smbclient //localhost/netlogon -U Administrator -c 'ls'

host -t SRV _ldap._tcp.ki1381.local
host -t SRV _kerberos._udp.ki1381.local
host -t A dc01.ki1381.local

smbclient应能返回netlogon共享,host应该全部返回正确的ip。

第十步,配置NTP:

sudo chown root:_chrony /var/lib/samba/ntp_signd/
sudo chmod 750 /var/lib/samba/ntp_signd/

编辑 /etc/chrony/chrony.conf,添加:
# bind the chrony service to IP address of the Samba AD
bindcmdaddress 192.168.100.73
# allow clients on the network to connect to the Chrony NTP server
allow 192.168.100.0/24
# specify the ntpsigndsocket directory for the Samba AD
ntpsigndsocket /var/lib/samba/ntp_signd

重启服务:

sudo systemctl restart chronyd 
sudo systemctl status chronyd

至此应该就可以了。找台Windows的PC试着加一下域,成功。域名填ki1381.local,用户名密码就是之前填写的。如果遇到登录不上,试试用户名采用诸如 用户名@ki1381.local 这样的格式。在服务器上执行nslookup PC的FQND,应能返回正确结果。

==== 使用举例 ====

#添加用户
sudo samba-tool user create 用户名 密码

#列出所有用户
sudo samba-tool user list

当然只是做到这个程度距离实用性还是很远的。接下来的计划:
1、至少再加入一个DC节点为AD做冗余;
2、Linux主机加入域;
3、组策略、登录脚本、用户控制等等。

你可能感兴趣的:(linux,服务器)