-1 永久不安全模式

-1 永久不安全模式

我想开始npf在我的 NetBSD 服务器上使用,而不是仅仅依赖外部防火墙进行保护。但是,我得到:

$ npfctl show
npfctl: /dev/npf: No such file or directory

好吧,也许我删除了一个设备节点。不管:

$ grep npf /dev/MAKEDEV
        makedev bpf npf
npf)
        mkdev npf        c 198 0
# mknod /dev/npf c 198 0
$ npfctl show
npfctl: /dev/npf: Device not configured

哦,对了,必须先加载驱动程序:

$ modstat | grep npf; echo $?
1
$ find /stand -name 'npf.kmod'
/stand/sparc64/7.0/modules/npf/npf.kmod
$ uname -sr
NetBSD 7.0.2
# modload npf
modload: Operation not permitted

为什么我(即使是 root)不允许加载模块?

答案1

NetBSD 使用内核安全级别确定可以在正在运行的系统上执行哪些操作。从链接:

-1 永久不安全模式

  • 不要在启动时提高安全级别

0 不安全模式

  • 、或init可能无法跟踪或访问进程(PID 1 )。ptrace(2)systrace(4)procfs
  • 不可变和仅附加文件标志可能会更改
  • 所有设备都可以根据其权限进行读取或写入

注意:您无法在此安全级别之上运行 X11

sysutils/aperture如果你真的需要的话就试试吧。

1 安全模式

  • securelevel 0 的所有效果
  • /dev/mem并且/dev/kmem可能不会被写入
  • 已挂载文件系统的原始磁盘设备是只读的
  • 不可删除不可变和仅附加文件标志
  • 内核模块可能无法加载或卸载
  • net.inet.ip.sourceroutesysctl(8)变量不能更改
  • 添加或删除sysctl(9)节点被拒绝
  • RTC 偏移量不得更改
  • Set-id coredump 设置不得更改
  • ipkdb(4)不允许附加基于 IP 的内核调试器
  • 可用于执行原始磁盘和/或内存访问的设备直通请求被拒绝
  • iopl并且ioperm电话被拒绝
  • 对非托管内存的访问被拒绝

2 高安全模式

  • securelevel 1 的所有效果
  • 无论是否安装,原始磁盘设备始终是只读的
  • 新磁盘可能无法挂载,现有挂载只能从读写降级为只读
  • 系统时钟不能设置得向后或接近溢出
  • 每个进程的 coredump 名称不能更改
  • 数据包过滤和 NAT 规则不得更改

我的系统运行在安全级别 1,因此“内核模块可能无法加载或卸载”。此外,设置npf=YES不会rc.conf自动加载相关的内核模块。无法在运行时降低内核安全级别,因此选项是:

  • 启动到较低的安全级别,然后加载模块并提高安全级别,或者
  • 启动时加载模块

显然后者是更好的选择。要在启动时加载内核模块,必须确保rc.conf包含:

modules=YES

然后,编辑(或创建)/etc/modules.conf以包含要加载的模块列表,每行一个。在这种情况下:

# echo npf >> /etc/modules.conf

相关内容