Chào mừng bạn đến với hướng dẫn chi tiết về cách join VPS Linux vào AD bằng realmd. Nếu bạn đã từng mệt mỏi với việc cấu hình hàng chục file phức tạp của Winbind, thì realmd chính là giải pháp “hiện đại” và tự động mà bạn đang tìm kiếm.
Chúng tôi sẽ hướng dẫn bạn qua 7 bước thực thi rõ ràng để tích hợp máy chủ Ubuntu hoặc CentOS vào Active Directory (AD) một cách nhanh chóng và ổn định nhất.
Lợi ích khi join VPS Linux vào Active Directory (AD)
Tích hợp VPS Linux vào AD không chỉ là một thử nghiệm kỹ thuật. Nó mang lại lợi ích quản trị khổng lồ, đặc biệt là trong môi trường doanh nghiệp.
- Quản lý định danh tập trung: Bạn không cần tạo tài khoản user local trên từng máy chủ Linux. Mọi tài khoản người dùng đều được quản lý tại một nơi duy nhất là AD.
- Xác thực thống nhất (SSO): Người dùng chỉ cần nhớ một mật khẩu (mật khẩu Windows) để đăng nhập vào cả máy tính Windows và VPS Linux.
- Tuân thủ chính sách (Policies): Bạn có thể áp dụng các chính sách mật khẩu, quy tắc truy cập và kiểm soát bảo mật từ AD xuống thẳng các máy chủ Linux.
So sánh “nhanh”: Realmd (SSSD) vs. Winbind (Samba)
Đây là lý do chính khiến realmd là lựa chọn ưu tiên tuyệt đối hiện nay. Trong nhiều năm, Winbind (một phần của bộ Samba) là cách phổ biến. Nhưng nó thật sự phức tạp và dễ gặp lỗi.
Winbind (Cách cũ):
- Thủ công: Bạn phải tự tay chỉnh sửa hàng loạt file:
/etc/samba/smb.conf,/etc/krb5.conf,/etc/nsswitch.conf, và các file PAM. - Phức tạp: Cấu hình dễ sai sót, khó gỡ rối, và mỗi bản phân phối (distro) lại có chút khác biệt. Nếu bạn muốn tham khảo phương pháp này, chúng tôi cũng có bài viết chi tiết về cách join VPS Linux vào AD sử dụng Samba/Winbind.
- Kém ổn định: Winbind ban đầu được thiết kế để chia sẻ file, việc dùng nó cho xác thực giống như một “giải pháp tình thế” hơn là một giải pháp chuyên dụng.
Realmd (Cách mới – Chủ đề chính):
- Tự động 100%:
realmdlà một dịch vụ thông minh. Nó tự động phát hiện thông tin AD của bạn qua DNS. - Một lệnh duy nhất: Bạn chỉ cần lệnh
realm join.realmdsẽ tự động cấu hình SSSD (System Security Services Daemon) ở hậu trường. - Giải pháp chuyên dụng: SSSD được thiết kế chuyên biệt cho việc xác thực. Nó ổn định, hỗ trợ cache (đăng nhập offline), và là tiêu chuẩn hiện đại trên Linux.
Nói đơn giản: realmd làm thay bạn toàn bộ công việc cấu hình thủ công nhàm chán mà Winbind yêu cầu.
Chuẩn bị “chiến trường” (Điều kiện tiên quyết)
Trước khi gõ bất kỳ lệnh cài đặt nào, bạn phải đảm bảo môi trường mạng và máy chủ của mình sẵn sàng. 90% lỗi xảy ra đều do chuẩn bị không kỹ ở phần này.
Các yêu cầu bắt buộc
- VPS Linux: Một máy chủ đã cài đặt Ubuntu (20.04/22.04+) hoặc CentOS/RHEL (7/8/9+). Bạn nên thực hiện các bước tối ưu VPS Ubuntu 24.04 cơ bản trước khi bắt đầu.
- Thông tin AD: Bạn phải biết tên miền AD (ví dụ:
ad.example.com) và tên (hoặc IP) của một máy Domain Controller (DC). - Tài khoản Admin: Cần một tài khoản AD có quyền join máy vào domain (thường là nhóm
Domain Adminshoặc tài khoản được ủy quyền). - Kết nối mạng: VPS phải “thấy” (ping) được máy chủ Domain Controller.
Cấu hình “sống còn”: DNS, Hostname và NTP
Đây là bước quan trọng nhất. realmd hoạt động dựa trên việc tự động phát hiện (discovery) dịch vụ AD, và nó dùng DNS để làm điều đó.
1. Cấu hình DNS:
Máy chủ Linux của bạn BẮT BUỘC phải sử dụng DNS của Domain Controller. Bạn có thể tham khảo hướng dẫn cách định cấu hình DNS trong Ubuntu/Debian, CentOS/Fedora chi tiết của chúng tôi.
- Ubuntu (dùng netplan): Sửa file YAML trong
/etc/netplan/.network: ethernets: eth0: dhcp4: no addresses: [192.168.1.100/24] # IP của VPS gateway4: 192.168.1.1 nameservers: addresses: [10.10.10.5] # IP MÁY CHỦ AD (DC)Sau đó chạy:
sudo netplan apply - CentOS (dùng NetworkManager): Sửa file
ifcfg(ví dụ/etc/sysconfig/network-scripts/ifcfg-eth0) và thêm:DNS1="10.10.10.5" # IP MÁY CHỦ AD (DC) PEERDNS="yes"Sau đó chạy:
sudo systemctl restart NetworkManager
2. Kiểm tra DNS:
Sau khi cấu hình, hãy kiểm tra kỹ lưG. Lệnh nslookup này phải trả về thông tin SRV records, nếu thất bại, realmd chắc chắn sẽ thất bại.
# Lệnh này phải trả về IP của AD
ping ad.example.com
# Lệnh này phải trả về các dịch vụ Kerberos
nslookup -type=SRV _kerberos._tcp.ad.example.com
3. Đồng bộ thời gian (NTP):
Xác thực Kerberos (cốt lõi của AD) cực kỳ nhạy cảm về thời gian. Nếu thời gian trên VPS Linux và máy chủ AD lệch nhau quá 5 phút, xác thực sẽ thất bại. Hãy cài đặt chrony và trỏ nó về DC.
# Cài đặt (ví dụ trên Ubuntu)
sudo apt install chrony
# Sửa file /etc/chrony/chrony.conf trỏ về AD
# server ad.example.com iburst
sudo systemctl restart chrony
7 bước join VPS Linux vào AD
Sau khi đã hoàn tất mọi yêu cầu ở Phần 2, giờ là lúc thực thi.
Bước 1: Cài đặt các gói tin cần thiết (realmd & SSSD)
Chúng ta cần cài đặt realmd (công cụ điều phối) và sssd (dịch vụ xác thực) cùng các gói hỗ trợ.
Trên Ubuntu/Debian:
sudo apt update
sudo apt install realmd sssd sssd-tools sssd-ad adcli krb5-user packagekit
Trên CentOS/RHEL (7/8/9):
CentOS/RHEL cần thêm các gói oddjob để tự tạo thư mục home và authselect để cấu hình PAM.
# Dùng 'dnf' cho CentOS 8/9+
sudo dnf install realmd sssd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation authselect-compat
# Dùng 'yum' cho CentOS 7
sudo yum install realmd sssd oddjob oddjob-mkhomedir adcli samba-common samba-common-tools krb5-workstation
Bước 2: Khám phá (Discover) Domain AD
Đây là bước kiểm tra xem cấu hình DNS (ở Phần 2) của bạn đã đúng hay chưa.
sudo realm discover AD.EXAMPLE.COM
Nếu thành công, bạn sẽ thấy output tương tự như sau, cho thấy realmd đã tìm thấy domain và nhận diện đúng là “active-directory”.
ad.example.com
type: kerberos
realm-name: AD.EXAMPLE.COM
domain-name: ad.example.com
configured: no
server-software: active-directory
client-software: sssd
#... và các gói khác
Bước 3: Lệnh “thần thánh” – Join Domain
Đây là bước join VPS Linux vào AD bằng realmd. Bạn chỉ cần chạy 1 lệnh và nhập mật khẩu của tài khoản Admin AD khi được hỏi.
sudo realm join --user=administrator AD.EXAMPLE.COM
Lệnh này tự động làm gì? Nó tạo file /etc/sssd/sssd.conf, /etc/krb5.conf, tạo keytab cho máy, cấu hình PAM và khởi động dịch vụ sssd.
Mẹo nâng cao khi join:
- Join vào OU cụ thể: Mặc định VPS sẽ nằm trong Computers. Dùng cờ
--computer-ouđể chỉ định vị trí:sudo realm join --user=administrator --computer-ou="OU=LinuxServers,DC=ad,DC=example,DC=com" AD.EXAMPLE.COM- Dùng POSIX Attributes có sẵn: Nếu AD của bạn đã định nghĩa
uidNumbervàgidNumbercho user, hãy tắt ID mapping tự động:sudo realm join --automatic-id-mapping=no AD.EXAMPLE.COM
Bước 4: Kiểm tra trạng thái join và xác thực
Bạn cần xác nhận VPS đã gia nhập domain ở cả hai phía (Linux và Windows).
1. Kiểm tra trên VPS Linux:
Dùng realm list để xem trạng thái. Dòng configured: ...configured-by-sssd là tín hiệu thành công.
sudo realm list
2. Kiểm tra trên Windows AD Server:
Mở Active Directory Users and Computers (ADUC) trên DC. Di chuyển đến mục Computers (hoặc OU bạn đã chỉ định). Bạn sẽ thấy tên hostname của VPS Linux xuất hiện trong danh sách này.
3. Kiểm tra User (Rất quan trọng):
Dùng lệnh getent (công cụ chuẩn để truy vấn NSS) để xem SSSD đã “thấy” user hay chưa.
# Lệnh này phải trả về thông tin user
getent passwd [email protected]
Hoặc dùng lệnh id để xem nhanh UID, GID và các Group mà user thuộc về:
id [email protected]
4. Kiểm tra Kerberos (Nâng cao):
Nếu bạn đã cài krb5-user, hãy đăng nhập (ví dụ: su - [email protected] hoặc dùng phần mềm PuTTY) và chạy:
klist: Lệnh này sẽ hiển thị vé Kerberos (TGT) bạn vừa nhận được, chứng tỏ xác thực thành công.smbclient -k -L <ten_may_DC>: Lệnh này dùng vé Kerberos để liệt kê các ổ đĩa chia sẻ trên DC, xác nhận vé của bạn hợp lệ.
Bước 5: Tinh chỉnh SSSD (Bắt buộc để dễ sử dụng)
realm join đã làm 90% công việc. 10% còn lại là các tinh chỉnh “chất lượng cuộc sống” (quality-of-life) sau.
1. Kích hoạt tự động tạo thư mục Home:
Đây là bước cực kỳ quan trọng mà realmd không tự làm.
- Trên Ubuntu/Debian: Dùng
pam-auth-updateđể bật modulemkhomedir.sudo pam-auth-update --enable mkhomedirMột giao diện sẽ hiện lên, dùng phím cách (Space) để đánh dấu
[*]Create home directory on loginrồi chọn OK. - Trên CentOS/RHEL 8/9+: Dùng
authselect(công cụ chuẩn mới).sudo authselect select sssd with-mkhomedir # Sau đó, áp dụng thay đổi sudo authselect apply-changes
2. Tinh chỉnh file sssd.conf (Tên ngắn & tối ưu):
Mở file cấu hình SSSD: sudo nano /etc/sssd/sssd.conf. Tìm đến phần [domain/ad.example.com] và thêm/sửa các dòng sau:
# ... (các dòng khác) ...
# 1. (Tùy chọn) Cho phép login bằng "user_ad" thay vì "[email protected]"
use_fully_qualified_names = False
# 2. (Bắt buộc) Đặt đường dẫn home mặc định (phòng trường hợp pam không chạy)
fallback_homedir = /home/%u
# 3. (Nâng cao) Tối ưu cho môi trường lớn: Chỉ kết nối đến DC tại site gần nhất
ad_site = TenSiteCuaBan
Cảnh báo an toàn (Multi-domain Forest):
Việc đặt
use_fully_qualified_names = Falserất tiện lợi, nhưng chỉ nên dùng nếu bạn ở trong môi trường single-domain.Nếu hệ thống AD của bạn lớn và có nhiều domain con tin cậy (trusted domains), hãy giữ nguyên giá trị mặc định là
True. Việc này bắt buộc người dùng đăng nhập bằng[email protected], giúp tránh xung đột và nhầm lẫn danh tính.
3. Khởi động lại SSSD:
Sau khi đã chỉnh sửa, hãy khởi động lại sssd để áp dụng mọi thay đổi.
sudo systemctl restart sssd
Bây giờ, hãy thử getent passwd user_ad (không cần đuôi domain). Nếu nó hoạt động, bạn đã thành công!
Bước 6: Cấp quyền Sudo cho User/Group AD
Mặc định, user AD khi đăng nhập chỉ là user thường. Để họ có thể chạy sudo, bạn có hai cách:
Cách 1: Dùng realm permit (Khuyến nghị)
Đây là cách làm “hiện đại” và an toàn nhất, SSSD sẽ tự động quản lý quyền.
# Cấp quyền sudo cho MỘT user cụ thể
sudo realm permit [email protected]
# Cấp quyền sudo cho MỘT NHÓM AD cụ thể
sudo realm permit -g "Domain Admins"
sudo realm permit -g "Linux [email protected]"
Cách 2: Dùng visudo (Cách truyền thống)
Chạy lệnh sudo visudo và thêm một trong các dòng sau vào cuối file (dùng dấu % cho nhóm):
# Cấp quyền cho nhóm "Linux Admins" (phải thêm dấu \ nếu có khoảng trắng)
%Linux\ Admins ALL=(ALL) ALL
Bước 7: Khắc phục sự cố (Lỗi SSH & Cache)
Nếu bạn gặp lỗi, 99% là do 4 nguyên nhân sau:
- Lỗi DNS (Phổ biến nhất):
- Triệu chứng: Lệnh
realm discoverthất bại, báo “domain not found”. - Giải pháp: Quay lại Phần 2. Kiểm tra file
/etc/resolv.conf. Đảm bảo DNS chỉ trỏ về Domain Controller. Nếu vẫn gặp lỗi, hãy dùng các công cụ khắc phục sự cố DNS trên Linux.
- Triệu chứng: Lệnh
- Lỗi đồng bộ thời gian (NTP):
- Triệu chứng:
realm discoverthành công, nhưngrealm jointhất bại với lỗi “Kerberos error” hoặc “Clock skew too great”. - Giải pháp: Cài
chrony. Đảm bảo thời gian trên VPS Linux và DC lệch nhau không quá 5 phút.
- Triệu chứng:
- Lỗi SSSD Cache (Không thấy user):
- Triệu chứng: Bạn đã join thành công, nhưng
getent passwd user_adbáo “no such user”. - Giải pháp: SSSD có thể đang lưu cache cũ. Hãy xóa cache để buộc nó lấy dữ liệu mới.
- Cách 1 (Nhẹ nhàng):
sudo sssctl cache-remove - Cách 2 (Mạnh tay):
sudo systemctl stop sssd && sudo rm -f /var/lib/sss/db/* && sudo systemctl start sssd
- Cách 1 (Nhẹ nhàng):
- Triệu chứng: Bạn đã join thành công, nhưng
- Lỗi SSH (Không thể login bằng mật khẩu):
- Triệu chứng:
getentthấy user, nhưng khi SSH bằng mật khẩu thì bị “Permission denied”. - Giải pháp: SSSD đã chạy đúng, nhưng SSH server đang chặn login bằng mật khẩu. Đây là một bước quan trọng trong bảo mật VPS Linux với UFW, Fail2Ban và Hardening SSH. Mở file
sudo nano /etc/ssh/sssd_configvà đảm bảo bạn đã bật:PasswordAuthentication yes - Sau đó, khởi động lại SSH:
sudo systemctl restart sshd.
- Triệu chứng:
Quản trị nâng cao và rời Domain
Tích hợp Group Policy (GPO) với SSSD/ADSys
Sau khi join, bạn có thể muốn AD “điều khiển” các máy Linux này (ví dụ: ép cấm login, chạy script…).
- Trên RHEL/CentOS: SSSD có thể đọc một phần GPO. Bạn có thể kích hoạt nó trong
sssd.confvới dòngad_gpo_access_control = enforcing. - Trên Ubuntu: Canonical phát triển một GPO client chuyên dụng gọi là ADSys. Bạn có thể cài đặt
adsysđể áp dụng các chính sách GPO từ AD lên máy Ubuntu. - Tích hợp Squid: Sau khi join AD, bạn còn có thể tích hợp Squid với Active Directory để yêu cầu người dùng xác thực AD khi dùng proxy.
Cách rời (Leave) Domain
Nếu bạn muốn gỡ VPS ra khỏi domain, realmd cũng cung cấp một lệnh đơn giản.
sudo realm leave AD.EXAMPLE.COM
Mẹo: Dùng cờ --remove để realmd thử xóa luôn Computer Object trên AD (sẽ hỏi mật khẩu admin):
sudo realm leave --user=administrator --remove AD.EXAMPLE.COM
Câu hỏi thường gặp (FAQ)
1. Realmd là gì và tại sao nó tốt hơn Winbind?
realmd là một dịch vụ hiện đại trên Linux dùng để tự động phát hiện và tham gia (join) các domain như Active Directory. Nó tốt hơn Winbind vì realmd tự động hóa 100% quá trình cấu hình SSSD, Kerberos và PAM chỉ bằng một lệnh. Ngược lại, Winbind yêu cầu cấu hình thủ công nhiều file, phức tạp và dễ phát sinh lỗi.
2. SSSD là gì? Nó liên quan gì đến realmd?
SSSD (System Security Services Daemon) là dịch vụ cốt lõi, chịu trách nhiệm liên tục giao tiếp với AD để xác thực người dùng, lấy thông tin group, và cache dữ liệu.
realmd chỉ là công cụ “điều phối” ban đầu. Nó tự động phát hiện AD và viết file cấu hình cho SSSD. Sau khi join xong, sssd chính là dịch vụ chạy chính để xử lý mọi yêu cầu đăng nhập.
3. Join VPS Linux vào AD bằng realmd có an toàn không?
Rất an toàn. Phương pháp này sử dụng Kerberos, giao thức xác thực tiêu chuẩn vàng của Active Directory, dựa trên “vé” (tickets) được mã hóa. realmd và SSSD giao tiếp với AD qua các kênh bảo mật (như LDAP qua GSSAPI), đảm bảo thông tin đăng nhập không bị lộ. Việc này an toàn hơn nhiều so với việc tạo và quản lý từng tài khoản local riêng lẻ trên mỗi VPS.
4. Tôi có thể đăng nhập offline (không có mạng) sau khi join domain không?
Có, bạn có thể. Đây là một trong những tính năng mạnh nhất của SSSD, được gọi là “cached credentials” (bộ đệm xác thực). Sau lần đầu tiên bạn đăng nhập online thành công, SSSD sẽ lưu trữ an toàn (hash) thông tin đăng nhập của bạn. Nếu VPS bị mất kết nối với máy chủ AD, SSSD sẽ sử dụng bộ đệm này để xác thực bạn. realmd thường tự động bật tính năng này (cache_credentials = True).
5. Lỗi phổ biến nhất khi “realm join” thất bại là gì?
Hai lỗi phổ biến nhất là:
- Sai DNS: VPS Linux bắt buộc phải trỏ DNS về máy chủ Domain Controller (AD). Nếu không,
realmdkhông thể “phát hiện” (discover) được domain. - Lệch thời gian (NTP): Xác thực Kerberos (cốt lõi của AD) yêu cầu thời gian trên VPS và máy chủ AD phải đồng bộ. Nếu lệch nhau quá 5 phút, việc join sẽ thất bại với lỗi “Clock skew too great”.
6. Làm cách nào để đăng nhập bằng tên ngắn (ví dụ: “user_ad”) thay vì tên dài (“[email protected]”)?
Bạn có thể làm điều này bằng cách chỉnh sửa file /etc/sssd/sssd.conf. Trong phần [domain/...], hãy tìm hoặc thêm dòng use_fully_qualified_names = False và sau đó khởi động lại SSSD (sudo systemctl restart sssd).
Tuy nhiên, lưu ý rằng trong môi trường có nhiều domain (multi-domain forest), việc này không được khuyến khích vì có thể gây xung đột tên người dùng.
Kết luận
Qua 7 bước chi tiết, bạn có thể thấy realmd và SSSD đã biến một quy trình phức tạp (Winbind) thành một vài lệnh đơn giản. Đây chính là phương pháp “hiện đại” và được khuyến nghị cho mọi hệ thống Linux cần tích hợp vào Active Directory, giúp bạn quản lý tập trung và tăng cường bảo mật.
Sau khi hoàn tất, bạn nên xem xét các bước tiếp theo như cấu hình Zabbix Agent để giám sát VPS Linux nhằm theo dõi trạng thái của dịch vụ SSSD và hiệu năng máy chủ.
Bạn đang tìm kiếm một giải pháp VPS Linux mạnh mẽ, ổn định để tích hợp vào hệ thống Active Directory của doanh nghiệp?
Tại ZingServer, chúng tôi cung cấp dịch vụ VPS cấu hình cao, tối ưu hóa cho cả Ubuntu và CentOS. Đội ngũ kỹ thuật của chúng tôi luôn sẵn sàng hỗ trợ 24/7, đảm bảo việc tích hợp hệ thống của bạn diễn ra mượt mà.
Liên hệ ngay hôm nay để nhận tư vấn về gói VPS phù hợp nhất!
Tài liệu tham khảo
- Integrating RHEL systems directly with Windows Active Directory | Red Hat Enterprise Linux | 10 | Red Hat Documentation
- How to set up SSSD with Active Directory – Ubuntu Server documentation
- Joining AD Domain – sssd.io
- man realm (8): Manage enrollment in realms
- man sssd.conf (5): the configuration file for SSSD



