Carregando módulos do kernel do NetBSD

0

Eu quero começar a usar npf no meu servidor NetBSD, em vez de confiar apenas no firewall externo para proteção. No entanto, recebo:

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

Tudo bem, talvez eu tenha excluído um nó de dispositivo. Não importa:

$ 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

Ah, certo, tem que carregar o driver primeiro:

$ 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

Por que eu (mesmo como root) não posso carregar módulos?

    
por Fox 02.03.2017 / 02:36

1 resposta

4

O NetBSD usa níveis seguros de kernel para determinar quais operações podem ser executadas em um sistema em execução. Do link:

-1 Permanently insecure mode

  • Don't raise the securelevel on boot

0 Insecure mode

  • The init process (PID 1) may not be traced or accessed by ptrace(2), systrace(4), or procfs.
  • Immutable and append-only file flags may be changed
  • All devices may be read or written subject to their permissions

Note: You can't run X11 above this securelevel

Try sysutils/aperture if you really need it.

1 Secure mode

  • All effects of securelevel 0
  • /dev/mem and /dev/kmem may not be written to
  • Raw disk devices of mounted file systems are read-only
  • Immutable and append-only file flags may not be removed
  • Kernel modules may not be loaded or unloaded
  • The net.inet.ip.sourceroute sysctl(8) variable may not be changed
  • Adding or removing sysctl(9) nodes is denied
  • The RTC offset may not be changed
  • Set-id coredump settings may not be altered
  • Attaching the IP-based kernel debugger, ipkdb(4), is not allowed
  • Device pass-thru requests that may be used to perform raw disk and/or memory access are denied
  • iopl and ioperm calls are denied
  • Access to unmanaged memory is denied

2 Highly secure mode

  • All effects of securelevel 1
  • Raw disk devices are always read-only whether mounted or not
  • New disks may not be mounted, and existing mounts may only be downgraded from read-write to read-only
  • The system clock may not be set backwards or close to overflow
  • Per-process coredump name may not be changed
  • Packet filtering and NAT rules may not be altered

Meu sistema estava rodando em securelevel 1, então "os módulos do Kernel não podem ser carregados ou descarregados". Além disso, a configuração de npf=YES in rc.conf não carrega automaticamente o módulo do kernel associado. Não é possível reduzir o nível de segurança do kernel no tempo de execução, portanto as opções são:

  • Inicialize em um nível de segurança mais baixo, carregue o módulo e aumente o nível de segurança ou
  • Carregue o módulo durante a inicialização

Claramente, esta é a melhor opção. Para carregar um módulo do kernel na inicialização, é preciso garantir que rc.conf contenha:

modules=YES

Em seguida, edite (ou crie) /etc/modules.conf para conter uma lista de módulos para carregar, um por linha. Neste caso:

# echo npf >> /etc/modules.conf
    
por 02.03.2017 / 02:36