[윈도우/서비스 관리] IIS 데이터 파일 ACL 적용 (W-20)
- 취약점 점검/윈도우
- 2021. 6. 7.
IIS 데이터 파일 ACL 적용
취약점 개요
■ 위험도
- 상
■ 점검 목적
- 웹 데이터 파일에 ACL을 부여함으로써 권한 없는 사용자로부터의 실행 및 읽기를 방지하고자 함
■ 보안 위협
- 웹 데이터 파일에 ACL을 부여되지 않은 경우 권한 없는 사용자로부터의 읽기 및 실행이 가능
점검 및 조치 방법
■ 판단 기준
- 양호 : 홈 디렉토리 내에 있는 하위 파일들에 대해 Everyone 권한이 존재하지 않는 경우
- 취약 : 홈 디렉토리 내에 있는 하위 파일들에 대해 Everyone 권한이 존재하는 경우
■ 조치 방법
- IIS 서비스를 사용하지 않는 경우 IIS 서비스 중지, 사용할 경우 홈디렉토리에 Administrators, System 권한만 설정 후, 하위 디렉토리에 존재하는 모든 Everyone 권한을 제거
● Windows 2000(IIS 5.0), 2003(IIS 6.0)
Step 1) 시작 > 실행 > INETMGR > 웹사이트 > 해당 웹사이트 > 속성 > 홈 디렉토리 경로 확인
Step 2) 탐색기를 이용하여 홈 디렉토리의 등록정보 > 보안 탭에서 Everyone 권한 확인
Step 3) 아래와 같은 파일들에 대한 불필요한 Everyone 권한 제거
● Windows 2008(IIS 7.0), 2012(IIS 8.0)
Step 1) 시작 > 실행 > INETMGR > 사이트 > 해당 웹사이트 > 기본 설정 > 홈 디렉토리 경로 확인
Step 2) 탐색기를 이용하여 홈 디렉토리의 등록정보 > 보안 탭에서 Everyone 권한 확인
Step 3) 아래와 같은 파일들에 대한 불필요한 Everyone 권한 제거
■ 스크립트
echo. W-32 START
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo [ W-32 "IIS 데이터 파일 ACL 적용" ] >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo ■ 수동점검 ■ >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
type [RESULT]_applicationHost.config | find "physicalPath" >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
type [RESULT]_applicationHost.config | find "physicalPath" > path.txt
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo ■ everyone권한이 허용되지 않는 파일 확장자(.exe, .dll, .cmd, .pl, .asp, .inc, .shtm, .shtml) ■ >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
For /F "tokens=4 delims= " %%j IN (path.txt) DO cacls %%j\*.exe /T | find /I "Everyone" >> acl-F.txt
For /F "tokens=4 delims= " %%j IN (path.txt) DO cacls %%j\*.dll /T | find /I "Everyone" >> acl-F.txt
For /F "tokens=4 delims= " %%j IN (path.txt) DO cacls %%j\*.cmd /T | find /I "Everyone" >> acl-F.txt
For /F "tokens=4 delims= " %%j IN (path.txt) DO cacls %%j\*.pl /T | find /I "Everyone" >> acl-F.txt
For /F "tokens=4 delims= " %%j IN (path.txt) DO cacls %%j\*.asp /T | find /I "Everyone" >> acl-F.txt
For /F "tokens=4 delims= " %%j IN (path.txt) DO cacls %%j\*.inc /T | find /I "Everyone" >> acl-F.txt
For /F "tokens=4 delims= " %%j IN (path.txt) DO cacls %%j\*.shtm /T | find /I "Everyone" >> acl-F.txt
For /F "tokens=4 delims= " %%j IN (path.txt) DO cacls %%j\*.shtml /T | find /I "Everyone" >> acl-F.txt
TYPE acl-F.txt >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo ■ everyone권한이 R만 허용되는 파일 확장자(.txt, .gif, .jpg, .html) ■ >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
For /F "tokens=4 delims= " %%j IN (path.txt) DO cacls %%j\*.txt | find /I "Everyone" >> acl-R.txt
For /F "tokens=4 delims= " %%j IN (path.txt) DO cacls %%j\*.gif | find /I "Everyone" >> acl-R.txt
For /F "tokens=4 delims= " %%j IN (path.txt) DO cacls %%j\*.jpg | find /I "Everyone" >> acl-R.txt
For /F "tokens=4 delims= " %%j IN (path.txt) DO cacls %%j\*.html | find /I "Everyone" >> acl-R.txt
TYPE acl-R.txt >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
TYPE acl-R.txt | find /v "Everyone:R" >> acl-F.txt
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
type acl-F.txt | find /I "Everyone" > nul
IF ERRORLEVEL 1 ECHO Result : Good >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
IF NOT ERRORLEVEL 1 ECHO Result : Vulnerable >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
del path.txt
del acl-F.txt
del acl-R.txt
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo W-32 END >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo ====================================================================================== >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
echo. >> [RESULT]_%COMPUTERNAME%_WINSVR.txt
■ 용어 설명 / 팁
- 향후 필요에 의해 IIS를 설치하여 운용한다면 웹 데이터 파일에 대한 ACL을 부여하는 것이 바람직하며 ACL을 설정할 때에는 다음과 같은 사항을 참고하여 설정하여야 합니다
1. 가능한 파일의 종류끼리 분류하여 폴더에 저장
2. 홈 디렉토리 내에 적절한 ACL 권한 부여 (홈 디렉토리 : c:\inetpub\wwwroot)
※ ACL(Access Control List) : 접근이 허가된 주체들과 허가받은 접근 종류들이 기록된 목록