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
安裝 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
 
- 輸入 Samba AD 主機名稱,例:dc1.abc.local
 
- 一樣輸入 Samba AD 主機名稱,例:dc1.abc.local
 
 - 
備份預設定設定檔
 
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
sudo mv /etc/krb5.conf /etc/krb5.conf.orig
- 設定 Samba AD 服務
 
sudo samba-tool domain provision --use-rfc2307 --interactive
- 設定有關於 AD 相關的參數,執行上面指令後系統會自動帶出您剛剛所填入的資訊
- 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]: - 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
- 停止並停用 systemd-resolved 服務
 
sudo systemctl disable --now systemd-resolved
- 移除符號連結檔案 /etc/resolv.conf
 
sudo unlink /etc/resolv.conf
- 建立一組新的 DNS 相關資訊 
vim /etc/resolv.conf。 
# Samba 伺服器的 IP 位址
nameserver 192.168.1.5
# fallback resolver
nameserver 8.8.8.8
nameserver 1.1.1.1
# Samba 的主要網域
search kgerh: abc.local
- DNS 設定檔權限( chattr 說明:改變檔案的屬性(Change Attribute),常用於設定不被修改或刪除等)
 
sudo chattr +i /etc/resolv.conf
- 如要異動 DNS 設定檔要先把權限設定成可以修正
 
sudo chattr -i /etc/resolv.conf
- 啟動 samba 服務
 
sudo samba
- 確認 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
- 輸入您的密碼後會看到您的密碼會在幾天後過期
 
安裝第二台以上 Samba AD 服務
- 
當您要架設多台 DC 站台,環境設定部份需要也要設定。環境設定
 - 
安裝 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
- 備份預設定設定檔
 
sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.orig
sudo mv /etc/krb5.conf /etc/krb5.conf.orig
- 停止並停用 systemd-resolved 服務
 
sudo systemctl disable --now systemd-resolved
- 移除符號連結檔案 /etc/resolv.conf
 
sudo unlink /etc/resolv.conf
- 建立一組新的 DNS 相關資訊 
vim /etc/resolv.conf。 
# Samba 伺服器的 IP 位址
nameserver 192.168.1.5
# fallback resolver
nameserver 8.8.8.8
nameserver 1.1.1.1
# Samba 的主要網域
search kgerh: abc.local
- DNS 設定檔權限( chattr 說明:改變檔案的屬性(Change Attribute),常用於設定不被修改或刪除等)
 
sudo chattr +i /etc/resolv.conf
- 如要異動 DNS 設定檔要先把權限設定成可以修正
 
sudo chattr -i /etc/resolv.conf
- 加入 DC 服務控制群
 
sudo samba-tool domain join abc.local DC -W AD -U Administrator
- 複製設定檔
 
sudo cp /var/lib/samba/private/krb5.conf /etc/krb5.conf
- 啟動 samba 服務
 
sudo samba
- 確認 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
- 每次加到網域建議執行以下指令以確何資料都是正確。( 加入DC、刪除DC後,檢查資料庫的正確性 )
 
samba-tool dbcheck --reindex
samba-tool dbcheck --fix
samba-tool dbcheck --cross-ncs --fix
憑證設定
- 憑證存放位置
 
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
補充說明
- 如果您有 Windows Server 要加入到 Samba AD 網域控制站的話,那記得要在 
vim /etc/samba/smb.conf加入以下參數就可以正常加入了 
dsdb:schema update allowed=true
                






