2010-03-16 3 views
2

사용자가 서버에서 실행되는 python 스크립트를 업로드하는 웹 서비스가 있습니다. 이 스크립트는 서버에있는 파일을 처리하기 때문에 서버의 파일 시스템의 특정 계층 만 볼 수 있기를 원합니다 (처리 할 파일과 스크립트를 복사하는 임시 폴더).파일 시스템/가상 파일 시스템을 위조하기

서버는 궁극적으로 리눅스 기반 서버가 될 것입니다.하지만 Windows에서도 솔루션이 가능하다면 어떻게하는지 알고있는 것이 좋습니다.

FS의 폴더에 대한 액세스가 제한되어있는 사용자 (궁극적으로 스크립트와 파일이 들어있는 폴더 만)를 만들고이 사용자를 사용하여 파이썬 인터프리터를 시작합니다.

다른 사람이 나에게 더 나은 대안을 줄 수 있습니까? 이것에 의존하는 것만으로도 불안정하게 느껴지므로 신뢰할 수없는 코드를 안전하게 실행할 수있는 실제 샌드 박스 또는 가상 FS 기능을 원합니다.

+1

서버에서 사용자 제공 스크립트를 실행하는 방법에 대한 몇 가지 다른 질문이 있습니다. http://stackoverflow.com/questions/1019707/sandboxing-in-linux, http://stackoverflow.com/questions/818402/letting-users-upload-python-scripts-for-execution, http : // stackoverflow. co.kr/questions/886895/safe-python-environment-in-linux 등 –

+0

내게 수치스러워! 그리고 많은 분들께 감사드립니다 :) 나는 그것을 볼 것입니다 ... – attwad

+0

@ S.Lott 그래,하지만 그는 다시 묻는다면 더 좋은 대답을 얻었습니다.) – rook

답변

5

chroot jail 또는 SELinux과 같은 상위 보안 메커니즘을 사용하여 특정 리소스에 대한 액세스를 제한 할 수 있습니다.

+0

chroot jails가 너무 쉽게 손상 될 수 있습니다. ( – attwad

+0

SELinux는 매우 어렵습니다. –

+0

chroot가 방법입니다. chroot를 사용하는 경우 chroot에서 루트를 얻을 수있는 경우에도 감옥에서 "루트"를 변경할 수 없습니다. – rook

3

VirtualBox 또는 VMware와 같은 가상 시스템을 사용하는 것이 가장 좋습니다 (사용자/세션 당 하나씩 만들 수도 있습니다). 당신이 구글 앱 엔진의 하나입니다 내장 등의 기능을 가지고의 내가 아는 메모리 및 네트워크뿐만 아니라 디스크

유일한 파이썬과 같은 다른 자원을 일부 제어 할 수

. 그것도 당신을위한 실행 가능한 대안이 될 수 있습니다.

+0

샌드 박스 기능을 제공하는 pypy가 있지만 라이브러리와 파이썬 버전이 불행히도 내 필요와 일치하지 않습니다 – attwad

0

이것은 본질적으로 안전하지 않은 소프트웨어입니다. 사용자가 스크립트를 업로드하게함으로써 원격 코드 실행 취약점이 도입됩니다. 파일을 수정하는 것보다 파이썬 스크립트가 네트워크 나 다른 리소스에 접근하는 것을 막는 것보다 더 걱정할 필요가 없습니다.

이 문제를 해결하려면 샌드 박스를 사용해야합니다. 시스템을 더 강화하려면 계층화 된 보안 접근법을 사용할 수 있습니다.

첫 번째 레이어와 가장 중요한 레이어는 python sandbox입니다. 사용자가 제공 한 스크립트는 python 샌드 박스 내에서 실행됩니다. 이것은 당신에게 당신이 필요로하는 미세한 한계를 줄 것입니다. 그럼, 전체 파이썬 애플 리케이션은 자체 전용 chroot 내에서 실행해야합니다. chroot의 강도를 향상시키는 grsecurity 커널 모듈을 사용하는 것이 좋습니다. 예를 들어, 공격자가 커널 토지에 구멍을 뚫어서 요즘에는 할 수없는 경우가 아니면 grsecuirty chroot는 깨질 수 없습니다. 커널이 최신 버전인지 확인하십시오.

결과적으로 공격자의 스크립트에있는 리소스를 제한하려고합니다. 레이어는 보안이 입증 된 방식인데, 레이어가 다를 경우 동일한 공격이 두 레이어를 모두 손상시키지 않습니다. 가능한 한 시스템의 나머지 부분에서 스크립트 양식을 분리하려고합니다. 공유되는 모든 리소스는 공격자의 경로이기도합니다.

관련 문제