Chuyển tới nội dung

Active Driectory with SAMBA4

1. Tổng quan hệ thống

Vai tròHostnameIPOS
PDCpdc.abc.local10.1.1.1Ubuntu 22.04
BDCbdc.abc.local10.1.1.2Ubuntu 22.04

2. Cài đặt Samba 4 và BIND9_DLZ

Trên cả PDC và BDC:

sudo apt update
sudo apt install -y

sudo 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ường
echo '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.options
options {
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 quan
chown 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 AppArmor
apparmor_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 & restart
ls -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