응용 프로그램을 샌드 박스하는 방법은 무엇입니까?


66

신뢰할 수없는 작은 프로그램을 실행하고 싶지만 폴더 외부의 파일, 네트워크 액세스 및 실제로 필요하지 않은 모든 파일에 액세스하지 못하게하십시오. 이것을 달성하는 가장 간단한 방법은 무엇입니까?


나는 그것을 사용한 적이 없으므로 완전한 대답을 할 수는 없지만 AFAIK, AppArmor ( wiki.ubuntu.com/AppArmor ) 가이를 수행 할 수 있어야합니다.
Javier Rivera

VirtualBox의 래퍼 인 Vagrant를 확인하십시오. vagrantup.com 및 [위키 백과] ( en.wikipedia.org/wiki/Vagrant_(software%29)github
Janus Troelsen

@JavierRivera FWIW, SELinux도. 그럼에도 불구하고 우분투에서 얼마나 쉽게 실행할 수 있을지 모르겠습니다.
TC1

의류는 기본적으로 우분투에 이미 설치되어 있으므로 더 쉽습니다.
Javier Rivera

1
Vagrant와 같은 Virtualbox, chroot, LXC, App Armor 및 SE Linux와 같은 것을 사용하는 가상화는 여러 가능성이있는 것처럼 보입니다.
Flimm

답변:


26

그들이 정말로 신뢰할 수없고 확신하기를 원한다면 별도의 상자를 설정해야합니다. 실제로 또는 사실상.

또한, 당신이 충분히 편집증이라면 그 상자가 중요한 것들과 동일한 네트워크에 있기를 원하지 않습니다. 모든 솔루션에서 권한이없는 별도의 사용자를 설정 했으므로 공격자가 너무 많은 도구를 열지 마십시오.

  • 따라서 가장 안전한 옵션은 네트워크에서 물리적으로 분리 된 별도의 상자입니다.
  • 실제 네트워크에 추가하지만 다른 서브넷에 추가하여 조금 줄 수 있습니다 : 내부에 '실제'연결 없음
  • 가상 머신은 옵션이지만 성능을 포기해야 할 수도 있습니다.

같은 상자에서 실행해야한다면이 옵션이 있습니다.

  • chroot. 이것은 많은 사람들에게이 작업을 수행하기위한 기본 옵션이며 비 특정 위협의 경우에는 작동 할 수도 있습니다. 그러나 이것은 보안 옵션이 아니며 오히려 쉽게 벗어날 수 있습니다. 보안 목적이 아닌 의도 한대로 사용하는 것이 좋습니다.

결국 번거로운 가상화 나 별도의 상자 또는 여전히 위험 상황없이 특정 샌드 박싱 모델을 설정해야 할 수도 있습니다 chroot. 이것이 당신이 의미하는 바는 아니지만, 더 자세한 정보 는 이 링크 를 보십시오 .


신뢰할 수없는 응용 프로그램을 가상 컴퓨터에서 실행하는 것이 안전합니까? 하이퍼 바이저를 통해 호스트 운영 체제에 액세스하여 감염시킬 수있는 이론적 익스플로잇에 대해 들었습니다.
zuallauz

비록 현재로서는 그러한 표적이되는 위협은 확실하지 않지만 확실히 표적이되지 않은 것은 아닙니다. 공격자가 게임에서 멀웨어를 작성하는 것은 그러한 길이로 진행되지 않을 것입니다. 그들이 당신의 레이아웃을 알고 있다면 지금 당신에 대한 창공 공격은 물론 일지 모르지만, 여전히 그것이 첫 번째 관심사라고 생각하지 않습니다. 당신이 그들이 악의적이라고 확신하는 경우, 어쨌든 네트워크 현명한 고립 된 상자를 설정해야합니다.
Nanne

14

Firejail 은 상당히 새롭고 지속적으로 개발되고 있습니다. 사용하기 쉬운.

간단하게 할 수 있습니다 :

sudo apt-get install firejail
firejail app

Ask Ubuntu에 오신 것을 환영합니다! 이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
Mark Kirby

12

Docker를 사용 하면 현재 커널에서 벗어날 수있는 컨테이너를 설정하는 동시에 다른 시스템과 격리시킬 수 있습니다. 꽤 최첨단 인 것처럼 보이지만 우분투에는 좋은 문서가 있습니다.


4
나는 이것이 대부분의 경우에 좋은 옵션이라고 생각합니다. 그러나 원래 질문의 "신뢰할 수없는"부분은 나에게 조금 걱정이 될 것입니다. 응용 프로그램이 컨테이너에서 "깨질"수있는 해킹이 있습니다. 도커 컨테이너가 루트 액세스로 실행되는 경우 응용 프로그램을 서로 샌드 박스로 만드는 것이 위험 할 수 있습니다.
Cris Holdorph

도 커가 나아지고 있지만 @CrisHoldorph는 정확하지만 요즘은 도커를 권한이없는 (루트가 아닌) 실행할 수 있다고 생각합니다. LXC와 LXD (때로는 LXC 데몬이라고도 함)가 이러한 컨테이너의 생성을 크게 단순화 할 수 있다는 것은 확실히 사실입니다. 따라서 현대의 권한이없는 컨테이너는 chroot에 대한 보안 측면에서 개선 된 것으로 간주 될 수 있습니다. 그러나 그들은 뚫을 수없는 장벽이 아닙니다!
Huygens

도커는 보안 도구가 아닙니다!
Federico

10

완전한 가상화 / 에뮬레이션 (VirtualBox)

가능한 솔루션 중 하나는 소프트웨어 센터에서 찾을 수있는 VirtualBox와 같은 가상화 소프트웨어입니다.

  • 가상 박스 설치
  • 네트워킹이 활성화 된 가상 머신 생성
  • Ubuntu 또는 Lubuntu와 같은 더 가벼운 데스크탑 설치
  • 설치된 OS를 완전히 업데이트하십시오 (가상 박스 내부).
  • 가상 머신에서 네트워킹 비활성화
  • 스냅 샷 찍기

신뢰할 수없는 소프트웨어를 설치하여 기능을 확인할 수 있습니다. 외부 세계를 화나게하거나 액세스 권한이 없으므로 OS를 호스팅 할 수 없습니다.

그러나 가상 머신을 폐기 할 수 있지만 스냅 샷에서 복원 할 수 있습니다.

신뢰할 수없는 소프트웨어의 파괴적인 힘을 제한하는 다른 방법이있을 수 있지만 이것이 제가 생각할 수있는 가장 강력한 방법입니다.

컨테이너 기반 가상화 (Docker / LXC)

또 다른 옵션은 LXC 자세한 정보입니다 .

LXC는 가벼운 가상 시스템 메커니즘 인 Linux Containers의 사용자 공간 제어 패키지로, "Chroot on steroids"라고도합니다.

LXC는 chroot에서 빌드되어 완전한 가상 시스템을 구현하여 Linux의 기존 프로세스 관리 인프라에 리소스 관리 및 격리 메커니즘을 추가합니다.

소프트웨어 센터에서 구할 수 있습니다. 그러나 나는 경험이 없다.


1
그것은 단지 불편합니다. 게임을 실행하기 위해 전체 가상 머신을 만드십시오 !!? 그것은 좋은 해결책이 아닙니다. 당신은 프로세스의 GID와 UID가 될 것 설정 생각하지 WAY 이것보다 더 쉽게?
Jack Mayerz

실제로 가상 상자를 설정하는 것은 스냅 샷을 작성하는 데 방해가되지 않을 정도로 쉽다고 생각합니다. 가상 머신을 폐기하면 버릴 수 있습니다.
emory

Downvote : 솔루션이 엄격하더라도 사실적인 잘못된 추론. 프로그램은 프로그램을 실행하는 사용자와 동일한 권한을 가질 필요는 없습니다. 리눅스와 우분투는 수년간 MAC을 지원해 왔습니다. 우분투는이를 위해 AppArmos를 사용하며 디렉토리에 프로그램을 쉽게 포함시킬 수 있습니다.
Javier Rivera

@JavierRivera의 "쉽게"는 올바른 단어가 아니거나 AppArmor 프로파일과 Firefox에 대한 SELinux 정책이 기본적으로 모든 배포판과 함께 제공되며 이는 사실이 아닙니다. 우분투는 이러한 프로파일을 제공하지만 몇 가지 "인기있는"Firefox 기능을 손상시키기 때문에 기본적으로 활성화되어 있지 않습니다. 대부분의 GUI 응용 프로그램에는 SELinux 정책이 많지 않으므로 이러한 응용 프로그램은 여전히 ​​샌드 박스라고하는 권한이 너무 많습니다. 동의하지 않으면 AppArmor 또는 SELinux를 사용하여 샌드 박스 Firefox 링크를 안전하게 게시하십시오! 당신이 정말로 행복 할 수 있다면 :-)
Huygens

의미있는 답변을 위해 "안전"을 정의해야하지만 우분투의 기본 Firefox 정책은 나에게 매우 합리적입니다. 물론 아무것도 사용하지 않는 것만 큼 사용자에게 친숙하지는 않지만, 전체 가상 머신보다 훨씬 사용하기 쉽습니다 (인기있는 파이어 폭스 기능을 손상시킵니다).
Javier Rivera

9

mbox

Mbox는 모든 사용자가 상용 운영 체제에서 특별한 권한없이 사용할 수있는 경량 샌드 박싱 메커니즘입니다.

나는 몇 가지 것들을 안정적으로 사용했습니다.



1

가능한 해결책은 테스트 목적으로 별도의 사용자를 만들고 그의 권한을 제한하는 것입니다. 이런 식으로 성능을 잃지 않을 것입니다. 가상 머신에서 확실히 일어날 일이지만, 제대로 설정하지 않으면 안전하지 않다고 생각합니다.


2
이것은 여전히 ​​설치되거나 실행될 수있는 악성 소프트웨어로부터 시스템을 보호하지 않습니다. 또한이 질문이 의미하는 방식으로 샌드 박싱되지 않습니다
Thomas Ward

1

DoSH-도커 쉘

단순히 사용자 활동을 샌드 박스하려는 경우 "DoSH"를 사용할 수 있습니다.

DoSH (Docker SHell의 약자)는 사용자가 Linux 시스템에 로그인하여 쉘을 작성하는 대신 쉘을 실행할 때 Docker 컨테이너를 작성하는 개발입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.