Ác mộng mang tên “Quản lý User thủ công”
Nếu bạn chỉ đang vận hành 1-2 con Ubuntu Server, việc dùng lệnh adduser mỗi khi có nhân viên mới vẫn còn khá “thảnh thơi”. Tuy nhiên, hãy thử tưởng tượng quy mô hệ thống tăng lên 50 hay 100 server. Lúc này, việc reset mật khẩu cho một dev hay thu hồi quyền truy cập của nhân viên nghỉ việc sẽ tiêu tốn của bạn cả ngày trời. Đó là lý do vì sao mọi Sysadmin chuyên nghiệp đều tìm cách đưa Linux về “chung một nhà” với Windows Active Directory (AD).
Hồi mới vào nghề, mình từng tốn cả tuần chỉ để cấu hình xác thực cho cụm Server Lab. Sau nhiều lần “ăn hành”, mình nhận ra việc tích hợp AD không chỉ giúp quản lý tập trung mà còn là chốt chặn bảo mật cực kỳ quan trọng cho doanh nghiệp.
Nên chọn SSSD hay Samba Winbind?
Để kết nối Linux và AD, chúng ta thường đứng giữa hai sự lựa chọn phổ biến:
- Samba Winbind: Một giải pháp mang tính lịch sử, hoạt động dựa trên giao thức SMB. Winbind khá mạnh nhưng file cấu hình thường dài dằng dặc. Nó cũng hay gặp lỗi định danh UID/GID nếu bạn không nắm vững kiến thức về ID mapping.
- SSSD (System Security Services Daemon): Đây là chuẩn mực hiện đại cho Ubuntu và RHEL. SSSD hỗ trợ caching cực tốt. Điều này giúp user vẫn có thể đăng nhập bình thường ngay cả khi đường truyền tới Domain Controller (DC) bị chập chờn hoặc đứt đoạn.
Vì sao SSSD là “chân ái” cho Sysadmin?
Mình đã triển khai cấu hình này cho môi trường staging chạy Ubuntu 22.04 với khoảng 200 user AD. Kết quả thu được rất khả quan:
Những điểm cộng đáng giá
- Tốc độ phản hồi: Cơ chế caching giúp việc truy vấn user diễn ra gần như tức thì, giảm tải áp lực cho DC.
- File cấu hình tối giản: File
sssd.confchỉ khoảng 20-30 dòng, cực kỳ dễ bảo trì so với đống hỗn độn của Samba. - Bảo mật chuẩn Kerberos: Toàn bộ quá trình xác thực đều tuân thủ các tiêu chuẩn bảo mật doanh nghiệp khắt khe nhất.
Vài lưu ý nhỏ
- Hệ thống DNS phải cực kỳ chuẩn xác (cả A record và PTR record). Chỉ cần DNS “lệch nhịp”, SSSD sẽ dừng hoạt động ngay.
- Cần chú ý kỹ việc mapping UID/GID nếu bạn đang vận hành các hệ thống file share phức tạp.
Quy trình triển khai thực tế
Trong hướng dẫn này, chúng ta sẽ giả định domain là itfromzero.local và Domain Controller (DC) có IP 192.168.1.10.
Bước 1: DNS và Thời gian – Hai yếu tố sống còn
Đừng bao giờ bỏ qua bước này. Giao thức Kerberos cực kỳ nhạy cảm với độ lệch thời gian. Nếu giờ trên Ubuntu và AD lệch nhau quá 300 giây (5 phút), việc join domain sẽ thất bại ngay lập tức.
# Đặt hostname theo chuẩn FQDN
sudo hostnamectl set-hostname ubuntu-server.itfromzero.local
# Cài đặt chrony để đồng bộ thời gian chính xác
sudo apt update && sudo apt install chrony -y
sudo systemctl enable --now chrony
Hãy kiểm tra file /etc/resolv.conf. Đảm bảo nameserver đầu tiên phải là IP của Domain Controller.
Bước 2: Cài đặt bộ công cụ kết nối
Thay vì cài đặt thủ công từng thư viện, chúng ta sẽ dùng realmd để tự động hóa phần lớn công việc nặng nhọc.
sudo apt install -y realmd sssd sssd-tools adcli samba-common-bin packagekit
Bước 3: Gia nhập Domain
Đầu tiên, hãy kiểm tra xem Ubuntu có “thấy” được AD hay không:
realm discover itfromzero.local
Nếu kết quả hiện ra các thông tin về domain, bạn đã đi được 50% chặng đường. Bây giờ, hãy thực hiện lệnh join với tài khoản có quyền Domain Admin:
sudo realm join -U Administrator itfromzero.local
Bước 4: Tối ưu file cấu hình SSSD
Mặc định, bạn sẽ phải gõ [email protected] để đăng nhập. Để rút gọn chỉ còn user, hãy chỉnh sửa file cấu hình sau:
sudo nano /etc/sssd/sssd.conf
Tìm và đổi use_fully_qualified_names = True thành False. Đồng thời, cấu hình tự động tạo thư mục home để user không bị lỗi khi login:
use_fully_qualified_names = False
fallback_homedir = /home/%u
# Lưu ý: File này phải có quyền 0600
sudo chmod 600 /etc/sssd/sssd.conf
sudo systemctl restart sssd
Bước 5: Tự động tạo thư mục Home cho User mới
Để hệ thống tự tạo folder /home/username trong lần đầu đăng nhập, hãy chạy lệnh sau:
sudo pam-auth-update --enable mkhomedir
Kiểm tra thành quả
Xác nhận xem Ubuntu đã nhận diện được user AD chưa bằng lệnh id:
id user_ad_cua_ban
Nếu màn hình hiển thị đầy đủ UID, GID và các Group từ Windows, hệ thống đã sẵn sàng “tiếp chiêu”.
Mẹo nhỏ: Để tránh việc bất kỳ ai có tài khoản AD cũng có thể SSH vào server, bạn nên giới hạn quyền truy cập chỉ cho một nhóm kỹ thuật cụ thể:
sudo realm deny --all
sudo realm permit -g "IT_Admins_Group"
Tóm lại, việc join Ubuntu vào AD không hề khó nếu bạn kiểm soát tốt DNS và thời gian. Chúc các bạn giải phóng được sức lao động và quản lý hệ thống chuyên nghiệp hơn!

