Como negar o acesso do aplicativo à rede pelo AppArmor?

1

Ambiente:

OS: Debian GNU/Linux 9.3 (stretch)
Kernel parameter: security=apparmor

Aqui está o meu perfil de teste (criado por aa-genprof):

/etc/apparmor.d/usr.bin.telnet.netkit

#include <tunables/global>

/usr/bin/telnet.netkit {
  #include <abstractions/base>

  /lib/x86_64-linux-gnu/ld-*.so mr,
  /usr/bin/telnet.netkit mr,

  deny network,
}

Faça efeito por:

sudo systemctl reload apparmor.service

Status do AppArmor:

$ sudo aa-status | grep telnet
   /usr/bin/telnet
   /usr/bin/telnet.netkit

Mas quando eu testo o programa telnet:

$ telnet.netkit 127.0.0.1 22
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
SSH-2.0-OpenSSH_7.4p1 Debian-10+deb9u2

O acesso à rede NÃO é negado.

Aqui está o status do processo:

$ ps auxZ | grep -v unconfined | grep telnet
/usr/bin/telnet.netkit (enforce) test    10410  0.0  0.0  19504  2852 pts/1    S+   18:26   0:00 telnet.netkit 127.0.0.1 22

Netstat:

$ netstat -nap | grep telnet
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 127.0.0.1:56710         127.0.0.1:22            ESTABLISHED 10410/telnet.netkit

Alguém pode ajudar a descobrir o que há de errado com o perfil? Muito obrigado!

    
por Segment Fault 03.01.2018 / 11:31

1 resposta

2

Se eu estou lendo corretamente, você está executando o Debian.

Bem, o problema é que o kernel no debian não possui o código necessário para bloquear as conexões de rede (o mesmo para a mitigação de D-Bus) porque os patches não são mainline (ainda assim, sei que houve trabalho para mudar a situação).

    
por 03.01.2018 / 12:33