So sánh các giải pháp tích hợp Linux vào Active Directory
Quản trị tài khoản cục bộ trên hàng chục máy chủ Linux riêng lẻ rất dễ gây sót quyền. Khi một nhân sự nghỉ việc, việc đăng nhập từng máy chủ để xóa tài khoản cục bộ vừa mất thời gian, vừa tiềm ẩn rủi ro bảo mật nghiêm trọng. Tận dụng hạ tầng Active Directory (AD) sẵn có để quản lý định danh tập trung là giải pháp hợp lý nhất.
Khi cần kết nối Fedora Server vào domain Windows, quản trị viên thường đứng trước ba lựa chọn:
- Dùng Winbind (Samba stack): Phương pháp cổ điển gắn liền với Samba. Winbind giao tiếp với Domain Controller (DC) qua MSRPC và NTLM, thích hợp nhất nếu server của bạn bắt buộc phải chia sẻ file qua giao thức CIFS/SMB.
- Ghép thủ công OpenLDAP + Kerberos (krb5) + PAM: Tự tay dựng từng mảnh ghép. Kerberos chịu trách nhiệm xác thực danh tính (authentication), LDAP đảm nhận truy vấn danh sách user/group (authorization), sau đó gắn kết vào Linux qua PAM và NSS.
- Kết hợp realmd và SSSD (System Security Services Daemon): Giải pháp hiện đại chuẩn hóa bởi Red Hat. Công cụ
realmdtự động hóa toàn bộ quá trình tìm kiếm và join domain. Ở tầng dưới, daemonsssdđảm nhận việc duy trì phiên, truy vấn định danh và tạo bộ nhớ đệm (cache) cục bộ.
Ưu và nhược điểm của từng phương án
1. Winbind
Ưu điểm: Tương thích rất tốt với các chia sẻ file Samba phức tạp và các hệ thống cũ còn dùng NTLMv2.
Nhược điểm: File cấu hình smb.conf nặng nề và phức tạp. Khi domain chứa trên 10.000 object, tốc độ phân giải user qua Winbind thường suy giảm rõ rệt.
2. Cấu hình thủ công OpenLDAP và Kerberos
Ưu điểm: Cho phép kiểm soát chi tiết từng thuộc tính schema theo nhu cầu đặc thù.
Nhược điểm: Rủi ro cấu hình sai rất cao. Bạn phải chỉnh sửa hàng loạt file như /etc/krb5.conf, /etc/nsswitch.conf và thư mục /etc/pam.d/. Chỉ cần một cú pháp PAM sai sót, toàn bộ kết nối SSH vào server có thể bị khóa cứng ngay lập tức.
3. Bộ đôi realmd và SSSD
Ưu điểm: Thao tác cực kỳ ngắn gọn. Bạn chỉ cần chạy đúng một câu lệnh để hoàn tất gia nhập domain. Toàn bộ file cấu hình cho Kerberos và SSSD sẽ được tự động tạo chuẩn xác. Quan trọng nhất, SSSD sở hữu tính năng offline cache vượt trội. Kể cả khi đường truyền tới Domain Controller gặp sự cố đứt kết nối, bạn vẫn có thể đăng nhập bằng tài khoản domain bình thường.
Nhược điểm: Phụ thuộc tuyệt đối vào hệ thống DNS nội bộ, đặc biệt là các bản ghi SRV trỏ tới Domain Controller.
Vì sao realmd và SSSD là lựa chọn chuẩn nhất cho Fedora Server?
Fedora đóng vai trò là upstream trực tiếp của Red Hat Enterprise Linux (RHEL). Do đó, các công cụ quản lý định danh lõi như authselect và sssd đều được tích hợp sâu và kiểm thử kỹ lưỡng trên bản phân phối này. Khi join domain qua realmd, hệ thống sẽ tự động cập nhật profile PAM bằng authselect mà không gây xung đột với SELinux policy mặc định.
Dù dựng Fedora làm máy chủ CI/CD runner, môi trường staging hay database nội bộ, bộ đôi realmd + SSSD luôn là lựa chọn ổn định, an toàn và tốn ít công bảo trì nhất.
Hướng dẫn từng bước đưa Fedora Server vào Active Directory
Bước 1: Cấu hình DNS và đồng bộ thời gian (NTP)
Kerberos là giao thức xác thực chính của Active Directory. Giao thức này bắt buộc độ lệch thời gian giữa Fedora Server và Domain Controller không được vượt quá 300 giây (5 phút). Lệch quá mức này, quá trình cấp Kerberos ticket sẽ thất bại.
Đầu tiên, kiểm tra xem máy chủ đã trỏ đúng DNS nội bộ và tìm thấy bản ghi SRV của domain (ví dụ corp.local) hay chưa:
# Kiểm tra DNS server đang sử dụng
resolvectl status
# Truy vấn bản ghi SRV của LDAP và Kerberos
host -t srv _ldap._tcp.corp.local
host -t srv _kerberos._tcp.corp.local
Tiếp theo, kích hoạt đồng bộ thời gian bằng chronyd:
# Bật đồng bộ thời gian qua giao thức NTP
sudo timedatectl set-ntp true
# Xác nhận trạng thái đồng bộ
timedatectl status
Bước 2: Cài đặt các gói phụ trợ
Kho phần mềm chính thức của Fedora đã có sẵn đầy đủ các package cần thiết. Bạn chạy lệnh sau để cài đặt:
sudo dnf install -y realmd sssd oddjob oddjob-mkhomedir adcli samba-common-tools krb5-workstation
Vai trò của các gói chính:
realmd: Điều phối việc dò tìm và thực hiện join domain.sssd: Daemon phụ trách xác thực, nạp cache và giao tiếp PAM/NSS.oddjob-mkhomedir: Tự động khởi tạo thư mục/home/usernamekhi user AD đăng nhập lần đầu.adcli: Thư viện nền tảng thực hiện các thao tác quản trị trực tiếp với Active Directory.
Bước 3: Dò tìm và gia nhập domain
Trước khi kết nối, kiểm tra khả năng nhận diện AD của server bằng lệnh:
sudo realm discover corp.local
Đầu ra lệnh sẽ hiển thị chi tiết domain name, realm name và thông tin các package hỗ trợ. Nếu kết quả hiển thị thông suốt, bạn tiến hành gia nhập domain:
sudo realm join -U Administrator corp.local
Nếu muốn chỉ định máy chủ nằm vào đúng Organizational Unit (OU) theo sơ đồ quản trị của công ty, bạn có thể truyền thêm tham số:
sudo realm join -U Administrator corp.local --computer-ou="OU=Linux Servers,DC=corp,DC=local"
Nhập mật khẩu của tài khoản quản trị domain khi được nhắc. Lệnh kết thúc mà không xuất hiện cảnh báo nghĩa là máy chủ đã được đăng ký thành công thành một Computer Object trong Active Directory.
Bước 4: Kích hoạt tự động tạo Home Directory
User AD khi đăng nhập lần đầu qua SSH cần có sẵn thư mục riêng để lưu profile cá nhân. Trên Fedora, hãy sử dụng authselect để kích hoạt module này an toàn:
# Bật tính năng mkhomedir trên profile sssd
sudo authselect select sssd with-mkhomedir --force
# Kích hoạt service oddjobd chạy cùng hệ thống
sudo systemctl enable --now oddjobd.service
Bước 5: Tối ưu sssd.conf và phân quyền sudo
Mặc định, user cần gõ đầy đủ cú pháp [email protected] khi đăng nhập. Để rút gọn chỉ cần nhập user, bạn chỉnh sửa file cấu hình SSSD:
sudo nano /etc/sssd/sssd.conf
Điều chỉnh hai tham số sau trong section [domain/corp.local]:
# Đăng nhập bằng username ngắn gọn
use_fully_qualified_names = False
# Quy định đường dẫn thư mục home nhất quán
fallback_homedir = /home/%u
SSSD sẽ từ chối khởi động nếu file cấu hình có quyền lỏng lẻo. Hãy siết chặt phân quyền và khởi động lại dịch vụ:
sudo chmod 600 /etc/sssd/sssd.conf
sudo systemctl restart sssd
Tiếp theo, bạn cấp quyền quản trị sudo cho một group trong AD (ví dụ group Linux Admins). Hãy tạo file riêng trong /etc/sudoers.d/ thay vì sửa trực tiếp file /etc/sudoers chính:
sudo visudo -f /etc/sudoers.d/domain_admins
Thêm dòng sau (dùng dấu gạch chéo ngược \ để escape khoảng trắng trong tên group):
%Linux\ Admins ALL=(ALL) ALL
Kiểm tra tính hợp lệ của file cấu hình sudo vừa tạo:
sudo visudo -c -f /etc/sudoers.d/domain_admins
sudo chmod 440 /etc/sudoers.d/domain_admins
Bước 6: Kiểm tra xác thực và kiểm thử Offline Cache
Kiểm tra xem hệ thống đã đọc được thông tin tài khoản từ Active Directory hay chưa:
id devops_user
Lệnh sẽ trả về UID, GID cùng toàn bộ danh sách group AD mà user thuộc về.
Bây giờ, thử SSH vào server bằng tài khoản domain vừa kiểm tra:
ssh devops_user@<IP_FEDORA_SERVER>
Hệ thống sẽ hiển thị dòng thông báo Creating directory '/home/devops_user'. ngay lần đầu truy cập. Chạy tiếp sudo -i để xác nhận quyền root đã hoạt động trơn tru.
Để kiểm tra tính năng Offline Cache, bạn có thể tạm chặn cổng giao tiếp LDAP tới Domain Controller bằng firewall:
sudo iptables -A OUTPUT -p tcp --dport 389 -j DROP
Thử mở một phiên SSH mới với tài khoản domain. Quá trình đăng nhập vẫn diễn ra thành công nhờ thông tin xác thực đã được lưu đệm trong cơ sở dữ liệu của SSSD tại /var/lib/sss/db/. Sau khi thử nghiệm xong, đừng quên xóa quy tắc chặn firewall vừa tạo.

