Executive Summary:
Microsoft Windows Server 2008 uses Network Access Protection (NAP) technology to ensure network security by enforcing compliance policies before client computers can access network resources. If a client computer doesn’t meet security requirements, NAP places the computer in quarantine or denies the computer network access.

In considering LAN security, we mostly think about preventing an attacker from accessing network resources. The reason for this focus is simple: Most attacks are initiated from the Internet and are directed at breaking into private networks.

However, an equally large security issue that administrators must address is preventing regular (i.e., authenticated and authorized) network users from using computers with weak security configurations to access network resources. For example, a traveling employee might have a laptop that only occasionally uses the VPN to connect to the corporate LAN—but this laptop still needs all the current security fixes, antispyware, and antivirus definitions installed. Otherwise, such a computer is a likely source to spread viruses or worms on the network. If a computer doesn’t have a firewall enabled and becomes infected with Trojan-like software, the computer can provide unauthorized persons with easy access to local network resources. Employees’ home computers that use the VPN to access the corporate LAN and that aren’t managed properly provide a similar risk. Finally, letting visitors connect their computers to your local network, even just to provide them with Internet access, can put other hosts on the network at risk for infection with viruses or other kinds of malicious code.

The question is: How do you check a computer’s security configuration before you allow it to access network resources? In addition, how do you determine whether to grant full or limited access? Network administrators need a mechanism to ensure that any computer connecting to the corporate network meets the organization’s health policy requirements and has all the necessary software, patches, and hotfixes installed.

Network Access Protection
Windows Server 2003 SP1 includes a technology called Network Access Quarantine (NAQ) that helps administrators limit or deny connections to computers that don’t comply with a company’s security policies. However, NAQ has many disadvantages. First, it’s limited to VPN-based connections only, which means you can’t protect your network from unsecured wireless users, or even from users who have a physical connection to the network (e.g., via employees’ personal laptops). Second, NAQ is based on manually created scripts (implemented via Connection Manager) that must be run on the client side before VPN access is granted. These scripts check such things as the firewall state, antivirus state, presence of a password-protected screen saver, and status of Internet Connection Sharing. Besides the fact that writing the scripts can be difficult and time consuming, the various types of protection software on the client side can also cause problems. For example, if VPN clients have various antivirus programs, you must write a specific script for each program and use a different Connection Manager package for each. In the end, this solution is static. After the client passes all the checks and the main script reports the state of the client’s health to the server, the user can safely disable the firewall, antivirus software, and all other security features. These actions won’t be detected, and the level of access to resources will remain unchanged.

Windows Server 2008 solves most of NAQ’s disadvantages with Network Access Protection (NAP) technology. Using NAP, an administrator can enforce specific compliance policies that must be met before a client computer can access network resources. If a client computer doesn’t meet the defined health requirements, it’s either placed in quarantine (with access limited to specific hosts) or simply not allowed access.

In addition, NAP can automatically remediate unhealthy clients, updating systems when possible to make them comply with corporate policy. The administrator configures NAP’s method of enforcement, depending on the type of client connection. NAP enforces health requirements for the following types of connections:

  • IPsec-protected communications
  • IEEE 802.1x-authenticated connections
  • VPN connections
  • DHCP-managed connections
  • Terminal Services Gateway connections

In this article, I focus on NAP implementation for DHCP-managed connections. Using NAP with DHCP lets you protect your network from all potentially unsecured clients that are managed via DHCP (i.e., clients that receive IP addresses from DHCP), including resident desktop computers that are NAP capable.

NAP-capable OSs include Windows Vista (by default) and Windows XP SP2 with NAP client software (currently in Beta 3). XP SP3 will include the NAP client by default. No older OSs are supported, because NAP relies on information from Windows Security Center (WSC), which exists only in Vista and XP SP2.

A benefit of NAP is that it’s not limited to Microsoft technologies. Any system that can provide the NAP server with its health state can also use NAP. Microsoft is working with many hardware and software vendors and other partner companies to help them create NAP-compatible devices and software. To use NAP for DHCP-managed connections, you must prepare the environment, configure health policies, create network policies for NAP, configure DHCP for NAP, and enforce NAP on the client side.

Prepare the Environment
First, you must have an existing Active Directory (AD) infrastructure available, with one or more Windows 2003-based (or Server 2008-based) DCs. DHCP must be installed on a Server 2008 machine, because previous versions of the DHCP service (such as the version on Windows 2003) aren’t aware of NAP. You need at least one static IP address for this host.

Install Server 2008 as a member server in your domain. After installation, you must add the Server 2008 roles called Network Policy Server and DHCP Server. You can easily accomplish this task through the Server Manager console, which is available on the Welcome page or under Administrative Tools. Open Server Manager, go to Roles Summary, and click Add Roles. Server 2008’s Network Policy Server role replaces Windows 2003’s Internet Authentication Service (IAS). Thus, Network Policy Server (NPS) lets you create various types of policies, not just those related to NAP.

Configure Health Policies
To configure your health policies, go to Administrative Tools and click the Network Policy Server role you added. In the NPS console that opens, you must configure the System Health Validator and Health Policy options to create an appropriate network policy. The System Health Validator component defines your security requirements for clients that are accessing the network, whereas Health Policy defines different configurations for NAPcapable clients.

Double-click the Network Access Protection node on the left side of the console, and click System Health Validator. The Windows Security Health Validator item will appear on the right side of the console. Double- click this item to open the configuration window that Figure 1 shows. In this window, click Configure to see options for security requirements. As Figure 2 shows, you can simply select the appropriate check boxes to indicate what you require from clients. In Vista, you can require the firewall to be enabled, antivirus and antispyware applications to be present and current, the automatic update feature to be enabled, and current hotfixes to be installed. Similar requirements are available in XP SP2, other than the antispyware option, which isn’t part of XP. For testing purposes, let’s select only the firewall check box for both Vista and XP. Click OK twice to finish configuring the System Health Validator option.

To configure the Health Policy option, double- click the Policies node in the NPS console, right-click Health Policies, and select New. In the window that Figure 3 shows, enter the policy name and select what the System Health Validator (SHV) component will check.

First, let’s create a policy for compliant clients. Enter compliant for the policy name, and select Client passes all SHV checks from the drop-down menu. Selecting this option means that, for a client to be considered healthy, it must pass all the requirements you configured in SHV (which in the example was only the firewall requirement). Next, select the Windows Security Health Validator check box and click OK. Your first policy is now configured.

Next, let’s create a policy for noncompliant computers. Follow the same steps to create a new health policy, perhaps called noncompliant. In the drop-down menu, select Client fails one or more SHV checks, which means that if a client fails to correctly report one or more required components from SHV, it will be considered unhealthy. Finally, select the Windows Security Health Validator check box and click OK.

Create Network Policies for NAP
After you configure the SHV and Health Policy options, you can configure network policies. In the NPS console’s Policies node, click Network Policies and disable the default policies. By default, the two default policies are Connections to Microsoft Routing and Remote Access Server and Connections to other access servers. Right-click each policy and select Disable from the drop-down menu. Then, right-click the Network Policies folder and select New. A wizard for creating a new policy will start. Enter a policy name (e.g., “noncompliant- restricted” for a policy for unhealthy clients). Then, select from the drop-down list the type of network access server that will apply the policy to clients. The default is Unspecified; for our purposes, select DHCP Server.

Click Next to proceed to the Conditions page, and click Add to select conditions for the policy. From the list of available conditions that displays, select Health Policies from the Network Access Protection group. In the window that opens, select the “noncompliant” health policy that you created earlier.

Follow the same procedure to add the NAPCapable condition, which Figure 4 shows, to the policy. This condition limits application of the policy only to computers that are NAP capable.

Click Next to launch the Specify Access Permission window. In this window, you must specify what to do with clients that meet the policy. Although denying access to unhealthy clients might seem logical, you don’t want to completely deny access to those clients. Instead, you should provide them with limited access only to hosts that can help them improve their security state (i.e., remediation servers). Select Access Granted and click Next.

In the Configure Authentication Methods window, select the Perform machine health check only option, and clear the other check boxes, as Figure 5 shows. Because you’re configuring a policy for checking clients’ security health state via DHCP and because DHCP clients don’t authenticate to the DHCP server, you don’t need to configure authentication methods. Just click Next in the Configure Constraints window—none of the options apply to our example.

In the Configure Settings window, select NAP Enforcement in the Network Access Protection section, as Figure 6 shows. For this policy, you should select the Allow limited access NAP enforcement method. This setting will put clients in quarantine and give them access only to remediation servers. You can also configure those servers from this window: Simply click Configure to create a Remediation Server Group, and enter IP addresses for the hosts. Also select the Enable auto-remediation of client computers check box. Enabling both these settings causes the NAP Enforcement client component to automatically attempt to update the computer security state (e.g., if you turn the firewall off, it will be turned on automatically).

After you create a policy for incompliant clients, you must create a policy for compliant clients. Follow the same steps to create another new network policy, this time naming the policy “compliant full.” On the Conditions page, select the “compliant” health policy. Then, select the Allow full network access check box on the NAP Enforcement Settings tab. All other settings are the same as for the incompliant client policy.

Finally, you can configure a policy for NAP non-capable clients, to provide them with or deny them network access. This policy should grant or deny access to clients that aren’t NAP capable, by implementing only the NAPCapable condition, with the Only computers that are not NAP-capable option selected. (Note that this policy isn’t necessary in a test environment.)

Figure 7 shows the NPS console after you’ve created the necessary policies. Next, you need to configure DHCP.

Configure DHCP for NAP
You need to configure DHCP, so that DHCP can use NPS and the policies you created. First, you must create a scope on the DHCP server. Our intention is to configure the DHCP server to distribute a different group of scope options to compliant and incompliant NAP clients. After you create a scope, right-click it in the DHCP console. Select Properties, and go to the Network Access Protection tab. Then, select the Enable for this scope check box, as Figure 8 shows, and use the default NAP profile.

Another thing you can configure from the Network Access Protection tab in IPv4’s properties is DHCP behavior, in case DHCP can’t contact the network policy server. The default setting is to give clients full access, but you can also select the Restricted Access or Drop Client Packet options. In addition, you can enable and disable NAP on the server level.

Finally, you must configure additional options for NAP-capable clients. Right-click Scope Options, and select Configure Options. In the Configure Scope Options dialog box, select the Advanced tab. Select Default Network Access Protection Class as a User class, and define specific DHCP options for this class of clients (e.g., different DNS domain name, different gateway).

Enforce NAP on the Client Side
The last step is to configure the client to work with NAP. In fact, you must enforce the use of NAP on clients. You can accomplish this task through the NAP Client console, Group Policy, or Netsh (which has the new context for NAP configuration). Because you can’t configure domain or OU Group Policy Objects (GPOs) to include NAP settings from Windows 2003, using Group Policy requires you to edit GPOs from Vista or Server 2008’s Group Policy Management Console (GPMC). Use the Administrative Tools’ Services console to start the Network Access Protection Agent service, changing this service’s startup type to Automatic (which you can also use Group Policy to accomplish).

On Vista, start the Microsoft Management Console (MMC) and add the NAP Client Configuration snap-in. Alternatively, select Run from the Start menu, and enter

napclcfg.msc

Select the Enforcement Clients node in the left task pane, double-click DHCP Quarantine Enforcement client on the right side, select Enable this enforcement client, and click OK. From now on, the client should be able to use NAP.

To use Netsh to configure NAP on a client, go to the command line and enter

Netsh nap client set enforcement ID = 79617

If you want to use XP SP2, you must install the NAP client software for XP Beta 3, which makes the OS NAP capable.

Run a NAP Test
To test NAP on a client, configure a Vista client and join it to your domain. Obtain an IP address from the DHCP server, with the firewall in the default active state. Ensure that you have a regular IP address, from the scope that you created in earlier steps, with regular scope options. To verify that you have all the necessary DHCP information (e.g., DNS servers, gateway, WINS servers), go to the command line and enter

ipconfig /all

Figure 9 shows the output.

Next, manually disable the Vista firewall. In a few seconds, the DHCP enforcement client will perform autoremediation to correct the client’s system state, thus reenabling the firewall. To demonstrate a quarantined client, go to Server 2008’s NAP console and configure Windows Security Health Validator to require an antivirus application to be installed and updated. If you don’t have an antivirus solution on the Vista client, run ipconfig /release followed by ipconfig /renew to quarantine your client and receive a taskbar quarantine notification message. Run ipconfig /all again, and note that your computer is configured with the options you specified in DHCP’s Network Access Protection class. As Figure 10 shows, all you have is an IP address and subnet mask—no Internet access, and no access to other hosts on the network.

An Effective Solution
Maintaining computers’ health is one of the most time-consuming challenges that any network administrator faces. This complex task is made even more difficult if you must maintain system health for users who connect from home systems, partner computers and laptops that aren’t under control of administrators, or computers that aren’t managed through a corporate patching system (e.g., Windows Server Update Services—WSUS, Microsoft Systems Management Server—SMS). NAP is an effective solution for controlling network computers’ security health.