Hardening Ubuntu Server theo CIS Benchmark: Những bước cần làm trước tiên
Ubuntu Server “mặc định” không đồng nghĩa “an toàn mặc định”. Một server mới cài có thể đã có SSH mở, user sudo rộng quyền, service thừa, log chưa đủ, update chưa tự động, firewall chưa bật. Trong môi trường thật, chỉ một cấu hình yếu như SSH cho phép password, file quyền sai, hoặc port public không kiểm soát cũng đủ → rủi ro xâm nhập.
CIS Benchmark là bộ khuyến nghị hardening được dùng rộng rãi cho Linux, cloud, container, DB. Với Ubuntu, CIS giúp chuẩn hóa cấu hình bảo mật theo mức độ kiểm soát cụ thể. Tuy nhiên, không nên áp dụng “mù” toàn bộ benchmark ngay ngày đầu. Một số rule có thể làm hỏng app, khóa admin khỏi server, hoặc phá automation.
Bài này tập trung vào những bước cần làm trước tiên: nền tảng, ít rủi ro, hiệu quả cao, phù hợp trước khi đi sâu audit level 1/2.
1. Xác định phạm vi trước khi hardening
Hardening không phải checklist copy-paste. Trước tiên cần biết server dùng để làm gì.
Cần trả lời
– Server chạy web, DB, queue, VPN, bastion, CI/CD?
– Có public Internet không?
– Admin đăng nhập qua SSH key hay SSO/bastion?
– App cần port nào?
– Có yêu cầu compliance: CIS Level 1, Level 2, PCI-DSS, ISO 27001?
– Có snapshot/backup/console access không?
Vì sao quan trọng?
Một số CIS rule có thể ảnh hưởng vận hành:
– Tắt filesystem module → app legacy lỗi.
– Cấu hình password aging → account service bị khóa.
– Siết SSH quá mạnh → mất truy cập.
– Bật auditd quá chi tiết → tăng I/O/log storage.
– Vô hiệu hóa IPv6 → app/network phụ thuộc IPv6 lỗi.
Nguyên tắc: hardening theo rủi ro, test trước, rollback được.
2. Cập nhật hệ thống ngay sau khi cài
Patch là lớp phòng thủ đầu tiên. Server chưa cập nhật → dễ dính CVE cũ.
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
X11Forwarding no
AllowUsers adminuser
ClientAliveInterval 300
ClientAliveCountMax 2
LoginGraceTime 60
MaxAuthTries 4
Kiểm tra config:
sudo sshd -t
Reload:
sudo systemctl reload ssh
Đừng đổi port SSH chỉ để “bảo mật”
Đổi port có thể giảm noise log, nhưng không thay thế key auth, firewall, fail2ban, monitoring. Nếu đổi port, phải cập nhật firewall, cloud security group, automation.
5. Bật firewall mặc định deny inbound
Ubuntu thường dùng UFW đơn giản, phù hợp bước đầu.
Lý do: attacker vào được server có thể xóa log local. Log tập trung → khó che dấu hơn.
13. Dùng công cụ audit CIS: Lynis, OpenSCAP, CIS-CAT
Sau hardening nền, chạy audit để biết gap.
Lynis
sudo apt install lynis -y
sudo lynis audit system
Report:
/var/log/lynis.log
/var/log/lynis-report.dat
OpenSCAP
Có thể dùng với profile CIS/Ubuntu nếu phù hợp version. Mạnh hơn, nhưng cần hiểu profile, remediation, false positive.
CIS-CAT
CIS-CAT Pro là công cụ chính thức từ CIS, phù hợp tổ chức cần báo cáo compliance.
Quan trọng: Điểm audit cao không đồng nghĩa an toàn tuyệt đối. Điểm thấp cũng không luôn nghĩa nguy hiểm nếu có compensating control. Cần review theo ngữ cảnh.
14. Thứ tự ưu tiên thực tế
Nếu chỉ có vài giờ đầu sau khi dựng server, làm theo thứ tự:
1. Snapshot/backup/console access.
2. Update OS + reboot.
3. Tạo admin user, khóa root SSH.
4. SSH key-only, tắt password auth.
5. Bật firewall, chỉ mở port cần.
6. Gỡ/tắt service thừa.
7. Bật chrony/NTP.
8. Bật auditd + rule cơ bản.
9. Siết sudo/user policy.
10. Chạy Lynis/CIS audit, xử lý gap theo rủi ro.
Thứ tự này giảm rủi ro lớn nhất trước: lỗ hổng đã biết, truy cập từ Internet, credential yếu, service thừa, thiếu log.
15. Những lỗi thường gặp khi áp dụng CIS
Áp toàn bộ benchmark không test
Kết quả: app lỗi, mất SSH, pipeline chết.
Cách đúng: staging → test → change window → rollback plan.
Chỉ hardening OS, bỏ qua cloud layer
Security group mở 0.0.0.0/0 cho DB → OS firewall không đủ.
Cần kiểm soát cả cloud firewall, IAM, metadata service, disk encryption.
Không giám sát sau hardening
Hardening một lần rồi bỏ → cấu hình drift.
Cần periodic audit, config management, alert.
Dùng chung user admin
Không truy vết được ai làm gì.
Cần user cá nhân, sudo log, MFA/bastion nếu có.
Kết luận thực tế
CIS Benchmark là bản đồ tốt để hardening Ubuntu Server, nhưng giá trị thật nằm ở cách triển khai: ưu tiên đúng, test kỹ, ghi log đủ, duy trì liên tục. Đừng bắt đầu bằng hàng trăm rule phức tạp. Hãy bắt đầu bằng những lớp nền: cập nhật hệ thống, SSH an toàn, firewall mặc định deny, giảm service, audit log, sudo chặt, time sync chuẩn.
Sau đó mới tiến tới các kiểm soát sâu hơn: partition riêng, kernel parameter, MAC/AppArmor, audit rule đầy đủ, compliance scan, SIEM, config management. Hardening hiệu quả không phải “làm một lần cho xong”, mà là một chu trình: baseline → audit → fix → monitor → repeat.