IP Security <ipSecurity>
Overview
The <ipSecurity>
element defines a list of IP-based security restrictions in IIS 7 and later. These restrictions can be based on the IP version 4 address, a range of IP version 4 addresses, or a DNS domain name.
Compatibility
Version | Notes |
---|---|
IIS 10.0 | The <ipSecurity> element was not modified in IIS 10.0. |
IIS 8.5 | The <ipSecurity> element was not modified in IIS 8.5. |
IIS 8.0 | The enableProxyMode attribute was added to enable you to block requests from a client that connects through a proxy. The denyAction attribute was added to specify the default deny mode response that IIS sends back to clients. |
IIS 7.5 | The <ipSecurity> element was not modified in IIS 7.5. |
IIS 7.0 | The <ipSecurity> element was introduced in IIS 7.0. |
IIS 6.0 | The <ipSecurity> element replaces the IIS 6.0 IPSecurity metabase property. |
Setup
The default installation of IIS does not include the role service or Windows feature for IP security. To use IP security on IIS, you must install the role service or Windows feature using the following steps:
Windows Server 2012 or Windows Server 2012 R2
- On the taskbar, click Server Manager.
- In Server Manager, click the Manage menu, and then click Add Roles and Features.
- In the Add Roles and Features wizard, click Next. Select the installation type and click Next. Select the destination server and click Next.
- On the Server Roles page, expand Web Server (IIS), expand Web Server, expand Security, and then select IP and Domain Restrictions. Click Next.
. - On the Select features page, click Next.
- On the Confirm installation selections page, click Install.
- On the Results page, click Close.
Windows 8 or Windows 8.1
- On the Start screen, move the pointer all the way to the lower left corner, right-click the Start button, and then click Control Panel.
- In Control Panel, click Programs and Features, and then click Turn Windows features on or off.
- Expand Internet Information Services, expand World Wide Web Services, expand Security, and then select IP Security.
- Click OK.
- Click Close.
Windows Server 2008 or Windows Server 2008 R2
On the taskbar, click Start, point to Administrative Tools, and then click Server Manager.
In the Server Manager hierarchy pane, expand Roles, and then click Web Server (IIS).
In the Web Server (IIS) pane, scroll to the Role Services section, and then click Add Role Services.
On the Select Role Services page of the Add Role Services Wizard, select IP and Domain Restrictions, and then click Next.
On the Confirm Installation Selections page, click Install.
On the Results page, click Close.
Windows Vista or Windows 7
On the taskbar, click Start, and then click Control Panel.
In Control Panel, click Programs and Features, and then click Turn Windows Features on or off.
Expand Internet Information Services, then World Wide Web Services, then Security.
Select IP Security, and then click OK.
How To
How to add IP restrictions to deny access for a Web site
Open Internet Information Services (IIS) Manager:
If you are using Windows Server 2012 or Windows Server 2012 R2:
- On the taskbar, click Server Manager, click Tools, and then click Internet Information Services (IIS) Manager.
If you are using Windows 8 or Windows 8.1:
- Hold down the Windows key, press the letter X, and then click Control Panel.
- Click Administrative Tools, and then double-click Internet Information Services (IIS) Manager.
If you are using Windows Server 2008 or Windows Server 2008 R2:
- On the taskbar, click Start, point to Administrative Tools, and then click Internet Information Services (IIS) Manager.
If you are using Windows Vista or Windows 7:
- On the taskbar, click Start, and then click Control Panel.
- Double-click Administrative Tools, and then double-click Internet Information Services (IIS) Manager.
In the Connections pane, expand the server name, expand Sites, and then site, application or Web service for which you want to add IP restrictions.
In the Home pane, double-click the IP Address and Domain Restrictions feature.
In the IP Address and Domain Restrictions feature, click Add Deny Entry... in the Actions pane.
Enter the IP address that you wish to deny, and then click OK.
How to edit the IP restrictions feature settings for a Web site
Open Internet Information Services (IIS) Manager:
If you are using Windows Server 2012 or Windows Server 2012 R2:
- On the taskbar, click Server Manager, click Tools, and then click Internet Information Services (IIS) Manager.
If you are using Windows 8 or Windows 8.1:
- Hold down the Windows key, press the letter X, and then click Control Panel.
- Click Administrative Tools, and then double-click Internet Information Services (IIS) Manager.
If you are using Windows Server 2008 or Windows Server 2008 R2:
- On the taskbar, click Start, point to Administrative Tools, and then click Internet Information Services (IIS) Manager.
If you are using Windows Vista or Windows 7:
- On the taskbar, click Start, and then click Control Panel.
- Double-click Administrative Tools, and then double-click Internet Information Services (IIS) Manager.
In the Connections pane, expand the server name, expand Sites, and then site, application or Web service for which you want to add IP restrictions.
In the Home pane, double-click the IP Address and Domain Restrictions feature.
In the IP Address and Domain Restrictions feature, click Edit Feature Settings... in the Actions pane.
Choose the default access behavior for unspecified clients, specify whether to enable restrictions by domain name, specify whether to enable Proxy Mode, select the Deny Action Type, and then click OK.
Configuration
Rules are processed from top to bottom, in the order they appear in the list. The allowUnlisted attribute is processed last. Best practice for Internet Protocol security (IPsec) restrictions is to list Deny rules first. You cannot clear the allowUnlisted attribute if it is set to false.
The following default <ipSecurity>
element is configured in the root ApplicationHost.config file in IIS 7 and later. This configuration section inherits the default configuration settings unless you use the <clear>
element.
<ipSecurity allowUnlisted="true" />
Attributes
Attribute | Description | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
allowUnlisted |
Optional Boolean attribute. Specifies whether to allow unlisted IP addresses. Setting the allowUnlisted attribute to true allows an unlisted IP address to access the server. Setting the allowUnlisted attribute to false locks down the server, preventing access to all IP address unless they are listed. If you were to set this attribute to false and do not list the local loopback address (127.0.0.1) as an allowed IP address, you would not be able to access your server by using a browser from a local console. This attribute can also affect delegation. If you were to set this attribute to false in a parent configuration, you would not be able use the <clear> element to clear this configuration in child configuration files.The default value is true . |
||||||||||
denyAction |
Optional enum attribute. Specifies the default deny mode response that IIS should send back to clients. The default value is forbidden .
|
||||||||||
enableProxyMode |
Optional Boolean attribute. Enables IIS not only to block requests from a client IP that is seen by IIS, but also to block requests from IP addresses that are received in the x-forwarded-for HTTP header. This header enables you to identify the originating IP address of a client that connects through an HTTP proxy or load balancer. This is referred to as proxy mode. The default value is false . |
||||||||||
enableReverseDns |
Optional Boolean attribute. Specifies whether to enable or disable reverse Domain Name System (DNS) lookups for the Web server. Reverse lookups involve looking up the domain name when the IP address is known. Caution: Reverse DNS lookups will use significant resources and time. The default value is false . |
Child Elements
Element | Description |
---|---|
add |
Optional element. Adds an IP restriction to the collection of IP address restrictions. |
remove |
Optional element. Removes a reference to a restriction from the <ipSecurity> collection. |
clear |
Optional element. Removes all references to restrictions from the <ipSecurity> collection. |
Configuration Sample
The following configuration sample adds two IP restrictions to the Default Web Site; the first restriction denies access to the IP address 192.168.100.1, and the second restriction denies access to the entire 169.254.0.0 network.
<location path="Default Web Site">
<system.webServer>
<security>
<ipSecurity>
<add ipAddress="192.168.100.1" />
<add ipAddress="169.254.0.0" subnetMask="255.255.0.0" />
</ipSecurity>
</security>
</system.webServer>
</location>
Sample Code
The following code samples enble reverse DNS lookups for the default web site.
AppCmd.exe
appcmd.exe set config "Default Web Site" -section:system.webServer/security/ipSecurity /enableReverseDns:true /commit:apphost
Note
You must be sure to set the commit parameter to apphost
when you use AppCmd.exe to configure these settings. This commits the configuration settings to the appropriate location section in the ApplicationHost.config file.
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 ipSecuritySection = config.GetSection("system.webServer/security/ipSecurity", "Default Web Site");
ipSecuritySection["enableReverseDns"]=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 ipSecuritySection As ConfigurationSection = config.GetSection("system.webServer/security/ipSecurity", "Default Web Site")
ipSecuritySection("enableReverseDns") = True
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var ipSecuritySection = adminManager.GetAdminSection("system.webServer/security/ipSecurity", "MACHINE/WEBROOT/APPHOST/Default Web Site");
ipSecuritySection.Properties.Item("enableReverseDns").Value = True;
adminManager.CommitChanges();
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set ipSecuritySection = adminManager.GetAdminSection("system.webServer/security/ipSecurity", "MACHINE/WEBROOT/APPHOST/Default Web Site")
ipSecuritySection.Properties.Item("enableReverseDns").Value = True
adminManager.CommitChanges()