2010-01-29 6 views
1

사용자가 자신의 루비 스크립트를 실행할 수있는 서버 응용 프로그램이 있습니다. 스크립트가 실행되는 서버는 Amazon EC2의 가상 인스턴스이므로 영구적 인 손상을 초래할 수 없습니다. 그러나 위험한/악의적 인 스크립트를 막을 수있는 예방 조치를 취하고 싶습니다. 재부팅은 여전히 ​​피하고 싶습니다.Ruby에서 파일 액세스 중지

현재 "필요"또는 "포함"이 포함 된 스크립트를 허용하지 않습니다. 실제로 "포함"을 허용하는 것이 안전하다고 생각합니까? 모든 사용자가 서버의 파일 시스템에 액세스 할 필요가 없으므로 "file"문자열이 허용되지 않습니다. 그러면 사용자가 서버의 파일 시스템에 액세스 할 수 없게됩니까?

답변

2

"file"문자열을 허용하지 않으면 전혀 도움이되지 않습니다. 그들은 여전히 ​​평가, 포장/포장 풀기, Dir, 그리고 다른 많은 것들을 가지고 있습니다.

  • 가에서 권한이없는 사용자 투옥 환경에서
  • (즉 chroot를, FreeBSD의 감옥 또는 동급)
  • 로 루비 프로세스를 실행

    YMMV,하지만 이것은 내가했을 것입니다 박리 환경 (NO suids, 다른 불필요한 파일 - 최소한 가장이다) $SAFE> = 2

  • 와 어떤 파일도없이 쓰기 액세스
  • /폴더

아마 안전하지는 않지만 시작일 것입니다.

EDIT : ulimit 또는 이와 동등한 것을 사용하여 시스템 자원 소비에 대한 제한을 설정하는 것이 좋습니다.

2

추측하는 것처럼 들릴 것입니다. 매우 낮은 권한을 가진 사용자로 스크립트를 실행하는 것이 더 쉬울까요? 또는 TryRuby에서 비슷한 문제가 해결 된 방법을 살펴볼 수도 있습니다.

sandboxing Ruby을위한 몇 가지 옵션이 있지만 나는 그래서 recommendations을 손으로 할 수없는 그들의 any를 사용하지 않은 것 같습니다.