Samba AD 架設
BUBU 因專案上有接到 Samba AD 升級的需求,因此本篇記錄有關於 Samba AD 安裝流程及相關設定。 Samba AD 剛好是 Linux 版的c。
運行環境
環境都是在 「Proxmox VE 」 虛擬系統上架設,都是以 「 LXC 」模式為主,除非有特殊狀況會告知使用 「 VM 」 模式
- 系統環境: Ubuntu 20.04、24.04
安裝過程
環境設定
- 設定本機名稱
sudo hostnamectl set-hostname dc1
- 設定 Hosts
vim /etc/hosts
192.168.2.10 dc1.abc.local dc1
- 停用內鍵 DNS 服務
# stop and disable systemd-resolved service
sudo systemctl disable --now systemd-resolved
# remove the symlink file /etc/resolv.conf
sudo unlink /etc/resolv.conf
- 建立一組新的 DNS 相關資訊
vim /etc/resolv.conf
* 新增加的 resolv 的相關設定
# Samba server IP address
nameserver 192.168.1.5
# fallback resolver
nameserver 8.8.8.8
nameserver 1.1.1.1
# main domain for Samba
search kgerh: abc.local
- DNS 設定檔權限( chattr 說明:改變檔案的屬性(Change Attribute),常用於設定不被修改或刪除等)
sudo chattr +i /etc/resolv.conf
- 如要異動 DNS 設定檔要先把權限設定成可以修正
sudo chattr -i /etc/resolv.conf
安裝 Samba AD 服務
- 安裝 Samba AD 相關套件
sudo apt-get install -y acl attr samba samba-dsdb-modules samba-vfs-modules winbind libpam-winbind libnss-winbind libpam-krb5 krb5-config krb5-user dnsutils chrony net-tools
- 在安裝過程中系統會跳出三個視窗進行填入值。
# 預設的 Kerberos 第五版領域(Realm):
abc.local
# 您的領域所使用的 Kerberos 伺服器:
dc1.abc.local
# 您的領域所使用的 Kerberos 伺服器:
dc1.abc.local
-
填入畫面有如下
- 設定 Kerberos 服設系統會自動帶出您的網域名稱不需修改直接按 OK
- 輸入 UCS 主機名稱,例:dc1.abc.local
- 一樣輸入 UCS 主機名稱,例:dc1.abc.local
-
備份預設定設定檔
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
sudo mv /etc/krb5.conf /etc/krb5.conf.orig
- 設定有關於 AD 相關的參數
sudo samba-tool domain provision --use-rfc2307 --interactive
執行後系統會自動帶出您剛剛所填入的資訊- Realm [abc.local] - Enter
- Domain [abc] - Enter
- Server Role (dc, member, standalone) [dc1]: - Enter
- DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: 如果您有使用到動態 DNS 服務會建議搭配 BIND9 服務,這樣子就可以正常帶入於相關設備連線數加入,並且輸入 BIND9_DLZ 此參數,目前沒有使用到可以跳過直接 Enter
- DNS forwarder IP address (write 'none' to disable forwarding) [127.0.0.53]: 168.95.1.1 8.8.8.8
- Administrator password: 填入管理者的密碼
- Retype password: 填入管理者的密碼
- 最後您會看到您所設定的主機相關資訊
- 複製設定檔
sudo cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
- 確認 Samba NTP 簽章位置
samba -b | grep 'NTP' | awk '{print $NF}'
- 執行後會出現 NTP 簽章位置
- 設定與
chrony
服務來做時間同步用
sudo chown root:_chrony /var/lib/samba/ntp_signd/
sudo chmod 750 /var/lib/samba/ntp_signd/
- 編緝
chrony
設定檔vim /etc/chrony/chrony.conf
,設定檔最後新增加以下三個參數
# 將 Chrony 服務綁定到 Samba AD 的 IP 位址
bindcmdaddress 192.168.0.254
# 允許網路內的用戶端連線到 Chrony NTP 伺服器
allow 192.168.0.0/24
# 指定 Samba AD 的 ntpsigndsocket 目錄位置
ntpsigndsocket /var/lib/samba/ntp_signd
- 重啟
chrony
服務
sudo systemctl restart chronyd
- 將 Samba 設定為以 systemd 服務執行。將 smbd、nmbd 和 winbind 服務設為「遮蔽」(mask),並將 samba-ad-dc 服務「取消遮蔽」(unmask)。
sudo systemctl mask smbd nmbd winbind
sudo systemctl disable smbd nmbd winbind
sudo systemctl stop smbd nmbd winbind
sudo systemctl unmask samba-ad-dc
sudo systemctl start samba-ad-dc
sudo systemctl enable samba-ad-dc
- 重啟系統
sudo reboot
- 確認 Samba AD 狀態
sudo systemctl status samba-ad-dc
- 確認網域伺服器是否有正常運行,可以透過 kinit 進行測試
kinit Administrator
- 輸入您的密碼後會看到您的密碼會在幾天後過期
補充說明
- 憑證存放位置
mkdir /xx/ssl
- 憑證權限設定
sudo chown root:root /root/ssl/*.pem
sudo chmod 600 /root/ssl/privkey.pem
sudo chmod 644 /root/ssl/cert.pem
sudo chmod 644 /root/ssl/chain.pem
- 憑證設定
vim /etc/samba/smb.conf
tls enabled = yes
tls keyfile = /xxx/ssl/privkey.pem
tls certfile = /xxx/ssl/cert.pem
tls cafile = /xxx/ssl/chain.pem
- 重啟服務
sudo systemctl restart samba-ad-dc