AppArmor는 Firejail --net=none과 동일합니다.

AppArmor는 Firejail --net=none과 동일합니다.

firejail --net=none네트워크 인터페이스가 없는 컴퓨터처럼 보이는 샌드박스를 만듭니다.

AppArmor를 사용하여 동일한 결과를 얻을 수 있습니까? AppArmor는 deny network모든 것을 거부하지만 애플리케이션에서 네트워크 인터페이스를 숨기지 않는 것 같습니다 .

답변1

Firejail이 네트워크 인터페이스를 "사라지게" 만드는 이유는 새로운 환경에서 애플리케이션을 실행하기 때문입니다.네트워크 네임스페이스:

설명하다

네트워크 네임스페이스는 네트워크 관련 시스템 리소스(네트워크 장치, IPv4 및 IPv6 프로토콜 스택, IP 라우팅 테이블, 방화벽 규칙, 디렉터리 /proc/net(에 대한 기호 링크 /proc/PID/net), /sys/class/net 디렉터리 아래의 다양한 파일 /proc/sys/net, 포트 번호(소켓)) 의 격리를 제공합니다. , 등.
[...]

새 네트워크 네임스페이스에는 처음에는 인터페이스(자체 로컬 인터페이스 인스턴스 제외)가 없습니다 lo. 이는 애플리케이션이 인터페이스(로컬 인터페이스 인스턴스 제외 lo)를 볼 수 없고 유용한 네트워크 관련 작업을 수행할 수 없는 이유입니다.

갑옷을 적용프로그램이 리소스에 액세스할 때 프로그램에 대한 추가 제한 사항을 만들어 프로그램을 실행하는 사용자가 일반적으로 허용하는 작업이 성공하지 못하도록 합니다. 따라서 응용 프로그램이 이전 인용문에서 언급한 다양한 리소스에 성공적으로 액세스하거나 상호 작용하는 것을 방지하도록 AppArmor를 구성할 수 있다고 상상할 수 있지만, 이러한 리소스가 사라지지는 않습니다. 애플리케이션은 다른 결과를 얻게 됩니다. 결과가 비어 있거나 해당 객체가 존재하지 않는다는 응답을 받는 대신 요청할 때 오류가 발생합니다. 질문에 대한 대답은 '아니요'입니다.

참고: firejail --net=none네트워크 네임스페이스만 격리되는 것은 아닙니다. 이러한 인터페이스에 대한 쿼리를 방지하고(시도 시 오류도 발생함) 대부분의 다른 네임스페이스(사용자, pid, 마운트...)를 격리하는 등 훨씬 더 많은 작업을 수행합니다.

격리에 사용할 수 있는 다른 도구도 많이 있습니다. 경우에 따라 기능이 중복될 수도 있지만 일반적으로 함께 사용됩니다. 예를 들어 Firejail은 Apparmor와 함께 사용할 수 있습니다.SELinux(AppArmor의 대안) 또는cgroup. 또는 예를 들어두 번째 계산(2)어떤 경우에는 요청된 작업이 실제로는 완료되지 않았는데도 성공적으로 완료되었다고 애플리케이션이 알려주도록 속일 수 있습니다. 이것은 하나의 예입니다. 네트워크 인터페이스가 표시되는 것을 방지하는 데 사용할 수는 없을 것 같습니다.

관련 정보