欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

lynis插件编写:从入门到放弃

来源:本站整理 作者:nancce 时间:2018-09-18 TAG: 我要投稿

lynis是一款采用shell脚本编写,适用于Linux,macOS和基于UNIX的系统的安全审核工具,相信小伙伴们在网上搜索lynis会有很多介绍lynis如何使用的文章,但是关于lynis插件编写的文章却很少,本文就来讨论下lynis的插件编写。

lynis的使用也很是简单方便,一般来说我们使用以下的命令就可以了:
cd lynis; ./lynis audit system
除了使用lynis默认的规则来加固linux之外,lynis还提供了插件的功能,通过自己编写插件,我们可以把lynis改装成一款linux提权信息的收集器,或者将其改装成恶意程序的检测工具,本文我们将先介绍编写lynis插件的语法,然后基于lynis编写一个linux提权信息收集插件,希望通过这个案例可以启发小伙伴们开发出更精彩的插件。
插件介绍
脚本语言
Lynis采用shell脚本编写的,这是一种多功能脚本语言,可在在Linux或基于UNIX的操作系统的所有系统上运行。
Lynis执行步骤
我们先看看lynis完整的运行周期如下:
[Initialization] → [OS detection] → [Detection of binaries] → [Plugins phase 1] → [Built-in tests] → [Custom tests] → [Plugins phase 2] → [Report]
可以发现,在lynis中有两个阶段可以去运行插件,它们分别是Plugins phase 1,Plugins phase 2。
lynis SDK
lynis同时也提供lynis SDK的开发方式及下载。
开发步骤
第一步:找到插件目录
第一步是就了解Lynis的安装位置,特别是您的插件存储的目录。当运行Lynis时,插件目录就会显示在屏幕上,并存储在日志文件中(通常为/var/log/lynis.log),所以我们可以通过下面的命令来查看插件的目录文章:
grep -i plugin /var/log/lynis.log
第二步:决定加载插件的阶段
第一阶段
在第一阶段运行的插件将在内置测试之前执行。此阶段非常适合仅收集数据的测试。这有可能是获取已安装的软件包列表或系统上运行的进程。
第二阶段
插件的第二阶段发生在正常测试结束时。这是你希望分析先前发现的信息,处理它并可选择在屏幕上显示的时候。
提示:如果您是第一次创建插件,请使用第二阶段。这样你就可以使所有测试数据可用的同时向屏幕输出,因为它在审计周期最后阶段执行。
第三步:创建插件文件
在plugins目录,将customplugin.template文件复制到plugin [name] _phase [number]文件中。
Plugin Name and Phase
[name]的值应替换为插件的唯一名称。仅使用小写字符,数字和(可选)短划线( – )来链接两个单词。 [number]用以定义插件阶段,即1或2。
例如name的取值可为:companyname, custom-tests, iso27001, personal
命令:
cp custom_plugin.template plugin_custom-tests_phase2
第四步:配置插件
修改文件标题
对此文件的第一次调整就是修改标题。这些细节用于插件的部分说明,用于验证插件的正确格式。
#########################################################################
#
#    * DO NOT REMOVE *
#-----------------------------------------------------
# PLUGIN_AUTHOR=Mr Auditor
# PLUGIN_CATEGORY=Custom
# PLUGIN_DESC=This are my custom tests
# PLUGIN_NAME=custom-tests
# PLUGIN_REQUIRED_TESTS=
#-----------------------------------------------------
#########################################################################
PLUGIN_AUTHOR: 作者字段定义谁负责创建和更新此文件。
PLUGIN_CATEGORY: 这个字段描述了此插件所属的测试类型(例如,network)。可以使用“custom”。
PLUGIN_DESC: 描述字段,带有可选的解释,说明为什么创建此插件及其目标。
PLUGIN_NAME: 应该和你用作文件名的名称相同。
PLUGIN_REQUIRED_TESTS: 描述在执行该插件之前应该已经执行的依赖检测。通常可以跳过。
Tips:
检查是否正确定义了PLUGIN_NAME字段。
保留#符号,只更改每行的值。
第五步:创建插件
每个插件都包含一个或多个单独的检测单元。它们标有唯一的ID,以便正确的记录和存储测试结果。出于同样的原因,您创建的所有测试都应以“CUST-”开头,然后是四个数字(例如CUST-0010)。
检测单元使用通用的shell脚本语言创建。为了简化操作,lynis预先实现了几个函数(include / functions)。示例包括向屏幕,日志文件或报告文件添加文本。它还包括用于检查权限的检测等。
基础的函数:
Display: 向屏幕输出、打印
LogText: 向log文件中输出
Register: 测试单元队列执行
Report: 向report中输出
检测流程:
设置可选的先决条件;
注册检测(注册功能)。然后Lynis将检查是否需要执行或跳过;
检查注册功能的状态(if [ ${SKIPTEST} -eq 0 ]; then);
运行检测代码5、关闭检测(fi)。
可以在include/tests_custom.template文件中看到测试和函数的一些示例。另一个很好的资源是Lynis中的常规检测,也可以在include目录中找到。
第六步:运行lynis
在运行lynis之后,插件会被载入。
常见问题
如果,插件没有被激活,请按检查以下的项目:
在profile(.prf)中是否被开启;
插件名和插件代码中是否一致;
插件文件是否有权限。
日志文件(/var/log/lynis.log)中也将记录忽略该插件的原因。
linux提权信息收集插件
如何运行插件
虽然在上面的章节中我们介绍了在运行lynis后,插件会被载入,但是这样的话会在运行我们的插件的同时运行lynis自带的插件和很多其他的信息收集脚本,所以lynis提供了一种单独运行插件的选项–tests。
./lynis audit system --tests CUST-id1,CUST-id2

[1] [2] [3] [4]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载