nixos/audit: fix journald test (#432238)
This commit is contained in:
commit
4dcfd5b672
@ -53,7 +53,9 @@ in
|
|||||||
|
|
||||||
backlogLimit = lib.mkOption {
|
backlogLimit = lib.mkOption {
|
||||||
type = lib.types.int;
|
type = lib.types.int;
|
||||||
default = 64; # Apparently the kernel default
|
# Significantly increase from the kernel default of 64 because a
|
||||||
|
# normal systems generates way more logs.
|
||||||
|
default = 1024;
|
||||||
description = ''
|
description = ''
|
||||||
The maximum number of outstanding audit buffers allowed; exceeding this is
|
The maximum number of outstanding audit buffers allowed; exceeding this is
|
||||||
considered a failure and handled in a manner specified by failureMode.
|
considered a failure and handled in a manner specified by failureMode.
|
||||||
@ -81,6 +83,18 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf (cfg.enable == "lock" || cfg.enable) {
|
config = lib.mkIf (cfg.enable == "lock" || cfg.enable) {
|
||||||
|
boot.kernelParams = [
|
||||||
|
# A lot of audit events happen before the systemd service starts. Thus
|
||||||
|
# enable it via the kernel commandline to have the audit subsystem ready
|
||||||
|
# as soon as the kernel starts.
|
||||||
|
"audit=1"
|
||||||
|
# Also set the backlog limit because the kernel default is too small to
|
||||||
|
# capture all of them before the service starts.
|
||||||
|
"audit_backlog_limit=${toString cfg.backlogLimit}"
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = [ pkgs.audit ];
|
||||||
|
|
||||||
systemd.services.audit-rules = {
|
systemd.services.audit-rules = {
|
||||||
description = "Load Audit Rules";
|
description = "Load Audit Rules";
|
||||||
wantedBy = [ "sysinit.target" ];
|
wantedBy = [ "sysinit.target" ];
|
||||||
|
|||||||
@ -202,11 +202,9 @@ in
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
# Starting auditd should also enable loading the audit rules..
|
# Starting the userspace daemon should also enable audit in the kernel
|
||||||
security.audit.enable = lib.mkDefault true;
|
security.audit.enable = lib.mkDefault true;
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.audit ];
|
|
||||||
|
|
||||||
# setting this to anything other than /etc/audit/plugins.d will break, so we pin it here
|
# setting this to anything other than /etc/audit/plugins.d will break, so we pin it here
|
||||||
security.auditd.settings.plugin_dir = "/etc/audit/plugins.d";
|
security.auditd.settings.plugin_dir = "/etc/audit/plugins.d";
|
||||||
|
|
||||||
|
|||||||
@ -16,6 +16,7 @@
|
|||||||
rules = [
|
rules = [
|
||||||
"-a always,exit -F exe=${lib.getExe pkgs.hello} -k nixos-test"
|
"-a always,exit -F exe=${lib.getExe pkgs.hello} -k nixos-test"
|
||||||
];
|
];
|
||||||
|
backlogLimit = 512;
|
||||||
};
|
};
|
||||||
security.auditd = {
|
security.auditd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@ -34,7 +35,9 @@
|
|||||||
machine.wait_for_unit("auditd.service")
|
machine.wait_for_unit("auditd.service")
|
||||||
|
|
||||||
with subtest("Audit subsystem gets enabled"):
|
with subtest("Audit subsystem gets enabled"):
|
||||||
assert "enabled 1" in machine.succeed("auditctl -s")
|
audit_status = machine.succeed("auditctl -s")
|
||||||
|
t.assertIn("enabled 1", audit_status)
|
||||||
|
t.assertIn("backlog_limit 512", audit_status)
|
||||||
|
|
||||||
with subtest("unix socket plugin activated"):
|
with subtest("unix socket plugin activated"):
|
||||||
machine.succeed("stat /var/run/audispd_events")
|
machine.succeed("stat /var/run/audispd_events")
|
||||||
@ -45,7 +48,7 @@
|
|||||||
|
|
||||||
with subtest("Stopping audit-rules.service disables the audit subsystem"):
|
with subtest("Stopping audit-rules.service disables the audit subsystem"):
|
||||||
machine.succeed("systemctl stop audit-rules.service")
|
machine.succeed("systemctl stop audit-rules.service")
|
||||||
assert "enabled 0" in machine.succeed("auditctl -s")
|
t.assertIn("enabled 0", machine.succeed("auditctl -s"))
|
||||||
'';
|
'';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,16 +12,10 @@
|
|||||||
nodes.auditd = {
|
nodes.auditd = {
|
||||||
security.auditd.enable = true;
|
security.auditd.enable = true;
|
||||||
security.audit.enable = true;
|
security.audit.enable = true;
|
||||||
environment.systemPackages = [ pkgs.audit ];
|
|
||||||
boot.kernel.sysctl."kernel.printk_ratelimit" = 0;
|
|
||||||
boot.kernelParams = [ "audit_backlog_limit=8192" ];
|
|
||||||
};
|
};
|
||||||
nodes.journaldAudit = {
|
nodes.journaldAudit = {
|
||||||
services.journald.audit = true;
|
services.journald.audit = true;
|
||||||
security.audit.enable = true;
|
security.audit.enable = true;
|
||||||
environment.systemPackages = [ pkgs.audit ];
|
|
||||||
boot.kernel.sysctl."kernel.printk_ratelimit" = 0;
|
|
||||||
boot.kernelParams = [ "audit_backlog_limit=8192" ];
|
|
||||||
};
|
};
|
||||||
nodes.containerCheck = {
|
nodes.containerCheck = {
|
||||||
containers.c1 = {
|
containers.c1 = {
|
||||||
@ -56,11 +50,6 @@
|
|||||||
journaldAudit.succeed("journalctl _TRANSPORT=audit --grep 'unit=systemd-journald'")
|
journaldAudit.succeed("journalctl _TRANSPORT=audit --grep 'unit=systemd-journald'")
|
||||||
# logs should NOT end up in audit log
|
# logs should NOT end up in audit log
|
||||||
journaldAudit.fail("grep 'unit=systemd-journald' /var/log/audit/audit.log")
|
journaldAudit.fail("grep 'unit=systemd-journald' /var/log/audit/audit.log")
|
||||||
# FIXME: If systemd fixes #15324 this test will start failing.
|
|
||||||
# You can fix this text by removing the below line.
|
|
||||||
# logs ideally should NOT end up in kmesg, but they do due to
|
|
||||||
# https://github.com/systemd/systemd/issues/15324
|
|
||||||
journaldAudit.succeed("journalctl _TRANSPORT=kernel --grep 'unit=systemd-journald'")
|
|
||||||
|
|
||||||
|
|
||||||
with subtest("container systemd-journald-audit not running"):
|
with subtest("container systemd-journald-audit not running"):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user