Lynis – 用于审计和强化 Linux 系统的安全工具
Lynis是一个开源安全审计工具,适用于 Linux、Mac OS、BSD、其他基于 Unix 的操作系统等 UNIX 衍生产品。对支持系统强化和合规性测试的系统执行广泛的健康扫描。具有 GPL 许可证的开源软件。此工具还会扫描一般系统信息、易受攻击的软件包和配置问题。它对系统管理员、审计员、安全专业人员很有用。
Lynis 工具如何工作?
Lynis 扫描是模块化和机会性的,用于测试可用系统工具及其库等组件。 Lynis 工具的优点是不需要额外安装工具,因此系统是干净的。发现的组件越多,审计的范围就越大。使用这种方法,Lynis 可以无依赖地运行。
Lynis工具安装:
Lynis 是轻量级的,大多数用户使用需要更多时间安装的软件包来安装 Lynis。 Lynis有多种安装方式,
- 通过 GitHub 克隆
- 操作系统包安装
- 源安装
- 压缩包
- 家酿
- BSD 端口
像 Debian、Distro、Ubuntu、Mint、Fedora、Suse、OpenSUSE、Arch Linux、Manjaro 等 UNIX 发行版默认有 Lynis 包。有了这个,我们就可以很容易地使用包管理器从分发存储库安装它们。
使用软件包或操作系统包安装 Lynis:
使用软件包安装 Lynis 是默认安装的,因此我们可以在各种 UNIX 发行版上使用以下命令安装它。
在 Ubuntu/Debian/LinuxMint 上安装 Lynis
sudo apt-get install lynis
在 RHEL/CentOS 上安装 Lynis
$ sudo yum install lynis
在 Fedora 上安装 Lynis
$ sudo dnf install lynis
在 openSUSE 上安装 Lynis
$ sudo zypper install lynis
在基于 Arch Linux 的系统上安装 Lynis
$ sudo pacman -S lynis
在 BSD 端口上安装 Lynis
$ cd /usr/ports/lynis/security
$ make install
通过 Git Clone 安装 Lynis
从 GitHub 克隆或下载项目文件(需要编译或安装)。在安装或克隆存储库 Lynis 后,主要工具位于名为lynis 的文件中。一个 shell 脚本,打开时我们可以读取该工具实际执行的操作。 Lynis 是使用 shell 脚本实现的。
$ git clone https://github.com/CISOfy/lynis
$ cd lynis
$ ls
如何运行 Lynis:
要查看 Lynis 中可用的所有命令,我们可以执行以下命令,
$ ./lynis show
我们现在可以使用 Lynis 对我们的系统进行安全审计。我们可以在 Lynis 的帮助下查看要执行的命令列表。使用以下命令列出要执行的命令数,
$ ./lynis show commands
在执行审核之前,请确保您位于正确的目录中并在 lynis 之前添加“./”。 Lynis 无需预先配置即可运行,我们可以在特权和非特权模式(pentest)下运行 lynis 。有些测试需要root 权限,因此可以跳过这些测试。以特权模式运行审计 运行命令,
$ ./lynis audit system
注意:添加 –quick 参数将使 lynis 能够不间断地运行,并使我们能够在扫描的同时处理其他事情。
$ ./lynis audit system --quick
身份验证后,Lynis 将运行测试并检查结果。 Lynis 将执行审核,并执行许多测试,所有这些都分为几类。每次审核测试结果后,都会提供调试信息和建议以加强系统。更详细的信息存储在/var/log/lynis/log,而数据报告存储在/var/log/lynis-report.dat。
探索报告:
Lynis 进行深入审计并通过以下方式报告结果:
屏幕输出:它扫描系统并执行许多测试。可能的测试结果包括,
- 正常或警告
- 找到或未找到
- 虚弱的
- 无或完成
日志文件:扫描期间在屏幕上显示的结果和其他详细信息记录在日志文件中。日志文件中的信息
- 行动/事件时间
- 测试失败或跳过的原因
- (内部)测试的输出
- 关于配置选项的建议
- 威胁/影响分数
备注:每次扫描后都会记录日志文件。要调试或记录与先前扫描相关的信息,请在再次运行 lynis 之前安排日志轮换。
报告文件: Lynis 收集的调查结果和其他数据点存储在默认文件中的报告文件中。报告文件用于比较过去的扫描与当前的扫描。报告文件内容:
- 备注 = #<备注>
- 部分 = [<部分名称>]
- 选项/值 = <选项名称> = <选项的值>
报告数据包含有关存储在日志文件中的服务器和应用程序的信息。每次审核时都会覆盖日志文件。
Lynis 提供了有关当前系统操作系统、操作系统版本、在 Linux 机器上运行的硬件的完整信息。 Debian 插件被扫描并生成有关软件包安装的详细信息。
Debian 测试也被扫描,它提供了关于系统安装的更多信息。它还显示 Debian 插件的警告和软件安装列表(如果它们已安装在系统上)。 Debian 插件检查Debian 测试所需的系统二进制文件。
系统引导和服务被扫描并显示系统中存在的引导和服务问题。
用于检查典型 Lynis 审核结果的打印机和线轴,此类别下有两个测试。检查 cupsd 状态和相关配置文件。 lpd 状态,qdaemon 打印机假脱机程序状态。
软件:firewalls检查iptables内核模块,使用iptables链的策略。还验证软件防火墙,如 CSF、UCF 等。它检查防火墙和本地服务的配置,收集数据以供进一步分析。
这里inetd 的不安全服务没有找到, 该测试在 Lynis 上进行了标记,因为它不应作为您服务器上审计的一部分执行。扫描 inet 守护进程状态并在禁用时检查配置文件。
SSH 支持在 /etc/ssh/sshd_config 上扫描 SSH 守护进程状态和其他 SSH 调整以确保安全登录。
SNMP 支持检查 SNMP 守护程序正在运行、守护程序文件位置、SNMP 通信。
数据库检查已安装的数据库,如 MySQL、PostgreSQL、Oracle、DB2 和 Redis 以及相关进程、配置文件。
LDAP 服务检查 OpenLDAP 实例是否正在运行及其配置文件。
Lynis 有颜色编码:
- 绿色:这意味着一切正常或被禁用
- 黄色:跳过,未找到,可能有建议
- 红色:表示特定测试或扫描不安全或需要更多关注。
在内核扫描运行级别、CPU 支持、内核版本、内核类型、/etc/inittab 和加载的内核模块中。
内存和进程从 /proc/meminfo、死进程和 IO 进程扫描内存信息。
内核强化它有许多定义内核函数的可调设置,一些可调参数具有安全上下文。发行版可能没有默认设置,每次扫描都需要检查。该值根据安全状况不断变化。使用配置文件扫描 sysctl 密钥对以验证内核参数加固。
用户、组和身份验证扫描管理员帐户、UID、GID、/etc/passwd、sudoers 和 PAM 文件、密码老化、单用户模式、登录失败和 umask。
外壳扫描可用的外壳并检查它是否易受攻击。
文件系统扫描可用的挂载点并检查是单独挂载还是挂载在 / 文件系统上。还要检查挂载点标志并正确添加。 fstab 文件、交换分区、/proc、/tmp 和 /tmp 粘滞位。
- 存储扫描,如果 USB 存储被禁用,检查 USB 设备授权。另外,检查是否禁用了火线存储。
- NFS扫描 rpcinfo 注册程序、NFS 注册版本、NFS 注册协议和 NFS 守护进程运行等 NFS 信息。
端口和包扫描包管理器,如果找到包管理器(rpm、deb 等),它将查询已安装的包列表并检查包漏洞、包更新。最后,检查 GPG 签名以确保包安全。
网络扫描 IPv6 是否启用、名称服务器配置测试、搜索可用网络接口、MAC 地址、网络 IP 地址、DHCP 状态。
日志和文件扫描 syslog 守护进程是否正在运行及其配置文件。
- 横幅和标识扫描版权横幅文件,检查问题横幅文件和内容并检查 issue.net 横幅文件及其内容。
- 计划任务扫描 cron 守护进程统计信息,然后它将检查 cronjob/crontab 列表。
- 会计扫描会计软件信息及其配置文件。
安全框架扫描 AppArmor、SELinux、grsecurity 已启用。如果是,它将检查守护程序状态和存在。
- 文件完整性检查所有文件的文件完整性。
- 系统工具检查系统自动化工具、fail2ban、IDS/IPS 等。
- 恶意软件扫描恶意软件相关工具,如 chkrootkit、Rootkit Hunter、LMD 和 clamscan。
文件权限在此扫描所有类型的文件权限
扫描第 2 阶段插件是基于已安装插件的测试,要为 lynis 安装插件,然后添加/etc/lynis/plugins 目录。扫描完成后,我们会即兴提供警告和建议详细信息,以提高系统的安全性并纠正系统中存在的任何问题。
此处显示安全扫描详细信息,报告包括结果和一般信息,例如执行的许多安全测试。还会显示日志文件和报告数据的位置。
Lynis 提供了获取有关每个建议的详细信息的选项,可以使用show details命令后跟测试 ID 号访问它。在这里,我们利用了 50 条建议中列出的一条建议,
$ ./lynis show details PHP-2376
Lynis Hardening Index是 Lynis 的唯一索引,它让审计员了解系统的硬化程度。该数字是所采取措施的指标。
要实施安全保护措施,首先要确定系统中存在的发现,并应用扫描后给出的所有措施或建议。强化 Lynis 和 Unix 系统对于使安全符合安全策略至关重要。
增加 Lynis 硬化指数的替代方法是确定哪些测试对于特定机器的作用过于严格。可以在扫描配置文件中禁用测试,从而跳过测试。使用它,这些特定测试的强化等级将被跳过,并获得不同的分数。
将 Lynis 作为自定义测试运行
要扫描特定测试,我们必须列出测试 ID。如果服务器不运行 web 服务器,则无需测试。使用tests参数列出 lynis 中的一些测试。
$ lynis show tests
使用以下命令检查特定测试,后跟测试 ID
$ lynis show tests ACCT-9626
$ lynis show tests TOOL-5190
要了解 Lynis 工具的更新详细信息并查看该工具是否为最新版本,请运行更新信息以获取与 Lynis 工具相关的所有详细信息。
$ ./lynis update info
为了获得更多测试 ID,我们在默认日志文件/var/log/lynis.log 中找到它们
如果使用上面的日志文件没有得到想要的结果,那么使用-c (check-all) 参数运行 lynis。为了查看日志文件,我们使用cat 命令并结合 grep然后显示日志文件中存在的所有测试 ID 的列表。
$ cat /var/log/lynis.log | grep KRNL
/*Another method can be using command*/
$ ./lynis -c -Q
要运行检查系统的正常运行时间并检查核心转储配置测试,如果要添加更多测试,请添加以空格分隔的测试 ID。
$ ./lynis --tests "BOOT-5202 KRNL-5820"
使用类别运行 Lynis:
如果 Test-ID 需要大量处理,请使用–test-from-category参数,Lynis 运行包含在每个类别中的 Test-ID。使用以下命令运行防火墙和内核测试,
$ ./lynis --tests-from-category "firewalls"
以 Cronjob 的身份运行 Lynis:
自动 lynis 定期运行并检查自上次 lynis 扫描以来的改进。要使用 lynis 执行 Cronjob,然后每个月运行一次。在脚本 /usr/local/lynis和/var/log/lynis 中创建这些相关路径很重要。
要在脚本中保存路径,请执行以下命令,
# script is saved in text.sh and script is given below.
# You can use any editor to save the script, here editor used is Vim.
$ vim text.sh
#inside vim enter command
touch /root/Desktop/file.txt
$ chmod u+x text.sh
# this command is to execute cronjob monthly or anytime we schedule it to.
$ #!/bin/sh
AUDITOR="AUROMATED" 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 /usr/local/lynis
./lynis -c -auditor "${AUDITOR}" --cronjob > ${REPORT}
mv /var/log/lynis-report.dat ${DATA}
#End
$ lynis audit system --auditor "${AUDITOR}" --cronjob > ${REPORT}
# Move or save file to:
[-f /ar/log/lynis-report.dat ] then
mv /var/log/lynis-report.dat ${DATA}
fi
检查 Lynis 的版本
Lynis 的版本基本上会显示工具所在的版本号。检查Lynis 工具的版本将帮助您了解该工具是否为最新版本。
$ ./lynis --version