Bài 16: Security hardening Linux cơ bản
Bài này chi tiết hóa security hardening Linux theo hướng dễ hiểu, có lệnh thực hành, tình huống production, checklist và bài tập.
- Hiểu security hardening Linux dùng để giải quyết vấn đề gì trong production.
- Nắm các lệnh/cấu hình quan trọng.
- Biết quy trình thực hành từng bước trong lab.
- Có checklist kiểm tra trước khi áp dụng production.
Chốt ý nhanh
| Chủ đề | Điểm cần nhớ |
|---|---|
| Hardening | Là quá trình giảm bề mặt tấn công ngay từ cấu hình nền của hệ điều hành. |
| Tư duy đúng | Không cài thêm bừa bãi, không mở dịch vụ thừa, luôn kiểm soát quyền và log. |
| Mục tiêu | Làm máy chủ khó bị khai thác hơn nhưng vẫn vận hành ổn định. |
1. Bối cảnh thực tế
Security hardening linux không phải kiến thức lý thuyết riêng lẻ. Trong vận hành production, nó giúp giảm downtime, giảm rủi ro bảo mật và giúp hệ thống dễ khôi phục hơn khi có sự cố.
2. Các khái niệm cần nắm
- Trạng thái hiện tại: trước khi sửa phải biết hệ thống đang chạy thế nào.
- Thay đổi nhỏ: thay đổi từng bước để dễ rollback.
- Log/metric: dùng để xác nhận thay đổi đúng hay sai.
- Rollback: luôn có đường quay lại khi cấu hình lỗi.
3. Lab thực hành
whoami id sudo -l ss -tulpn systemctl list-unit-files --state=enabled apt list --upgradable 2>/dev/null || dnf check-update sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak sudo sshd -t journalctl -u ssh --since "24 hours ago" || journalctl -u sshd --since "24 hours ago"
Khi thực hành, anh nên ghi lại output trước và sau. Đây là thói quen rất quan trọng của SysAdmin/DevOps.
4. Tình huống thực tế
Anh nhận một VPS mới public Internet. Trước khi chạy web, anh cần tạo user quản trị riêng, dùng SSH key, tắt root login, mở firewall tối thiểu, cập nhật package và kiểm tra service đang enabled.
5. Quy trình triển khai an toàn
- Xác định mục tiêu thay đổi.
- Backup file cấu hình hoặc tạo snapshot nếu thay đổi rủi ro.
- Kiểm tra trạng thái hiện tại bằng lệnh phù hợp.
- Thay đổi trên lab/staging trước nếu có.
- Áp dụng production trong khung giờ phù hợp.
- Kiểm tra log, service, port, endpoint sau thay đổi.
- Ghi lại thay đổi và phương án rollback.
6. Lỗi thường gặp
- Làm trực tiếp production mà không backup.
- Sửa nhiều thứ cùng lúc nên không biết lỗi do đâu.
- Không đọc log sau khi reload/restart service.
- Không ghi lại command đã chạy.
7. Checklist
- Đã kiểm tra trạng thái hiện tại.
- Đã backup cấu hình/dữ liệu liên quan.
- Đã test syntax/config nếu có.
- Đã xác nhận service hoạt động sau thay đổi.
- Đã ghi lại thay đổi vào tài liệu vận hành.
8. Bài tập
- Dựng lab nhỏ cho chủ đề này.
- Chạy toàn bộ lệnh kiểm tra.
- Tạo một lỗi nhỏ có kiểm soát và sửa lại.
- Viết checklist 5 bước dùng cho production.
Phần thực hành mở rộng: hardening Linux theo tư duy giảm rủi ro thật
Bảo mật hệ điều hành không phải vài mẹo rời rạc. Với SysAdmin, hardening là một chuỗi thao tác nền giúp server ít cửa mở hơn, dễ quan sát hơn và khó bị lợi dụng hơn khi có lỗi xảy ra.
Lab 1: Lập danh sách bề mặt tấn công hiện tại
ss -tulpn
systemctl list-unit-files --type=service | grep enabled
sudo ufw status verbose || sudo firewall-cmd --list-all
Trước khi harden, anh phải biết máy đang mở gì: cổng nào, service nào, rule nào đang cho phép lưu lượng đi vào.
Lab 2: Rà package và service không cần thiết
dpkg -l | less
rpm -qa | less
systemctl --type=service --state=running
Tự hỏi từng service: có thật sự cần cho chức năng của server này không? Một máy chỉ chạy web không nên giữ các dịch vụ lạ chỉ vì chúng đã có sẵn.
Lab 3: Siết SSH và quyền truy cập quản trị
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.$(date +%F-%H%M)
sudo grep -E '^(PermitRootLogin|PasswordAuthentication|PubkeyAuthentication)' /etc/ssh/sshd_config
sudo sshd -t
Checklist thực tế:
- tắt root login trực tiếp nếu có thể
- ưu tiên SSH key thay cho password
- giới hạn user/group được phép SSH
- luôn test cấu hình trước khi reload
Lab 4: Kiểm tra quyền file nhạy cảm
ls -l /etc/passwd /etc/shadow
stat /etc/ssh/sshd_config
find /home -maxdepth 2 -name authorized_keys -exec ls -l {} \;
Mục tiêu là hình thành phản xạ kiểm tra những file mà nếu quyền sai sẽ dẫn đến rủi ro bảo mật rõ ràng.
Lab 5: Theo dõi log bảo mật cơ bản
sudo journalctl -p warning --since "24 hours ago" --no-pager
sudo grep -iE 'failed|invalid user|authentication failure' /var/log/auth.log | tail -30
last
lastb
Người vận hành tốt không chỉ cấu hình xong rồi quên, mà còn quan sát xem máy có đang bị dò quét hay có hành vi bất thường không.
Tình huống thực tế
Một VPS public mới tạo thường bị quét SSH, web và bot tự động chỉ sau ít phút. Nếu không có hardening nền, chỉ một dịch vụ mở thừa hoặc một tài khoản yếu là đủ tạo ra cửa vào cho sự cố nghiêm trọng hơn.
Lỗi phổ biến
- Hardening bằng cách copy checklist trên mạng nhưng không hiểu impact.
- Tắt quá nhiều thứ làm ứng dụng ngừng chạy.
- Không backup config trước khi sửa.
- Không theo dõi log sau khi harden.
Kết bài
Nếu bài này chắc, anh sẽ hiểu security hardening không phải “trang trí bảo mật”, mà là bước nền để mọi service production đỡ mong manh hơn trước Internet. Từ đây sang SSL/TLS, anh sẽ tiếp tục gia cố lớp giao tiếp ngoài cùng của hệ thống: kết nối mã hóa và tin cậy.
