해독하지 않고 스크립트 실행 [복제]

해독하지 않고 스크립트 실행 [복제]

저는 스크립트 세트(bash, ruby, python)를 가지고 있으며 이 컨테이너를 여러 서버에 배포할 수 있도록 모든 것을 파일 형식의 컨테이너에 넣고 싶습니다. 이 스크립트는 루트를 포함한 다른 사용자의 액세스로부터 보호되어야 합니다. 그래서 내 생각은 모든 민감한 스크립트를 포함하는 암호화된 컨테이너를 만들고 부팅 시 RAM에 설치하는 것입니다. 하지만 이 컨테이너를 설치한 후에는 파일에 액세스할 수 있는 모든 사람이 시스템에서 파일에 액세스할 수 있습니다.

해석된 스크립트(bash, Ruby 등)를 시스템에 배포하고 누구도 해당 내용을 언제든지 볼 수 없도록 하는 기술이 있습니까? 나는 "난독화된" 스크립트를 실행하고 싶지 않습니다.

답변1

프로그램을 실행하는 사용자가 프로그램을 읽을 수 없게 만드는 것은 불가능합니다. 특히 루트는 모든 파일을 읽을 수 있습니다.

당신이 요구하는 것은 말이되지 않습니다. 컴퓨터에 암호화된 컨테이너를 넣을 수 있으며 해당 컨테이너의 관리자는 이를 읽을 수 없습니다. 그러나 해당 컨테이너에 있는 콘텐츠를 사용하려면 관리자가 콘텐츠를 읽기 전에 콘텐츠의 암호를 해독해야 합니다.

파일 권한을 사용하여 루트가 아닌 사용자로부터 파일을 보호할 수 있습니다. 암호화는 이 경우 거의 쓸모가 없습니다. 암호화는 누군가가 데이터가 포함된 매체에 액세스할 수 있는 경우에만 데이터를 보호하는 데 유용합니다(예: 해당 디스크에 액세스할 수 있는 누군가로부터 디스크에 저장된 데이터를 보호하거나 전송 중인 데이터를 보호하는 경우). 다른 사람의 데이터). 통신채널을 엿들을 수 있는 사람)

사람들이 귀하의 소프트웨어를 복사하는 것을 원하지 않는다면, 먼저 귀하의 소프트웨어를 사람들이 사용할 수 있도록 하지 마십시오. 소프트웨어의 민감한 부분이 자신의 서버에서 실행되도록 준비하고 어리석은 클라이언트를 보낼 수도 있습니다. 고객이 실행할 수 있는 사본 수를 제한하려면 법적 계약을 통해 제한하십시오.

답변2

혼란이 무엇을 의미하는지에 따라 다릅니다. 이는 스크립트를 컴파일 가능한 프로그램으로 래핑하여 바이너리 실행 파일로 변환할 수 있는 방법입니다. 아래와 같이 C 프로그램을 작성해 보세요.

#include <stdio.h>
#include <stdlib.h>


        파일*sh;

        sh = popen("/bin/sh", "w");            // 사용"/빈/배시"당신이 필요하다면,
                                               // 또는 필요한 통역사.
        if (sh == (FILE *)NULL) {
                error("열기");
                출구(1);
        }
        /* 여기에 스크립트를 삽입하세요. */
        fprintf(sh, "x는 빨간색, 파란색, 녹색입니다\n");
        fprintf(sh, "실행\n");
        fprintf(sh, " echo x = \"$x\"\n");
        fprintf(sh, "완료\n");
        /* 스크립트 끝. */
        fclose(sh);

몇 줄 이상이면 문자열 배열로 저장하는 것이 더 관리하기 쉬울 수 있습니다. 그런 다음 이 프로그램을 컴파일하십시오.

  • 루트가 아닌 사용자가 프로그램/스크립트를 실행할 수 있도록 하려면 바이너리를 실행 전용으로 설정하십시오(예: 모드 710 또는 711).
  • 물론 루트는 모드에 관계없이 파일을 읽을 수 있습니다. 바이너리 실행 파일은 얼핏 보면 바이너리 실행 파일처럼 보이지만 strings. 스크립트 텍스트에 가벼운 의사 암호화를 추가하면 이 문제를 어느 정도 완화할 수 있습니다.존재하다C 프로그램, 예를 들어 각 바이트를 상수(바람직하게는 0x80 비트 세트가 있는 바이트)로 XOR하는 것과 같은 사소한 것입니다. 이는 실제 보안을 제공하지 않습니다. 프로그램에는 스크립트를 "암호 해독"하는 논리가 포함되어 있어야 하므로 모든 분석가가 동일한 작업을 수행할 수 있습니다. 이는 단지 약간의 "모호함을 통한 보안"을 제공할 뿐입니다.

ps(적어도 쉘 스크립트의 경우) 사용자는 다른 창에서 명령을 사용하여 실행되는 것을 볼 수 있기 때문에 완벽한 해결책은 없습니다 .

물론 스크립트의 논리가 매우 민감한 경우 실제 대답은 스크립트를 컴파일 가능한 언어로 번역하는 것입니다.

(에서 적응사용자가 스크립트를 깨고 사용하는 것을 방지.)

관련 정보