❤️ AZDIGI chính thức cập nhật hệ thống blog mới hoàn chỉnh. Tuy nhiên có thể một số bài viết bị sai lệch hình ảnh, hãy ấn nút Báo cáo bài viết ở cuối bài để AZDIGI cập nhật trong thời gian nhanh nhất. Chân thành cám ơn.

Bạn đã cài firewall, đổi port SSH, setup fail2ban… nhưng làm sao biết server mình thực sự an toàn đến mức nào? Câu trả lời là chạy một cuộc audit tự động để quét toàn bộ hệ thống, từ kernel cho đến ứng dụng, rồi cho điểm cụ thể.

Lynis Kiểm tra bảo mật trên Linux VPS - Tự kiểm tra

Lynis chính là tool làm việc đó. Nó miễn phí, mã nguồn mở, và được dùng rộng rãi trong giới sysadmin lẫn pentester. Trong bài này mình sẽ hướng dẫn bạn cài đặt Lynis, chạy audit, đọc kết quả, và fix những vấn đề phổ biến nhất mà nó tìm ra.

Lynis là gì?

Lynis là một công cụ kiểm tra bảo mật mã nguồn mở, được phát triển bởi CISOfy. Nó chạy trực tiếp trên server Linux (cũng hỗ trợ macOS và Unix), quét hàng trăm mục từ cấu hình kernel, quyền file, dịch vụ mạng, tài khoản người dùng, cho đến các ứng dụng đang cài đặt.

Điểm hay của Lynis là nó không cần agent hay kết nối ra bên ngoài. Tool chạy local, đọc trực tiếp cấu hình trên máy, rồi cho ra một bản báo cáo với điểm số gọi là tăng cường bảo mật index. Điểm này giúp bạn biết server đang ở mức nào và cần cải thiện gì.

Một số thứ Lynis kiểm tra:

  • Boot loader và kernel configuration
  • Cấu hình SSH, firewall, authentication
  • File permissions và integrity
  • Logging, NTP, DNS
  • Malware scanner, package manager
  • Database, web server, PHP config
  • Và hàng trăm test khác

Cài đặt Lynis

Lynis có sẵn trong repository của hầu hết các distro phổ biến. Cách cài rất đơn giản.

Ubuntu / Debian

sudo apt update
sudo apt install lynis -y

AlmaLinux / Rocky Linux

Lynis nằm trong repo EPEL, nên bạn cần bật EPEL trước:

sudo dnf install epel-release -y
sudo dnf install lynis -y

Kiểm tra phiên bản sau khi cài:

lynis --version

Nếu muốn dùng bản mới nhất, bạn có thể clone trực tiếp từ GitHub: git clone https://github.com/CISOfy/lynis.git rồi chạy ./lynis audit system trong thư mục đó. Cách này không cần cài đặt gì thêm.

Chạy audit lần đầu

Lệnh cơ bản để quét toàn bộ hệ thống:

sudo lynis audit system

Quá trình audit mất khoảng 1-3 phút tuỳ server. Lynis sẽ chạy qua từng nhóm test và in kết quả ra màn hình theo thời gian thực. Bạn sẽ thấy output dạng như thế này:

[+] Boot and services
------------------------------------
  - Service Manager                                  [ systemd ]
  - Checking UEFI boot                               [ DISABLED ]
  - Checking presence GRUB2                           [ FOUND ]

[+] Kernel ------------------------------------ - Checking default run level [ RUNLEVEL 5 ] - Checking CPU support (NX/PAE) [ CPU-NX-PAE ] - Checking kernel version and target [ OK ]

...

Cuối cùng, Lynis sẽ hiển thị phần tổng kết quan trọng nhất:

================================================================================

Lynis security scan details:

Hardening index : 62 [############ ] Tests performed : 256 Plugins enabled : 2

Components: - Firewall [V] - Malware scanner [X]

Scan mode: Normal [V] Forensics [ ] Integration [ ] Pentest [ ]

Lynis update available : YES

Suggestions : 42 Warnings : 5

================================================================================

Ba con số quan trọng cần chú ý:

  • Tăng cường bảo mật index: điểm bảo mật tổng thể (0-100). Server mới cài thường ở khoảng 55-65.
  • Warnings: các vấn đề nghiêm trọng cần fix ngay.
  • Suggestions: các đề xuất cải thiện, sắp xếp theo mức độ quan trọng.

Đọc báo cáo chi tiết

Ngoài output trên màn hình, Lynis ghi log chi tiết vào hai file:

/var/log/lynis.log

File này chứa log đầy đủ quá trình audit, bao gồm từng test đã chạy, kết quả chi tiết, và lý do đánh giá. Nếu muốn hiểu tại sao một mục bị warning, đây là chỗ cần đọc.

sudo cat /var/log/lynis.log | grep -i warning

/var/log/lynis-report.dat

File này chứa kết quả dạng key=value, dễ parse bằng script. Ví dụ muốn xem tất cả suggestion:

sudo grep "^suggestion" /var/log/lynis-report.dat

Xem danh sách warning:

sudo grep "^warning" /var/log/lynis-report.dat

Xem tăng cường bảo mật index:

sudo grep "hardening_index" /var/log/lynis-report.dat

Top 10 findings phổ biến và cách fix

Sau khi chạy Lynis trên một VPS mới, bạn sẽ gặp khá nhiều suggestion. Dưới đây là những finding mình thấy xuất hiện thường xuyên nhất và cách xử lý.

1. SSH configuration warnings

Lynis sẽ cảnh báo nếu SSH vẫn dùng port 22, cho phép root login, hoặc chưa giới hạn authentication method. Đây là finding phổ biến nhất.

Cách fix: tham khảo bài Tăng cường bảo mật SSH trên Linux VPS trong series này, bao gồm đổi port, tắt root login, dùng SSH key, và giới hạn cipher.

2. Firewall not enabled hoặc no firewall active

Nếu server chưa bật firewall, Lynis sẽ đánh dấu đây là warning nghiêm trọng.

Cách fix: setup UFW (Ubuntu) hoặc firewalld (AlmaLinux) theo hướng dẫn trong bài Firewall cơ bản: UFW và firewalld.

3. No toàn vẹn tập tin tool installed

Lynis kiểm tra xem server có cài tool giám sát thay đổi file (như AIDE, Tripwire, OSSEC) hay không. Nếu thiếu, nó sẽ suggest cài một cái.

Cách fix: cài và cấu hình AIDE theo hướng dẫn trong bài File Integrity Monitoring với AIDE.

4. Kernel tăng cường bảo mật – sysctl parameters

Lynis kiểm tra hàng loạt kernel parameter liên quan đến network security (như net.ipv4.conf.all.rp_filter, net.ipv4.icmp_echo_ignore_broadcasts, kernel.randomize_va_space). Nhiều trong số này chưa được set đúng trên VPS mặc định.

Cách fix: xem bài Kernel Tăng cường bảo mật với sysctl để biết cần set những parameter nào.

5. No malware scanner found

Lynis tìm các tool quét malware như ClamAV, rkhunter, chkrootkit. Nếu không có cái nào, nó sẽ gợi ý cài đặt.

Ubuntu / Debian:

sudo apt install clamav rkhunter -y
sudo freshclam
sudo rkhunter --update

AlmaLinux / Rocky Linux:

sudo dnf install clamav clamav-update rkhunter -y
sudo freshclam
sudo rkhunter --update

6. NTP not configured / time synchronization

Đồng bộ thời gian rất quan trọng cho logging và certificate. Nếu NTP chưa bật, fix rất nhanh:

sudo timedatectl set-ntp true
timedatectl status

7. Vulnerable packages / updates available

Lynis kiểm tra xem có package nào cần update hay không. Fix đơn giản:

Ubuntu: sudo apt update && sudo apt upgrade -y

AlmaLinux: sudo dnf update -y

8. USB storage enabled

Trên VPS, bạn hầu như không bao giờ cần USB. Lynis gợi ý disable USB storage module:

echo "install usb-storage /bin/true" | sudo tee /etc/modprobe.d/disable-usb-storage.conf
echo "blacklist usb-storage" | sudo tee -a /etc/modprobe.d/disable-usb-storage.conf

9. No password policy / PAM configuration

Lynis kiểm tra password policy: độ dài tối thiểu, expiration, complexity. Nếu chưa set, bạn nên cấu hình trong /etc/login.defs và PAM modules.

# /etc/login.defs
PASS_MAX_DAYS   365
PASS_MIN_DAYS   1
PASS_MIN_LEN    12
PASS_WARN_AGE   14

10. Logging / audit daemon

Lynis kiểm tra xem auditd có đang chạy hay không. Nếu chưa cài hoặc chưa bật:

Ubuntu:

sudo apt install auditd -y
sudo systemctl enable auditd
sudo systemctl start auditd

AlmaLinux:

sudo dnf install audit -y
sudo systemctl enable auditd
sudo systemctl start auditd

Không cần fix tất cả suggestion cùng lúc. Ưu tiên warnings trước, sau đó lọc suggestion theo mức ảnh hưởng. Mỗi lần fix xong một nhóm, chạy lại lynis audit system để xem điểm tăng.

Lynis profiles: tuỳ chỉnh test

Mặc định Lynis chạy tất cả test. Nhưng nếu bạn muốn bỏ qua một số test không liên quan (ví dụ test Docker trên server không dùng Docker), bạn có thể tạo custom profile.

Profile mặc định nằm ở /etc/lynis/default.prf. Bạn nên tạo file custom thay vì sửa file gốc:

sudo cp /etc/lynis/default.prf /etc/lynis/custom.prf

Trong file custom, bạn có thể skip test cụ thể:

# Bỏ qua test Docker (CONT-8104)
skip-test=CONT-8104

# Bỏ qua test NTP nếu dùng chronyd thay vì ntpd skip-test=TIME-3104

# Bỏ qua test USB (trên VPS không cần) skip-test=STRG-1840

Chạy Lynis với custom profile:

sudo lynis audit system --profile /etc/lynis/custom.prf

Cách này giúp kết quả audit chính xác hơn vì loại bỏ những false positive không liên quan đến môi trường của bạn.

Tự động hoá: cron + email report

Chạy Lynis thủ công thì tốt, nhưng tốt hơn là setup cho nó chạy tự động hàng tuần rồi gửi kết quả qua email. Như vậy bạn sẽ biết ngay nếu điểm bảo mật bị giảm.

Tạo script audit:

sudo nano /usr/local/bin/lynis-weekly.sh

Nội dung:

#!/bin/bash
# Lynis weekly security audit

REPORT_FILE="/tmp/lynis-report-$(date +%Y%m%d).txt" EMAIL="admin@yourdomain.com"

# Chạy audit, ghi output ra file lynis audit system --no-colors --quiet > "$REPORT_FILE" 2>&1

# Lấy hardening index SCORE=$(grep "hardening_index" /var/log/lynis-report.dat | cut -d= -f2)

# Đếm warnings WARNINGS=$(grep -c "^warning" /var/log/lynis-report.dat)

# Gửi email { echo "Lynis Weekly Report — $(hostname)" echo "Date: $(date)" echo "Hardening Index: $SCORE" echo "Warnings: $WARNINGS" echo "" echo "=== Warnings ===" grep "^warning" /var/log/lynis-report.dat echo "" echo "=== Top Suggestions ===" grep "^suggestion" /var/log/lynis-report.dat | head -20 } | mail -s "Lynis Report — $(hostname) — Score: $SCORE" "$EMAIL"

# Dọn file tạm rm -f "$REPORT_FILE"

Phân quyền và thêm vào cron:

sudo chmod +x /usr/local/bin/lynis-weekly.sh
sudo crontab -e

Thêm dòng sau để chạy mỗi Chủ Nhật lúc 3 giờ sáng:

0 3 * * 0 /usr/local/bin/lynis-weekly.sh

Để gửi email được, server cần có mail utility. Trên Ubuntu cài bằng sudo apt install mailutils, trên AlmaLinux dùng sudo dnf install mailx. Hoặc bạn có thể thay lệnh mail bằng cách push notification qua Telegram bot, webhook, hoặc tool giám sát bạn đang dùng.

Tăng cường bảo mật index: đặt mục tiêu bao nhiêu?

Tăng cường bảo mật index là thang điểm 0-100 do Lynis tính dựa trên tỷ lệ test pass/fail. Theo kinh nghiệm và khuyến nghị từ CISOfy:

  • Dưới 60: server cần cải thiện ngay, nhiều vấn đề cơ bản chưa xử lý.
  • 60-70: mức trung bình, đã có một số biện pháp nhưng còn thiếu nhiều thứ.
  • 70-80: mức tốt (good). Server đã được tăng cường bảo mật cơ bản, phù hợp với phần lớn VPS production.
  • Trên 80: mức rất tốt (great). Thường chỉ đạt được khi bạn đã xử lý kỹ từ SSH, firewall, kernel, cho đến audit logging.
  • Trên 90: hiếm khi cần thiết trừ khi chạy hệ thống compliance (PCI-DSS, HIPAA).

Mục tiêu thực tế cho một VPS chạy web là đạt trên 70. Nếu bạn đã follow các bài trước trong series này (SSH tăng cường bảo mật, firewall, sysctl, AIDE…), con số này hoàn toàn khả thi.

Lynis so với các tool khác

Lynis không phải tool duy nhất trong lĩnh vực này. Dưới đây là so sánh nhanh với hai lựa chọn khác:

OpenSCAP

OpenSCAP là bộ tool audit tuân theo chuẩn SCAP (Security Content Automation Protocol). Nó mạnh hơn Lynis về mặt compliance vì có sẵn các profile chuẩn (DISA STIG, PCI-DSS). Tuy nhiên cấu hình phức tạp hơn nhiều và chủ yếu hỗ trợ tốt trên RHEL/CentOS. Phù hợp với môi trường enterprise cần compliance report chính thức.

CIS Benchmarks

CIS (Center for Internet Security) cung cấp các benchmark chi tiết cho từng distro, từng phiên bản. Đây là “sách giáo khoa” về tăng cường bảo mật. CIS có tool riêng (CIS-CAT) để scan, nhưng bản đầy đủ cần license. Lynis thực tế đã cover phần lớn các recommendation của CIS, nên đối với VPS cá nhân hoặc doanh nghiệp nhỏ, Lynis là lựa chọn thực tế hơn.

Tóm lại: Lynis phù hợp với phần lớn use case vì nó miễn phí, dễ dùng, và cho kết quả nhanh. Nếu bạn cần compliance report theo chuẩn cụ thể, hãy tìm hiểu thêm OpenSCAP hoặc CIS-CAT.

Checkpoint: tự kiểm tra

Đến đây bạn đã biết cách dùng Lynis. Hãy thực hành theo các bước sau:

  1. Cài Lynis và chạy sudo lynis audit system lần đầu.
  2. Ghi lại tăng cường bảo mật index hiện tại.
  3. Đọc danh sách warnings và suggestions.
  4. Chọn 5 findings quan trọng nhất và fix theo hướng dẫn ở trên.
  5. Chạy lại sudo lynis audit system và so sánh điểm.
  6. Setup cron job để Lynis chạy tự động hàng tuần.

Nếu điểm tăng 5-10 sau khi fix, bạn đang đi đúng hướng. Cứ lặp lại quy trình này, fix thêm vài finding mỗi lần, cho đến khi đạt mức bạn hài lòng.

Bài tiếp theo trong series sẽ là tổng kết, nơi mình đưa ra một checklist hoàn chỉnh để bạn review lại toàn bộ những gì đã làm từ bài 1 đến giờ.

Chia sẻ:
Bài viết đã được kiểm duyệt bởi AZDIGI Team

Về tác giả

Trần Thắng

Trần Thắng

Chuyên gia tại AZDIGI với nhiều năm kinh nghiệm trong lĩnh vực web hosting và quản trị hệ thống.

Hơn 10 năm phục vụ 80.000+ khách hàng

Bắt đầu dự án web của bạn với AZDIGI