2009-04-28 1 views
3

타사 클라이언트가 작성한 플러그인을 허용하려는 호스트 서비스를 실행한다고 가정 해 봅니다.호스팅 된 서비스에서 신뢰할 수없는 제 3 자 코드를 어떻게 모니터, 관리 및 실행합니까?

아마도 인프라를 제공하지만 클라이언트가 자신의 게임 심판을 개발할 수있는 게임 서비스 제공 업체 일 것입니다. 또는 코더가 코딩 문제를 해결하기 위해 코드를 제출할 수있는 코딩 경쟁 사이트.

이 사용자 코드를 실행/실행 중지하려는 서버에 잠재적 인 피해를 입히지 않게하려면 어떻게해야합니까?

어떻게 리소스 사용량 (CPU, 메모리)을 모니터링하고 제한합니까?

This is a good start 파이썬 용으로 여기에있는 사람들이 (Python, Lua, Ruby 등)에 관계없이 을 공유 할 수있는 구체적인 경험이 있는지 궁금합니다.

+0

나는 비슷한 질문을했다. http://stackoverflow.com/questions/234590/solving-the-shared-server-security-problem-for-python – rampion

답변

0

루아는 내가 지금까지 본 최고의 샌드 박싱과 감시 기능을 가지고 있습니다. 제 호스트 언어는 파이썬입니다. 따라서 나는 Lunatic Python와 함께 가기로 결정했습니다.

2

RestrictedPython (제공 한 링크에 표시)은 유망 해 보입니다. 그러나 나는 그런 일을 실제로 시도했다고 말할 수는 없다.

최소 Linux 배포판을으로 구축 한 다음 각 사용자에 대해 가상화 된 환경에서 복제하는 것이 좋습니다. 리소스가 일정 수준에 도달하면 VM을 일시 중단하여 CPU 및 메모리 사용을 제한하려면 가상 시스템의 모니터링 메커니즘을 사용하십시오. 배포판을 충분히 작게 만들었다면 VM 자체가 리소스에 미치는 영향은 거의 없겠지만 그런 솔루션을 만들기 위해서는 여전히 많은 양의 RAM이 필요합니다.).

그냥 2 센트입니다. 하지만 저는 파이썬 전문가가 아닙니다.

1

It's probably impossible to be 100% secure,하지만 chroot'ing 좋은 시작입니다. 내 서버에서 여러 스크립트를 사용하여 chroot 된 감옥에서 실행합니다. 하나의 스크립트는 공격의 희생자였습니다 (나는 오히려 영리한 허점을 간과 했었습니다 - 죄송합니다!) 침입자가 스크립트를 위반했지만 감옥에서 더 이상 피해를 입히지 않았습니다.

최소 파이썬 옵션을 사용하려면 Minimal Python을보십시오.

+0

chrooting은 항상 좋은 출발이다. 최소한의 파이썬 링크를 가져 주셔서 감사합니다. – z8000

0

다음과 같은 일을 수행 할 수 있습니다 :

  1. 이 모든 import 문을 골라 입력 코드를 컴파일 및 수입 할 수있는 제한합니다.

  2. _import_reload 기능도 사용하는지 확인하십시오.

  3. 사용자가 제공하는 경량 WSGI 서버로 포장 된 별도의 프로세스로 실행할 수있는 API를 정의하십시오. 서브 프로세스로 포크하고 서버 API를 통해 상호 작용하십시오. 충돌하거나 멈 추면 시간 초과를 통해이를 감지합니다.

0

FWIW, Apache/mod_wsgi version 3.0은 chroot 환경에서 데몬 모드 프로세스를 실행할 수 있습니다.

주요 운영 체제를 보호하려는 경우에만 해당 구성 요소를 사용할 수 있습니다.

사용자가 다른 사용자 코드를 방해하지 못하게하고 Apache/mod_wsgi에 아직 동적 데몬 프로세스 그룹에 기능이 없기 때문에 동적으로 변경할 수있는 임의의 수의 사용자가있을 수있는 경우 대신 정적 구성에 의존합니다.

관련 문제