1. Tổng quan hệ thống
Vai trò | Hostname | IP | OS |
PDC | pdc.abc.local | 10.1.1.1 | Ubuntu 22.04 |
BDC | bdc.abc.local | 10.1.1.2 | Ubuntu 22.04 |
2. Cài đặt Samba 4 và BIND9_DLZ
Trên cả PDC và BDC:
sudo apt update
sudo apt install -ysudo apt install -y
build-essential libacl1-dev libattr1-dev libblkid-dev libgnutls28-dev \
libreadline-dev python3-dev python3-dnspython gdb pkg-config \
libpopt-dev libldap2-dev dnsutils libbsd-dev attr krb5-user \
docbook-xsl libcups2-dev acl libnss-winbind libpam-winbind winbind \
libsystemd-dev libjansson-dev python3-cryptography python3-markdown \
libtirpc-dev libgpgme-dev liblmdb-dev libcmocka-dev \
krb5-user bind9 bind9utils dnsutils libnss-winbind libpam-winbind \winbind smbclient acl attr chrony ntpdate apparmor-utils
Tải source Samba
cd /usr/src
wget https://download.samba.org/pub/samba/stable/samba-4.20.1.tar.gz
tar -xvzf samba-4.20.1.tar.gz
cd samba-4.20.1
./configure
--enable-debug
--enable-selftest
--with-systemd
--prefix=/opt/samba
make -j$(nproc)
sudo make install
Cấu hình biến môi trườngecho 'export PATH=/opt/samba/bin:/opt/samba/sbin:$PATH' >> ~/.bashrc
source ~/.bashrc
Tạo domain mới (trên PDC)/opt/samba/bin/samba-tool domain provision
--realm=ABC.LOCAL
--domain=ABC
--adminpass='StrongAdminPass123!'
--use-rfc2307
--server-role=dc
--dns-backend=BIND9_DLZ
smb.conf được tạo tại: /opt/samba/etc/smb.conf
Cấu hình BIND9 sử dụng DLZ module của Samba
Thêm vào /etc/bind/named.conf
hoặc named.conf.local
:include "/opt/samba/bind-dns/named.conf";
Nếu folder này chưa có:/opt/samba/sbin/samba_upgradedns --dns-backend=BIND9_DLZ
Sửa quyền và AppArmor (nếu bật)chown -R root:bind /opt/samba/private
sudo chmod 640 /opt/samba/private
chown -R root:bind /opt/samba/bind-dns
sudo chmod 640 /opt/samba/private
chown root:bind /opt/samba/private/dns.keytab
chmod 640 /opt/samba/private/dns.keytab
sudo chown root:bind /opt/samba/lib/bind9/dlz_bind9_18.so
sudo chmod 755 /opt/samba/lib/bind9/dlz_bind9_18.so
Cấu hình named.conf.optionsoptions {
directory "/var/cache/bind";
forwarders {
8.8.8.8;
};
allow-query { any; };
auth-nxdomain no;
listen-on-v6 { any; };
};
Tạo service samba-ad-dc/etc/systemd/system/samba-ad-dc.service
[Unit]
Description=Samba AD Daemon
After=network.target
[Service]
Type=forking
ExecStart=/opt/samba/sbin/samba --daemon
ExecStop=/opt/samba/bin/samba-tool process stop PIDFile=/opt/samba/var/run/samba.pid
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reexec
sudo systemctl enable --now samba-ad-dc
3. Kiểm tra PDC
host -t SRV _ldap._tcp.abc.local
host -t A pdc.abc.local
kinit Administrator
samba-tool domain level show
samba-tool drs showrepl
4. Cấu hình BDC từ source
Trên BDC, làm tương tự các bước trên
5. Đồng bộ thời gian và cấu hình DNS
ntpdate pdc.abc.local
Sửa /etc/resolv.conf:
nameserver 10.1.1.1
6. Join domain làm DC
/opt/samba/bin/samba-tool domain join abc.local DC \
--dns-backend=BIND9_DLZ \
--username=Administrator
Kiểm tra với samba-tool drs showrepl
7. Cấu hình BIND9_DLZ tương tự PDC
Chạy samba_upgradedns
Thêm include "/opt/samba/bind-dns/named.conf" vào BIND9 config
Restart dịch vụ
8. Một số vấn đề cần lưu ý:
Phân quyền các file liên quanchown root:bind /opt/samba/private/dns.keytab
chmod 640 /opt/samba/private/dns.keytab
chown -R root:bind /opt/samba/bind-dns
chmod -R 750 /opt/samba/bind-dns
mkdir -p /opt/samba/private/msg.sock
chown root:bin /opt/samba/private/msg.sock
chmod 750 /opt/samba/private/msg.sock
sudo chown root:bind /opt/samba/lib/bind9/dlz_bind9_18.so
sudo chmod 755 /opt/samba/lib/bind9/dlz_bind9_18.so
Cấu hình AppArmor hoặc SELinux (nếu có)
Nếu bạn đang dùng Ubuntu với AppArmor, bạn cần cấp phép cho named truy cập dns.keytab
:
Thêm dòng sau vào /etc/apparmor.d/local/usr.sbin.named:
/opt/samba/private/dns.keytab r,
Sau đó reload lại AppArmor:apparmor_parser -r /etc/apparmor.d/usr.sbin.named
nano /etc/apparmor.d/usr.sbin.named
Thêm dòng cấp quyền đọc Samba bind-dns
:/opt/samba/bind-dns/** r,
/opt/samba/private/** r,
Nạp lại AppArmorapparmor_parser -r /etc/apparmor.d/usr.sbin.named
sudo apt update
sudo apt install apparmor-utils
aa-status | grep named
sudo aa-complain /etc/apparmor.d/usr.sbin.named
Kiểm tra file cần thiết sau khi chạy samba_upgradedns
/opt/samba/sbin/samba_upgradedns --dns-backend=BIND9_DLZ
Rồi xác nhận các file sau:• /opt/samba/bind-dns/named.conf
• /opt/samba/private/dns.keytab
• /etc/bind/named.conf phải include đúng
Trong file /etc/bind/named.conf cần có:
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
include "/opt/samba/bind-dns/named.conf";
Tắt DNS nội bộ của Samba
Trong /opt/samba/etc/smb.conf:
[global]
dns backend = BIND9_DLZ
server services = -dns
Kiểm tra & restartls -l /opt/samba/private/dns.keytab
ls -ld /opt/samba/private/msg.sock
named-checkconf /etc/bind/named.conf
systemctl restart bind9
systemctl restart samba-ad-dc
Mẫu file smb.conf
[global]
log level = 5
netbios name = SRV051-DC01
realm = ABC.LOCAL
server role = active directory domain controller
workgroup = ABC
server services = -dns
ldap server require strong auth = no
tls enabled = yes
idmap_ldb:use rfc2307 = yes
idmap config *:range = 3000000-5000000
idmap config * : backend = tdb
template homedir = /home/%D/%U
template shell = /bin/bash
max open files = 40960
winbind use default domain = true
winbind offline logon = false
winbind nss info = rfc2307
winbind enum users = yes
winbind enum groups = yes
client min protocol = SMB2
client max protocol = SMB3
vfs objects = acl_xattr full_audit
# Time settings
time server = yes
ntlm auth = mschapv2-and-ntlmv2-only
[sysvol]
path = /opt/samba/var/locks/sysvol
read only = No
[netlogon]
path = /opt/samba/var/locks/sysvol/abc.local/scripts
read only = No