feat(lynis): declare 'lynis' module (with profile + skips)
check / lint (push) Successful in 6s

This commit is contained in:
hektor committed 2026-11-08 19:02:07 +01:00
1 parent 21e5b62dfa
commit ed5bc2e303
3 files changed
+71 -6

No files matched your search

+1
View File
@@ -43,6 +43,7 @@ in
};
keyboard.enable = true;
localization.enable = true;
lynis.enable = true;
memory.zram.enable = true;
my = {
fonts.enable = true;
+8 -6
View File
@@ -6,6 +6,12 @@
}:
let
unusedProtocols = [
"dccp"
"sctp"
"rds"
"tipc"
];
wakeOnLan = lib.any (iface: iface.wakeOnLan.enable) (lib.attrValues config.networking.interfaces);
randomMac = config.host.role == "laptop" && !wakeOnLan;
desktop = {
@@ -79,12 +85,8 @@ in
message = "no 'hardening.profile' for `${config.host.role}` host role";
}
];
boot.blacklistedKernelModules = [
"dccp"
"sctp"
"rds"
"tipc"
];
boot.blacklistedKernelModules = unusedProtocols;
boot.extraModprobeConfig = lib.concatMapStrings (m: "install ${m} /bin/false\n") unusedProtocols;
hardware.bluetooth.settings.General = lib.mkIf config.hardware.bluetooth.enable {
PairableTimeout = 30;
DiscoverableTimeout = 30;
+62
View File
@@ -0,0 +1,62 @@
{
lib,
config,
pkgs,
...
}:
let
serverRoles = [
"server"
"embedded"
];
server = lib.elem config.host.role serverRoles;
role = if server then "server" else "personal";
forwarding = lib.elem (config.boot.kernel.sysctl."net.ipv4.conf.all.forwarding" or false) [
true
1
"1"
];
in
{
options.lynis = {
enable = lib.mkOption {
default = false;
type = lib.types.bool;
};
skipTests = lib.mkOption {
default = [
"AUTH-9230"
"AUTH-9262"
"AUTH-9284"
"AUTH-9286"
"FILE-6310"
"FILE-6410"
"FINT-4350"
"KRNL-5830"
"NAME-4028"
"PKGS-7398"
"SSH-7408"
"TOOL-5002"
]
++ lib.optionals (!server) [
"ACCT-9622"
"ACCT-9626"
"ACCT-9628"
"HRDN-7222"
"HRDN-7230"
"LOGG-2154"
"USB-1000"
]
++ lib.optional forwarding "KRNL-6000:net.ipv4.conf.all.forwarding";
type = lib.types.listOf lib.types.str;
};
};
config = lib.mkIf config.lynis.enable {
environment.systemPackages = [ pkgs.lynis ];
environment.etc."lynis/custom.prf".text = lib.concatLines (
[ "machine-role=${role}" ] ++ map (t: "skip-test=${t}") config.lynis.skipTests
);
};
}