Configuring Windows Server 2008 As A Remote Access SSL VPN Server
Configuring Windows Server 2008 As A Remote Access SSL VPN Server
A high level overview of VPN networking technologies and a description of Microsoft VPN protocols, highlighting the advantages of the new SSTP VPN protocol. Remote Access is one of todays big things. As an increasing number of people need access to information stored on work and home computers, the ability to access that information from anywhere is critical. Gone are the days when you could say Ill get that information to you when I get to my computer. You need that information now if you want to be competitive in todays business environment. In the stone age of computing, the way to remotely access information on your computer was to use a dial-up connection. RAS dial-up connections worked over regular POTS (Plain Old Telephone Service) lines and had speeds that ranged up to around 56kbps. Speed was a major problem with dial-up RAS connections, but an even bigger problem was the cost of the connections when a long distance number was required for access. With the introduction and growth of the Internet, dial-up RAS connections became less relevant. The reason for this was the introduction of virtual private network (VPN) connections. VPN connections provided the same point to point connectivity that the dial-up RAS connections provided, but did so faster and cheaper, as the speed of the VPN connection could be as fast as the Internet link and the cost of the connection is independent of the destination. The only cost is that of the Internet link.
PPTP is the Point to Point tunneling protocol. PPTP is the simplest method you can use to establish a VPN connection, but unfortunately it is also the least secure. The reason why PPTP is the least secure option is that user credentials are not exchanged over a secure link. That is to say, encryption of the VPN connection takes place after credentials are exchanged. Even though actual credential information is not transmitted between VPN client and server, the hash values exchanged can be leveraged by sophisticated hackers to gain access to VPN servers and connect to corporate networks. A more secure VPN protocol is L2TP/IPSec. L2TP/IPSec was a joint development between Microsoft and Cisco. L2TP/IPSec is more secure than PPTP because a secure IPSec session is established before credentials are sent over the wire. Hackers are not able to access the user credentials and thus cannot steal them to use them
later. More importantly, IPSec provides for mutual machine authentication, so that untrusted machines are not able to connect to the L2TP/IPSec VPN gateway. IPSec provides for mutual machine authentication, data integrity, confidentiality, and non-repudiation. L2TP supports PPP and EAP user authentication mechanisms, which allows for a high level of log on security because both user and machine authentication is required. Windows Vista SP1 and Windows Server 2008 now support a new VPN protocol Secure Socket Tunneling Protocol or SSTP. SSTP uses SSL encrypted HTTP connections to establish a VPN connection to the VPN gateway. SSTP is secure because user credentials are not sent until after a secure SSL tunnel is established with the VPN gateway. SSTP is also known as PPP over SSL, so this means that you can use PPP and EAP authentication mechanisms to make your SSTP connection more secure.
such as hotels, conference centers, restaurants, and other locations only allow a small number of ports open outbound, such as HTTP, TCP port 80 and HTTPS (SSL), TCP port 443. If you need support for protocols other than HTTP and SSL when you leave the office, you are playing a game of dice. You may or may not get the required ports needed for PPTP or L2TP/IPSec. In contrast, SSTP VPN connections are tunneled over SSL using TCP port 443. Since all firewalls and NAT devices have TCP port 443 open, you will be able to use SSTP from anywhere. This greatly simplifies the life of the road warrior who needs to use VPN connections to connect to the office, and also makes life a lot easier on the lives of the corporate admin who needs to support the road warrior, as well as the help desk people at the service providers who provide Internet access for hotels, conference centers, and other public locations.
5.
6. 7. 8.
9.
For those of you who are interested in the characteristics of the VPN protocol architecture, you can see that in the figure below. Notice that SSTP has an additional header compared to the other two VPN protocols. That because there is HTTPS encapsulation in addition to the SSTP header. L2TP and PPTP dont have application layer headers encapsulating the communication.
Figure 1
We will use a simple three machine example network to show how SSTP works. The names and characteristics of the three machines are: Vista: Vista Business Edition Vista Service Pack 1 Non-domain member W2008RC0-VPNGW: Windows Server 2008 Enterprise Edition Two NICs Internal and External Domain member WIN2008RC-DC: Windows Server 2008 Enterprise Edition Domain Controller of MSFIREWALL.ORG domain DHCP Server DNS Server Certificate Server (Enterprise CA) Notice that you must use Vista Service Pack 1 as the VPN client. While there have been discussions in the past about Windows XP Service Pack 3 supporting SSTP, this may not end up being the case. I recently installed the release candidate for Windows XP Service Pack 3 on a test machine and found no evidence of SSTP support. This is a real shame, as there is a large installed based of Windows XP on laptop computers, and the common consensus at this time is that Vista is too slow for laptop use at this time. Perhaps the Vista performance problems will be rectified with Vista Service Pack 1. The high level configuration of the example network is seen in the figure below.
Figure 2
Configuring Windows Server 2008 as a Remote Access SSL VPN Server (Part 2)
In the first part of this article series on how to configure Windows Server 2008 as a SSL VPN server, I went over some of the history of Microsoft VPN servers and VPN protocols. We finished that article up with a description of the example network that well use in this and subsequent articles on configuring the VPN gateway to support SSTP connections from Vista SP1 clients. Before we begin, I need to say that I know that there is a step by step guide on how to configure SSTP connections to Windows Server 2008 on the www.microsoft.com Web site. The problem with that article is that I felt it did not reflect a real world environment that uses an enterprise CA for certificate assignment. Because of that, and some of the issues that were left out of the Microsoft step by step guide, I decided to do this article. I think you will learn a few new things along the way as you follow along with me. Im not going to go through all the steps from the ground up. I will assume that you have installed a DC and enabled the DHCP, DNS and Certificate Services roles on that server. The certificate server type should be Enterprise, so that you are hosting an enterprise CA on your network. The VPN server should be joined to the domain before you begin the following steps. The Vista client needs to have SP1 installed before you get started. We will need to perform the following procedures to get the solution working: y y y y y y y y y y y Install IIS on the VPN server Request a machine certificate for the VPN server using the IIS Certificate Request Wizard Install the RRAS server role on the VPN server Enable the RRAS Server and configure it to be a VPN and NAT server Configure the NAT server to publish the CRL Configure the User Account to allow dial-up connections Configure IIS on the Certificate Server to allow HTTP connections for the CRL directory Configure the HOSTS file on the VPN client Use PPTP to connect to the VPN server Obtain a CA Certificate from the Enterprise CA Configure the Client to use SSTP and Connect to the VPN Server using SSTP
Figure 1 3. 4. 5. Click the Add Roles link on the right side of the right pane. Click Next on the Before You Begin page. Put a checkmark in the Web Server (IIS) checkbox on the Select Server Roles page. Click Next.
Figure 2
6.
7.
Read the information on the Web Server (IIS) page if you like. This is good general information about using IIS 7 as a Web server, but since we are not going to use the IIS Web server on the VPN server, this information does not really apply to our scenario. Click Next. On the Select Role Services page, a number of options are already selected. However, if you use the default options, it does not seem that you will get the option of using the Certificate Request Wizard. This was the case when I tested it. There is no Role Service for the Certificate Request Wizard, so I tried putting a checkmark in each of the Security options and that seemed to work. Do the same on yours and click Next.
Figure 3 8. 9. Review the information on the Confirm Installation Selections page and click Install. Click Close on the Installation Results page.
Figure 4
Request a Machine Certificate for the VPN Server using the IIS Certificate Request Wizard
The next step is to request a machine certificate for the VPN server. The VPN server needs a machine certificate to create the SSL VPN connection with the SSL VPN client computer. The common name on the certificate must match the name that the VPN client will use to connect to the SSL VPN gateway computer. This means that you will need to create a public DNS entry for the name on the certificate so that resolves to the external IP address on the VPN server, or the IP address of a NAT device in front of the VPN server that will forward the connection to the SSL VPN server. Perform the following steps to request and install the computer certificate on the SSL VPN server: 1. In the Server Manager, expand the Roles node in the left pane and then expand the Web Server (IIS) node. Click on Internet Information Services (IIS) Manager.
Figure 5 2. In the Internet Information Services (IIS) Manager console that appears in the panes to the right of the left pane, click on the name of the server. In this example, the name of the server is W2008RC0VPNGW. Click on the Server Certificatesicon in the right pane of the IIS console.
Figure 6
3.
In the right pane of the console, click the Create Domain Certificate link.
Figure 7 4. Fill out the information on the Distinguished Name Properties page. The most important entry on this page is the Common Name entry. This name is the name that VPN clients will use to connect to the VPN server. You will need a public DNS entry for this name so that it resolves either to the external interface of the VPN server, or the public address of a NAT device in front of the VPN server. In this example we will use the common name sstp.msfirewall.org. Later, we will create HOSTS file entries on the VPN client computer so that it can resolve this name. Click Next.
Figure 8 5. On the Online Certification Authority page, click the Select button. In the Select Certification Authority dialog box, click the name of the Enterprise CA and click OK. Enter a friendly name for the certificate in the Friendly name text box. In this example well use the name SSTP Cert so that we know it is being used for the SSTP VPN gateway.
Figure 10 7. The wizard will run and then disappear. After this point you will see the certificate appear in the IIS console. Double click on the certificate and you can see the common name in the Issued to section and that we have a private key that corresponds to the certificate. Click OK to close the Certificate dialog box.
Figure 11 Now that we have a certificate, we can install the RRAS Server Role. Note that it is critical that you install the certificate first, before you install the RRAS Server Role. If you do not, you will end up being in a world of hurt, because you will have to use a fairly complex command line routine to bind the certificate to the SSL VPN listener.
4.
On the Select Server Roles page, put a checkmark in the Network Policy and Access Services checkbox. Click Next.
Figure 12 5. Read the information on the Network Policy and Access Services page. Most of it is about the new Network Policy Server (which used to be called the Internet Authentication Server [IAS] which was a RADIUS server) and NAP, neither of which apply to our current scenario. Click Next. On the Select Role Services page, put a checkmark in the Routing and Remote Access Services checkbox. This will put checkmarks in the Remote Access Service and Routing checkboxes. Click Next.
6.
Figure 13 7. 8. Click Install on the Confirm Installation Selections page. Click Close on the Installation Results page.
Enable the RRAS Server and Configure it to be a VPN and NAT Server
Now that the RRAS server role is installed, we need to enable the RRAS service, just like how we did it in previous versions of Windows. We need to enable the VPN server feature and the NAT service. While it is clear why we need to enable the VPN server component, you might wonder why we need to enable the NAT server. The reason for enabling the NAT server is so that external clients can gain access to the Certificate Server to connect to the CRL. If the SSTP VPN client cannot download the CRL, the SSTP VPN connection will fail. In order to allow access to the CRL, we will configure the VPN server as a NAT server and publish the CRL using reverse NAT. In a production environment you will be more likely to have a firewall, such as an ISA Firewall, in front of the Certificate Server, so that you would publish the CRL using the firewall. However, in this example the only firewall we will be using is the Windows Firewall on the VPN server, so we will need to configure the VPN server as a NAT server in this example. Perform the following steps to enable the RRAS service: 1. In the Server Manager, expand the Roles node in the left pane of the console. Expand the Network Policy and Access Services node and click on the Routing and Remote Access node. Right click on the Routing and Remote Access node and click Configure and Enable Routing and Remote Access.
Figure 14 2. 3. Click Next on the Welcome to the Routing and Remote Access Server Setup Wizard page. On the Configuration page, select the Virtual private network (VPN) access and NAT option and click Next.
Figure 15
4.
On the VPN Connection page, select the NIC in the Network interfaces section that represents the external interface of the VPN server. Then click Next.
Figure 16 5. On the IP Address Assignment page, select the Automatically option. We can select this option because we have a DHCP server installed on the domain controller behind the VPN server. If you did not have a DHCP server, then you would have to select the From a specified range of addresses option and then provide a list of addresses that VPN clients could use when connecting to the network through the VPN gateway. Click Next.
Figure 17 6. On the Managing Multiple Remote Access Servers page, select the No, use Routing and Remote Access to authenticate connection requests. This is the option we use when there is no NPS or RADIUS server available. Since the VPN server is a member of the domain, you can authenticate users using domain accounts. If the VPN server were not a member of the domain, then only local accounts on the VPN server could be used, unless you decide to use the NPS server. Ill do an article on how to use an NPS server in the future. Click Next.
Figure 18 7. 8. 9. Read the summary information on the Completing the Routing and Remote Access Server Setup Wizard page and click Finish. Click OK in the Routing and Remote Access dialog box informing you that relaying of DHCP messages requires a DHCP relay agent. In the left pane of the console, expand the Routing and Remote Access node and then click on the Ports node. In the middle pane you will see that WAN Miniport connections for SSTP are now available.
Figure 19
Figure 20 Because of this, you need to create a public DNS entry for this name so that external VPN clients can resolve this name to an IP address on a device that will perform reverse NAT or reverse proxy to allow access to the Certificate Servers Web site. In this example, we need to have win2008rc0-dc.msfirewall.org resolve to the IP address on the external interface of the VPN server. When the connection reaches the external interface of the VPN server, the VPN server will reverse NAT the connection to the Certificate Server.
If you are using an advanced firewall, such as an ISA Firewall, you could make publishing the CRL site more secure, by allowing access only to the CRL, and not the entire site. However, in this article we will limit ourselves to the capabilities of a simple NAT device, such as what the RRAS NAT provides. I should note here that using the default CRL site name might not be the more secure option, since it exposes a private computer name to the Internet. You can create a custom CDP (CRL Distribution Point) to prevent this if you consider exposing the private name of your CA in your public DNS a security issue. You can find some information on how to change these values at How to Change the Policy Settings for a Certification Authority (CA) in Windows 2000. Perform the following steps to configure RRAS NAT to forward HTTP requests to Certificate Server: 1. 2. In the left pane of the Server Manager, expand the Routing and Remote Access node and then expand the IPv4 node. Click on the NAT node. In the NAT node, right click on the external interface in the middle pane of the console. In this example, the name of the external interface is Local Area Connection. Click Properties.
Figure 21 3. In the Local Area Connection Properties dialog box, click on the Web Server (HTTP) checkbox. That brings up the Edit Service dialog box. In the Private Address text box, enter the IP address of the Certificate Server on the internal network. Click OK.
Figure 23 Now that the NAT server is installed and configured, we can move our attention to configuring the CA server and the SSTP VPN client.