On 2023/01/20 18:14, Crystal Kolipe wrote:
> On Fri, Jan 20, 2023 at 01:15:29PM -0700, Theo de Raadt wrote:
> > Todd C. Miller <[email protected]> wrote:
> > > I wonder if it makes sense to have a version of sysctl.conf that
> > > only gets used for the next reboot and then is removed, kind of
> > > like /etc/rc.firsttime. Maybe call it /etc/sysctl.once.
> >
> > Well you are shown the change at boot, and it is visible in dmesg -s,
> > which should be good enough.
>
> Otherwise, something like this might be useful for test machines:
Test machines are less of a problem, because they're test machines.
Machines where things have been enabled to debug a problem and then
forgotten are a bigger issue.
I'm not convinced that something visible only on a monitor help much.
How about security(8) though?
Index: share/man/man8/security.8
===================================================================
RCS file: /cvs/src/share/man/man8/security.8,v
retrieving revision 1.26
diff -u -p -r1.26 security.8
--- share/man/man8/security.8 13 Jul 2017 19:16:33 -0000 1.26
+++ share/man/man8/security.8 21 Jan 2023 10:40:37 -0000
@@ -79,6 +79,10 @@ to protect the programs in
# chown root:wheel /etc/mtree/bin.secure
# chmod 600 /etc/mtree/bin.secure
.Ed
+.It
+Check for insecure
+.Xr sysctl 2
+values.
.Pp
.Sy Note:
These checks do not provide complete protection against
Index: libexec/security/security
===================================================================
RCS file: /cvs/src/libexec/security/security,v
retrieving revision 1.41
diff -u -p -r1.41 security
--- libexec/security/security 11 Oct 2020 18:28:17 -0000 1.41
+++ libexec/security/security 21 Jan 2023 10:40:37 -0000
@@ -299,6 +299,18 @@ sub check_ksh {
}
}
+sub check_sysctl {
+ $check_title = "Checking sysctl values:";
+ my $securelevel = `sysctl -n kern.securelevel`;
+ chomp $securelevel;
+ nag $securelevel le 0,
+ "kern.securelevel=$securelevel (not secure).";
+ my $allowkmem = `sysctl -n kern.allowkmem`;
+ chomp $allowkmem;
+ nag $allowkmem ge 1,
+ "kern.allowkmem=$allowkmem (userland can access kernel memory).";
+}
+
# Uudecode should not be in the /etc/mail/aliases file.
sub check_mail_aliases {
my $filename = '/etc/mail/aliases';
@@ -910,6 +922,7 @@ backup_passwd;
check_group;
check_csh;
check_ksh(check_sh);
+check_sysctl;
$check_title = "Checking configuration files:";
check_mail_aliases;
check_hostname_if;