Cài đặt Samba 4 Domain Controller trên CentOS 7

theanh

Administrator
Nhân viên
Bắt đầu từ phiên bản 4.0, Samba có thể chạy như một bộ điều khiển miền (DC) Active Directory (AD). Trong hướng dẫn này, tôi sẽ chỉ cho bạn cách cấu hình Samba 4 như một bộ điều khiển miền với các máy khách Windows 10, CentOS 7 và CentOS 6.

Trong hướng dẫn này, tôi sẽ biên dịch Samba 4 từ nguồn. Nếu bạn đang tìm kiếm cài đặt dựa trên Samba 4 RPM và cấu hình SELinux cho Samba 4, vui lòng xem hướng dẫn Samba 4 mới của tôi tại đây.

Tôi sẽ sử dụng 3Systems, một máy chủ CentOS 7 và một máy khách Windows 10 để quản lý từ xa, một máy khách CentOS 7 và CentOS 6.
  • 192.168.1.190 Samba4 AD centos7
  • 192.168.1.191 quản lý từ xa win 10
  • 192.168.1.22 - Xác thực máy khách - centos 7
  • 192.168.1.192 - Xác thực máy khách - centos 6

Cài đặt Samba 4​

192.168.1.190 Samba4 AD centos 7

Cơ sở là CentOS 7 với cài đặt tối thiểu và SELinux đã bị vô hiệu hóa.
Mã:
[root@samba4 ~]# sestatusSELinux status: disabled[root@samba4 ~]#
Tạo một mục nhập trong tệp /etc/hosts.
Mã:
[root@samba4 ~]# cat /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6192.168.1.190 samba4.sunil.cc samba4[root@samba4 ~]#
Cài đặt kho lưu trữ epel.
Mã:
[root@samba4 ~]# yum install epel-release -y
Cài đặt tất cả các gói cần thiết để biên dịch samba4.
Mã:
[root@samba4 ~]# yum install perl gcc libacl-devel libblkid-devel gnutls-devel readline-devel python-devel gdb pkgconfig krb5-workstation zlib-devel setroubleshoot-server libaio-devel setroubleshoot-plugins\policycoreutils-python libsemanage-python setools-libs-python setools-libs popt-devel libpcap-devel sqlite-devel libidn-devel libxml2-devel libacl-devel libsepol-devel libattr-devel keyutils-libs-devel\cyrus-sasl-devel cups-devel bind-utils libxslt docbook-style-xsl openldap-devel pam-devel bzip2 vim wget -y
Bây giờ hãy tải xuống gói samba4. Tôi sử dụng samba-4.6.0 là phiên bản mới nhất trong quá trình thiết lập này.
Mã:
[root@samba4 ~]# wget https://download.samba.org/pub/samba/stable/samba-4.6.0.tar.gz
Bây giờ chúng ta hãy cài đặt samba4.
Mã:
[root@samba4 ~]# tar -zxvf samba-4.6.0.tar.gz [root@samba4 ~]# cd samba-4.6.0 [root@samba4 samba-4.6.0]# ./configure --enable-debug --enable-selftest --with-ads --with-systemd --with-winbind [root@samba4 samba-4.6.0]# make && make install
Quá trình cài đặt sẽ mất khoảng 10 phút tùy thuộc vào tốc độ hệ thống.

Bây giờ chúng ta sẽ thực hiện việc cung cấp tên miền.
Mã:
[root@samba4 samba]# samba-tool domain provision --use-rfc2307 --interactiveRealm [SUNIL.CC]: Domain [SUNIL]: Server Role (dc, member, standalone) [dc]: dc DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: Địa chỉ IP chuyển tiếp DNS (ghi 'none' để tắt chuyển tiếp) [4.2.2.1]:Mật khẩu quản trị viên:Nhập lại mật khẩu:Đang tra cứu địa chỉ IPv4Đang tra cứu địa chỉ IPv6Sẽ không có địa chỉ IPv6 nào được chỉ địnhĐang thiết lập share.ldbĐang thiết lập secrets.ldbĐang thiết lập sổ đăng kýĐang thiết lập cơ sở dữ liệu đặc quyềnĐang thiết lập idmap dbĐang thiết lập SAM dbĐang thiết lập phân vùng và cài đặt sam.ldbĐang thiết lập sam.ldb rootDSETải trước lược đồ Samba 4 và ADThêm DomainDN: DC=sunil,DC=ccThêm vùng chứa cấu hìnhThiết lập lược đồ sam.ldbThiết lập dữ liệu cấu hình sam.ldbThiết lập các chỉ định hiển thịSửa đổi các chỉ định hiển thịThêm vùng chứa người dùngSửa đổi vùng chứa người dùngThêm vùng chứa máy tínhSửa đổi vùng chứa máy tínhThiết lập dữ liệu sam.ldbThiết lập các nguyên tắc bảo mật đã biếtThiết lập người dùng và nhóm sam.ldbERROR(ldb): ngoại lệ chưa bắt được - lỗi hoạt động tại ../source4/dsdb/samdb/ldb_modules/password_hash.c:2820 Tệp "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/__init__.py", dòng 176, trong _run trả về self.run(*args, **kwargs) Tệp "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", dòng 471, trong run nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode) Tệp "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", dòng 2175, trong provision skip_sysvolacl=skip_sysvolacl) Tệp "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", dòng 1787, trong provision_fill next_rid=next_rid, dc_rid=dc_rid) Tệp "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", dòng 1447, trong fill_samdb "KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le')) Tệp "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/common.py", dòng 55, trong setup_add_ldif ldb.add_ldif(data, controls) Tệp "/usr/local/samba/lib64/python2.7/site-packages/samba/__init__.py", dòng 225, trong add_ldif self.add(msg, controls)[root@samba4 samba]#
Sẽ có một số lỗi khi chúng tôi thực hiện việc cung cấp miền.

Để khắc phục chúng, vui lòng bình luận dòng bên dưới trong /etc/krb5.conf.
Mã:
-------- #includedir /etc/krb5.conf.d/ --------
Chạy lại lệnh cung cấp tên miền và bây giờ tên miền sẽ được tạo mà không có lỗi.
Mã:
[root@samba4 etc]# samba-tool domain provision --use-rfc2307 --interactiveRealm [SUNIL.CC]: Tên miền [SUNIL]: Vai trò máy chủ (dc, thành viên, độc lập) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: Địa chỉ IP chuyển tiếp DNS (viết 'none' để tắt chuyển tiếp) [4.2.2.1]:Mật khẩu quản trị viên:Nhập lại mật khẩu:Đang tra cứu địa chỉ IPv4Đang tra cứu địa chỉ IPv6Sẽ không chỉ định địa chỉ IPv6Đang thiết lập secrets.ldbThiết lập sổ đăng kýThiết lập cơ sở dữ liệu đặc quyềnThiết lập cơ sở dữ liệu idmapThiết lập cơ sở dữ liệu SAMThiết lập phân vùng và cài đặt sam.ldbThiết lập rootDSE sam.ldbTải trước lược đồ Samba 4 và ADThêm DomainDN: DC=sunil,DC=ccThêm vùng chứa cấu hìnhThiết lập lược đồ sam.ldbThiết lập dữ liệu cấu hình sam.ldbThiết lập các chỉ định hiển thịSửa đổi các chỉ định hiển thịThêm vùng chứa người dùngSửa đổi vùng chứa người dùngThêm vùng chứa máy tínhSửa đổi vùng chứa máy tínhThiết lập dữ liệu sam.ldbThiết lập các nguyên tắc bảo mật nổi tiếngThiết lập người dùng và nhóm sam.ldbThiết lập tự tham giaThêm tài khoản DNSTạo CN=MicrosoftDNS,CN=System,DC=sunil,DC=ccTạo phân vùng DomainDnsZones và ForestDnsZonesĐiền phân vùng DomainDnsZones và ForestDnsZonesThiết lập sam.ldb rootDSE đánh dấu là đã đồng bộSửa GUID cung cấpCấu hình Kerberos phù hợp với Samba AD đã được tạo tại /usr/local/samba/private/krb5.confThiết lập cài đặt máy chủ yp giảSau khi các tệp trên được cài đặt, máy chủ Samba4 của bạn sẽ sẵn sàng để sử dụngVai trò máy chủ: bộ điều khiển miền active directoryTên máy chủ: samba4Miền NetBIOS: SUNILMiền DNS: sunil.ccMiền SID: S-1-5-21-2936486394-2075362935-551615353[root@samba4 v.v.]#
Đảm bảo các cổng được mở trong tường lửa.
Mã:
[root@samba4 v.v.]#firewall-cmd --add-port=53/tcp --permanent;firewall-cmd --add-port=53/udp --permanent;firewall-cmd --add-port=88/tcp --permanent;firewall-cmd --add-port=88/udp --permanent; \firewall-cmd --add-port=135/tcp --permanent;firewall-cmd --add-port=137-138/udp --permanent;firewall-cmd --add-port=139/tcp --permanent; \firewall-cmd --add-port=389/tcp --permanent;firewall-cmd --add-port=389/udp --permanent;firewall-cmd --add-port=445/tcp --permanent; \firewall-cmd --add-port=464/tcp --permanent;firewall-cmd --add-port=464/udp --permanent;firewall-cmd --add-port=636/tcp --permanent; \firewall-cmd --add-port=1024-5000/tcp --permanent;firewall-cmd --add-port=3268-3269/tcp --permanent[root@samba4 ~]# firewall-cmd --reload
Tạo một tập lệnh khởi động để tự động khởi động dịch vụ trong quá trình khởi động lại.
Mã:
[root@samba4 ~]# cat /etc/systemd/system/samba.service[Unit]Description= Samba 4 Active DirectoryAfter=syslog.targetAfter=network.target[Service]Type=forkingPIDFile=/usr/local/samba/var/run/samba.pidExecStart=/usr/local/samba/sbin/samba[Install]WantedBy=multi-user.target[root@samba4 ~]#[root@samba4 ~]# systemctl enable sambaĐã tạo liên kết tượng trưng từ /etc/systemd/system/multi-user.target.wants/samba.service đến /etc/systemd/system/samba.service.[root@samba4 ~]# systemctl start samba

Thêm máy chủ Windows vào miền​

192.168.1.191 remote management win 10

Đảm bảo máy chủ được thêm bằng địa chỉ ipad tĩnh.



Thêm máy chủ vào miền.







Để quản lý Samba4 từ Windows, chúng ta cần cài đặt Microsoft Remote Server Tools (RSAT).

Trang wiki có các liên kếthttps://wiki.samba.org/index.php/Installing_RSAT

Cài đặt công cụ RSAT trong Windows 10​

Chạy trình cài đặt.









Sau khi khởi động lại, hãy vào Run và nhập dsa.msc



Nhấp vào tên miền sunil.cc và nhấp chuột phải vào new -> Người dùng.



Tạo người dùng thử nghiệm.




Xác thực máy khách bằng Samba 4 trên CentOS 7​

192.168.1.22 - Xác thực máy khách trên CentOS 7

Cài đặt các gói:
Mã:
[root@centos7 ~]# yum -y install realmd sssd oddjob oddjob-mkhomedir adcli samba-common
Kiểm tra kết nối với samba4:
Mã:
[root@centos7 ~]# realm discover SUNIL.CCsunil.cc type: kerberos realm-name: SUNIL.CC domain-name: sunil.cc configure: kerberos-member server-software: active-directory client-software: sssd required-package: oddjob required-package: oddjob-mkhomedir required-package: sssd required-package: adcli required-package: samba-common-tools login-formats: %U login-policy: allow-realm-logins[root@centos7 ~]#
Tham gia miền.
Mã:
[root@centos7 ~]# realm join SUNIL.CCMật khẩu cho Quản trị viên:[root@centos7 ~]#
Kiểm tra xem chúng ta có thể lấy được người dùng từ samba4 hay không.
Mã:
[root@centos7 ~]# id SUNIL\\testuseruid=1570001104([emailprotected]) gid=1570000513(domain [emailprotected]) groups=1570000513(domain [emailprotected])[root@centos7 ~]#
Cấu hình sssd.
Mã:
[root@centos7 ~]# cat /etc/sssd/sssd.conf[sssd]domains = sunil.ccconfig_file_version = 2services = nss, pam[domain/sunil.cc]ad_domain = sunil.cckrb5_realm = SUNIL.CCrealmd_tags = manage-system joined-with-sambacache_credentials = Trueid_provider = adkrb5_store_password_if_offline = Truedefault_shell = /bin/bashldap_id_mapping = Trueuse_fully_qualified_names = Truefallback_homedir = /home/%u@%daccess_provider = ad[root@centos7 ~]#
Khởi động lại sssd.
Mã:
[root@centos7 ~]# systemctl restart sssd[root@centos7 ~]# systemctl enable sssd
Kiểm tra người dùng.
Mã:
[root@centos7 ~]# id [emailprotected]uid=1570001105([emailprotected]) gid=1570000513(domain [emailprotected]) groups=1570000513(domain [emailprotected]),1570000512(domain [emailprotected]),1570000572(denied rodc password replication [emailprotected])[root@centos7 ~]#
Để lấy người dùng không có tên miền.
Mã:
[root@centos7 ~]# vim /etc/sssd/sssd.conf----------------------use_fully_qualified_names = False----------------------
Khởi động lại sssd và kiểm tra lệnh id.
Mã:
[root@centos7 ~]# systemctl restart sssd[root@centos7 ~]# id sambauseruid=1570001105(sambauser) gid=1570000513(domain users) groups=1570000513(domain users),1570000512(domain admins),1570000572(denied rodc password replication group)[root@centos7 ~]#

Xác thực máy khách bằng Samba 4 trên CentOS 6​

192.168.1.192 - Xác thực máy khách trên CentOS 6.

Cài đặt các gói.
Mã:
[root@centos6 db]# yum install pam pam_ldap pam_krb5 sssd sssd-ldap sssd-common authconfig oddjob oddjob-mkhomedir openldap openldap-clients krb5-workstation adcli -y
Thay đổi tệp cấu hình kerberos.
Mã:
[root@centos6 db]# cat /etc/krb5.conf[logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log[libdefaults] default_realm = SUNIL.CC dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true[realms] SUNIL.CC = { kdc = samba4.sunil.cc admin_server = samba4.sunil.cc }[domain_realm] .sunil.cc = SUNIL.CC sunil.cc = SUNIL.CC[root@centos6 db]#
Chúng ta sẽ sử dụng lệnh adcli để tham gia miền.
Mã:
[root@centos6 db]# adcli info sunil.cc[domain]domain-name = sunil.ccdomain-short = SUNILdomain-forest = sunil.ccdomain-controller = samba4.sunil.ccdomain-controller-site = Default-First-Site-Namedomain-controller-flags = pdc gc ldap ds kdc timeserv có thể ghi gần nhất good-timeserv full-secretdomain-controller-usable = yesdomain-controllers = samba4.sunil.cc[computer]computer-site = Default-First-Site-Name[root@centos6 db]#[root@centos6 db]# adcli join sunil.ccMật khẩu cho [emailprotected]:[root@centos6 db]#
Đảm bảo rằng vé kerberos đã được tạo.
Mã:
[root@centos6 db]# klist -ke
Cấu hình xác thực.
Mã:
[root@centos6 db]# authconfig --enablesssd --enablesssdauth --enablemkhomedir --update
Sửa đổi cấu hình sssd ngay bây giờ để thực hiện xác thực.
Mã:
[root@centos6 db]# cat /etc/sssd/sssd.conf[sssd]services = nss, pam, ssh, autofsconfig_file_version = 2domains = sunil.cc[domain/sunil.cc]id_provider = ad# Bỏ ghi chú nếu chức năng khám phá dịch vụ không hoạt động# ad_server = server.win.example.comdefault_shell = /bin/bashfallback_homedir = /home/%u[root@centos6 db]#
Khởi động lại dịch vụ sssd.
Mã:
[root@centos6 db]# chkconfig sssd on[root@centos6 db]# service sssd restartDừng sssd: [OK]Đang khởi động sssd: [OK][root@centos6 db]#
Đang xác thực người dùng.
Mã:
[root@centos6 db]# id sambauseruid=1570001105(sambauser) gid=1570000513(người dùng miền) groups=1570000513(người dùng miền),1570000512(quản trị viên miền),1570000572(nhóm sao chép mật khẩu rodc bị từ chối)[root@centos6 db]#
 
Back
Bên trên