IIS | 디렉터리의 파일 실행 차단

IIS | 디렉터리의 파일 실행 차단

PHP 애플리케이션을 통해 사용자 업로드를 처리하고 있습니다.

PHP 셸을 업로드하고 실행하는 등 사용자가 악용할 수 없도록 서버를 보호하고 싶습니다.

모든 업로드가 웹루트 외부의 별도 폴더로 이동되도록 설정했습니다. 추가 보안으로 특정 폴더의 IUSR에서 "읽기"를 제외한 모든 권한을 제거했습니다.

한 단계 더 나아가려면 IIS를 통해 폴더에서 스크립트 실행을 비활성화하라는 지시를 받았습니다.

내 상황과 내가 이미 행한 일을 고려할 때 이것이 필요한가요? 그렇다면 IIS 8을 사용하여 어떻게 이를 달성할 수 있습니까?

감사해요

답변1

"이것이 필요합니까?"라는 질문에 대한 대답은 이 응용 프로그램과 조직에 필요한 보안 수준을 조사해야 한다는 것입니다.

보안 모범 사례는 "심층 방어" 접근 방식을 옹호합니다. 이는 보안이 정보(또는 기타) 자산을 보호하기 위한 보안 제어 계층임을 의미합니다.

이 데이터에 추가 제어가 필요한지 확인하려면 위험을 평가하십시오. 악용될 수 있는 위협이 있을 가능성은 얼마나 되는지, 이 데이터/시스템이 손상되면 어떤 영향을 미칠지 생각하십시오. 데이터의 기밀성뿐만 아니라 생각하십시오. , 그러나 악의적인 사용자가 데이터를 변경하거나 시스템을 다운시키거나 데이터를 삭제하는 경우. 그런 다음 통제 비용이 통제 도입에 따른 이점을 초과하는지 확인합니다. 통제를 구현하지 않는 경우 통제를 구현하는 것이 더 "비용이 많이 든다"면 위험을 감수합니다.

가상 디렉터리에 대한 스크립트 액세스를 거부하는 것은 구현하기 매우 간단한 일이며 권한을 높일 수 있는 악의적인 사용자에 대한 방어 계층이 됩니다. 디렉토리에 업로드된 파일이 실행될 수 없도록 이 제어를 구현하는 것이 일반적입니다. 원격 쉘을 얻으려면. 따라서 "비용"이 사소하고 원격 셸을 얻는 것이 확률이 낮더라도 큰 영향을 미칠 것이라고 가정하는 경우 대답은 폴더에서 스크립트 실행을 비활성화하는 것입니다. 이 평가에 동의하지 않습니다).

IIS 8의 폴더에 대한 스크립트 액세스를 비활성화하려면 절차는 IIS 7과 동일해야 하며 web.config에서 처리기 매핑을 구성해야 합니다.

이 링크는 다양한 옵션을 설명합니다.

https://webmasters.stackexchange.com/questions/28733/prevent-iis-from-executing-scripts-in-a-specific-directory

이는 정적 파일 핸들러를 유지하기 위해 원하는 것일 수 있습니다.

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <clear />
            <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
        </handlers>
    </system.webServer>
</configuration>

필수 구성에 대해서는 해당 페이지의 마지막 설명도 참고하세요.

동일한 문제에 직면할 수 있는 다른 사람들을 위해 게시된 솔루션에 추가하기만 하면 됩니다. 핸들러가 최상위 수준에서 잠겨 있다는 것을 알기 전까지는 그 중 어느 것도 나에게 도움이 되지 않았습니다. 저는 서버 관리자도 아니고 그와 가까운 사람도 아니기 때문에 시간이 좀 걸렸습니다. 재정의를 허용하도록 applicationHost.config 파일을 편집하기 전까지는 하위 수준 web.config 파일의 빈 섹션도 포함하여 해당 수준 아래의 모든 항목을 중단하는 데 충분했습니다. 하지만 지금은 잘 작동합니다.

관련 정보