Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux Lynis 系統安全稽核工具完整使用指南

編輯:關於 Linux

Lynis 是開源、無代理端、基於 Shell 的系統安全稽核工具,支援 Linux、FreeBSD、macOS、Solaris。掃描範圍涵蓋核心參數、檔案系統權限、服務設定、網路服務、使用者帳號、登入記錄、加密政策、軟體漏洞等數百項檢查。適合合規稽核 (PCI-DSS、HIPAA、ISO 27001)、滲透測試前偵察、定期基線檢查。本文說明安裝、掃描模式、結果解讀與自動化整合。

安裝方式

套件管理器安裝 (版本可能較舊)

# Debian/Ubuntu
sudo apt-get update && sudo apt-get install lynis

# RHEL/CentOS/Fedora (需 EPEL)
sudo yum install epel-release && sudo yum install lynis

# Arch
sudo pacman -S lynis

官方倉庫安裝 (最新版,推薦)

# 新增 CISOfy 官方倉庫
wget -O - https://packages.cisofy.com/keys/cisofy-software-public.key | sudo apt-key add -
echo "deb https://packages.cisofy.com/community/lynis/deb/ stable main" | sudo tee /etc/apt/sources.list.d/lynis.list
sudo apt-get update && sudo apt-get install lynis

直接下載執行 (無需安裝,適合一次性掃描)

cd /tmp
wget https://downloads.cisofy.com/lynis/lynis-3.0.9.tar.gz
tar zxvf lynis-3.0.9.tar.gz
cd lynis
./lynis audit system

掃描模式與常用指令

1. 完整系統稽核 (最常用)

sudo lynis audit system
# 或快速模式 (僅顯示警告/建議)
sudo lynis audit system --quick

2. 掃描特定類別

# 查看所有可用類別
sudo lynis show categories

# 掃描特定類別
sudo lynis audit system --categories "kernel,memory,processes"
sudo lynis audit system --categories "firewall,ssh,webserver"

3. 掃描特定測試項目 (Test ID)

# 列出所有測試項目
sudo lynis show tests

# 執行單一測試
sudo lynis audit system --tests "FILE-6354" --quick

4. 非互動/自動化模式 (適合 Cron/CI/CD)

sudo lynis audit system --cronjob --auditor "automated" > /var/log/lynis-report-$(date +%F).log
# --cronjob: 靜默模式、返回碼 0=無發現、1=有警告、2=有錯誤、255=錯誤
# --auditor: 標記稽核者身分

5. Docker 容器掃描

# 掃描宿主機 (含容器視角)
sudo lynis audit system --docker

# 掃描特定容器 (需容器內有 lynis)
docker exec -it container_name lynis audit system

結果解讀與日誌分析

螢幕輸出等級

  • [+]:通過
  • [-]:失敗/不符合
  • [!]:警告 (建議改善)
  • [*]:資訊/建議

關鍵日誌檔案

檔案內容
/var/log/lynis.log完整掃描過程、每項測試結果、詳細說明
/var/log/lynis-report.dat機器可讀報告 (Key=Value),適合程式解析

快速提取警告與建議

# 警告項目
grep "Warning" /var/log/lynis.log

# 建議項目
grep "Suggestion" /var/log/lynis.log

# 失敗項目
grep "Error" /var/log/lynis.log

# 解析報告檔
grep "^warning=" /var/log/lynis-report.dat
grep "^suggestion=" /var/log/lynis-report.dat

Lynis 稽核分數 (Hardening Index)

掃描結束顯示 Lynis security scan details: Hardening index: 68/100。分數參考:

  • 80+:優良
  • 60-79:中等,需改善警告項目
  • <60:風險較高,需立即處理

進階:客製化測試腳本 (Chisels / Custom Tests)

Lynis 支援自訂測試 (Lua 腳本),放置於 /etc/lynis/custom-tests/:

# /etc/lynis/custom-tests/my_ssh_port.lua
-- 檢查 SSH 埠是否非 22
local port = 22
local f = io.open("/etc/ssh/sshd_config", "r")
if f then
    for line in f:lines() do
        if line:match("^Port%s+(%d+)") then
            port = tonumber(line:match("^Port%s+(%d+)"))
            break
        end
    end
    f:close()
end
if port ~= 22 then
    report_finding("SSH-9001", "INFO", "SSH port changed to " .. port)
else
    report_finding("SSH-9001", "WARNING", "SSH using default port 22")
end

自動化整合範例

Systemd Timer 定期掃描

# /etc/systemd/system/lynis-scan.service
[Unit]
Description=Lynis Security Audit
[Service]
Type=oneshot
ExecStart=/usr/bin/lynis audit system --cronjob --auditor "systemd-timer"
StandardOutput=append:/var/log/lynis-scan.log

# /etc/systemd/system/lynis-scan.timer
[Unit]
Description=Daily Lynis Scan
[Timer]
OnCalendar=daily
Persistent=true
[Install]
WantedBy=timers.target

systemctl enable --now lynis-scan.timer

Ansible 整合

- name: Run Lynis audit
  command: lynis audit system --cronjob
  register: lynis_result
  changed_when: false
  failed_when: lynis_result.rc > 1

- name: Parse warnings
  debug:
    msg: "{{ item }}"
  loop: "{{ lynis_result.stdout_lines }}"
  when: "'Warning' in item or 'Suggestion' in item"

Nagios/Icinga/Checkmk 外掛

#!/bin/bash
# check_lynis.sh
OUTPUT=$(/usr/bin/lynis audit system --cronjob 2>&1)
RC=$?
if [ $RC -eq 0 ]; then
    echo "OK: Lynis scan passed | hardening_index=80"
    exit 0
elif [ $RC -eq 1 ]; then
    echo "WARNING: Lynis found warnings | hardening_index=65"
    exit 1
elif [ $RC -eq 2 ]; then
    echo "CRITICAL: Lynis found errors | hardening_index=45"
    exit 2
else
    echo "UNKNOWN: Lynis execution failed"
    exit 3
fi

優缺點與定位

優點缺點/限制
零依賴、單一 Shell 腳本、極易部署檢查項目廣度大但深度有限 (不深入特定應用如 PHP/Apache/MySQL 細節設定)
支援離線/隔離環境掃描無即時防護能力,屬事後稽核工具
輸出機器可讀格式,易整合 SIEM/CI/CD預設規則可能產生誤報,需調整閾值/白名單
社群活躍、規則定期更新商業版 (Lynis Enterprise) 提供更深度掃描、修復指引、合規報告

總結

Lynis 是 Linux 系統管理員「必備工具箱」核心成員。安裝簡單、掃描快速、輸出結構化,適合:每日基線掃描、變更前後對比、合規證據收集、滲透測試偵察。建議建立 systemd timer 每日自動掃描,並將 Hardening Index 趨勢圖納入儀表板,異常下降立即告警。

Copyright © Windows教程網 All Rights Reserved