IIS CGI 실행 제한

웹 서비스 기능 중 게시판, 자료실 등과 같은 업로드가 가능한 페이지에서 CGI 스크립트를 업로드하여 실행이 되면 악의적인 파일을 업로드 및 실행하여 시스템 권한 획득 및 주요 정보가 노출될 수 있다.


따라서 CGI 스크립트는 정해진 디렉토리에서만 실행되도록 해야 한다.

 


※ CGI(Common Gateway Interface)
- 사용자가 서버로 보낸 데이터를 서버에서 작동중인 데이터 처리 프로그램에 전달하고, 여기에 처리된 데이터를 다시 서버로 되돌려 보내는 등의 일을 하는 프로그램


@ 진단 기준

양호 : 업로드 가능한 디렉토리의 Everyone 사용자에 모든 권한, 수정 권한, 쓰기 권한이 부여되지 않은 경우
취약 : 업로드 가능한 디렉토리의 Everyone 사용자에 모든 권한, 수정 권한, 쓰기 권한이 부여되어 있는 경우


@ 보안 조치

▷ 시작 > 실행 > inetmgr > 해당 서버 > ISAPI 및 CGI 제한 더블 클릭



▷ 작업 탭 > 기능 설정 편집 > "지정하지 않은 CGI 모듈 허용", "지정하지 않은 ISAPI 모듈 허용" 체크 해제 > 확인



▷ 내 컴퓨터 > 업로드 가능한 디렉토리 > 속성 > 보안 탭 > Everyone 사용자 선택 > 편집

▷ 보안 탭 > Everyone 사용자의 모든 권한, 수정 권한, 쓰기 권한 제거 > 확인



IIS 데이터 파일 ACL 적용

IIS 데이터 파일에 ACL을 부여해 권한이 없는 사용자로부터 실행 및 읽기 제한을 설정할 수 있다.


향후 필요에 의해 IIS를 설치하여 운영한다면 데이터 파일에 대한 ACL을 부여하는 것이 바람직하며 ACL을 설정할 때 다음과 같은 사항을 참고하여 설정해야 한다.

 


1. 같은 종류의 파일끼리 분류하여 디렉토리에 저장
2. 홈 디렉토리(기본 : C:\inetpub\wwwroot) 내에 적절한 ACL 권한 부여

※ ACL(Access Control List)
- 접근이 허가된 주체들과 허가 받은 접근 종류들이 기록된 목록


@ 진단 기준

양호 : 홈 디렉토리 내에 있는 하위 파일들의 Everyone 사용자 권한이 존재하지 않은 경우(정적 콘텐츠 파일은 읽기 권한만 부여)
취약 : 홈 디렉토리 내에 있는 하위 파일들의 Everyone 사용자 권한이 존재하는 경우(정적 콘텐츠 파일은 읽기 권한 제거)


@ 보안 조치

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 웹 사이트 우측 클릭 > 사용 권한 편집 > 보안 탭

▷ IIS_IUSRS 권한 제어 홈 디렉토리에 권한을 적용하면 하위 디렉토리 및 하위 파일들까지 모두 적용되므로 파일 형식별로 권한을 확인 후 보안 조치 수행


○ CGI (.exe, .dll, .cmd, .pl ...) : 모든 사람(X), 관리자/시스템(전체 제어)
○ 스크립트 파일 (.asp) : 모든 사람(X), 관리자/시스템(전체 제어)
○ 포함 파일 (.inc, .shtm, .shtml) : 모든 사람(X), 관리자/시스템(전체 제어)
○ 정적 콘텐츠 (.txt, .gif, .jpg, .html) : 모든 사람(O), 관리자/시스템(전체 제어)



FTP 디렉토리 접근 권한 설정

홈 디렉토리에 쓰기 권한이 부여된 경우 임의의 사용자가 쓰기 및 수정이 가능하므로 정보 유출 및 파일 위/변조로 인한 피해가 발생할 수 있다.


@ 진단 기준

양호 : FTP 홈 디렉토리에 Everyone 권한이 없는 경우
취약 : FTP 홈 디렉토리에 Everyone 권한이 있는 경우


@ 보안 조치

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > FTP 사이트 > "시작하려면 여기를 클릭하십시오" 클릭



▷ 인터넷 정보 서비스 > 해당 서버 > FTP 사이트 > 해당 FTP 사이트 우측 클릭 > 사용 권한

▷ 보안 탭 > 편집 > 보안 탭 > Everyone 사용자 권한 제거, 각 사용자별 적절한 권한 부여



IIS 로그 파일 및 디렉토리 권한

로그 파일은 사용자가 접속한 정보, 에러가 발생한 정보, 공격 패턴 정보 등 다양한 정보가 실시간으로 저장되는 파일이다.


로그 파일의 권한이 설정되어 있지 않으면 로그 파일을 변조하거나 유용한 정보 등을 획득이 가능하므로 권한 설정을 해야 한다.


@ 진단 기준

양호 : 로그 디렉토리 및 파일의 권한이 Users 그룹과 Everyone 사용자에게 권한이 부여되지 않은 경우
취약 : 로그 디렉토리 및 파일의 권한이 Users 그룹과 Everyone 사용자에게 권한이 부여된 경우


@ 보안 조치

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 사이트 > IIS – 로깅 > 작업 탭 > 사용

▷ 디렉토리 위치 확인



▷ 해당 로그 디렉토리 > 속성

▷ 보안 탭 > 편집 > 보안 탭 > Users 그룹 및 Everyone 사용자의 권한 제거(또는 Users 그룹 및 Everyone 사용자 제거)


로그 디렉토리 및 파일의 권한을 다음과 같이 변경

○ Administrators : 모든 권한(O)
○ System : 모든 권한(O)
○ Users : 모든 권한(X) 또는 그룹 제거
○ Everyone : 모든 권한(X) 또는 사용자 제거



IIS 서비스 구동 점검

IIS 서비스는 웹 서비스, 파일 전송 서비스 등 유용한 서비스를 제공한다.


하지만, 프로파일링, 서비스 거부, 불법적인 접근, 원격 코드 실행, 정보 노출, 바이러스, 웜, 트로이목마 등의 위협에 노출될 수 있으므로 IIS 서비스를 이용하지 않을 경우 해당 서비스를 중지하도록 한다.


@ 진단 기준

양호 : IIS 서비스가 필요하지 않아 중지된 경우
취약 : IIS 서비스가 필요하지 않지만 동작중인 경우


@ 보안 조치

▷ 시작 > 실행 > services.msc

▷ IIS Admin Service 더블 클릭 > 일반 탭 > "시작 유형 : 사용 안 함", 서비스 상태 : 중지(T) > 확인 (IIS 종속된 모든 서비스 중지됨)


명령어 이용

▷ 시작 > 실행 > cmd > net stop iisadmin (서비스는 중지되지만 시작 유형은 사용 안 함으로 변경되지 않음)



IIS 디렉토리 리스팅 제거

사용자가 디렉토리 요청 시 기본 페이지(default.asp, default.htm 등)가 호출되어 사용자의 웹 브라우저에 보여준다.


하지만, 디렉토리 검색 기능이 활성화 되어 있으면 서버에 기본 파일이 없는 경우 디렉토리에 존재하는 모든 파일의 목록을 사용자에게 보여준다.


이를 통해 디렉토리 내의 모든 파일에 접근이 가능하고, 웹 서버 구조 노출 및 주요 설정 파일 내용이 유출될 가능성이 존재한다.


@ 진단 기준

양호 : 디렉토리 검색이 체크되어 있지 않은 경우
취약 : 디렉토리 검색이 체크되어 있는 경우


@ 보안 조치

▷ 시작 > 실행 > inetmgr > 해당 서버 > 사이트 > 해당 웹 사이트 > IIS – 디렉토리 검색 더블 클릭 >



▷ 작업 탭 > 사용 안 함



IIS 상위 디렉토리 접근 금지

상위 디렉토리 이동하는 것이 설정되어 있으면 하위 디렉토리에서 상위 디렉토리에 이동하여 주요 디렉토리 접근 및 노출이 될 수 있으며, 유니코드 버그 및 서비스 거부 공격에 악용될 수 있다.


따라서 ..(상위 디렉토리 이동), .(유니코드 버그)와 같은 문자들을 사용하지 못하도록 설정해야 한다.


@ 진단 기준

양호 : 부모 경로 사용이 체크되어 있지 않은 경우
취약 : 부모 경로 사용이 체크되어 있는 경우


@ 보안 조치

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 웹 사이트 > IIS – ASP 더블 클릭

▷ 동작 – 부모 경로 사용 > False



IIS 웹 프로세스 권한 제한

웹 프로세스에서 권한을 제한하지 않는다면, 웹 사이트 방문자가 웹 서비스의 취약점을 이용하여 시스템 권한을 획득할 수 있다.


웹 취약점을 통해 접속 권한을 획득한 경우에 관리자 권한을 획득할 수 있고 서버에 접속하여 해당 정보를 해킹하거나 변경 손실할 우려가 있다.


@ 진단 기준

양호 : 응용 프로그램 풀 ID가 네트워크 서비스 및 로컬 서비스로 등록되어 있거나 보안 계정 구성에 관리자에 준하는 계정이 등록되지 않은 경우
취약 : 응용 프로그램 풀 ID가 로컬 시스템으로 등록되어 있거나 보안 계정 구성에 관리자에 준하는 계정이 등록되어 있는 경우


@ 보안 조치

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 응용 프로그램 풀 > DefaultAppPool 우측 클릭 > 고급 설정

▷ 프로세스 모델 – ID > 기본 제공 계정 > NetworkService(또는 LocalService) > 확인



IIS 링크 사용 금지

공개적인 웹 콘텐츠 디렉토리 안에서 서버의 다른 디렉토리나 파일에 접근할 수 있는 심볼릭 링크, aliases, 바로가기 등을 사용하지 않도록 해야 한다.


@ 진단 기준

양호 :심볼릭 링크, aliases, 바로가기 등의 파일이 존재하지 않는 경우
취약 : 심볼릭 링크, aliases, 바로가기 등의 파일이 존재하는 경우


@ 보안 조치

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 사이트 우측 클릭 > 웹 사이트 관리 > 고급 설정 > 실제 경로 확인

▷ 실제 경로에 입력된 홈디렉토리로 이동하여 심볼릭 링크, aliases, 바로가기 등의 파일 삭제



IIS 파일 업로드 및 다운로드 제한

대량의 파일을 업로드 및 다운로드로 인하여 정상적인 서비스를 제공하지 못하게 만들 수 있다.


또한, 대량의 파일 용량을 제한하지 않을 경우 웹 취약점으로 인하여 중요 정보가 대량으로 유출될 위험성이 있으므로 불필요한 업로드 및 다운로드 용량을 제한하도록 설정해야 한다.


@ 진단 기준

양호 : 파일 업로드 및 다운로드 용량을 적절하게 제한한 경우
취약 : 파일 업로드 및 다운로드 용량을 제한하지 않는 경우


@ 보안 조치

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 웹 사이트 > IIS – ASP 더블 클릭

▷ 제한 속성 > "응답 버퍼링 제한", "최대 요청 필터링 본문 제한" 용량을 최소 범위로 설정


- 응답 버퍼링 제한(다운로드 용량, bufferingLimit) : 4194304(기본값)
- 최대 요청 필터링 본문 제한(업로드 용량, MaxRequestEntityAllowed) : 200000(기본값)


IIS DB 연결 취약점 점검

global.asa 파일은 데이터베이스 관련 정보(IP 주소, 데이터베이스명, 패스워드), 내부 IP주소, 웹 어플리케이션 환경설정 정보 등 보안상 민감한 내용들이 포함되어 있다.


asa 매핑을 추가하지 않으면 global.asa 파일을 웹 브라우저 상에 직접 접근하여 민감한 정보들이 노출될 수 있다.


※ global.asa
- ASP는 global.asa 파일로 구성되어 있는데, 이 파일은 어플리케이션이 처음 시작할 때 실행할 코드, 종료될 때 실행할 코드, 사용자 세션이 처음 시작할 때 실행할 코드, 사용자 세션이 종료될 때 실행할 코드를 정의한 파일


@ 진단 기준

양호 : .asa 매핑이 존재하는 경우
IIS 7 버전 이상은 두 가지 항목 중 한 가지라도 설정이 되어 있거나 해당 설정이 없을 경우
1. 처리기 매핑의 사용 항목에 *.asa, *.asax가 사용 안 함으로 등록되어 있는 경우(해당 설정이 없는 경우)
2. 요청 필터링의 *.asa, *.asax 확장자가 False로 등록되어 있는 경우
취약 : .asa 매핑이 존재하지 않는 경우


@ 보안 조치

Global.asa, Global.asax 파일을 사용하지 않을 경우 (처리기 매핑)
▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 사이트 > IIS – 처리기 매핑

▷ 사용 항목에 *.asa, *.asax 선택 > 작업 탭 > 제거 > 예



Global.asa, Global.asax 파일을 사용하는 경우 (요청 필터링)
▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 사이트 > IIS – 요청 필터링

▷ 작업 탭 > 파일 이름 확장명 거부 > 파일 이름 확장명 : *.asa > 확인, 파일 이름 확장명 : *.asax > 확인


IIS 미사용 스크립트 매핑 제거

사용하지 않는 스크립트 매핑은 보안에 위협이 될 수 있으므로 개발자와 협의하여 불필요한 매핑인지 확인 후 제거해야 한다.


.asp, .shtm과 같은 확장자들은 특정 DLL 파일과 매핑 되어 있어 이런 파일에 대한 요청이 들어오면 해당 DLL에 의해 처리된다.


이런 매핑 중 사용되지 않는 것들은 제거하면 보안에 도움이 된다. 특히, .ida, .idc, .idq, .printer, .htr, .htw 확장자는 버퍼 오버플로우 공격 위험이 존재하므로 삭제하는 것을 권고한다.

※ 스크립트 매핑
- 사용자가 요청한 자원의 파일 확장자에 따라 처리할 ISAPI 확장 핸들러를 지정하게 되어 있는데, 이것을 스크립트 매핑이라고 한다. .asp, .shtm, .hdc 등의 확장자를 가진 자원을 요청하면 asp.dll이 처리하게 됨

※ 확장 매핑
- asp : Active Server Pages 기능 지원
- htr : Web-based password reset : Outlook Web Access 등에서 웹 기반 응용 프로그램으로 자신의 사용자 계정 암호 변경
- htw : Index Server : webhits.dll에 매핑되며 인덱스 서버를 쿼리할 때 사용
- idc : Internet Database Connector : SQL 서버에서 연결하기 위한 정보 등을 관리. ASP를 통해 같은 작업 수행 가능
- ida, idq : Index Server : idq.dll에 매핑되며 인덱스 서버를 쿼리할 때 사용
- stm, shm, shtml : Server-Side Includes
- printer : Internet Printing : URL을 사용하여 페이지를 프린터로 인쇄할 수 있도록 함. IIS가 인터넷이나 인트라넷을 통해 인쇄 서버 기능 수행


@ 진단 기준

양호 : 취약한 매핑이 존재하지 않는 경우
취약 : 취약한 매핑이 존재하는 경우


@ 보안 조치

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 사이트 > IIS – 처리기 매핑 > 취약한 매핑 선택(*.htr, *.idc, *.stm, *.shtm, *.shtml, *.printer, *.ida, *.idq, *.htw) > 우측 클릭 > 제거



IIS WebDAV 비활성화

WebDAV(Web Distributed and Versioning)는 웹 서버 상에 존재하는 파일들을 공동으로 편집 및 관리하기 위한 도구로서 HTTP와 같은 웹 운영프로토콜의 확장된 형태이다.


2003년 3월에 IIS에서 지원하는 WebDAV에서 버퍼오버플로우 취약점이 발견되면서 주요 공격대상이 되고 있다. IIS 설치시 WebDAV가 기본으로 설치되기 때문에 사용하지 않는 경우 제거하는 것이 좋다.


WebDAV가 활성화되어 있으면 버퍼 오버플로우를 일으키거나 원격 명령 실행 등으로 웹쉘 파일 업로드 등 공격이 가능하므로 WebDAV를 제거하는 것이 좋다.

※ httpext.dll
- IIS에서 WebDAV 서비스를 제공하는 파일인 httpext.dll에 Everyone 사용자에게 모든 권한을 가지도록 설정되어 있으면 해당 WebDAV 공유 설정 디렉토리에 인증 없이 콘텐츠를 생성, 삭제, 볼 수 있게 된다.


@ 진단 기준

양호 : 다음 중 한 가지라도 해당되는 경우
- IIS 서비스를 사용하지 않는 경우
- IIS 서비스를 사용하지만 WebDAV가 금지 되어 있는 경우
취약 : 양호 기준에 한 가지라도 해당하지 않는 경우(httpext.dll 파일의 Everyone 사용자가 모든 권한을 가지도록 설정되어 있는 경우)


@ 보안 조치

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > IIS – ISAPI 및 CGI 제한 > WebDAV 선택 > 제거(또는 편집에서 확장 경로 실행 제거에 체크 해제)

▷ 내 컴퓨터 > C:\WINDOWS\system32\inetsrv\webdav.dll> 속성 > 보안 탭 > Everyone 선택 > 제거



IIS 웹 서비스 정보 숨김

IIS에서 40x, 50x 에러 발생 시 기본적으로 설정되어 있는 에러 파일 내에 존재하는 메시지가 출력된다. 해당 에러 메시지를 보면 운영 체제 정보, 웹 서버 정보 등 다양한 정보가 사용자에게 노출된다.


만약, 공격자에게 해당 정보가 노출된다면 공격자는 다양한 에러를 유발하여 웹 서버의 구조 및 환경 정보를 이용하여 추가적인 공격을 감행하는데 부가적인 도움을 제공해줄 수 있으므로 에러 발생 시 별도의 에러페이지로 이동시키도록 설정해야 한다.


@ 진단 기준

양호 : 각 에러 코드 별 별도의 에러 페이지가 지정되어 있는 경우
취약 : 기본적으로 설정된 에러 페이지가 지정되어 있는 경우(해당 페이지에 주요 정보가 노출되는 경우)


@ 보안 조치

에러 페이지 설정

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 사이트 > IIS – 오류 페이지

▷ 각 에러 코드 더블 클릭 > 이 사이트에서 URL 실행 > 별도의 에러 페이지 지정 > 확인



에러 페이지 설정 편집

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 사이트 > IIS – 오류 페이지

▷ 각 에러 코드 우측 클릭 > 기능 설정 편집 > 오류 응답 : 사용자 지정 오류 페이지 선택 > 확인



HTTP – X-AspNetMvc-Version 헤더 제거 (Startup.cs 또는 Global.asax.cs)
*.ASP.NET MVC 사용하는 경우 추가되는 헤더로 Application_Start 이벤트 핸들에 MvcHandler.DisableMvcResponseHeader = true; 코드를 추가
Startup.cs 또는 Global.asax.cs에서 다음 코드를 추가
MvcHandler.DisableMvcResponseHeader = true;


HTTP/FTP/SMTP 배너 차단

사용자가 HTTP, FTP, SMTP 접속 시 서버는 서버 정보를 포함하여 사용자에게 제공해준다.


기본적인 시스템 설정은 운영체제, 버전 정보가 모두 포함되어 있어 공격자는 특정 버전에서 발생한 취약점 공격에 악용할 수 있으므로 배너 정보를 보여주지 않도록 설정해야 한다.


@ 진단 기준

양호 : HTTP, FTP, SMTP 배너 정보를 보여주지 않도록 설정한 경우
취약 : HTTP, FTP, SMTP 배너 정보를 보여주도록 설정되어 있는 경우


@ 보안 조치

HTTP – Server 헤더 제거 (설치)
URL Rewrite 다운로드 및 설치

HTTP – Server 헤더 제거 (URL Rewrite)
▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 사이트 > IIS - URL 재작성

▷ 작업 탭 > 서버 값 관리 – 서버 변수 보기



▷ 허용된 서버 변수에서 마우스 우측 클릭 > 추가 > 서버 변수 이름 : RESPONSE_SERVER > 확인

▷ 작업 탭 > 규칙으로 돌아가기



▷ URL 재작성에서 하단의 HTTP 응답의 헤더 또는 콘텐츠에 적용되는 아웃바운드 규칙의 마우스 우측 클릭 > 규칙 추가 > 아웃바운드 규칙 - 빈 규칙 선택 > 확인

▷ 아웃바운드 규칙 편집에서 이름 : Remove Server, 검색 범위 : 서버 변수, 변수 이름 : RESPONSE_SERVER, 패턴 : .* > 작업 탭 - 적용



HTTP – X-Powered-By 헤더 제거 (IIS 관리자)
▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 사이트 > IIS – HTTP 응답 해더 > X-PoweredBy 선택 > 마우스 우측 클릭 > 제거 > 예


※ URL Rewrite 이용 시
- 서버 변수 : RESPONSE_X-POWERED-BY



HTTP - X-AspNet-Version 헤더 제거 (web.config 수정)
▷ web.config 파일 내의 <system.web> 내의 <httpRuntime enableVersionHeader="false" /> 추가


※ URL Rewrite 이용 시
- 서버 변수 : RESPONSE_X-ASPNET-VERSION


FTP - 220 Microsoft FTP Service 배너 제거 (IIS 관리자, IIS 7.5)
▷ 시작 > 실행 > inetmgr
▷ 해당 서버 > 사이트 > 해당 FTP 사이트 > FTP 메시지
▷ 메시지 동작 – 기본 배너 숨기기 체크 > 적용


※ appcmd.exe 이용 시
- appcmd.exe set config -section:system.applicationHost/sites /[name='daze_ftp01'].ftpServer.messages.suppressDefaultBanner:"True" /commit:apphost


SMTP - Microsoft ESMTP MAIL Service, Version: ~ ready at 배너 제거 (adsutil.vbs)
▷ 시작 > 실행 > cmd > adsutil.vbs 파일이 있는 디렉토리로 이동
- C:\Inetpub\AdminScripts
▷ IIS에서 서비스 중인 SMTP 서비스 나열
- cscript adsutil.vbs enum /p smtpsvc
▷ 각 SMTP 서비스에 connectresponse 속성 값에 배너 문구 추가 설정
- cscript adsutil.vbs set smtpsvc/1/connectresponse "your text"
- msftpsvc/숫자는 IIS 관리자 > 해당 서버 > SMTP 가상 서버의 식별자
▷ SMTP 서비스 중지
- net stop smtpsvc
▷ SMTP 서비스 시작
- net start smtpsvc



FTP 서비스 구동 점검

FTP 서비스는 계정과 패스워드가 암호화 되지 않고 평문으로 전송된다.


제 3자가 스니핑 공격을 이용한다면 FTP 서버의 계정과 패스워드를 알아낼 수 있으며, FTP 서비스는 취약점이 공개된 만큼 서버의 중요한 파일을 유출 및 임의의 파일을 업로드할 수 있다.


@ 진단 기준

양호 : FTP 서비스가 필요하지 않아 중지한 경우, FTP 서비스가 업무상 필요한 경우(보안 대책)
취약 : FTP 서비스가 필요하지 않은데, 동작중인 경우


@ 보안 조치

▷ 시작 > 관리 도구 > 서버 관리자

▷ 서버 관리자 > 역할 > 역할 서비스 제거

▷ 하단의 FTP 게시 서비스 체크 해제 > 다음 > 제거


Anonymous FTP 금지

기본적으로 FTP 서버에 접근할 수 있는 계정은 익명 계정이 활성화되어 있다. 익명 계정은 누구나 접근할 수 있는 취약한 계정이므로 익명 계정 연결을 비활성화 해야 한다.


※ FTP 보안 설정
- 익명 연결 허용 비활성화
- 홈 디렉토리에 접근할 수 있는 사용자 지정 및 권한 제한
- FTP 서버에 접근할 수 있는 아이피 접근 제한
- FTP 서버에 접근할 수 있는 사용자의 소속 그룹 제한


@ 진단 기준

양호 : FTP 서비스를 사용하지 않거나 익명 연결 허용이 체크되지 않은 경우
취약 : FTP 서비스를 사용하거나 익명 연결 허용이 체크되어 있는 경우


@ 보안 조치

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 FTP 사이트 > FTP – FTP 인증

▷ 익명 인증 마우스 우측 클릭 > 사용 안 함



FTP 접근 제어 설정

모든 아이피 대역에서 FTP 서버에 접근할 수 있다면 임의의 사용자가 FTP 서버에 접근하여 주요 파일을 다운로드 및 업로드를 할 수 있으므로 특정 아이피 주소만 접근할 수 있도록 접근제어 설정을 해야 한다.


@ 진단 기준

양호 : 특정 아이피 주소만 FTP 서버에 접속할 수 있도록 설정되어 있는 경우
취약 : 특정 아이피 주소만 FTP 서버에 접속할 수 있도록 설정되어 있지 않은 경우


@ 보안 조치

시작 > 실행 > inetmgr > 해당 서버 > 사이트 > 해당 FTP 사이트 > FTP - FTP IPv4 주소 및 도메인 제한 > 작업 탭 > 기능 설정 편집 > 거부 > 확인


※ 지정되지 않은 클라이언트에 대한 액세스
- 허용 : 모든 호스트의 접근을 허용 (기본값, 거부할 호스트 추가 필요)
- 거부 : 모든 호스트의 접근을 거부 (허용할 호스트 추가 필요)


▷ 작업 탭 > 허용 항목 추가 > 특정 IP 주소 : 허용할 아이피 주소 기입 > 확인 (3개의 아이피 주소만 허용됨)



IIS 스크립트 실행 제한

업로드 된 파일이 저장되는 디렉토리에 스크립트 실행 권한이 활성화 되어 있으면 공격자가 웹쉘 파일 등을 업로드하여 실행이 가능하다.


이를 통해 시스템 주요 정보 획득 및 변조가 가능하므로 스크립트가 실행되어야 할 디렉토리를 따로 제한하여 실행권한을 부여하는 것이 안전하다.


@ 진단 기준

양호 : 업로드 디렉토리의 스크립트 실행 권한이 없는 경우
취약 : 업로드 디렉토리의 스크립트 실행 권한이 있는 경우


@ 보안 조치

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 사이트 > 업로드 디렉토리 선택 > IIS – 처리기 매핑

▷ 작업 탭 > 기능 사용 권한 편집 > 스크립트(실행) 체크 해제 > 확인



웹 서비스 영역의 분리

IIS 설치 시 웹 루트 디렉토리가 기본적으로 C:\inetpub\ 하위 디렉토리에 위치한다. 기본 웹 루트 디렉토리는 웹에 공개되어 있으며, 시스템 드라이브와 같은 위치해 있으면 임의의 명령어를 수행하여 시스템을 침해할 수 있다.


@ 진단 기준

양호 : IIS 웹 루트 디렉토리를 다른 드라이브로 변경하거나 다른 디렉토리로 변경하는 경우
취약 : IIS 웹 루트 디렉토리를 기본으로 설정된 디렉토리인 경우


@ 보안 조치

▷ 시작 > 실행 > inetmgr

▷ 해당 서버 > 사이트 > 해당 사이트 마우스 우측 클릭 > 웹 사이트 관리 > 고급설정

▷ 일반 탭 > 실제 경로 : 찾아보기 > 기본으로 설정된 디렉토리 외의 디렉토리 또는 다른 파티션으로 변경 > 확인 (사전에 해당 웹 사이트와 관련된 모든 디렉토리 및 파일 위치 변경)



최신 패치 적용

주기적으로 보안 패치를 적용하지 않으면 취약점 공격에 악용될 수 있으므로 패치 적용을 통해 보안성 및 시스템 안정성을 확보하는 것이 시스템 운영의 중요한 요소이다.


서비스 중인 시스템의 경우 패치 적용에 따르는 문제점과 재부팅의 어려움 등으로 많은 패치를 적용하는 것이 매우 어렵기 때문에 패치 적용 시 많은 부분을 고려해야 한다.


@ 진단 기준

양호 : 주기적으로 패치를 관리하고 있는 경우(취약점이 없는 버전 사용)
취약 : 주기적으로 패치를 관리하고 있지 않는 경우(취약점이 있는 버전 사용)


@ 보안 조치

사이트에 접속하여 IIS 관련 취약점 및 보안 패치 존재 여부를 확인하여 보안 패치 적용


▶ 윈도우 시작 레지스트리 (자동실행 조작)

▶ 원격 서비스 암호화 수준 설정

▶ WMI 개념 (Windows Management Instrumentation)

▶ Windows 화면보호기 레지스트리

  • 카카오톡-공유
  • 네이버-블로그-공유
  • 네이버-밴드-공유
  • 페이스북-공유
  • 트위터-공유
  • 카카오스토리-공유