如何使用 lynis 扫描 Linux 漏洞
作为一名系统管理员、Linux 安全技术人员或系统审核员,您的职责可能涉及这些的任意组合:软件补丁管理、恶意软件扫描、文件完整性检查、安全审计、配置错误检查等。如果有一个自动漏洞扫描工具,它可以为您节省大量检查常见安全问题的时间。
Linux 上的此类漏洞扫描程序之一是 lynis。该工具是开源的(GPLv3),并且实际上支持多种平台,包括 Linux、FreeBSD 和 Mac OS。
在 Linux 上安装 lynis
wget https://downloads.cisofy.com/lynis/lynis-3.0.8.tar.gz
sudo tar xvfvz lynis-3.0.8.tar.gz -C /opt
使用 lynis 扫描 Linux 漏洞
要使用 lynis 扫描 Linux 系统中的任何漏洞,请运行以下命令。
$ cd /opt/lynis
$ sudo ./lynis --check-all -Q
一旦lynis
开始扫描您的系统,它将在多个类别中执行审核:
系统工具:系统二进制文件
启动和服务:启动加载程序、启动服务
内核:运行级别、加载的模块、内核配置、核心转储
内存和进程:僵尸进程、IO等待进程
用户、组和身份验证:组 ID、sudoers、PAM 配置、密码时效、默认掩码
贝壳
文件系统:挂载点、/tmp 文件、根文件系统
存储: USB 存储、火线 ohci
NFS
软件:名称服务: DNS 搜索域、BIND
端口和软件包:易受攻击/可升级的软件包、安全存储库
网络:名称服务器、混杂接口、连接
打印机和线轴:杯子配置
软件:电子邮件和消息传递
软件:防火墙 iptables、pf
软件:网络服务器: Apache、nginx
SSH 支持: SSH 配置
SNMP支持
数据库: MySQL root 密码
LDAP 服务
软件:php: php 选项
鱿鱼支持
日志记录和文件: syslog 守护进程、日志目录
不安全的服务: inetd
横幅和标识
计划任务: crontab/cronjob、atd
会计: sysstat 数据、auditd
时间和同步: ntp 守护进程
加密: SSL 证书过期
虚拟化
安全框架:AppArmor、SELinux、grsecurity 状态
软件:文件完整性
软件:恶意软件扫描程序
主目录: shell 历史文件
lynis
的运行截图如下所示:

扫描完成后,系统的审核报告将生成并存储在 /var/log/lynis.log
中。
审核报告包含该工具检测到的潜在漏洞的警告。例如:
$ sudo grep Warning /var/log/lynis.log
[20:20:04] Warning: Root can directly login via SSH [test:SSH-7412] [impact:M]
[20:20:04] Warning: PHP option expose_php is possibly turned on, which can reveal useful information for attackers. [test:PHP-2372] [impact:M]
[20:20:06] Warning: No running NTP daemon or available client found [test:TIME-3104] [impact:M]
审计报告还包含许多可以帮助强化 Linux 系统的建议。例如:
$ sudo grep Suggestion /var/log/lynis.log
[20:19:41] Suggestion: Install a PAM module for password strength testing like pam_cracklib or pam_passwdqc [test:AUTH-9262]
[20:19:41] Suggestion: When possible set expire dates for all password protected accounts [test:AUTH-9282]
[20:19:41] Suggestion: Configure password aging limits to enforce password changing on a regular base [test:AUTH-9286]
[20:19:41] Suggestion: Default umask in /etc/profile could be more strict like 027 [test:AUTH-9328]
[20:19:42] Suggestion: Default umask in /etc/login.defs could be more strict like 027 [test:AUTH-9328]
[20:19:42] Suggestion: Default umask in /etc/init.d/rc could be more strict like 027 [test:AUTH-9328]
[20:19:42] Suggestion: To decrease the impact of a full /tmp file system, place /tmp on a separated partition [test:FILE-6310]
[20:19:42] Suggestion: Disable drivers like USB storage when not used, to prevent unauthorized storage or data theft [test:STRG-1840]
[20:19:42] Suggestion: Disable drivers like firewire storage when not used, to prevent unauthorized storage or data theft [test:STRG-1846]
[20:20:03] Suggestion: Install package apt-show-versions for patch management purposes [test:PKGS-7394]
. . . .
将扫描系统漏洞作为每日 Cron 作业
为了充分利用 lynis,建议定期运行它,例如作为每日 cron 作业。当使用 --cronjob
选项运行时,lynis
以自动、非交互式扫描模式运行。
以下是每日 cron
作业脚本,它以自动模式运行 lynis
来审核您的系统,并存档每日扫描报告。
$ sudo vi /etc/cron.daily/scan.sh
#!/bin/sh
AUDITOR="automated"
DATE=$(date +%Y%m%d)
HOST=$(hostname)
LOG_DIR="/var/log/lynis"
REPORT="$LOG_DIR/report-${HOST}.${DATE}"
DATA="$LOG_DIR/report-data-${HOST}.${DATE}.txt"
cd /opt/lynis
./lynis -c --auditor "${AUDITOR}" --cronjob > ${REPORT}
mv /var/log/lynis-report.dat ${DATA}
$ sudo chmod 755 /etc/cron.daily/scan.sh