Tự động hóa Hardening Ubuntu Server theo chuẩn CIS Benchmarks với USG

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

Nỗi ám ảnh mang tên “Hardening thủ công” lúc nửa đêm

Hãy tưởng tượng kịch bản này: 2 giờ sáng, bạn nhận email khẩn từ bộ phận Security Audit. Họ yêu cầu 20 cụm server hiện tại phải tuân thủ chuẩn CIS Benchmarks Level 1 ngay lập tức. Nếu làm theo cách truyền thống, bạn phải tải file PDF dài hơn 300 trang và đọc từng dòng. Sau đó, bạn sẽ hì hục sửa hàng tá file cấu hình từ /etc/sysctl.conf đến sshd_config.

Tôi đã từng mất cả ngày trời chỉ để cấu hình thủ công cho 5 con VPS Ubuntu 22.04. Quy trình này không chỉ tốn thời gian mà còn cực kỳ dễ sai sót. Chỉ cần gõ nhầm một tham số SSH, bạn sẽ tự khóa mình khỏi hệ thống. Đó là lúc Ubuntu Security Guide (USG) xuất hiện như một vị cứu tinh, giúp gói gọn quy trình bảo mật phức tạp vào vài dòng lệnh.

Ubuntu Security Guide (USG) là gì?

Trước đây, người dùng Ubuntu thường quen thuộc với công cụ compliance-itg. Tuy nhiên, từ phiên bản 20.04 LTS, Canonical đã thay thế nó bằng USG. Đây là công cụ chính chủ nằm trong gói Ubuntu Pro. Nó được thiết kế để kiểm tra (audit) và tự động sửa lỗi (remediate) theo các tiêu chuẩn khắt khe như CIS hoặc DISA STIG.

Điểm khác biệt lớn nhất là USG cực kỳ thông minh. Nó không chỉ liệt kê lỗi mà còn biết cách áp dụng cấu hình an toàn mà không làm sập các dịch vụ quan trọng, miễn là bạn chọn đúng Profile.

Chuẩn bị trước khi thực hiện

Để sử dụng USG, server của bạn bắt buộc phải kích hoạt Ubuntu Pro. Tin vui là Canonical cho phép cá nhân sử dụng miễn phí cho tối đa 5 máy. Nếu bạn là cộng tác viên chính thức, con số này lên tới 50 máy.

Đầu tiên, hãy kiểm tra trạng thái Ubuntu Pro trên máy:

pro status

Nếu hệ thống báo chưa kích hoạt, hãy lấy token từ trang chủ Ubuntu và chạy lệnh:

sudo pro attach [TOKEN_CỦA_BẠN]

Khi máy đã sẵn sàng, việc cài đặt USG chỉ tốn khoảng 30 giây:

sudo apt update && sudo apt install usg -y

Thực hành: Audit và Hardening như một chuyên gia

1. Đánh giá hiện trạng (Audit)

Đừng bao giờ sửa hệ thống khi chưa biết nó đang hỏng ở đâu. Tôi luôn chạy lệnh audit trước để lấy báo cáo hiện trạng. Với Ubuntu 22.04, profile phổ biến nhất là cis_level1_server.

sudo usg audit --profile cis_level1_server --output report.html

Bạn hãy tải file report.html về máy qua SCP. Khi mở bằng trình duyệt, bạn sẽ thấy một danh sách “đỏ rực” các mục không đạt. Đừng quá lo lắng, một bản Ubuntu mặc định thường chỉ đạt khoảng 30-40% điểm bảo mật của CIS.

2. Tự động sửa lỗi (Remediation)

Đây là lúc USG thể hiện sức mạnh. Thay vì sửa từng file, lệnh sau sẽ tự động cấu hình lại toàn bộ hệ thống theo chuẩn:

sudo usg fix --profile cis_level1_server

Lưu ý quan trọng: Tuyệt đối không chạy lệnh này trực tiếp trên server Production. Hãy thử nghiệm trên môi trường Staging trước. USG sẽ siết chặt các quy tắc như: vô hiệu hóa giao thức cũ (DCCP, SCTP), cấu hình log auditd chi tiết, hay phân quyền lại file /etc/shadow.

3. Xác nhận kết quả

Sau khi quá trình fix hoàn tất, hãy chạy lại lệnh audit. Lúc này, hầu hết các mục sẽ chuyển sang màu xanh (Pass). Cảm giác nhìn thấy bảng báo cáo sạch bóng lỗi thực sự rất thỏa mãn.

Tùy biến Profile (Tailoring) để không bị “gậy ông đập lưng ông”

Đôi khi tiêu chuẩn CIS quá khắt khe so với nhu cầu thực tế. Ví dụ, CIS yêu cầu tắt PasswordAuthentication, nhưng team của bạn vẫn cần dùng mật khẩu để SSH. Nếu áp dụng mù quáng, bạn sẽ bị văng khỏi server ngay lập tức.

Để giải quyết, hãy tạo một file tùy chỉnh (Tailoring file):

sudo usg generate-fix --profile cis_level1_server --output my_custom_policy.xml

Bạn có thể chỉnh sửa file XML này để loại bỏ các quy tắc gây xung đột. Đây là cách tốt nhất để cân bằng giữa tính bảo mật và sự tiện dụng cho đội ngũ phát triển.

Kinh nghiệm thực tế: Những bài học đắt giá

Tôi từng một lần suýt mất quyền truy cập vào server VPN do USG tự động cấu hình lại iptables. Để tránh lặp lại sai lầm đó, bạn nên nhớ 3 quy tắc vàng:

  • Luôn giữ 2 session SSH: Một cái để thực thi lệnh, một cái để dự phòng nếu chẳng may bị ngắt kết nối.
  • Kiểm tra cú pháp: Sau khi fix, hãy dùng sshd -t để kiểm tra file cấu hình SSH trước khi khởi động lại dịch vụ.
  • Kiểm tra Log: Theo dõi sát /var/log/syslog để phát hiện sớm các dịch vụ bị crash do thiếu quyền hạn.

Lời kết

USG không chỉ là một công cụ, nó là giải pháp giúp bạn ngủ ngon hơn. Thay vì tốn hàng tuần để mày mò tài liệu, bạn chỉ mất 15 phút để đưa server lên chuẩn bảo mật quốc tế. Dù quản lý 1 hay 100 máy, hãy ưu tiên tự động hóa quy trình hardening. Đừng đợi đến khi xảy ra sự cố mới bắt đầu lo bảo mật. Hãy thử cài đặt USG trên môi trường Lab của bạn ngay hôm nay!

Share: