基于Windows server 2008 R2 R2和Windows7的企业环境的SSTP(或SSL) ***构建(一)

前言:在20089月份,我写了和本篇同样的文章,那时的环境是基于windows server 2008windows 7 with sp1的。今次,在windows server 2008 r2windows 7的环境中重现企业sstp ***的建置过程。

此篇文章由小弟---华北电力大学的在校生刘勇完成。

一、新的协议SSTP的支持及介绍
windows server 2008 R2的已经发布金日,相信新的企业功能和特性让IT PRO们兴奋不已,在新的功能中,SSTP协议的支持让通过WINDOWS SERVER 2008 R2 R2进行SSL-***访问得到了增加,配合windows 7终端系统,企业使用sstp ***更加获利于微软提供的远程安全访问解决方案。
SSTP是微软提供的新一代的虚拟专用网(***)技术,它的全称是安全套接层隧道协议(Secure Socket Tunneling Protocol;sstp),和PPTP L2TP OVER IPsec一样,也是微软所提供的***技术。在拥有最大弹性发挥的同时,又确保信息安全达到了一定程度。
目前,支持SSTP的技术可以在如下系统中实现:Windows XP Sp3(偶在生产环境中并没有去验证)、Windows Windows 7 Sp1、windows 7、Windows server 2008 R2、windows server 2008 R2。在Windows Server 2008仅支持客户端与服务器之间的SSTP ***,并不支持站点到站点间的SSTP ***。但笔者仍不确认在windows server 2008 R2中是否支持。

通使用此项新技术,可以使防火墙管理员能更容易的配置策略使SSTP流量通过其防火墙。它提供了一种机制,将PPP数据包封装在HTTPS的SSL通讯中,从而使PPP支持更加安全身份验方法,如EAP-TLS等。


二、PPTP及L2TP OVER IPSEC在使用过程中的不足
新的SSTP协议的支持,并没有完全否决PPTP及L2TP OVER IPSEC在微软产品所组成的解决方案中的作用,当企业使用基于WINDOWS 平台的***解决方案时,这种协议仍是被常用来解决或是提升企业网络安全性。但两者的数据包通过防火墙、NAT、WEB PROXY时却都有可能发生一些连线方面的问题。
PPTP数据包通过防火墙时,防火墙需被设定成同时充许TCP连接以及GRE封装的数据通过,但大部分ISP都会阻止这种封包,从而造成连线的问题;而当你的机器位于NAT之后,NAT亦必需被设定成能转发GRE协议封装的数据包。否则就会造成只能建立PPTP的TCP连接,而无法接收GRE协议封装的数据包;WEB PROXY是不支持PPTP 协议的。
L2TP OVER IPSEC的情况和此类似,需要在防火墙上充许IKE 数据和ESP封装的数据同时通过,否则也会出现连接问题。且WEB PROXY也是不支持L2TP OVER IPSEC协议的。


三、SSTP的执行过程
上面简要介绍了SSTP协议的优势以及PPTP等之前两种协议的不足,下面就来说下XP WITH SP3 或是WINDOWS 7 WITH SP1、Windows 7等客户端是如何连接到WINDOWS SERVER 2008 R2 SSL(SSTP)***服务器的:
1、SSTP ***客户端以随机的TCP端口建立TCP连接至SSTP ***服务器(常常是SSTP *** 网关服务器)上的TCP 443端口。
2、SSTP ***客户端发送一个SSL “Client-Hello”消息给SSTP ***服务器,表明想与此建立一个SSL会话。
3、SSTP ***服务器发送“其机器证书”至SSTP ***客户端。
4、SSTP ***客户端验证机器证书,决定SSL会话的加密方法,并产生一个以SSTP ***服务器公钥加密的SSL会话密钥,然后发送给SSTP ***服务器。
5、SSTP ***服务器使用此机器证书私钥来解密收到的加密的SSL会话,之后两者之间所有的通讯都以协商的加密方法和SSL 会话密钥进行加密。
6、SSTP ***客户端发送一个基于SSL的HTTP(HTTPS)请求至SSTP ***服务器。
7、SSTP ***客户端与SSTP ***服务器协商SSTP隧道。
8、SSTP ***客户端与SSTP ***服务器协商包含“使用PPP验证方法验(或EAP验证方法)证使用者证书以及进行IPV4或IPV6通讯”的PPP连接。
9、SSTP ***客户端开始发送基于PPP连接的IPV4或IPV6通讯流量(数据)。
 

四、SSTP ***服务器环境搭建及说明
测试环境较为简单,三台机器完成全部操作,其中两台是WINDOWS SERVER 2008企业版,一台是带有SP1的WINDOWS 7。注意,这其中会涉及到公有DNS解析问题,在本试验中,以HOSTS文件中写入相关信息代替。

image

网络拓朴及详细说明如下:
1、图中WIN2K8 DC是一台windows server 2008 R2 R2域制器,名为win2k8dc.contoso.com。
充当DC、CA(企业根)、FILE SERVER角色。
IP Add:59.65.232.199/24
Gw:59.65.232.254
DNS:202.106.0.20
2、图中RRAS是一台windows server 2008 R2服务器,域成员,充当RRAS 、IIS服务器。两块网卡。
NEI 网卡IP Add:59.65.232.199/24
DNS:202.106.0.20
WAI网卡IP Add:192.168.2.1/24
DNS:202.106.0.20(真实环境中这块网卡是有网关和公有DNS的)
3、图中WINDOWS 7是一台带有SP1的WINDOWS 7手提电脑,位于INTERNET上的任一位置。
IP Add:59.65.232.253/24
整个网络拓朴中的机器角色是通过HYPER-V上安装虚拟机器完成。实际生产环境中请按角色归位。
整个实验执行流程如下:
A、在WIN2K8 DC升级域控,安装CA角色(企业根)
B、在RRAS这台机器上安装RRAS(***,NAT)、IIS角色,并能发布位于DC上的CA URL。同时为本机申请证书。
C、在WINDOWS 7机器上,建立SSL ***连线至***服务器。(在此机器上写HOSTS文件相关DNS域名解析结果)

在进行之前,需要强调两个问题,这两个问题是在配置和利用证书方面经常会产生的,提前告示大家在后续文章阅读时要注意:

1、 将不正确的RRAS计算机证书绑定至侦听器。

(在将RRAS角色添加到***服务器之前,必须添加RRAS计算机证书,这样子SSTP才可以正确的用。否则,就会将错误的证书绑定到该协议。详细请见下章中的三、四部分)

2、 证书撤销站点对于***客户端不可用。

(证书撤销列表必须可用于 Internet上的客户端。)

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现 SSTP VPN 可以使用 Android 中的 VPNService 类。以下是实现步骤: 1. 首先,需要在 AndroidManifest.xml 文件中声明 VPNService 的服务。 ``` <service android:name=".SstpVpnService" android:permission="android.permission.BIND_VPN_SERVICE" android:exported="false"> </service> ``` 2. 创建 SstpVpnService 类并继承 VPNService 类,实现必要的方法。 ``` public class SstpVpnService extends VpnService { // 实现必要的方法 } ``` 3. 在 onCreate() 方法中,创建一个 Builder 对象并设置 VPN 的配置。 ``` @Override public void onCreate() { super.onCreate(); Builder builder = new Builder(); builder.setSession("SSTP VPN"); builder.setMtu(1400); builder.addAddress("10.0.0.2", 24); builder.addRoute("0.0.0.0", 0); builder.addDnsServer("8.8.8.8"); builder.setBlocking(true); builder.setUnderlyingNetworks(null); builder.setConfigureIntent(null); try { mInterface = builder.establish(); } catch (Exception e) { e.printStackTrace(); } } ``` 4. 实现 onRevoke() 方法,在 VPN 被撤销时进行清理工作。 ``` @Override public void onRevoke() { super.onRevoke(); if (mInterface != null) { try { mInterface.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 5. 在 onStartCommand() 方法中,启动 VPN。 ``` @Override public int onStartCommand(Intent intent, int flags, int startId) { return START_STICKY; } ``` 6. 最后,在应用程序中启动 SSTP VPN 服务。 ``` Intent vpnIntent = VpnService.prepare(this); if (vpnIntent != null) { startActivityForResult(vpnIntent, VPN_REQUEST_CODE); } else { startVpnService(); } ``` 这样,就可以在 Android 应用程序中实现 SSTP VPN 服务。需要注意的是,SSTP VPN 协议是基于 SSL/TLS 的,需要使用 SSL/TLS 协议进行加密。在实现过程中,需要配置 SSL/TLS 相关的参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值