重启后 sysctl 不保留

重启后 sysctl 不保留

使用 Lubuntu 18.10 Cosmic Cuttlefish

大多数命令确实会保留。然而 Lynis 已反复证明四个 sysctl 参数在重启时不会保留。系统启动后,sysctl -p 确实成功应用了它们。

fs.suid_dumpable=0 (still haven't figured this out)
net.ipv4.conf.all.rp_filter=1 (Wireguard VPN overruled this; see source 1 below)
net.ipv4.conf.all.log_martians=1 (/etc/ufw/sysctl.conf overruled this)
net.ipv4.conf.default.log_martians=1 (/etc/ufw/sysctl.conf overruled this)

来源1

我最关心的是net.ipv4.conf.all.rp_filter,它应该设置为 1,但却被设置为 0... 导致机器容易受到 IP 欺骗。我如何确保在启动时正确设置这些?注意更新:此功能会被 Wireguard 等 VPN(可能是 openvpn/其他)自动禁用,以免丢弃合法数据包,详情请参阅上面的来源。禁用 Wireguard VPN sysctl boot 命令会导致 fp_filter=1 按预期工作,可能会导致 Wireguard 出现问题。Lynis 误报,我将保持此功能禁用状态以实现功能。警告启动后禁用 Wireguard 不会(到目前为止)将其恢复为安全设置。sysctl -p必需。

所有 sysctl.conf 文件的位置通过find / -name '*sysctl*.conf'

/usr/share/doc/procps/examples/sysctl.conf
/snap/core/6405/etc/sysctl.conf
/snap/core/6405/etc/sysctl.d/99-sysctl.conf
/snap/core18/719/etc/sysctl.d/99-sysctl.conf
/etc/sysctl.conf
/etc/ufw/sysctl.conf
/etc/sysctl.d/99-sysctl.conf

答案1

如果您的系统使用 systemdsystemd-sysctl.service而不是sysctl在启动时进行设置,那么情况会有所不同sysctl

systemd-sysctl对所有配置文件名进行排序,忽略目录名,然后按该顺序加载它们,而不管它们位于哪个目录中。这意味着如果您输入了您的设置/etc/sysctl.d/10-mysysctl.conf,并且有另一个文件/usr/lib/sysctl.d/50-default.conf设置了相同的变量,那么它将覆盖您的设置。

为了确保您的设置不会被覆盖,您应该将其放在一个名称类似于的配置文件中/etc/sysctl.d/zzz-mysysctl.conf

注意:此行为已在 Ubuntu 20.04.1 和 openSUSE Leap 15.2 上进行了测试

答案2

我在实施 CIS 基准测试期间遇到了同样的问题。

关于 fs.suid_dumpable,我发现这个帖子解释完全相同的问题。看来 apport 覆盖了该值。禁用 apport 就可以了。

log_martians 被 /etc/ufw/sysctl.conf 中的 ufw 设置覆盖

答案3

创建一个/etc/sysctl.d/local.conf包含您想要的值的文件。

fs.suid_dumpable=0
net.ipv4.conf.all.log_martians=1 
net.ipv4.conf.all.rp_filter=1     
net.ipv4.conf.default.log_martians=1  

重启。

脚本会从多个目录按文件名排序加载任意 *.conf 文件。请参阅手册页中的 sysctl --system 选项用于搜索路径。

尤其是,检查 中是否有任何值尚未定义/etc/sysctl.conf。考虑将您想要保留的值从 移动到sysctl.d,然后删除该文件。

相关内容