Linux
AppArmor如何拒絕應用程序訪問網路?
環境:
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 緩解也是如此),因為更新檔不是主線(但是,我知道有工作可以改變這種情況)。