Kiểm tra và vá lỗ hổng bảo mật VPS với Lynis

SSH vào VPS mới cài, ai cũng mong nó an toàn. Nhưng thực tế, một VPS Linux mặc định thường có vài chục "lỗ hổng" tiềm ẩn: SSH vẫn cho phép đăng nhập root bằng mật khẩu, kernel chưa được hardening, firewall chưa bật, và hàng tá dịch vụ không cần thiết vẫn đang chạy. Lynis là công cụ audit mã nguồn mở giúp bạn phát hiện chính xác những điểm yếu đó, đưa ra hướng dẫn vá cụ thể, và nâng điểm bảo mật hệ thống lên mức an toàn hơn nhiều. Bài viết này hướng dẫn bạn toàn bộ quy trình: cài đặt, chạy scan, đọc kết quả, và vá từng lỗi phổ biến, áp dụng cho Ubuntu 24.04 LTS và Debian 12.
Yêu cầu trước khi bắt đầu
- VPS chạy Ubuntu 24.04 LTS hoặc Debian 12 (hướng dẫn này kiểm tra trên Ubuntu 24.04).
- Quyền root hoặc user sudo (thực tế Lynys chạy hàng đầu với root để quét toàn bộ hệ thống).
- Kết nối SSH ổn định vào VPS.
- Không yêu cầu kiến thức chuyên sâu, nhưng bạn nên quen với các lệnh Linux cơ bản (cd, nano, systemctl).
Vì sao nên dùng Lynis để kiểm tra bảo mật VPS?
Có nhiều cách để kiểm tra bảo mật VPS: tự kiểm tra từng file cấu hình, dùng script tự viết, hoặc nhờ dịch vụ bên ngoài. Lynis khác biệt ở chỗ nó là công cụ audit toàn diện, mã nguồn mở, được phát triển hơn 10 năm và cập nhật thường xuyên. Nó quét hơn 300 hạng mục: từ cấu hình SSH, kernel parameters, file permissions, package updates, cho đến firewall, dịch vụ đang chạy, và logging.
Thay vì bạn phải nhớ hàng trăm cấu hình an toàn, Lynis làm điều đó tự động. Mỗi lần chạy, nó trả về một báo cáo điểm số (hardening index) và danh sách cụ thể các mục cần sửa (suggestions và warnings). Đây là cách nhanh nhất để nâng cấp bảo mật cho một VPS mới hoặc kiểm tra định kỳ.
Bước 1 - Cài đặt Lynis trên Ubuntu 24.04
Lynis có sẵn trong kho chính thức của Ubuntu 24.04, nhưng phiên bản có thể cũ. Cách hàng đầu là thêm kho của CISOfy (nhà phát triển Lynis) để luôn có bản mới nhất.
# Cập nhật hệ thống
sudo apt update && sudo apt upgrade -y
# Cài đặt các gói cần thiết
sudo apt install -y wget apt-transport-https gnupg
# Thêm GPG key và repository của Lynis
sudo wget -O - https://packages.cisofy.com/keys/cisofy-software-public.key | sudo gpg --dearmor -o /usr/share/keyrings/cisofy-software-public.gpg
echo "deb [signed-by=/usr/share/keyrings/cisofy-software-public.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 -y lynis
# Kiểm tra phiên bản đã cài
lynis --version
Mỗi lệnh đều quan trọng: thêm GPG key đảm bảo gói tải về an toàn; thêm repository để apt biết nơi lấy gói; dòng cuối kiểm tra phiên bản, với Ubuntu 24.04, bạn sẽ thấy phiên bản 3.1.1 (hoặc mới hơn tùy thời điểm).
Bước 2 - Chạy audit bảo mật VPS lần đầu
Sau khi cài, bạn chạy lệnh audit. Lynis sẽ yêu cầu quyền root để quét toàn bộ hệ thống.
sudo lynis audit system
Quá trình này mất khoảng 1-3 phút tùy cấu hình VPS. Lynis sẽ in ra rất nhiều dòng log, đừng lo, đó là quá trình quét từng hạng mục. Cuối cùng, bạn sẽ thấy Hardening index (ví dụ 53/100) và phần Suggestions (danh sách các mục cần sửa).
Để lưu báo cáo và xem lại sau:
sudo lynis audit system --report-file /tmp/lynis-report.log
Báo cáo đầy đủ được lưu trong /var/log/lynis-report.dat và bản log chi tiết trong /var/log/lynis.log. Bạn có thể xem nhanh điểm số và warnings bằng lệnh:
sudo grep -E "hardening_index|suggestion\|warning" /var/log/lynis-report.dat
Kết quả mong đợi: VPS mới thường đạt khoảng 50-65 điểm. Dưới 40 điểm là rất yếu, cần vá ngay.
Bước 3 - Đọc và hiểu báo cáo Lynis
Đây là kỹ năng quan trọng nhất. Báo cáo Lynis chia làm 3 loại:
- Warnings: Các vấn đề nghiêm trọng, cần xử lý ngay (ví dụ: SSH cho phép root login bằng password, firewall không active, kernel không được bảo vệ).
- Suggestions: Các khuyến nghị cải thiện (ví dụ: cài fail2ban, cấu hình logrotate, enable auditd).
- Tests performed: Danh sách các mục đã quét (không cần quan tâm nhiều).
Đoạn báo cáo mẫu (rút gọn):
=============================================================
Lynis 3.1.1
=============================================================
Hardening index : 63 [############ ]
Tests performed : 234
Warnings : 4
Suggestions : 28
...
[WARNING] Could not find an active firewall on this system.
[WARNING] SSH: PermitRootLogin is set to "yes".
[SUGGESTION] Install fail2ban to protect against brute-force attacks.
[SUGGESTION] Disable unused network protocols (DCCP, SCTP, RDS).
Hãy tập trung xử lý hết Warnings trước, sau đó đến các Suggestions quan trọng (firewall, SSH hardening, kernel hardening).
Bước 4 - Vá lỗ hổng: 7 mục phổ biến nhất
Dưới đây là các lỗi Lynis thường báo và cách vá, sắp xếp theo độ ưu tiên cao nhất.
4.1. Kích hoạt firewall (UFW)
VPS mới thường không có firewall active. Lynis sẽ cảnh báo ngay.
# Cài UFW
sudo apt install -y ufw
# Cho phép SSH trước (nếu không bạn sẽ mất kết nối)
sudo ufw allow OpenSSH
# Hoặc cụ thể port
sudo ufw allow 22/tcp
# Mở thêm các port cần thiết (HTTP, HTTPS)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Bật UFW
sudo ufw --force enable
# Kiểm tra trạng thái
sudo ufw status verbose
Verify: Output sẽ hiển thị "Status: active" và danh sách các rule.
4.2. Vô hiệu hóa SSH root login bằng mật khẩu
Đây là warning phổ biến và nguy hiểm nhất. Hackers sẽ liên tục brute-force tài khoản root.
# Sửa file cấu hình SSH
sudo nano /etc/ssh/sshd_config
# Tìm và sửa (hoặc thêm) các dòng sau:
PermitRootLogin prohibit-password # Chỉ cho phép login root bằng key
PasswordAuthentication no # Tắt đăng nhập bằng mật khẩu
PubkeyAuthentication yes # Bật xác thực key
# Khởi động lại SSH
sudo systemctl restart sshd
Quan trọng: Trước khi tắt PasswordAuthentication, hãy chắc chắn bạn đã thêm SSH public key vào file ~/.ssh/authorized_keys trên VPS và đã thử đăng nhập bằng key thành công từ máy local. Nếu không, bạn sẽ bị khóa ngoài VPS.
Verify: Mở một terminal SSH mới (đừng đóng terminal cũ) và thử đăng nhập. Nếu thành công, terminal cũ có thể đóng. Nếu thất bại, terminal cũ vẫn còn để sửa lại.
4.3. Cài fail2ban để chống brute-force
sudo apt install -y fail2ban
# Copy file cấu hình mẫu
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
# Bật và khởi động fail2ban
sudo systemctl enable --now fail2ban
# Kiểm tra trạng thái
sudo fail2ban-client status sshd
Verify: Output hiển thị "Status: OK" và số lượng "Currently banned" (0 nếu chưa có ai tấn công).
4.4. Cập nhật kernel parameters (/etc/sysctl.conf)
Lynis sẽ khuyến nghị các tham số bảo vệ kernel. Thêm các dòng sau vào /etc/sysctl.conf:
# Bảo vệ khỏi IP spoofing
net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
# Tắt chuyển tiếp IP (nếu không làm router)
net.ipv4.ip_forward=0
# Tắt redirect ICMP
net.ipv4.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
# Bảo vệ khỏi SYN flood
net.ipv4.tcp_syncookies=1
# Tắt source routing
net.ipv4.conf.all.accept_source_route=0
# Áp dụng
sudo sysctl -p
Verify: Lệnh sysctl -p không báo lỗi, và khi chạy lại Lynis, các warning về kernel sẽ giảm.
4.5. Cài và kích hoạt auditd (auditing system)
sudo apt install -y auditd audispd-plugins
sudo systemctl enable --now auditd
# Cấu hình logging đầy đủ (không bắt buộc nhưng khuyến nghị)
sudo auditctl -e 1
Verify: sudo systemctl status auditd hiển thị "active (running)".
4.6. Vô hiệu hóa các giao thức mạng không dùng đến
Lynis thường cảnh báo các giao thức như DCCP, SCTP, RDS. Vô hiệu hóa bằng cách tạo file cấm module:
echo "install dccp /bin/true" | sudo tee -a /etc/modprobe.d/disable-dccp.conf
echo "install sctp /bin/true" | sudo tee -a /etc/modprobe.d/disable-sctp.conf
echo "install rds /bin/true" | sudo tee -a /etc/modprobe.d/disable-rds.conf
Các module này sẽ không được load khi khởi động hay khi có ứng dụng yêu cầu.
4.7. Xóa các gói phần mềm không cần thiết
Lynis liệt kê các gói không cần (ví dụ: telnet, rsh, talk, ...). Xóa chúng đi:
sudo apt purge -y telnet rsh-client rsh-server talk
# Sau đó kiểm tra lại Lynis
Bước 5 - Chạy lại Lynis và đánh giá cải thiện
Sau khi đã vá các lỗi trên, chạy lại audit để xem điểm số tăng lên bao nhiêu:
sudo lynis audit system
Kết quả mong đợi: Hardening index từ 50-65 lên 75-85, số warnings giảm từ 3-5 xuống 0 hoặc 1-2 (tùy VPS). Bạn sẽ thấy các mục đã sửa không còn xuất hiện trong warnings nữa.
Xử lý lỗi thường gặp khi chạy Lynis
Lỗi 1: "Permission denied" khi chạy audit
Nguyên nhân: Bạn chạy với user normal, không có quyền root. Giải pháp: Luôn dùng sudo lynis audit system.
Lỗi 2: "Unable to update Lynis"
Nguyên nhân: Repository của CISOfy không được thêm đúng hoặc GPG key hết hạn. Giải pháp: Kiểm tra lại các bước thêm repository ở Bước 1. Chạy lại sudo apt update và kiểm tra lỗi GPG. Nếu vẫn lỗi, tải bản portable từ trang chủ:
cd /opt
sudo wget https://downloads.cisofy.com/lynis/lynis-3.1.1.tar.gz
sudo tar xzf lynis-3.1.1.tar.gz
sudo ./lynis/lynis audit system
Lỗi 3: "Tests failed: File system checks"
Nguyên nhân: Lynis không thể đọc một số file hệ thống do quyền hoặc filesystem bị lỗi. Giải pháp: Chạy sudo fsck -f / (cần unmount, làm trong rescue mode) hoặc kiểm tra quyền file thủ công: sudo ls -la /etc/passwd.
Câu hỏi thường gặp
Chạy Lynis có làm hỏng VPS không?
Không. Lynis chỉ đọc và phân tích cấu hình hệ thống, không tự động sửa bất cứ thứ gì. Bạn hoàn toàn kiểm soát việc áp dụng các thay đổi. Đây là công cụ read-only ở chế độ audit mặc định.
Bao lâu nên chạy Lynis một lần?
Nên chạy ít nhất 1 lần/tháng đối với VPS production, hoặc sau mỗi lần cài đặt phần mềm mới, thay đổi cấu hình lớn. Với VPS cá nhân, chạy hàng quý cũng đủ an toàn.
Điểm hardening index bao nhiêu là an toàn?
Không có con số rất cao, nhưng thông thường trên 70 là khá, trên 80 là tốt. Các máy chủ production được hardening kỹ thường đạt 85-95. Tuy nhiên, đừng chạy theo điểm số, hãy tập trung vá hết warnings và các suggestions quan trọng.
Tôi có thể tự động hóa Lynis để chạy hàng tuần không?
Có. Bạn có thể tạo cronjob hàng tuần: sudo crontab -e và thêm dòng 0 3 * * 0 /usr/bin/lynis audit system --quiet --report-file /var/log/lynis-weekly.log. Nhưng nhớ kiểm tra báo cáo và vá lỗi thủ công, Lynis không tự vá.
Lynis có chạy được trên Debian 12 không?
Có. Các bước cài đặt tương tự, chỉ thay lệnh apt tương ứng. Lynis hỗ trợ đầy đủ Debian và các distro dựa trên Debian.
Bài viết liên quan
- Cấu hình fail2ban chống brute-force SSH trên Ubuntu 24.04
- 10 cách tăng cường bảo mật VPS Linux chống tấn công 2026
- Cài đặt CrowdSec chống tấn công tự động cho VPS


