使用Lynis扫描您的Linux安全

2020-05-24 07:04:24

您有没有想过您的Linux机器到底有多安全?有很多Linux发行版,每个发行版都有自己的默认设置,你可以在这些发行版上运行几十个不同版本号的软件包,还有很多在后台运行的服务,我们几乎不知道也不关心这些。

要查找安全状态-运行在Linux计算机上的软件、网络和服务的整体安全状态-您可以运行几个命令并获取零星的相关信息,但是您需要解析的数据量是巨大的。

如果你只需要运行一个工具来生成一台机器的安全状态报告,那就更好了。幸运的是,有一个人:莱尼斯。它是一个非常流行的开源安全审计工具,有助于加强基于Linux和Unix的系统。根据项目介绍:

它执行深度安全扫描,并在系统本身上运行。主要目标是测试安全防御,并为进一步加强系统提供提示。它还将扫描一般系统信息、易受攻击的软件包和可能的配置问题。Lynis[是]通常被系统管理员和审计人员用来评估他们系统的安全防御。

您的Linux软件存储库中可能提供Lynis。如果是,您可以使用以下命令进行安装:

但是,如果您的repo中的版本不是最新版本,最好从GitHub安装。(我使用的是Red Hat Linux系统,但是您可以在任何Linux发行版上运行它。)。与所有工具一样,首先在虚拟机上试用是有意义的。要从GitHub安装它,请执行以下操作:

$cat/etc/redhat-Release Red Hat Enterprise Linux Server Release 7.8(Maipo)$$uname-r 3.10.0-1127.el7.x86_64$$git克隆https://github.com/CISOfy/lynis.git克隆到';lynis';.。远程:枚举对象:30,完成。远程:计数对象:100%(30/30),完成。远程:压缩对象:100%(30/30),完成。远程:总计12566(增量15),重用8(增量0),包重用12536接收对象:100%(12566/12566),6.36MiB|911.00 KiB/s,完成。解决三角洲:100%(9264/9264),完成。$。

一旦您克隆了存储库,就移动到其中,看看有什么可用。主工具位于一个名为lynis的文件中。它实际上是一个shell脚本,所以您可以打开它并阅读它在做什么。事实上,Lynis主要是使用shell脚本实现的:

$cd lynis/$ls CHANGELOG.md*CONTRIBUTING.md*db*developer.prf*FAQ*lynis.8*README**SECURITY.md code_of_CONDUCT.md*CONTRIBUTORS.md**default.prf*附加部分:**Happy_USERS.md。

带Lynis出去转转,给它一个-h选项以查看帮助部分:

接下来,尝试一些测试命令,以获得对事物的感觉和舒适感。要查看您正在使用的Lynis版本,请运行以下命令:

这会快速运行并返回详细的报告-输出乍一看可能令人生畏,但我将在下面向您介绍它。该命令的输出也会保存到日志文件中,这样您以后就可以随时返回并检查任何可能感兴趣的内容。

$ls-l/var/log/lynis.log-rw-r-。1根根目录341489 Apr 30 05:52/var/log/lynis.log$$ls-l/var/log/lynis-report.dat-rw-r-。1根根目录638 Apr 30 05:55/var/log/lynis-report.dat$。

Lynis提供了相当全面的报告,所以我将介绍一些重要的部分。作为初始化的一部分,Lynis做的第一件事就是找出关于机器上运行的操作系统的完整信息。然后进行检查,查看安装了哪些系统工具和插件:

[+]正在初始化程序-正在检测操作系统.。*检查档案.。*-*程序版本:*3.0.0*操作系统:*linux**操作系统名称:**Red Hat Enterprise Linux Server7.8(Maipo)*操作系统名称:**Red Hat Enterprise Linux Server7.8(Maipo)**操作系统。系统版本:7.8%内核版本:-+3.10.0*硬件平台:*x86_64*主机名:*示例:<;<;snip>;>;[+]系统工具-正在扫描可用的工具.。正在检查系统二进制文件.。[+]插件(第一阶段)-注意:插件有更广泛的测试,可能需要几分钟才能完成插件-插件:pam-plugin[..]插件:systemd命令[.]。

接下来,报告被分成各个部分,每个部分都以[+]符号开头。下面可以看到一些部分。(哇,要审计的领域太多了,Lynis是适合这项工作的工具!)

[+]引导和服务[+]内核[+]内存和处理[+]用户,组和身份验证[+]外壳程序[+]文件系统[+]USB设备[+]存储[+]NFS[+]名称服务[+]端口和软件包[+]网络[+]打印机和假脱机[+]软件:电子邮件和消息传送[+]软件:防火墙[+]软件:WebServer[+]SSH支持[+]SNMP支持[+]数据库[+]LDAP服务[+]PHP[+]Squid支持[+]日志记录和文件[+]不安全服务[+]b。]记帐[+]时间和同步[+]加密[+]虚拟化[+]容器[+]安全框架[+]软件:文件完整性[+]软件:系统工具[+]软件:恶意软件[+]文件权限[+]主目录[+]内核强化[+]强化[+]自定义测试。

在我的例子中,大多数红色标记是在内核硬化部分发现的。内核有各种定义内核功能的可调设置,其中一些可调设置可能具有安全上下文。由于各种原因,发行版可能不会默认设置这些值,但您应该检查每个值,看看是否需要根据您的安全状态更改其值:

[+]内核硬化-比较sysctl密钥对与扫描配置文件-fs.tected_hardlink(Exp:1)的比较[Exp:1]比较Sysctl密钥对与扫描配置文件-fs.tected_hardlink(Exp:1)的比较[Exp:1]比较Sysctl密钥对与扫描配置文件的比较[Exp:1]比较Sysctl密钥对与扫描配置文件的比较[Exp:1]:将sysctl密钥对与扫描配置文件进行比较[Exp:1]。(Exp:0)*。**kernel.kptr_restricte(exp:2)和*。[Different]-net.ipv4.conf.all.Accept_Redirects(Exp:0):[Different][Different]-net.ipv4.conf.all.Accept_source_route(EXP:0):[OK]-net.ipv4.conf.all.bootp_Relay(EXP:0)[OK][OK][OK]-net.ipv4.conf.all.Forwarding(EXP:0)。*[OK]-net.ipv4.conf.all.log_martans(Exp:1):[Different][Different]-net.ipv4.conf.all.mc_Forwarding(EXP:0):[OK][OK]-net.ipv4.conf.all.proxy_arp(Exp:0)::[OK]-net.ipv4.conf.all.Proxy_ARP(Exp:0):-net.ipv4.conf.all.[OK]-net.ipv4.conf.all.Proxy_arp(Exp:0)[OK]-net.ipv4.conf.all.。Exp:1)从接受[不同][OK]命令[OK]开始[OK][Exp:0][Different][Exp:0]Accept_Redirects(EXP:0)[OK]-net.ipv4.conf.default.Accept_SOURCE_ROUTE(EXP:0)[OK]-net.ip.ip.default.Accept_Redirects(Exp:0)[OK]ID-net.ip.ip.。EXP:1)从[不同]-net.ipv4.icmp_echo_Ignore_Broadcast(EXP:1)到[OK][OK]-net.ipv4.icmp_Ignore_bogus_error_Responses(EXP:1)到[OK]-net.ipv4.tcp_syncookies(EXP:1)和[OK][OK][OK]-net.ipv4.tcp_syncookies(EXP:1):[OK][OK]-net.ipv4.tcp_syncookies(EXP:1)[OK][OK]-net.ipv4.tcp_syncookies(EXP:1)。您可以选择[OK][OK][OK]-net.ipv6.conf.all.Accept_Redirects(EXP:0)[Different][Different]-net.ipv6.conf.all.Accept_source_route(EXP:0)[OK]-net.ipv6.conf.default.Accept_Redirects(EXP:0)[Different]-net.ipv6.conf.default.Accept_Redirects(EXP:0)[Different]-net.ipv6.conf.default.Accept_Redirects。

请看SSH,这是一个示例,因为它是一个关键区域,需要保护。这里没有任何红色的内容,但是Lynis有很多关于在我的设置中加强SSH服务的建议:

[+]SSH支持-检查运行SSH守护进程*[找到]*-OpenSSH选项:AllowTcpForwarding*[Found]AllowTcpForwarding选项:AllowTcpForwarding*[。用法:ClientAliveCountMax对网关端口进行压缩[建议]-OpenSSH选项:ClientAliveInterval对网关端口进行压缩[建议]-OpenSSH选项:ClientAliveInterval对网关端口进行压缩[建议]-OpenSSH选项:ClientAliveInterval对网关端口进行压缩[确定]-OpenSSH选项:压缩对网关端口进行压缩[建议]-OpenSSH选项:GatewayPorts对网关端口进行压缩[建议]-OpenSSH选项:网关端口对网关端口进行压缩[OK]-OpenSSH选项:网关端口对网关端口进行压缩[建议]-OpenSSH选项:网关端口(GatewayPorts):[确定]-OpenSSH选项:网关端口:IgnoreRhosts提供了以下选项:LoginGraceTime*-OpenSSH选项:LoginGraceTime*-OpenSSH选项:MaxAuthes Tries:*。*-OpenSSH选项:PermitRootLogin*[建议]*-OpenSSH选项:PermitUserEnvironment*[OK]**-OpenSSH选项:PermitTunes*

建议(47):*-*如果不是必需的,请考虑在/etc/security/limits.conf文件中显式禁用核心转储。*https://cisofy.com/lynis/controls/KRNL-5820/*检查PAM配置,如果适用则添加轮次,并使密码过期以使用新值加密。[AUTH-9229]**https://cisofy.com/lynis/controls/AUTH-9229/。

Lynis提供了查找有关每个建议的更多信息的选项,您可以使用后跟测试ID编号的show Details命令进行访问:

这将显示有关该测试的其他信息。例如,我检查了SSH-7408的详细信息:

$。/lynis show Details SSH-7408 2020-04-30 05:52:23执行测试ID SSH-7408(检查SSH特定的定义选项)2020-04-30 05:52:23测试:检查/tmp/lynis.k8JwazmKc6 2020-04-30 05:52:23结果:增加了OpenSSH<的选项;7.5 2020-04-30 05:52:23测试:检查AllowTcpForwarding in/tmp/lynis.k8JwazmKc6 2020-04-30 05:52:23结果:Option AllowTcpForwarding Found 2020-04-30 05:52:23结果:Option AllowTcpForwarding值为yes 2020-04-30 05:52:23结果:OpenSSH Option AllowTcpForwarding处于弱配置状态,应修复。

如果您想了解有关Linux计算机安全性的更多信息,请查看Lynis。如果您想了解Lynis是如何工作的,可以深入研究它的shell脚本,看看它是如何收集所有这些信息的。