一 簡介
從版本4.0開始,samba可以作為Active Directory(AD)域控制器(DC)運行,如果在生產環境中安裝samba,建議運行兩個或者多個DC用於故障轉移
本文介紹如何讓將一個Samba設置為新AD集群的第一個DC,另外,如果要將samba NT4域遷移到Samaba AD,也可以參考本文
samba作為AD DC支持:
集成的LDAP服務器作為AD后端
在heimdal的kerberos密鑰分發中心(KDC)
如果運行Samba 4.7或者更高版本並且已經使用該選項構建,samba為您的操作系統提供的MIT Kerberos KDC提供的實驗支持with-system-mitkrb5.在其他情況下,Samba使用Samba中包含的heimdal KDC。
二 准備安裝
選擇AD DC的主機名
不要將僅使用NT4的術語作為主機名,例如PDC或者BDC。這些模式在AD中不存在並導致混淆
選擇AD林的DNS域。該名稱也將作為 AD Kerberos領域
確保使用不需要更改的DNS域來配置AD。Samba不支持重命名AD DNS區域和Kerberos領域。不要.local用於TLD,Avahi使用它。
在DC上使用靜態的IP地址
禁用resolvconf自動更新/etc/resolv.confDNS解析程序配置文件的工具,例如。AD DC和域成員必須使用能夠解析AD DNS區域的DNS服務器。
驗證沒有正在運行的Samba進程
#ps ax | egrep“samba | smbd | nmbd | winbindd”
如果輸出列出的任何samba,smbd,nmbd或winbindd進程,關掉進程。
驗證/etc/hosts DC上的文件是否正確解析了完全限定域名(FQDN)和短主機名到DC的LAN IP地址。例如
127.0.0.1 localhost localhost.localdomain 10.99.0.1 DC1.samdom.example.com DC1
主機名和FQDN不得解析為127.0.0.1IP地址或任何其他IP地址,而不是DC的LAN接口上使用的IP地址。
如果您之前在此主機上運行了Samba安裝
刪除現有smb.conf文件。列出文件的路徑:
#smbd -b | grep“CONFIGFILE”
CONFIGFILE:/usr/local/samba/etc/samba/smb.conf
刪除所有Samba數據庫文件,例如*.tdb和*.ldb文件。列出包含Samba數據庫的文件夾
#smbd -b | egrep“LOCKDIR | STATEDIR | CACHEDIR | PRIVATE_DIR” LOCKDIR:/ usr / local / samba / var / lock / STATEDIR:/ usr / local / samba / var / locks / CACHEDIR:/ usr / local / samba / var / cache / PRIVATE_DIR :/ usr / local / samba / private /
從干凈的環境開始有助於防止混淆,並確保來自任何先前Samba安裝的文件不會與您的新域DC安裝混合
刪除現有/etc/krb5.conf文件:
#rm /etc/krb5.conf
三 安裝Samba
3.1 操作系統要求
構建Samba所需要的程序包安裝依賴
安裝以下軟件包以在最小的Red Hat Enterprise Linux 7,CentOS 7或Scientific Linux 7安裝上將Samba構建為Active Directory(AD)域控制器(DC):
#yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \ libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \ perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \ python2-crypto gnutls-devel libattr-devel keyutils-libs-devel \ libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \ pam-devel popt-devel python-devel readline-devel zlib-devel systemd-devel \ lmdb-devel jansson-devel gpgme-devel pygpgme libarchive-devel
Red Hat Enterprise Linux 7不包含構建Samba AD DC所需的所有軟件包。在安裝軟件包之前,請啟用Enterprise Linux(EPEL)存儲庫的外部Extra Packages。有關詳細信息,請參閱https://fedoraproject.org/wiki/EPEL。在CentOS 7和Scientific Linux 7上不需要啟用EPEL存儲庫。
如果DC應作為CUPS后端的打印服務器(不推薦),另外安裝:
#yum install cups-devel
Samba域名成員
Red Hat Enterprise Linux / CentOS / Scientific Linux
# yum install autoconf automake gcc gdb krb5-devel krb5-workstation \ openldap-devel make pam-devel python-devel docbook-style-xsl \ libacl-devel libattr-devel libxslt
3.2 文件系統支持
要設置具有擴展訪問控制列表(ACL)支持的共享,托管共享的文件系統必須xattr啟用用戶和系統名稱空間。在Samba Active Directory(AD)域控制器(DC)上,samba-tool自動為創建Sysvol共享的文件系統驗證此設置。
EXT4
fstab文件,不必修改/ etc / fstab,ext4默認使用所有必需的選項。
內核支持,確保您的內核啟用了以下選項:
CONFIG_EXT4_FS_SECURITY = Y
CONFIG_EXT4_FS_POSIX_ACL = Y
EXT3
fstab文件,對於Samba共享的該類型的文件系統,請將以下選項添加到/ etc / fstab:
/dev/... /srv/samba/demo ext3 user_xattr,acl,barrier=1 1 1
注意:該barrier=1選項可確保tdb事務可以安全地防止意外斷電。
請小心修改你的fstab。它可能導致無法啟動的系統!
內核支持,確保您的內核啟用了以下選項:
CONFIG_EXT3_FS_SECURITY=y
CONFIG_EXT3_FS_POSIX_ACL=y
XFS
fstab文件,您的fstab中不需要特殊的掛載選項
內核支持,確保您的內核啟用了以下選項:
CONFIG_XFS_POSIX_ACL=y
沒有xattr支持的文件系統
注意:這不推薦!!!
如果您沒有支持xattr的文件系統,可以通過在smb.conf中添加以下行來模擬它:
posix:eadb = /usr/local/samba/private/eadb.tdb
這將在該tdb中放置所有額外的文件屬性(NT ACL,DOS EA,流等)。
注意:這種方式效率不高,不能很好地擴展。這就是它不應該用於生產的原因!
測試你的文件系統
注意:沒有xattr支持的文件系統不需要這樣做。
在開始測試之前,請確保已attr安裝軟件包!
以root身份運行以下命令以測試xattr支持:
# touch test.txt # setfattr -n user.test -v test test.txt # setfattr -n security.test -v test2 test.txt
以下命令應返回顯示的輸出:
#getfattr -d test.txt #file :test.txt user.test =“test” #getfattr -n security.test -d test.txt #file :test.txt security.test =“test2”
以root用戶身份運行以下命令,測試擴展ACL支持:
#touch test.txt #setfacl -mg:adm:rwx test.txt
以下命令應返回顯示的輸出:
#getfacl test.txt #file :test.txt #owner:root #group :root user :: rw- group :: r-- group:adm:rwx mask :: rwx other :: r--
如果Operation not supported顯示錯誤:
你的內核配置不正確,
或者您的文件系統未使用正確的選項安裝,或
你沒有使用root用戶運行命令。
或者從source構建Samba
特定於分發的程序包安裝
四 配置Samba Active Directory
Samba AD配置過程創建AD數據庫並添加初始記錄,例如域管理賬戶所需的DNS條目
如果要將Samba NT4域遷移到AD,對Samba經典升級
AD配置需要root權限才能創建文件和設置權限。
該samba-tool domain provision命令提供了幾個用於交互式和非交互式設置的參數,可以使用help看詳細指令
#samba-tool domain provision --help
配置新AD時,建議通過將--use-rfc2307參數傳遞給samba-tool domain provision命令來啟用NIS擴展。這使您可以在AD中存儲Unix屬性,例如用戶ID(UID),主目錄路徑,組ID(GID)。啟用NIS擴展沒有任何缺點。但是,在現有域中啟用它們需要手動擴展AD架構。
4.1 參數說明
在配置期間設置一下參數
| 交互式設置 |
非交互模式參數 |
說明 |
| --use-rfc2307 |
--use-rfc2307 |
啟用NIS擴展。 |
| Realm |
--realm |
Kerberos領域。AD DNS域的大寫版本。例如:SAMDOM.EXAMPLECOM。 |
| Domain |
--domain |
NetBIOS域名(工作組)。這可以是任何東西,但它必須是一個單詞,不超過15個字符且不包含點。建議使用AD DNS域的第一部分。例如:samdom。不要使用計算機短主機名。 |
| Server Role |
--server-role |
安裝域控制器 |
| DNS backend |
--dns-backend |
設置DNS后端。必須使用DNS后端安裝AD中的第一個DC。請注意,該BIND9_FLATFILE版本不受支持,將在以后的Samba版本中刪除。 |
| DNS forwarder IP address |
無法使用 |
此設置僅在使用SAMBA_INTERNAL DNS后端時可用。 |
| Administrator password |
--adminpass |
設置域管理員密碼。如果密碼與復雜性要求不匹配,則配置將失敗。 |
samba-tool domain provision 命令經常使用的其他參數:
--option="interfaces=lo eth0" --option="bind interfaces only=yes":如果您的服務器具有多個網絡接口,請使用這些選項將Samba綁定到指定的接口。這使samba-tool命令能夠在連接期間在目錄中注冊正確的LAN IP地址。
不要NONE用作DNS后端,它不受支持,將在以后的Samba版本中刪除。
如果使用Bind作為DNS后端,請不要使用BIND9_FLATFILE,它不受支持,將在以后的Samba版本中刪除。
在AD域中配置第一個DC后,請不要在同一域中配置任何其他DC,再加入任何DC。
4.2 以交模式配置Samba AD
要以交互的方式配置Samba AD,請運行:
# samba-tool domain provision --use-rfc2307 --interactive Realm [SAMDOM.EXAMPLE.COM]: SAMDOM.EXAMPLE.COM Domain [SAMDOM]: SAMDOM Server Role (dc, member, standalone) [dc]: dc DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: SAMBA_INTERNAL DNS forwarder IP address (write 'none' to disable forwarding) [10.99.0.1]: 8.8.8.8 Administrator password: Passw0rd Retype password: Passw0rd Looking up IPv4 addresses Looking up IPv6 addresses No IPv6 address will be assigned Setting up share.ldb Setting up secrets.ldb Setting up the registry Setting up the privileges database Setting up idmap db Setting up SAM db Setting up sam.ldb partitions and settings Setting up sam.ldb rootDSE Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=samdom,DC=example,DC=com Adding configuration container Setting up sam.ldb schema Setting up sam.ldb configuration data Setting up display specifiers Modifying display specifiers Adding users container Modifying users container Adding computers container Modifying computers container Setting up sam.ldb data Setting up well known security principals Setting up sam.ldb users and groups Setting up self join Adding DNS accounts Creating CN=MicrosoftDNS,CN=System,DC=samdom,DC=example,DC=com Creating DomainDnsZones and ForestDnsZones partitions Populating DomainDnsZones and ForestDnsZones partitions Setting up sam.ldb rootDSE marking as synchronized Fixing provision GUIDs A Kerberos configuration suitable for Samba 4 has been generated at /usr/local/samba/private/krb5.conf Setting up fake yp server settings Once the above files are installed, your Samba4 server will be ready to use Server Role: active directory domain controller Hostname: DC1 NetBIOS Domain: SAMDOM DNS Domain: samdom.example.com DOMAIN SID: S-1-5-21-2614513918-2685075268-614796884
交互式配置模式支持將其他參數傳遞給samba-tool domain provision命令。這使您可以修改不屬於交互式設置的參數。
4.3 以非交互式配置Samba AD
例如,要使用以下配置設置非交互式配置Samba AD:
服務器角色:AD
一起用NIS擴展
內部DNS后端
Kerberos領域和AD DNS區域:samdom.example.com
NetBIOS域名:SAMDOM
域管理員密碼:Passw0rd
#samba-tool domain provision --server-role = dc --use-rfc2307 --dns-backend = SAMBA_INTERNAL --realm = SAMDOM.EXAMPLE.COM --domain = SAMDOM --adminpass = Passw0rd
五 設置AD DNS后端
如果使用SAMBA_INTERNAL DNS后端配置DC請跳過此步驟:
設置BIND DNS服務器和BIND_DLZ 模塊。
啟動BIND DNS服務器。例如
#systemctl start named
六 配置DNS解析器
AD中的域成員使用DNS來定位服務,例如LDAP和Kerberos。為此,他們需要使用能夠解析AD DNS區域的DNS服務器。
在DC上,在文件domain的nameserver參數中設置DC中的AD DNS域和DC的IP /etc/resolv.conf。例如:
search samdom.example.com nameserver 10.99.0.1
七 創建一個反向區域
可以添加反向查找區域
# samba-tool dns zonecreate <Your-AD-DNS-Server-IP-or-hostname> 0.99.10.in-addr.arpa Password for [administrator@SAMDOM.EXAMPLE.COM]: Zone 0.99.10.in-addr.arpa created successfully
如果您需要多個反向區域(多個子網),只需再次運行上述命令,但使用另一個子網的數據
反向區域直接生效,無需重啟Samba或BIND
八 配置Kerberos
在AD中,kerberos用於對用戶,計算機和服務進行身份驗證
在配置期間,Samba為您創建了kerberos配置文件,將此配置文件復制到操作系統的Kerberos配置中。例如
# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
不要創建指向生成的krb5.conf文件的符號鏈接。在Samba 4.7及更高版本中,/usr/local/samba/private/除用戶之外的其他用戶不再可以訪問該目錄root。如果文件是符號鏈接,則其他用戶無法讀取該文件,例如,如果使用BIND_DLZDNS后端,則動態DNS更新將失敗。
預先創建Kerberos配置使用DBNS服務(SRV)資源記錄來定位KDC
九 測試Samba AD DC
要samba手動啟動服務
#samba
samba不提供System V init的腳本,systemd,upstart,或者其他的配置文件
如果使用軟件包安裝Samba,請使用軟件包中包含的腳本或服務配置文件來啟動Samba。
如果您構建了Samba,可以使用 init的腳本,systemd,upstart管理
9.1 驗證文件服務器
列出DC提供的共享
$ smbclient -L localhost -U% Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z] Sharename Type Comment --------- ---- ------- netlogon Disk sysvol Disk IPC$ IPC IPC Service (Samba x.y.z) Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z] Server Comment --------- ------- Workgroup Master --------- -------
The netlogon and sysvol shares were auto-created during the provisioning and must exist on a DC.
要驗證身份驗證,請netlogon使用域管理員帳戶連接到共享:
$ smbclient //localhost/netlogon -UAdministrator -c 'ls' Enter Administrator's password: Domain=[SAMDOM] OS=[Unix] Server=[Samba x.y.z] . D 0 Tue Nov 1 08:40:00 2016 .. D 0 Tue Nov 1 08:40:00 2016 49386 blocks of size 524288. 42093 blocks available
9.2 驗證DNS
要驗證您的AD DNS配置是否正常工作,請查詢一些DNS記錄:
_ldap域中基於tcp的SRV記錄:
$ host -t SRV _ldap._tcp.samdom.example.com. _ldap._tcp.samdom.example.com has SRV record 0 100 389 dc1.samdom.example.com.
_kerberos域中基於udp的SRV資源記錄:
$ host -t SRV _kerberos._udp.samdom.example.com. _kerberos._udp.samdom.example.com has SRV record 0 100 88 dc1.samdom.example.com.
域控制器的A記錄:
$ host -t A dc1.samdom.example.com. dc1.samdom.example.com has address 10.99.0.1
9.3 驗證Kerberos
請求域管理員帳戶的Kerberos票證:
$ kinit administrator
Password for administrator@SAMDOM.EXAMPLE.COM:
如果未將user@REALM格式中的主體傳遞給kinit命令,則會自動附加Kerberos域。
將Kerberos域設置為大寫
列出緩存的Kerberos票證:
$ klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@SAMDOM.EXAMPLE.COM Valid starting Expires Service principal 01.11.2016 08:45:00 12.11.2016 18:45:00 krbtgt/SAMDOM.EXAMPLE.COM@SAMDOM.EXAMPLE.COM renew until 02.11.2016 08:44:59
9.4 配置時間同步
Kerberos需要在所有域成員上同步時間。
9.5 使用域控制器作為文件服務器
雖然Samba AD DC能夠提供文件共享,但與所有其他安裝模式一樣,Samba團隊不建議將DC用作文件服務器,原因如下:
除了最小的組織之外,擁有多個DC是一個非常好的備份措施,並使升級更安全
它鼓勵DC的升級也是每年或每兩年升級主機操作系統,因為沒有復雜的數據要轉換或涉及其他服務。
這意味着升級可以通過安裝新的,並在更改中進行復制來完成,這些更改在Samba中得到了更好的測試,獲得了新功能並避免了許多揮之不去的數據損壞風險。
DC和文件服務器具有組織希望升級的不同點。DC和文件服務器上的新功能需要在不同的時間。目前,AD DC正在快速發展以獲得功能,而文件服務器在20多年后,更為保守。
在DC上強制執行強制smb簽名。
如果您決定將Samba DC用作文件服務器,請考慮在DC上運行包含單獨的Samba Unix域成員的VM並使用它。
如果必須將Samba DC用作文件服務器,則應注意自動啟用的acl_xattr虛擬文件系統(VFS)對象使您只能使用Windows訪問控制列表(ACL)配置共享。將POSIX ACL與Samba DC上的共享一起使用不起作用。
要為網絡共享提供Samba的全部功能,請使用文件共享設置Samba域成員。
如果您只有一個小域(小型辦公室,家庭網絡)並且不想遵循Samba團隊的建議並將DC另外用作文件服務器,請在開始設置共享之前配置Winbindd。
如果您確實使用AD DC作為文件服務器,請不要添加Unix域成員上使用的任何“idmap config”行。他們不會工作,會造成問題。
如果確實使用AD DC作為文件服務器,則必須從Windows設置權限,不要嘗試使用任何舊方法(強制用戶等)。它們無法正常工作並會導致問題。
參考文獻:
https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller
