diff mbox series

package/lynis: new package

Message ID 20240720081839.1594227-1-francois.perrad@gadz.org
State New
Headers show
Series package/lynis: new package | expand

Commit Message

Francois Perrad July 20, 2024, 8:18 a.m. UTC
Signed-off-by: Francois Perrad <francois.perrad@gadz.org>
---
 DEVELOPERS                                  |  1 +
 package/Config.in                           |  1 +
 package/lynis/Config.in                     | 16 ++++++++++++
 package/lynis/lynis.hash                    |  3 +++
 package/lynis/lynis.mk                      | 29 +++++++++++++++++++++
 support/testing/tests/package/test_lynis.py | 23 ++++++++++++++++
 6 files changed, 73 insertions(+)
 create mode 100644 package/lynis/Config.in
 create mode 100644 package/lynis/lynis.hash
 create mode 100644 package/lynis/lynis.mk
 create mode 100644 support/testing/tests/package/test_lynis.py
diff mbox series

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index eb0c28aa4..d629f962d 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -1154,6 +1154,7 @@  F:	package/lrandom/
 F:	package/lsqlite3/
 F:	package/lua*
 F:	package/lzlib/
+F:	package/lynis/
 F:	package/moarvm/
 F:	package/mstpd/
 F:	package/netsurf/
diff --git a/package/Config.in b/package/Config.in
index 86f6a1e7f..2fd6f69e1 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -2667,6 +2667,7 @@  menu "Security"
 	source "package/apparmor/Config.in"
 	source "package/checkpolicy/Config.in"
 	source "package/ima-evm-utils/Config.in"
+	source "package/lynis/Config.in"
 	source "package/optee-client/Config.in"
 	source "package/optee-examples/Config.in"
 	source "package/optee-test/Config.in"
diff --git a/package/lynis/Config.in b/package/lynis/Config.in
new file mode 100644
index 000000000..f5a460207
--- /dev/null
+++ b/package/lynis/Config.in
@@ -0,0 +1,16 @@ 
+config BR2_PACKAGE_LYNIS
+	bool "lynis"
+	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
+	select BR2_PACKAGE_COREUTILS  # runtime (stat)
+	select BR2_PACKAGE_GAWK  # runtime (awk)
+	select BR2_PACKAGE_GZIP  # runtime (zgrep /proc/config.gz)
+	help
+	  Lynis is an auditing tool which tests and gathers (security)
+	  information from Unix based systems.
+	  Written in shell and running on system itself.
+
+	  Relevant optional dependency:
+
+	  - Busybox compiled with CONFIG_PGREP
+
+	  https://cisofy.com/lynis/
diff --git a/package/lynis/lynis.hash b/package/lynis/lynis.hash
new file mode 100644
index 000000000..57b8b9afc
--- /dev/null
+++ b/package/lynis/lynis.hash
@@ -0,0 +1,3 @@ 
+# Locally calculated
+sha256  ca38a27c9c92e78877be4ecffce25f3345a1d24bbcd68be66a3a600e2ff748d1  lynis-3.1.1.tar.gz
+sha256  57151f0fa287550534af08facb1c6693ca803ffa65b512da38b55c3130810bcf  LICENSE
diff --git a/package/lynis/lynis.mk b/package/lynis/lynis.mk
new file mode 100644
index 000000000..525691d71
--- /dev/null
+++ b/package/lynis/lynis.mk
@@ -0,0 +1,29 @@ 
+################################################################################
+#
+# lynis
+#
+################################################################################
+
+LYNIS_VERSION = 3.1.1
+LYNIS_SITE = $(call github,CISOfy,lynis,$(LYNIS_VERSION))
+LYNIS_LICENSE = GPL-3.0
+LYNIS_LICENSE_FILES = LICENSE
+
+define LYNIS_INSTALL_TARGET_CMDS
+	$(INSTALL) -m 0755 $(@D)/lynis \
+		$(TARGET_DIR)/usr/sbin/lynis
+	$(INSTALL) -D -m 0644 $(@D)/default.prf \
+		$(TARGET_DIR)/etc/lynis/default.prf
+	$(INSTALL) -D -m 0644 $(@D)/developer.prf \
+		$(TARGET_DIR)/etc/lynis/developer.prf
+	$(INSTALL) -D -m 0644 $(@D)/plugins/* \
+		-t $(TARGET_DIR)/etc/lynis/plugins
+	$(INSTALL) -D -m 0644 $(@D)/include/* \
+		-t $(TARGET_DIR)/usr/share/lynis/include
+	$(INSTALL) -D -m 0644 $(@D)/db/*.db \
+		-t $(TARGET_DIR)/usr/share/lynis/db
+	$(INSTALL) -D -m 0644 $(@D)/db/languages/en \
+		$(TARGET_DIR)/usr/share/lynis/db/languages/en
+endef
+
+$(eval $(generic-package))
diff --git a/support/testing/tests/package/test_lynis.py b/support/testing/tests/package/test_lynis.py
new file mode 100644
index 000000000..27e92aec0
--- /dev/null
+++ b/support/testing/tests/package/test_lynis.py
@@ -0,0 +1,23 @@ 
+import os
+
+import infra.basetest
+
+
+class TestLynis(infra.basetest.BRTest):
+    config = infra.basetest.BASIC_TOOLCHAIN_CONFIG + \
+        """
+        BR2_TARGET_ROOTFS_CPIO=y
+        # BR2_TARGET_ROOTFS_TAR is not set
+        BR2_PACKAGE_LYNIS=y
+        """
+
+    def login(self):
+        cpio_file = os.path.join(self.builddir, "images", "rootfs.cpio")
+        self.emulator.boot(arch="armv5",
+                           kernel="builtin",
+                           options=["-initrd", cpio_file])
+        self.emulator.login()
+
+    def test_run(self):
+        self.login()
+        self.assertRunOk("lynis show version", timeout=90)