跳到主內容

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

    debian-join-ucs-05.png

    • 輸入 UCS 主機名稱,例:dc1.abc.local

    debian-join-ucs-06.png

    • 一樣輸入 UCS 主機名稱,例:dc1.abc.local

    debian-join-ucs-07.png

  • 備份預設定設定檔

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

備註





參考相關網頁