Linux下使用Samba做域控
AI画妹子的工作先暂告一段落。毕竟戗行也是要有门槛的。
企业中使用Windows Server使用活动目录集中管理PC、服务器是很成熟的方案。突然想到,如果有一天出于某种原因不再使用微软方案了,AD该如何替代?问了一下chatGPT,它说:
在Linux下替代微软活动目录的方案有多种,其中比较受欢迎和常用的包括:
FreeIPA:FreeIPA 是一个自由和开源的安全身份框架,提供集中管理身份、策略、密钥和主机等功能。可以使用 FreeIPA 来中央管理 Linux 和 Unix 系统的用户帐户、认证和授权。
Samba 4:Samba 4 是一个开源实现 Active Directory 的软件,它可以和 Windows 客户端无缝集成。Samba 4 能够处理域账户、组策略等基本的 AD 功能,并支持 LDAP、Kerberos 等协议。
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、组策略、登录脚本、用户控制等等。
更多推荐
所有评论(0)