Linux

AppArmor如何拒絕應用程序訪問網路?

  • January 4, 2018

環境:

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

這是我的測試配置文件(由 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,
}

通過以下方式生效:

sudo systemctl reload apparmor.service

AppArmor 狀態:

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

但是當我測試 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

網路訪問不被拒絕。

這是程序狀態:

$ 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 -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

任何人都可以幫助找出個人資料有什麼問題嗎?非常感謝!

如果我沒看錯,你正在執行 debian。

問題是 debian 中的核心缺少阻止網路連接所需的程式碼(對於 D-Bus 緩解也是如此),因為更新檔不是主線(但是,我知道有工作可以改變這種情況)。

引用自:https://unix.stackexchange.com/questions/414490