So sánh giữa Kiểm tra thủ công và Quét bảo mật tự động
Tôi từng dành hàng giờ để theo dõi (tail) log và đánh dấu vào bảng kiểm giấy. Việc đó thực sự kiệt sức. Sau đó, một máy chủ tôi quản lý đã bị tấn công brute-force SSH vào lúc 2 giờ sáng. Cú hích đó đã dạy tôi một bài học đắt giá: kiểm tra thủ công rất chậm và dễ sai sót. Bạn có thể nhớ tắt đăng nhập root, nhưng liệu bạn có kiểm tra cài đặt UMASK cho người dùng mới hay phản hồi của kernel đối với các gói tin ICMP redirect không?
Kiểm tra thủ công đồng nghĩa với việc rà soát từng dòng theo CIS Benchmarks hoặc STIG. Cách này rất tốt để học hỏi, nhưng không thể mở rộng quy mô. Nếu bạn có mười máy chủ, bạn sẽ phải đối mặt với hơn 40 giờ làm việc. Kiểm tra tự động với Lynis sẽ thay đổi điều đó. Nó thực hiện hơn 300 bước kiểm tra bảo mật trong chưa đầy năm phút. Không giống như các trình quét mạng nặng nề như OpenVAS, Lynis chạy cục bộ (locally). Điều này giúp nó có cái nhìn sâu sắc vào hệ thống tệp, các tham số kernel và các tiến trình đang chạy mà các lần quét từ bên ngoài thường bỏ lỡ.
Ưu và nhược điểm của việc sử dụng Lynis
Trước khi đưa Lynis vào quy trình vận hành (production), bạn nên hiểu rõ giới hạn của nó. Đây là một công cụ chẩn đoán, không phải là một cây gậy phép. Sự khác biệt này thực chất lại là điểm mạnh lớn nhất của nó.
Ưu điểm
- Không phụ thuộc thư viện: Lynis được xây dựng trên shell script. Nó không yêu cầu Python, Ruby hay cơ sở dữ liệu. Nếu máy chủ có shell, Lynis có thể chạy.
- Không gây ảnh hưởng: Nó không bao giờ sửa đổi các tệp cấu hình của bạn. Nó chỉ đọc và báo cáo kết quả, đảm bảo hệ thống của bạn luôn ổn định.
- Kiến trúc mô-đun: Bạn có thể bật tắt các bài kiểm tra cụ thể. Điều này hoàn hảo để kiểm tra một máy chủ web chuyên dụng hoặc một container host tối giản.
- Mang tính giáo dục: Mỗi gợi ý đều kèm theo một liên kết đến tài liệu. Nó không chỉ cho bạn biết điều gì sai; nó giải thích tại sao điều đó lại quan trọng.
Nhược điểm
- Khắc phục thủ công: Lynis xác định các lỗ hổng nhưng không tự động vá chúng. Bạn vẫn cần Ansible, Salt hoặc chỉnh sửa thủ công để thực hiện hardening.
- Chạy cục bộ: Bạn cần quyền truy cập shell. Nó không thể quét một địa chỉ IP từ xa từ bên ngoài.
- Mật độ dữ liệu lớn: Kết quả đầu ra rất chi tiết. Những nhóm đã quen với các bảng điều khiển (dashboard) đầy màu sắc có thể thấy báo cáo trên terminal lúc đầu hơi khó tiếp cận.
Thiết lập khuyến nghị cho sử dụng thực tế
Hãy tránh cài đặt Lynis qua các trình quản lý gói mặc định như apt hoặc yum. Các công cụ bảo mật phải luôn được cập nhật để bắt kịp các kỹ thuật khai thác hiện đại. Thông thường, kho lưu trữ của các bản phân phối (distro) thường chậm hơn sáu tháng so với phiên bản mới nhất. Đối với môi trường production, tôi thường tải trực tiếp từ kho lưu trữ chính thức của CISOfy hoặc clone từ GitHub.
Hãy tập trung thiết lập của bạn tại /usr/local/lynis and sử dụng một profile tùy chỉnh. Điều này giúp ngăn chặn “sự mệt mỏi vì cảnh báo” (alert fatigue) bằng cách cho phép bạn bỏ qua các cảnh báo cụ thể mà ứng dụng của bạn yêu cầu. Nếu ứng dụng của bạn cần một cổng mở cụ thể, bạn chắc chắn không muốn thấy một cảnh báo đỏ xuất hiện hàng tuần.
Hướng dẫn triển khai: Từ cài đặt đến Hardening
Đây chính xác là quy trình tôi sử dụng để đưa một bản cài đặt Linux mới lên mức độ bảo mật sẵn sàng cho môi trường production.
1. Cài đặt phiên bản mới nhất
Trên các hệ thống Ubuntu hoặc Debian hiện đại, hãy sử dụng kho lưu trữ có chữ ký. Điều này đảm bảo bạn nhận được các bản cập nhật đã ký một cách tự động.
# Cài đặt các gói tiền đề
sudo apt update && sudo apt install apt-transport-https ca-certificates curl gnupg
# Thêm khóa GPG vào keyring tin cậy
curl -fsSL https://packages.cisofy.com/keys/cisofy-software-public.key | sudo gpg --dearmor -o /usr/share/keyrings/cisofy-archive-keyring.gpg
# Thêm kho lưu trữ
echo "deb [signed-by=/usr/share/keyrings/cisofy-archive-keyring.gpg] https://packages.cisofy.com/community/lynis/deb/ stable main" | sudo tee /etc/apt/sources.list.d/cisofy-lynis.list
# Cài đặt Lynis
sudo apt update
sudo apt install lynis
2. Thực hiện lần kiểm tra đầu tiên
Bắt đầu quét toàn bộ hệ thống bằng lệnh audit system. Bạn phải chạy lệnh này với quyền root. Một người dùng thông thường sẽ thiếu quyền để kiểm tra các tệp nhạy cảm như /etc/shadow hoặc các cấu hình kernel chuyên sâu.
sudo lynis audit system
Hãy quan sát các danh mục chạy qua: Boot and services, Users and groups, Networking, và Storage. Chú ý đến màu sắc. Màu xanh là an toàn. Màu vàng là một gợi ý. Màu đỏ là cảnh báo yêu cầu phải khắc phục ngay lập tức.
3. Phân tích Chỉ số Hardening
Ở cuối báo cáo, hãy tìm **Hardening Index** (Chỉ số Hardening) của bạn. Một bản cài đặt Ubuntu 22.04 LTS mặc định thường đạt khoảng 58 điểm. Đừng hoảng loạn. Các hệ điều hành này được tối ưu hóa cho sự tiện dụng chứ không phải để thắt chặt bảo mật. Mục tiêu của tôi cho môi trường production luôn là 80 hoặc cao hơn. Bạn có thể theo dõi tiến trình bằng cách so sánh các tệp lynis-report.dat được tạo ra sau mỗi phiên hardening.
4. Thực hiện các bản vá Hardening
Phần “Suggestions” ở dưới cùng là danh sách những việc cần làm của bạn. Dưới đây là hai bản vá mà tôi áp dụng cho hầu hết mọi máy chủ:
Cường hóa Kernel
Lynis thường gắn cờ các tham số cho phép tấn công man-in-the-middle. Hãy khắc phục chúng bằng cách chỉnh sửa tệp /etc/sysctl.conf.
# Vô hiệu hóa IP forwarding và bỏ qua ICMP redirects
sudo nano /etc/sysctl.conf
# Thêm các dòng này vào cuối tệp:
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
# Làm mới các thiết lập
sudo sysctl -p
Hạn chế các trình biên dịch
Nếu kẻ tấn công giành được quyền truy cập, chúng không nên có khả năng biên dịch mã khai thác. Hạn chế trình biên dịch gcc chỉ cho người dùng root là một cách xử lý nhanh chóng và hiệu quả.
# Ngăn chặn người dùng không phải root thực thi gcc
sudo chmod o-x /usr/bin/gcc
5. Tự động hóa việc kiểm tra
Bảo mật là một quá trình, không phải là đích đến. Các cấu hình có thể bị thay đổi theo thời gian và các lỗ hổng mới luôn xuất hiện. Tôi thiết lập một cron job hàng tuần để chạy quét ở chế độ im lặng. Nó ghi lại các phát hiện và cảnh báo cho tôi nếu có bất cứ điều gì phá vỡ tiêu chuẩn bảo mật cơ sở.
# Mở crontab của root
sudo crontab -e
# Chạy kiểm tra hàng tuần vào mỗi thứ Hai lúc 3 giờ sáng
0 3 * * 1 /usr/bin/lynis audit system --cronjob --quiet > /var/log/lynis-weekly.log
Tinh chỉnh Profile của bạn
Đôi khi bạn không thể thay đổi một thiết lập nào đó. Có lẽ nhà cung cấp đám mây của bạn yêu cầu một cấu hình tường lửa cụ thể mà Lynis đánh dấu cảnh báo. Trong những trường hợp này, hãy tạo một tệp custom.prf trong /etc/lynis/. Thêm skip-test=TEST-ID để loại bỏ các thông tin nhiễu. Điều này giúp các báo cáo của bạn luôn thực tế và có thể hành động được. Chủ động kiểm tra đảm bảo rằng lần tới khi ai đó cố gắng brute-force cổng SSH của bạn, họ sẽ gặp phải một bức tường gạch thay vì một cánh cửa mở.

