윈도우 IIS
IT위키
더 많은 작업
- Internet Information Services
- 마이크로소프트가 윈도우 서버에 기본으로 제공하는 웹 서버
HTTP 뿐 아니라 FTP, SMTP, NNTP 등의 서비스를 함께 제공한다. ASP.NET 과의 통합이 강점이며, 윈도우 서버의 역할(Role) 추가로 설치한다.
- 기본 문서: 요청 URL 에 파일명이 없을 때 제공할 문서를 지정하고 우선순위를 조정할 수 있다.
- IIS 7(윈도우 서버 2008 R2) 의 기본 목록 순서는 Default.htm → Default.asp → index.htm → index.html → iisstart.htm → default.aspx 이다
- 목록을 위에서부터 차례로 찾아 폴더에 실제로 있는 첫 파일을 보낸다. 예를 들어 폴더에 default.aspx, iisstart.htm, index.html, index.htm 이 있으면 Default.htm·Default.asp 는 없으므로 셋째인 index.htm 을 보낸다
- IIS 관리자 [기본 문서] 화면에서 위로 이동·아래로 이동으로 순서를 바꾸고, 항목을 추가·제거한다. 웹 사이트 루트의 web.config 에 저장된다
- 디렉터리 검색(Directory Browsing): 활성화하면 기본 문서가 없을 때 디렉터리 안의 파일 목록이 그대로 노출된다. 정보 노출 위험이 있어 운영 환경에서는 꺼 두는 것이 원칙이다.
- 가상 디렉터리: 실제 물리 경로와 다른 이름으로 접근 경로를 만들 수 있다. 별칭과 실제 경로의 이름이 같을 필요는 없다.
- 응용 프로그램 풀: 사이트를 독립된 작업자 프로세스로 분리해 장애가 번지지 않게 한다.
- 인증: 익명, 기본, 다이제스트, 윈도우 통합 인증을 지원한다.
- 웹 사이트의 기본 문서 폴더(홈 디렉터리)를 변경할 수 있다.
| 로그 | 기본 위치(IIS 7 이후) |
|---|---|
| 웹 사이트 접근 로그 | %SystemDrive%\inetpub\logs\LogFiles\W3SVC<사이트ID> (예: W3SVC1)
|
| FTP 사이트 로그 | %SystemDrive%\inetpub\logs\LogFiles\FTPSVC<사이트ID>
|
| HTTP.sys 오류 로그 | %SystemRoot%\System32\LogFiles\HTTPERR
|
- HTTPERR 는 IIS 가 아니라 커널 드라이버 HTTP.sys 가 남기는 로그다. 요청이 사이트에 닿기 전에 거부되거나 연결이 끊긴 기록이 여기에 쌓인다
- IIS 6 까지는 웹 로그가
%SystemRoot%\System32\LogFiles\W3SVC1, FTP 로그가 MSFTPSVC1 에 있었다 - 요청 필터링(Request Filtering): 파일 확장자, URL 문자열, HTTP 동사, 요청 길이 등을 조건으로 특정 요청을 차단한다. 백업 파일(.bak), 설정 파일 같은 확장자의 요청을 막는 데 쓴다.
- HTTPS 지원: 사이트 바인딩에 https(443)를 추가하고 서버 인증서를 연결하면 HTTPS 로 서비스한다. 'SSL 설정' 메뉴에서 SSL 요구, 클라이언트 인증서 사용 여부를 정한다.
- PHP 실행: FastCGI 모듈과 PHP 를 설치하고 처리기 매핑을 등록하면 PHP 스크립트도 실행한다. ASP.NET 만 실행할 수 있는 것이 아니다.
- HTTP 응답 헤더: 응답에 붙일 사용자 지정 헤더(X-Frame-Options, X-Content-Type-Options 등 보안 헤더)를 추가하거나 X-Powered-By 같은 정보 노출 헤더를 없앤다.
- 응용 프로그램 풀 하나에 여러 웹 사이트·응용 프로그램을 함께 할당할 수 있다. 장애를 격리하려면 사이트마다 풀을 따로 둔다.
- 디렉터리 검색 비활성화
- 백업 파일·소스 코드·스크립트가 든 디렉터리의 목록이 노출되면 그 파일을 내려받아 취약점을 찾아낼 수 있다. 디렉터리 검색은 설정하지 않는(사용 안 함) 것이 대응이다 → 디렉토리 리스팅
- 요청 필터링으로 .bak, .config, .inc 같은 확장자 요청 차단
- SSL 설정으로 HTTPS 강제, HTTP 응답 헤더로 보안 헤더 추가
- 불필요한 스크립트 매핑과 HTTP 메소드(PUT, DELETE 등) 제거
- 상세 오류 메시지를 외부에 노출하지 않도록 설정
- 응용 프로그램 풀 계정에 최소 권한 부여
- 기본 설치 샘플과 관리 페이지 제거