보안 <보안>
개요
<security>
섹션 그룹은 섹션에 <system.webServer>
상주하며 IIS(인터넷 정보 서비스) 7 서버에서 보안 설정을 구성하는 모든 요소를 포함합니다. 여기에는 사이트에 대한 SSL(Secure Sockets Layer) 설정, CGI(Common Gateway Interface) 또는 ISAPI(Internet Server API) 이진 파일에 종속된 애플리케이션, 서버에 설치된 모든 인증 모듈에 대한 구성 설정 및 권한 부여 규칙 설정이 포함됩니다. 또한 IP 보안 및 요청 필터링 구성 설정과 서버의 ISAPI 및 CGI 제한 목록도 포함됩니다.
추가 보안을 위해 섹션 그룹의 설정을 <security>
결합할 수 있습니다. 예를 들면 다음과 같습니다.
- 요소는
<authentication>
IIS 7 서버에서 설치하고 사용하도록 설정할 수 있는 모든 사용자 인증 유형에 대한 구성 섹션을 정의하는 반면<authorization>
요소는 사이트 또는 애플리케이션에 액세스할 수 있는 사용자 계정을 구성합니다. 와 함께<authentication>
를 사용하여<authorization>
서버의 콘텐츠에 대한 액세스를 보호합니다. 요소는<access>
웹 서버, 사이트 또는 애플리케이션에 대한 SSL 설정을 구성합니다. - 요소는
<isapiCgiRestriction>
IIS 7에서 실행할 수 있는 CGI 및 ISAPI 애플리케이션 목록을 지정합니다. 이 요소를 사용하면 악의적인 사용자가 권한 없는 CGI 및 ISAPI 이진 파일을 웹 서버에 복사한 다음 실행할 수 없도록 할 수 있습니다. 요소는<applicationDependencies>
하나 이상의 CGI 또는 ISAPI 확장 제한에 대한 종속성이 있는 애플리케이션을 지정합니다. CGI 또는 ISAPI 확장 제한이 제대로 설정되었는지 확인하기 위해 요소를 요소와<applicationDependencies>
결합<isapiCgiRestriction>
할 수 있습니다.
참고
보안을 강화하기 위해 Windows Vista 또는 Windows Server 2008은 기본적으로 IIS 7을 설치하지 않습니다. IIS 7을 설치하면 HTML 및 이미지 파일을 비롯한 정적 콘텐츠만 제공하도록 IIS가 자동으로 구성됩니다. 웹 사이트 및 애플리케이션에 필요한 다른 역할 서비스 및 기능을 수동으로 설치해야 합니다. 이 전략은 IIS 7 공격 표면을 크게 줄입니다.
호환성
버전 | 참고 |
---|---|
IIS 10.0 | <security> 요소가 IIS 10.0에서 수정되지 않았습니다. |
IIS 8.5 | <security> 요소가 IIS 8.5에서 수정되지 않았습니다. |
IIS 8.0 | <defaultIpSecurity> 요소가 자식 요소로 추가되었습니다. |
IIS 7.5 | <security> 요소가 IIS 7.5에서 수정되지 않았습니다. |
IIS 7.0 | 요소는 <security> IIS 7에서 도입되었습니다. |
IIS 6.0 | 요소는 <security> 인증서, 인증 및 권한 부여와 관련된 IIS 6.0 보안 메타베이스 속성을 대체합니다. |
설치 프로그램
요소는 <security>
IIS 7의 기본 설치에 포함됩니다.
방법
익명 인증을 사용하지 않도록 설정하는 방법
IIS(인터넷 정보 서비스) 관리자를 엽니다.
Windows Server 2012 또는 Windows Server 2012 R2를 사용하는 경우:
- 작업 표시줄에서 서버 관리자 클릭하고 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
Windows 8 또는 Windows 8.1 사용하는 경우:
- Windows 키를 누른 채로 문자 X를 누른 다음 제어판 클릭합니다.
- 관리 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
Windows Server 2008 또는 Windows Server 2008 R2를 사용하는 경우:
- 작업 표시줄에서 시작을 클릭하고 관리 도구를 가리킨 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
Windows Vista 또는 Windows 7을 사용하는 경우:
- 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
- 관리 도구를 두 번 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
연결 창에서 서버 이름을 확장하고 사이트를 확장한 다음 구성하려는 계층 구조 창의 수준으로 이동한 다음 웹 사이트 또는 웹 애플리케이션을 클릭합니다.
홈 창에서 보안 섹션으로 스크롤한 다음 인증을 두 번 클릭합니다.
IUSR 계정에서 익명 인증 자격 증명을 변경하는 방법
IIS(인터넷 정보 서비스) 관리자를 엽니다.
Windows Server 2012 또는 Windows Server 2012 R2를 사용하는 경우:
- 작업 표시줄에서 서버 관리자 클릭하고 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
Windows 8 또는 Windows 8.1 사용하는 경우:
- Windows 키를 누른 채로 문자 X를 누른 다음 제어판 클릭합니다.
- 관리 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
Windows Server 2008 또는 Windows Server 2008 R2를 사용하는 경우:
- 작업 표시줄에서 시작을 클릭하고 관리 도구를 가리킨 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
Windows Vista 또는 Windows 7을 사용하는 경우:
- 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
- 관리 도구를 두 번 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
연결 창에서 서버 이름을 확장하고 사이트를 확장한 다음 구성하려는 계층 구조 창의 수준으로 이동한 다음 웹 사이트 또는 웹 애플리케이션을 클릭합니다.
홈 창에서 보안 섹션으로 스크롤한 다음 인증을 두 번 클릭합니다.
인증 창에서 익명 인증을 선택한 다음 작업 창에서편집...을 클릭합니다.
익명 인증 자격 증명 편집 대화 상자에서 다음 중 하나를 수행합니다.
기본 인증을 사용하도록 설정하고 익명 인증을 사용하지 않도록 설정하는 방법
IIS(인터넷 정보 서비스) 관리자를 엽니다.
Windows Server 2012 또는 Windows Server 2012 R2를 사용하는 경우:
- 작업 표시줄에서 서버 관리자 클릭하고 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
Windows 8 또는 Windows 8.1 사용하는 경우:
- Windows 키를 누른 채로 문자 X를 누른 다음 제어판 클릭합니다.
- 관리 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
Windows Server 2008 또는 Windows Server 2008 R2를 사용하는 경우:
- 작업 표시줄에서 시작을 클릭하고 관리 도구를 가리킨 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
Windows Vista 또는 Windows 7을 사용하는 경우:
- 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
- 관리 도구를 두 번 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
연결 창에서 서버 이름을 확장하고 사이트를 확장한 다음 기본 인증을 사용하도록 설정할 사이트, 애플리케이션 또는 웹 서비스를 클릭합니다.
홈 창에서 보안 섹션으로 스크롤한 다음 인증을 두 번 클릭합니다.
인증 창에서 기본 인증을 선택한 다음 작업 창에서사용을 클릭합니다.
보안 소켓 계층을 요구하는 방법
IIS(인터넷 정보 서비스) 관리자를 엽니다.
Windows Server 2012 또는 Windows Server 2012 R2를 사용하는 경우:
- 작업 표시줄에서 서버 관리자 클릭하고 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
Windows 8 또는 Windows 8.1 사용하는 경우:
- Windows 키를 누른 채로 문자 X를 누른 다음 제어판 클릭합니다.
- 관리 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
Windows Server 2008 또는 Windows Server 2008 R2를 사용하는 경우:
- 작업 표시줄에서 시작을 클릭하고 관리 도구를 가리킨 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
Windows Vista 또는 Windows 7을 사용하는 경우:
- 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
- 관리 도구를 두 번 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
연결 창에서 SSL 요구 사항을 구성할 사이트, 애플리케이션 또는 디렉터리로 이동합니다. 서버 수준에서는 SSL을 구성할 수 없습니다.
SSL 설정 창에서 SSL 필요를 클릭합니다.
작업 창에서 적용을 클릭합니다.
웹 사이트, 웹 애플리케이션 또는 웹 서비스에 Windows 인증 사용하도록 설정하는 방법
IIS(인터넷 정보 서비스) 관리자를 엽니다.
Windows Server 2012 또는 Windows Server 2012 R2를 사용하는 경우:
- 작업 표시줄에서 서버 관리자 클릭하고 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
Windows 8 또는 Windows 8.1 사용하는 경우:
- Windows 키를 누른 채로 문자 X를 누른 다음 제어판 클릭합니다.
- 관리 도구를 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
Windows Server 2008 또는 Windows Server 2008 R2를 사용하는 경우:
- 작업 표시줄에서 시작을 클릭하고 관리 도구를 가리킨 다음 IIS(인터넷 정보 서비스) 관리자를 클릭합니다.
Windows Vista 또는 Windows 7을 사용하는 경우:
- 작업 표시줄에서 시작을 클릭한 다음 제어판 클릭합니다.
- 관리 도구를 두 번 클릭한 다음 IIS(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
연결 창에서 서버 이름을 확장하고 사이트를 확장한 다음 Windows 인증 사용하도록 설정할 사이트, 애플리케이션 또는 웹 서비스를 확장합니다.
홈 창에서 보안 섹션으로 스크롤한 다음 인증을 두 번 클릭합니다.
구성
보안 설정을 구성할 때 구성 XML에는 섹션 그룹이 포함되어 <security>
야 합니다. ApplicationHost.config 파일의 서버 수준 또는 적절한 Web.config 파일의 사이트 수준, 애플리케이션 수준 또는 디렉터리 수준에서 보안 설정을 구성할 수 있습니다.
특성
없음
자식 요소
요소 | Description |
---|---|
access |
선택적 요소입니다. 인증 및 암호화 강도에 클라이언트 인증서를 사용할지 여부와 같은 SSL(Secure Sockets Layer)에 대한 구성 설정을 지정합니다. |
applicationDependencies |
선택적 요소입니다. 하나 이상의 CGI 또는 ISAPI 확장 제한에 대한 종속성이 있는 애플리케이션을 지정합니다. |
authentication |
선택적 요소입니다. 인증 관련 설정을 지정합니다. |
authorization |
선택적 요소입니다. 권한 부여 관련 설정을 지정합니다. |
dynamicIpSecurity |
선택적 요소입니다. 조건 집합을 충족하는 모든 IP 주소를 차단하는 동적 IP 제한을 지정합니다. |
ipSecurity |
선택적 요소입니다. IP 버전 4 주소 또는 DNS 도메인 이름을 기반으로 액세스 제한을 지정합니다. |
isapiCgiRestriction |
선택적 요소입니다. 서버에서 실행할 수 있는 CGI 및 ISAPI 프로그램을 제한하는 설정을 지정합니다. |
requestFiltering |
선택적 요소입니다. 요청 필터링에 대한 구성 설정을 지정합니다. |
구성 샘플
다음 예제에서는 Contoso라는 웹 사이트에 대한 인증, SSL 및 요청 필터링 설정을 구성합니다.
<location path="Contoso">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
<basicAuthentication enabled="false" />
<anonymousAuthentication enabled="false" />
</authentication>
<access sslFlags="Ssl, SslNegotiateCert, Ssl128" />
<requestFiltering>
<fileExtensions>
<add fileExtension=".inc" allowed="false" />
</fileExtensions>
<denyUrlSequences>
<add sequence="_vti_bin" />
<add sequence="_vti_cnf" />
<add sequence="_vti_pvt" />
</denyUrlSequences>
</requestFiltering>
</security>
</system.webServer>
</location>
샘플 코드
다음 예제에서는 Contoso라는 사이트에 대해 익명 인증을 사용하지 않도록 설정한 다음, 사이트에 대해 기본 인증 및 Windows 인증 모두 사용하도록 설정합니다.
AppCmd.exe
appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/anonymousAuthentication /enabled:"False" /commit:apphost
appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/basicAuthentication /enabled:"True" /commit:apphost
appcmd.exe set config "Contoso" -section:system.webServer/security/authentication/windowsAuthentication /enabled:"True" /commit:apphost
참고
AppCmd.exe 사용하여 이러한 설정을 구성할 때 커밋 매개 변수 apphost
를 로 설정해야 합니다. 그러면 구성 설정이 ApplicationHost.config 파일의 적절한 위치 섹션에 커밋됩니다.
C#
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample {
private static void Main() {
using(ServerManager serverManager = new ServerManager()) {
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection anonymousAuthenticationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Contoso");
anonymousAuthenticationSection["enabled"] = false;
ConfigurationSection basicAuthenticationSection = config.GetSection("system.webServer/security/authentication/basicAuthentication", "Contoso");
basicAuthenticationSection["enabled"] = true;
ConfigurationSection windowsAuthenticationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso");
windowsAuthenticationSection["enabled"] = true;
serverManager.CommitChanges();
}
}
}
VB.NET
Imports System
Imports System.Text
Imports Microsoft.Web.Administration
Module Sample
Sub Main()
Dim serverManager As ServerManager = New ServerManager
Dim config As Configuration = serverManager.GetApplicationHostConfiguration
Dim anonymousAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/anonymousAuthentication", "Contoso")
anonymousAuthenticationSection("enabled") = False
Dim basicAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/basicAuthentication", "Contoso")
basicAuthenticationSection("enabled") = True
Dim windowsAuthenticationSection As ConfigurationSection = config.GetSection("system.webServer/security/authentication/windowsAuthentication", "Contoso")
windowsAuthenticationSection("enabled") = True
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var anonymousAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/anonymousAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso");
anonymousAuthenticationSection.Properties.Item("enabled").Value = false;
var basicAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/basicAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso");
basicAuthenticationSection.Properties.Item("enabled").Value = true;
var windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso");
windowsAuthenticationSection.Properties.Item("enabled").Value = true;
adminManager.CommitChanges();
VBScript
Set adminManager = CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set anonymousAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/anonymousAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso")
anonymousAuthenticationSection.Properties.Item("enabled").Value = False
Set basicAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/basicAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso")
basicAuthenticationSection.Properties.Item("enabled").Value = True
Set windowsAuthenticationSection = adminManager.GetAdminSection("system.webServer/security/authentication/windowsAuthentication", "MACHINE/WEBROOT/APPHOST/Contoso")
windowsAuthenticationSection.Properties.Item("enabled").Value = True
adminManager.CommitChanges()