환경:
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.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
프로필에 무슨 문제가 있는지 알아내는 데 도움을 줄 수 있는 사람이 있나요? 감사합니다!
답변1
내가 올바르게 읽었다면 데비안을 실행하고 있는 것입니다.
문제는 데비안의 커널에 네트워크 연결을 차단하는 데 필요한 코드가 없다는 것입니다(D-Bus 완화와 동일). 패치가 메인라인이 아니기 때문입니다(그러나 이를 변경하기 위한 작업이 있다는 것을 알고 있습니다).