前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >如何阅读 Lynis 报告提高 Linux 安全性

如何阅读 Lynis 报告提高 Linux 安全性

作者头像
用户8870853
修改于 2021-09-13 09:51:08
修改于 2021-09-13 09:51:08
95000
代码可运行
举报
运行总次数:0
代码可运行

当我读到 Gaurav Kamathe 的文章《使用 Lynis 扫描 Linux 安全性》时,让我想起了我在美国劳工部担任系统管理员的日子。我那时的职责之一是保证我们的 Unix 服务器的安全。每个季度,都会有一个独立的核查员来审查我们服务器的安全状态。每次在核查员预定到达的那一天,我都会运行 Security Readiness Review(SRR),这是一个扫描工具,它使用一大套脚本来识别和报告任何安全线索。SRR 是开源的,因此我可以查看所有源码脚本及其功能。这使我能够查看其代码,确定具体是什么问题,并迅速修复它发现的每个问题。

什么是 Lynis?

Lynis 是一个开源的安全审计工具,它的工作原理和 SRR 很像,它会扫描 Linux 系统,并提供它发现的任何弱点的详细报告。同样和 SRR 一样,它也是由一大套脚本组成的,每个脚本都会检查一个特定的项目,例如,最小和最大密码时间要求。

运行 Lynis 后,你可以使用它的报告来定位每个项目的脚本,并了解 Lynis 是如何检查和报告每个问题的。你也可以使用相同的脚本代码来创建新的代码来自动解决。

如何阅读 Lynis 报告

由于 Gaurav 的文章介绍了 Lynis 的安装和使用,在本文中,我将展示一些如何阅读和使用其报告的例子。

请从运行一次审计开始:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# lynis audit system --quick

完成后,完整的报告将显示在你的屏幕上。在底部,“Suggestions” 部分列出了所有可能需要修复以更好地加固系统的项目,以及每个项目的 TEST-ID。

要想加固系统并减少列表的大小,请开始解决每个项目。在 “Suggestions” 部分的描述可能包含了你需要采取的全部行动。如果没有,你可以使用 show details 命令。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# lynis show details TEST-ID

例如,在我的系统中,有一条建议是:

找不到 locate 所需的数据库,运行 updatedblocate.updatedb 来创建这个文件。[FILE-6410]

看起来我只需要运行 updatedb 命令就行,但如果我想确定一下,我可以使用 Lynis 的 show details 选项。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# lynis show details FILE-6410
2020-06-16 20:54:33 Performing test ID FILE-6410 (Checking Locate database)
2020-06-16 20:54:33 Test: Checking locate database
2020-06-16 20:54:33 Result: file /var/lib/mlocate/mlocate.db not found
2020-06-16 20:54:33 Result: file /var/lib/locate/locatedb not found
2020-06-16 20:54:33 Result: file /var/lib/locatedb not found
2020-06-16 20:54:33 Result: file /var/lib/slocate/slocate.db not found
2020-06-16 20:54:33 Result: file /var/cache/locate/locatedb not found
2020-06-16 20:54:33 Result: file /var/db/locate.database not found
2020-06-16 20:54:33 Result: database not found
2020-06-16 20:54:33 Suggestion: The database required for 'locate' could not be found. Run 'updatedb' or 'locate.updatedb' to create this file. [test:FILE-6410] [details:-] [solution:-]
2020-06-16 20:54:33 ====

这些细节表明 Lynis 无法找到各种文件。这个情况描述的非常清楚。我可以运行 updatedb 命令,然后重新检查这个测试。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# updatedb
# lynis --tests FILE-6410

重新检查细节时,会显示它发现哪个文件满足了测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# lynis show details FILE-6410
2020-06-16 21:38:40 Performing test ID FILE-6410 (Checking Locate database)
2020-06-16 21:38:40 Test: Checking locate database
2020-06-16 21:38:40 Result: locate database found (/var/lib/mlocate/mlocate.db)
2020-06-16 21:38:40 Result: file /var/lib/locate/locatedb not found
2020-06-16 21:38:40 Result: file /var/lib/locatedb not found
2020-06-16 21:38:40 Result: file /var/lib/slocate/slocate.db not found
2020-06-16 21:38:40 Result: file /var/cache/locate/locatedb not found
2020-06-16 21:38:40 Result: file /var/db/locate.database not found
2020-06-16 21:38:40 ====

深入挖掘

Lynis 的许多建议并不像这个建议那样直接。如果你不确定某个发现或建议指的是什么,就很难知道如何解决问题。假设你在一个新的 Linux 服务器上运行 Lynis,有几项与 SSH 守护进程有关的内容,其中一项是关于 MaxAuthTries 的设置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* Consider hardening SSH configuration [SSH-7408]
    - Details  : MaxAuthTries (6 --> 3)
      https://cisofy.com/lynis/controls/SSH-7408/

要解决这个问题,你需要知道 SSH 配置文件的位置。一个经验丰富的 Linux 管理员可能已经知道在哪里找到它们,但如果你不知道,有一个方法可以看到 Lynis 在哪里找到它们。

定位 Lynis 测试脚本

Lynis 支持多种操作系统,因此你的安装位置可能有所不同。在 Red Hat Enterprise Linux 或 Fedora Linux 系统中,使用 rpm 命令来查找测试文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# rpm -ql lynis

这将列出所有测试文件,并报告它们在 lynis/include 目录下的位置。在这个目录下搜索你想知道的 TEST-ID(本例中为 SSH-7408):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# grep SSH-7408 /usr/share/lynis/include/*
/usr/share/lynis/include/tests_ssh:    # Test        : SSH-7408

查找 SSH 问题

名为 tests_ssh 的文件中包含了 TEST-ID,在这里可以找到与 SSH 相关的扫描函数。看看这个文件,就可以看到 Lynis 扫描器调用的各种函数。第一部分在一个名为 SSH_DAEMON_CONFIG_LOCS 的变量中定义了一个目录列表。下面几节负责检查 SSH 守护进程的状态、定位它的配置文件,并识别它的版本。我在 SSH-7404 测试中找到了查找配置文件的代码,描述为 “确定 SSH 守护进程配置文件位置”。这段代码包含一个 for 循环,在列表中的项目中搜索一个名为 sshd_config 的文件。我可以用这个逻辑来自己进行搜索:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# find /etc /etc/ssh /usr/local/etc/ssh /opt/csw/etc/ssh -name sshd_config
/etc/ssh/sshd_config
/etc/ssh/sshd_config
find:/usr/local/etc/ssh’: No such file or directory
find:/opt/csw/etc/ssh’: No such file or directory

进一步探索这个文件,就会看到寻找 SSH-7408 的相关代码。这个测试涵盖了 MaxAuthTries 和其他一些设置。现在我可以在 SSH 配置文件中找到该变量:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# grep MaxAuthTries /etc/ssh/sshd_config
#MaxAuthTries 6

修复法律横幅问题

Lynis 还报告了一个与登录系统时显示的法律横幅有关的发现。在我的家庭桌面系统上(我并不希望有很多其他人登录),我没有去改变默认的 issue 文件。企业或政府的系统很可能被要求包含一个法律横幅,以警告用户他们的登录和活动可能被记录和监控。Lynis 用 BANN-7126 测试和 BANN-7130 测试报告了这一点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
* Add a legal banner to /etc/issue, to warn unauthorized users [BANN-7126]
      https://cisofy.com/lynis/controls/BANN-7126/

* Add legal banner to /etc/issue.net, to warn unauthorized users [BANN-7130]
      https://cisofy.com/lynis/controls/BANN-7130/

我在运行 Fedora 32 工作站的系统上没有发现什么:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cat /etc/issue /etc/issue.net
\S
Kernel \r on an \m (\l)

\S
Kernel \r on an \m (\l)

我可以添加一些诸如 “keep out” 或 “don't break anything” 之类的内容,但测试的描述并没有提供足够的信息来解决这个问题,所以我又看了看 Lynis 的脚本。我注意到 include 目录下有一个叫 tests_banners 的文件;这似乎是一个很好的地方。在 grep 的帮助下,我看到了相关的测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# grep -E 'BANN-7126|BANN-7130' /usr/share/lynis/include/tests_banners
    # Test        : BANN-7126
    Register --test-no BANN-7126 --preqs-met ${PREQS_MET} --weight L --network NO --category security --description "Check issue banner file contents"
    # Test        : BANN-7130
    Register --test-no BANN-7130 --preqs-met ${PREQS_MET} --weight L --network NO --category security --description "Check issue.net banner file contents"

在检查了测试文件中的相关代码后,我发现这两个测试都是通过一个 for 循环来迭代一些预定义的法律术语:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for ITEM in ${LEGAL_BANNER_STRINGS}; do

这些法律术语存储在文件顶部定义的变量 LEGAL_BANNER_STRINGS 中。向后滚动到顶部可以看到完整的清单:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
LEGAL_BANNER_STRINGS="audit access authori condition connect consent continu criminal enforce evidence forbidden intrusion law legal legislat log monitor owner penal policy policies privacy private prohibited record restricted secure subject system terms warning"

我最初的建议(“keep out” 或 “don't break anything”)不会满足这个测试,因为它们不包含这个列表中的任何单词。

下面这条横幅信息包含了几个必要的词,因此,它将满足这个测试,并防止 Lynis 报告它:

Attention, by continuing to connect to this system, you consent to the owner storing a log of all activity. Unauthorized access is prohibited.

请注意,这条信息必须被添加到 /etc/issue/etc/issue.net 中。

使其可重复

你可以手动进行这些编辑,但你可能要考虑自动化。例如,可能有许多设置需要更改,或者你可能需要在许多服务器上定期进行这些编辑。创建一个加固脚本将是简化这个过程的好方法。对于 SSH 配置,在你的加固脚本中的一些 sed 命令可以解决这些发现。或者,你可以使用 echo 语句来添加合法的横幅。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sed -i '/MaxAuthTries/s/#MaxAuthTries 6/MaxAuthTries 3/' /etc/ssh/sshd_config

echo "Legal Banner" | tee -a /etc/issue /etc/issue.net

自动化使你能够创建一个可重复的脚本,可以在你的基础设施中保存和管理。你也可以在你的初始服务器配置中加入这个脚本。

加固你的系统

这种类型的练习可以提高你的脚本技能,既可以跟着现有的代码走,也可以写自己的脚本。因为 Lynis 是开源的,所以你可以很容易地看到你的系统是如何被检查的,以及它的报告意味着什么。最终的结果将是一个完善的系统,你可以在审计人员来的时候随时向他们炫耀。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
CentOS7下使用开源安全审计工具Lynis
Lynis是一款Linux系统的安全审计以及加固工具,能够进行深层次的安全扫描,其目的是检测潜在的时间并对未来的系统加固提供建议。
yuanfan2012
2020/11/26
1.8K0
如何在Ubuntu 16.04上使用Lynis执行安全审计
Lynis是一个基于主机的开源安全审计应用程序,可以评估Linux和其他类型UNIX操作系统的安全配置文件和状态。
黑色技术
2018/07/24
2.6K0
linux安全基线配置全解析(付脚本)
现在大多数企业都是使用linux作为服务器,不仅是linux是开源系统,更是因为linux比windows更安全。但是由于管理员的安全意识不全或者疏忽,导致linux的敏感端口和服务没有正确的配置,可能会被恶意利用,所以需要进行基线加固。
IT运维技术圈
2022/10/24
3K0
基于腾讯云平台之自动化运维工具Ansible实践
本篇将主要描述在腾讯云平台如何构建Ansible自动化运维管理工具平台/环境,如何批量管理云上服务器,批量分发配置等设置,同时这里将引入某客户真实的案例进行整体的阐述。将从Ansible的基础、架构、常见功能模块,案例解决示例方法进行展开。
Rocky-QQ
2022/09/18
2.6K0
Linux_SSHD
本教程所有命令在POWERSHELL下运行 Config 配置config文件 cd ~\.ssh\ 没有就创建 C:\Users\用户名\.ssh\ notepad.exe .\config 或者 notepad.exe C:\ProgramData\ssh\ssh_config config格式: Host 主机名 HostName IP/domain User username Port 22 SSH Key 配置本地密钥,已有请忽略 生成密钥 ssh-keygen -t
XRSec
2022/02/11
1.2K0
Linux 系统欢迎信息设置;登录提示信息设置;/etc/motd 设置
在项目合作的时候,有时候服务器被多人使用;有时候需要设置提示信息,提醒登录的同学,当前系统正在被我占用;当然在公司场景中,比如发布更新维护之类的信息也能使用提示信息进行通知:
西湖醋鱼
2020/12/30
10.1K1
Linux 系统欢迎信息设置;登录提示信息设置;/etc/motd 设置
Ubuntu Linux CPU GPU 性能测试
Linux越来越容易上手和使用,其用户越来越多,如何在Linux下测试CPU/GPU等性能呢?同时,基准测试和压力测试方法通常用于评估电脑的性能,这些测试还有助于发现仅在系统承受重负载时才观察到的硬件问题和系统异常。
zhangrelay
2020/06/16
25.3K0
Ubuntu Linux CPU GPU 性能测试
011.Linux目录结构以及重要系统文件
作用:DNS(Domain Name System)配置文件,DNS主要负责将网站域名解析为对应的IP地址,从域名到IP的解析过程,称作A记录,即Address Record
CoderJed
2020/05/09
1K0
011.Linux目录结构以及重要系统文件
安全运维之:Linux系统账户和登录安全
在Linux下可通过history命令查看用户所有的历史操作记录,同时shell命令操作记录默认保存在用户目录下的.bash_history文件中,通过这个文件可以查询shell命令的执行历史,有助于运维人员进行系统审计和问题排查,同时,在服务器遭受黑客攻击后,也可以通过这个命令或文件查询黑客登录服务器所执行的历史命令操作,但是有时候黑客在入侵服务器后为了毁灭痕迹,可能会删除.bash_history文件,这就需要合理的保护或备份.bash_history文件。下面介绍下history日志文件的安全配置方法。
明哥的运维笔记
2019/01/30
3.1K0
实现SSH无密码自动登录
在使用ssh登陆服务器的时候很蛋疼的事是每次登陆的时候都要输入服务器密码,而且为了安全性,密码一般都不短,大概都得十几位的样子,一不小心输错了还得重来,十分麻烦。所以实现SSH的自动登陆是一件非常方便的事情,避免了恶心蛋疼而且无聊重复的输密码环节。
mythsman
2022/11/14
1.4K0
如何增强Linux和Unix服务器的安全性
操作系统内部的记录文件是检测是否有网络入侵的重要线索。如果您的系统是直接连到internet,您发现有很多人对您的系统做telnet/ftp登录尝试,可以运行"#more /var/log/secure grep refused"来检查系统所受到的攻击,以便采取相应的对策,如使用ssh来替换telnet/rlogin等。
会长君
2023/04/26
8950
sqlmap的使用介绍
一、sqlmap获取目标 1.sql注入介绍 所谓SQL注入,就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。 具体来说,它是利用现有
XRSec
2022/02/11
2.9K0
Linux安全运维加公配置.md
描述:Linux系统加固往往是下面几个方面入手,配置完成后将大大的提升机器的安全性,同时满足等保合规的要求;
全栈工程师修炼指南
2020/10/23
3.9K0
Linux安全运维加公配置.md
MySQL高可用之MHA集群部署
很多小伙伴反映说网上的MHA教程甚至收费的课程里的MHA教程都存在坑,不少教程只是搭建完成了,是否真的能在主库宕机时自动切换不得而知,鉴于此情况,简单写了一个MHA集群的搭建步骤。由于搭建的次数较多,没踩到过多的坑(坏笑),所以没有写太多的排坑方法,如果小伙伴们在部署的过程中遇到问题可以和我沟通,文中如有问题欢迎斧正。
俊才
2020/05/26
1K0
MySQL高可用之MHA集群部署
ansible生产环境使用场景(一)
本文记录了生产环境新增用户、修改密码、用户提权、用户资源限制修改、开启命令审计等操作。
loong576
2020/07/14
1.8K0
ansible生产环境使用场景(一)
第十八章 : 查找文件
查找文件 As we have wandered around our Linux system, one thing has become abundantly clear:a typical Li
砖业洋__
2023/05/06
2790
提高Linux安全性:14项检查建立安全的Linux服务器
1 – 记录主机信息 每当您正在使用新的Linux主机进行安全增强时,您需要创建一个文档并记录本文档中列出的项目,工作完成后,您将需要检查这些项目。另外,在开始时该文档,您需要记录有关Linux主机的信息: 设备名称 IP地址 MAC地址 负责安全提升工作的人(实际上是你) 日期 资产编号(如果您正在开展业务,则需要记录设备的资产编号) 2 – BIOS保护 您需要为此主机的BIOS设置密码,以确保最终用户无法修改或覆盖BIOS中的安全设置,这非常重要!设置BIOS管理员密码后,您需要从外部媒体设备(US
FB客服
2018/02/24
2.2K0
提高Linux安全性:14项检查建立安全的Linux服务器
centos7主机安全检测脚本和初始化脚本
# 一、主机安全检查脚本 #!/bin/bash ##Filename: CentOS_Check_Script.sh ##Description: Security detection script echo "##########################################################################" echo "#
章工运维
2023/05/19
7110
Ubuntu Server 第七章 远程管理
我笔记是直接从苑老师的第二章开始写的:-D,有朋友可能不了解链接终端的方式。目前我本地是Vmware 虚拟机 + Xshell SSH链接。关于SSH,不仅仅做用为链接,还可以做更多,前面的CS搭配Metasploit一章中也使用到了SSH隧道相关的知识。远程连接也不仅只有SSH一种远程连接方式。
天钧
2019/07/26
2K0
2024全网最为详细的红帽系列【RHCSA-(7)】初级及进阶Linux保姆级别骚操作教程;学不费来砍我[就怕你日后学成黑客了]
在Linux系统中,/etc/passwd是用于保存系统账户信息的文件,要统计当前系统中有多少个用户,
盛透侧视攻城狮
2024/10/22
680
2024全网最为详细的红帽系列【RHCSA-(7)】初级及进阶Linux保姆级别骚操作教程;学不费来砍我[就怕你日后学成黑客了]
相关推荐
CentOS7下使用开源安全审计工具Lynis
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文