CentOS Stream 9: Cài đặt FreeIPA Client để quản lý 500+ User tập trung

CentOS tutorial - IT technology blog
CentOS tutorial - IT technology blog

Triển khai nhanh: Join Domain trong 3 bước

Bạn vừa dựng xong một con CentOS Stream 9 và muốn nó “ngoan ngoãn” nhận user từ FreeIPA? Nếu các thông số DNS đã chuẩn, hãy dùng ngay bộ lệnh dưới đây. Mình đã lược bỏ các bước rườm rà để bạn tối ưu thời gian nhất có thể.

# 1. Cài đặt gói client cần thiết
sudo dnf install -y freeipa-client

# 2. Map IP server vào file hosts (nếu DNS nội bộ chưa sẵn sàng)
echo "192.168.1.10 ipaserver.itfromzero.local" | sudo tee -a /etc/hosts

# 3. Tiến hành join domain
sudo ipa-client-install --mkhomedir --no-ntp

Sau khi nhập Principal (admin) và Password, nếu thấy dòng Client configuration complete là bạn đã thành công. Tuy nhiên, thực tế triển khai ở các dự án lớn thường phát sinh lỗi DNS hoặc lệch clock. Đừng lo, mình sẽ hướng dẫn bạn xử lý triệt để ngay bên dưới.

Tại sao Sysadmin “nghiện” FreeIPA?

Hãy tưởng tượng bạn quản lý 200 server. Nếu làm thủ công, việc tạo user local và copy SSH key cho từng máy sẽ là một thảm họa. Khi một nhân viên nghỉ việc, bạn mất cả buổi sáng chỉ để thu hồi quyền truy cập. FreeIPA sinh ra để giải quyết nỗi đau đó.

Hệ thống này kết hợp sức mạnh của 389 Directory Server (LDAP), MIT Kerberos (Xác thực) và Dogtag (Chứng chỉ số). Khi một server CentOS 9 gia nhập FreeIPA, nó trở thành một mắt xích trong mạng lưới bảo mật. Chỉ cần một click disable user trên Web UI, quyền truy cập vào toàn bộ cluster sẽ bị cắt đứt ngay lập tức.

Bước 1: Checklist chuẩn bị (Đừng bỏ qua nếu không muốn “ăn hành”)

Tin mình đi, 90% lỗi cài đặt FreeIPA Client đều xuất phát từ DNSThời gian (NTP). Hãy kiểm tra kỹ hai mục này trước khi chạy lệnh install.

Thiết lập Hostname chuẩn FQDN

FreeIPA cực kỳ dị ứng với những hostname ngắn ngủn như localhost hay web-server. Bạn bắt buộc phải dùng FQDN (Fully Qualified Domain Name).

sudo hostnamectl set-hostname client01.itfromzero.local

Kiểm tra phân giải tên miền

Client phải tìm thấy Server thông qua tên miền. Bạn có thể sửa file /etc/resolv.conf trỏ về IP của IPA Server để đảm bảo độ chính xác cao nhất.

# Kiểm tra xem bản ghi Kerberos có tồn tại không
dig -t SRV _kerberos._udp.itfromzero.local

Đồng bộ thời gian với Chrony

Giao thức Kerberos sẽ từ chối xác thực nếu thời gian giữa máy khách và máy chủ lệch quá 300 giây (5 phút). Trên CentOS Stream 9, chronyd là lựa chọn mặc định và ổn định nhất.

sudo systemctl enable --now chronyd
# Ép hệ thống cập nhật giờ ngay lập tức
sudo chronyc makestep

Bước 2: Cài đặt và cấu hình chi tiết

Cài đặt package trên CentOS 9 khá nhẹ nhàng vì các module đã được tối ưu. Sau khi cài xong, chúng ta sẽ dùng lệnh ipa-client-install với các tham số cụ thể để tránh việc hệ thống tự đoán thông tin sai lệch.

sudo dnf install -y freeipa-client

Lưu ý quan trọng: Mình luôn dùng flag --mkhomedir. Thiếu nó, user từ domain login vào sẽ không có thư mục home và bị văng ra ngay lập tức với lỗi shell.

sudo ipa-client-install \
    --server=ipaserver.itfromzero.local \
    --domain=itfromzero.local \
    --mkhomedir \
    --no-ntp

Giải thích nhanh các flag:

  • --server: Định danh chính xác máy chủ quản lý.
  • --domain: Tên vùng quản lý định danh của bạn.
  • --no-ntp: Để hệ thống dùng chrony có sẵn, tránh xung đột cấu hình thời gian của IPA.

Bước 3: Kiểm tra thực tế

Cài xong rồi. Giờ test thử xem server đã “thông nòng” chưa bằng cách lấy một vé (Ticket) từ Kerberos.

# Thử login bằng user admin của IPA
kinit admin

# Xem danh sách ticket đang nắm giữ
klist

Nếu màn hình hiển thị thông tin Ticket kèm thời hạn sử dụng, máy chủ của bạn đã chính thức thuộc về Domain.

Nâng cao: Quản lý Sudo Rule tập trung

Điểm ăn tiền của FreeIPA là khả năng phân quyền sudo từ xa. Bạn không cần SSH vào từng máy để sửa file /etc/sudoers nữa. Tuy nhiên, để CentOS 9 hiểu được các rule này, bạn cần cấu hình SSSD một chút.

Đầu tiên, hãy đảm bảo file /etc/nsswitch.conf có dòng:

sudoers: files sss

Sau đó, thêm service sudo vào file /etc/sssd/sssd.conf:

[sssd]
services = nss, pam, ssh, sudo

Cuối cùng, restart lại service để áp dụng thay đổi: sudo systemctl restart sssd.

Xử lý sự cố: Những lỗi thường gặp lúc nửa đêm

1. Lỗi “SASL Bind failed”
Lỗi này thường do gõ sai mật khẩu hoặc tài khoản admin bị khóa. Hãy thử kinit admin trước để kiểm tra trạng thái tài khoản.

2. Lỗi Certificate trùng lặp
Nếu bạn cài lại máy trùng hostname cũ, IPA Server sẽ từ chối. Bạn cần lên Web UI của IPA, tìm mục Host, xóa máy đó đi (Unenroll) rồi mới join lại được.

3. User login không có thư mục Home
Nếu quên flag --mkhomedir lúc cài, hãy dùng lệnh sau để sửa lỗi mà không cần cài lại từ đầu:

sudo authselect select sssd with-mkhomedir --force

Lời kết từ Sysadmin

Triển khai FreeIPA trên CentOS Stream 9 thực tế rất mượt mà nhờ SSSD thế hệ mới. Trong các dự án migrate từ bản 7 lên bản 9, mình nhận thấy tốc độ truy vấn LDAP nhanh hơn khoảng 30% và cực kỳ ít khi bị treo cache. Nếu bạn đang quản lý từ 10 server trở lên, hãy setup FreeIPA ngay để có những đêm ngon giấc, không còn loay hoay với useradd thủ công nữa.

Share: