SSL访问控制
1、引入
字面上看,SSL v*n由两部分组成,分别是SSL和v*n。SSL为Secure Sockets Layer,安全套接字层,是一个安全协议,为基于TCP的应用层协议提供安全连接(如HTTP和HTTPS的关系)。v*n即Virtual Private Network,虚拟专用网络,一般用于在公共网络上建立专用网络,进行加密通讯。v*n一般通过对数据包的加密和数据包目的地址的转换实现远程访问。
SSL v*n是以SSL为基础的v*n技术,通过建立SSL连接来实现访问转发。它充分利用了SSL协议提供的基于证书的身份认证、数据加密和完整性验证机制,为员工访问企业内网提供了一种安全的验证机制。相比于其他常用的v*n,如GRE v*n、L2TP v*n和IPSec v*n等,有着使用方便、数据安全、访问资源易控制等优势,被广泛应用于企业的远程接入。
2、SSL v*n工作机制
SSL v*n服务通过SSL v*n网关来提供。SSL v*n网关位于远端接入用户和企业内部网络之间,负责在二者之间转发报文。管理员需要在SSL v*n网关上创建与企业网内服务器对应的资源。
SSL v*n网关与远端接入用户建立SSL连接,并对接入用户进行身份认证。远端接入用户的访问请求只有通过SSL v*n网关的安全检查和认证后,才会被SSL v*n网关转发到企业网络内部,从而实现对企业内部资源的保护。
图1.SSL v*n网络模型
SSL v*n的工作机制为:
(1)远程接入用户与SSL v*n网关建立HTTPS连接,通过SSL提供的基于证书的身份验证功能,SSL v*n网关和远程接入用户可以验证彼此的身份。
(2)远程接入用户输入用户名、密码等身份信息,SSL v*n网关对用户的身份进行认证,并对用户可以访问的资源进行授权。
(3)用户获取到可以访问的资源,通过SSL连接将访问请求发送给SSL v*n网关。
(4)SSL v*n网关将资源访问请求转发给企业网内的服务器。
(5)SSL v*n网关接收到服务器的应答后,通过SSL连接将其转发给用户。
SSL v*n可以提供三种资源接入方式,分别为Web接入方式、TCP接入方式和IP接入方式。本文主要围绕IP接入方式进行展开验证。
3、IP接入方式介绍
IP接入方式用来实现远程主机与企业内部服务器网络层之间的安全通信,进而实现所有基于IP的远程主机与服务器的互通,如在远程主机上ping内网服务器。
用户通过IP接入方式访问内网服务器前,需要安装专用的IP接入客户端软件,该客户端软件会在SSL v*n客户端上安装一个虚拟网卡。
IP接入方式下,管理员在SSL v*n网关上创建SSL v*n AC接口,并配置下发给SSL v*n客户端的路由表项。
如图2所示,IP方式接入过程如下:
(1)用户在客户端上安装IP接入客户端软件后,启动该软件并登录;
(2)SSL v*n网关对其进行认证和授权。认证、授权通过后,SSL v*n网关为客户端的虚拟网卡分配IP地址,并将授权用户访问的IP接入资源(即路由表项)发送给客户端;
(3)客户端为虚拟网卡设置IP地址,并添加路由表项,路由的出接口为虚拟网卡;
(4)用户在客户端上访问企业内网服务器时,访问请求报文匹配添加的路由表项,该报文将进行SSL封装,并通过虚拟网卡发送给SSL v*n网关的SSL v*n AC接口;
(5)SSL v*n网关对SSL报文进行解封装,并将IP报文转发给内网服务器;
(6)内网服务器将应答报文发送给SSL v*n网关;
(7)SSL v*n网关对报文进行SSL封装后,通过SSL v*n AC接口将其发送给客户端。
图2.IP接入方式的工作过程
4、IP接入方式配置实现
4.1 网关设备配置
实验设备:F1060,版本:CMW7.1-R9323P13
#
interface SSLv*n-AC11
ip address 111.1.1.1 255.255.255.0
#
security-zone name Management
import interface GigabitEthernet2/0/0
import interface SSLv*n-AC11
#
sslv*n ip address-pool admit 111.1.1.100 111.1.1.200
#
pki domain guotiejun
public-key rsa general name guotiejun
undo crl check enable
pki import domain guotiejun pem ca filename 2003_server.cer
pki import domain guotiejun p12 local filename 2003_local.pfx
Please input the password:(密码1)
#
ssl server-policy guotiejun
pki-domain guotiejun
#
sslv*n gateway guotiejun
ip address 172.2.215.104 port 18157
ssl server-policy guotiejun
service enable
#
sslv*n context guotiejun
gateway guotiejun
ip-tunnel interface SSLv*n-AC11
ip-tunnel address-pool admit mask 255.255.255.0
ip-route-list guotiejun
include 100.1.12.0 255.255.255.0
policy-group guotiejun
filter ip-tunnel acl 3333
ip-tunnel access-route ip-route-list guotiejun
default-policy-group guotiejun
service enable
#
user-group admit
authorization-attribute sslv*n-policy-group guotiejun
#
local-user guotiejun class network
password simple guotiejun
service-type sslv*n
group admit
authorization-attribute user-role network-operator
4.2 定制客户端
定制客户端时配置默认网关。
配置认证类型为local,身份校验模式为密码认证。
4.3 安装并验证基础功能
定制完成之后在PC上进行安装。
首先查看没有连接v*n时的路由信息。
点击查询网关信息,验证基础配置正确性。
查询成功,输入登录信息(guotiejun/guotiejun)进行登录。
在“控制面板→网络和Internet→网络连接”进行查看,可以看到网络连接中已经新创建了一个虚拟网卡。
查看网卡地址信息,已经从address-pool获取到了111.1.1.100的地址。
查看路由表项,多了指向虚拟网卡的同网段路由和网关下发的资源路由。
5、配置SSL v*n用户绑定IP地址
5.1 功能简介
客户端使用IP接入方式访问SSL v*n网关时,网关需要为客户端分配IP地址。通过配置本功能,可以保证同一个用户多次访问该网关时能使用固定范围的IP地址。本功能提供以下两种方式为SSL v*n用户绑定IP地址:
(1) 指定固定的地址范围:为用户绑定分配的IP地址列表,当网关从SSL v*n访问实例引用地址池中为客户端分配IP地址时,优先分配绑定的IP地址;
(2) 指定可分配的地址数目:网关也可以为客户端自动分配空闲的IP地址,即网关会从SSL v*n访问实例引用地址池中获取指定个数的空闲IP地址,为用户绑定。
5.2 配置限制和指导
当SSL v*n策略组中引用了地址池时,配置SSL v*n用户绑定的IP地址必须是此地址池中的IP地址。
当SSL v*n策略组中未引用地址池时,配置SSL v*n用户绑定的IP地址必须是此SSL v*n访问实例引用的地址池中的IP地址。
未关联v*n实例或在同一v*n实例中,不同SSL v*n用户不能绑定相同的IP地址。
5.3 配置步骤
(1) 进入SSL v*n访问实例视图。
sslv*n context guotiejun
(2) 创建SSL v*n用户,并进入SSL v*n用户视图。
user guotiejun
(3) 配置SSL v*n用户绑定的IP地址。
ip-tunnel bind address 111.1.1.111
(4) 再次进行登录,可以看到地址被限制为绑定的IP地址111.1.1.111。
6、为IP接入配置SSL v*n策略组
6.1 功能简介
在SSL v*n策略组视图下需要配置下发给客户端的路由表项。AAA服务器将某个策略组授权给SSL v*n用户后,SSL v*n网关会将该策略组下配置的路由表项下发给客户端。下发的路由表项具有三种配置方法:
(1) 直接配置路由表项:用于将一条路由下发给客户端;
(2) 配置路由列表:用于将路由列表中的多条路由同时下发给客户端;
(3) 强制将客户端的流量转发给SSL v*n网关(指定force-all参数):SSL v*n网关在客户端上添加优先级最高的缺省路由,路由的出接口为虚拟网卡,从而使得所有没有匹配到路由表项的流量都通过虚拟网卡发送给SSL v*n网关。SSL v*n网关还会实时监控SSL v*n客户端,不允许SSL v*n客户端删除此缺省路由,且不允许SSL v*n客户端添加优先级高于此路由的缺省路由。
SSL v*n网关可以通过高级ACL和URI ACL规则对SSL v*n用户的IP接入进行过滤,防止非法用户接入内部网络。配置SSL v*n访问控制策略后,设备对IP接入按照如下原则过滤:
(1) 进行URI ACL的规则检查,成功匹配URI ACL中permit规则后用户的访问请求才允许通过;
(2) 若URI ACL匹配失败时,再进行高级ACL的检查,成功匹配规则后用户的访问请求才允许通过;
(3) 若高级ACL检查失败,则授权失败,用户不允许访问资源。
高级ACL支持根据接入请求报文的目的IP地址和目的端口号、源IP地址和源端口号、协议类型、报文优先级、分片信息、TCP报文标识、ICMP报文的消息类型和消息码信息进行过滤;URI ACL支持根据接入请求报文的协议类型、地址、域名、端口号和URL进行过滤。
6.2 配置限制
配置对IP接入进行URI ACL过滤时,指定的URI ACL规则中不能包含HTTP和HTTPS协议。
6.3 验证配置
在前面的配置中,我们有两个地方可以对访问资源进行控制,分别是下发的路由列表ip-route-list和控制资源访问策略policy-group中的ACL列表。上面我们使用的配置如下:
sslv*n context guotiejun
ip-route-list guotiejun
include 100.1.12.0 255.255.255.0
policy-group guotiejun
filter ip-tunnel acl 3333
ip-tunnel access-route ip-route-list guotiejun
此时测试,发现我们是可以访问到对应资源的。
接下来我们修改一下ACL规则,变更配置如下:
#
acl advanced 3402
rule 0 deny ip source 111.1.1.0 0.0.0.255
#
policy-group guotiejun
filter ip-tunnel acl 3402
ip-tunnel access-route ip-route-list guotiejun
可以看到资源已经不能访问。
再结合修改路由列表ip-route-list看一下,变更配置如下:
#
acl advanced 3402
rule 0 deny ip destination 100.1.12.0 0.0.0.255
rule 5 permit ip
#
sslv*n context guotiejun
ip-route-list guotiejun
include 100.1.12.0 255.255.255.0
include 200.1.12.0 255.255.255.0
policy-group guotiejun
filter ip-tunnel acl 3402
再来看一下效果,说明是通过ACL对访问资源权限做了控制。
我们再修改一下路由列表ip-route-list看一下。
#
ip-route-list guotiejun
include 100.1.12.0 255.255.255.0
可以看到此时访问不到,查看路由表项,去往200.1.12.0网段的路由表项已经不见了,说明路由表项是下发资源的,并且修改之后会实时同步到客户端,还可以通过ACL进行限制访问,保证只有通过ACL检查的报文才可以访问IP资源。
再看一下配置强制将客户端的流量转发给SSL v*n网关,命令如下:
#
policy-group guotiejun
filter ip-tunnel acl 3402
ip-tunnel access-route force-all
查看客户端的路由表,发现路由的优先级被修改了。
发现之前的默认路由优先级被修改为了110,新下发的默认路由优先级为21。尝试一下修改路由优先级看能不能成功。
route change 0.0.0.0 mask 0.0.0.0 172.2.216.254 metric 7
发现默认路由优先级确实被修改了,但是和修改的优先级是不一样的。并且iNode没有再次修改路由优先级。尝试在设备上重新操作一遍配置,查看路由是否重新下发。
发现设备上又多了一条优先级为21的路由,说明当前的实现方式是下发一条指向SSL v*n网管的优先级为21的默认路由,并且没有检测机制,容易被最终用户修改。
7、经验总结
SSL v*n默认的端口为443,可用端口为<443, 1025-65535>,如果需要映射则端口需要映射为443,否则如果客户端配置时不知道端口号,会造成连接失败。
在配置PKI域时,一般需要禁用Certificate revocation list (CRL) function(证书撤销列表),undo crl check enable。在导入证书时,需要注意证书格式,如果不能使用时,尝试切换证书格式。V7防火墙设备默认自带证书,但dir里看不到。设备中没有手工导入证书的情况下,通过调用设备自身默认的证书仍可以实现sslv*n认证成功。由于设备中存在默认证书,可不用手工导入证书,如果导入证书有问题反而有可能导致认证失败!
如果正常通信后拨号不成功,提示“查询SSL v*n网关参数失败”,检查配置没有问题,重新导入证书、使能SSL服务器端策略,最终拨号成功;如果拨号成功之后无法访问内网。可以检查域间策略配置,将资源涉及到的所有域全部放通,可以解决资源访问异常的问题。由于防火墙设备的特殊性,一定要确保域间策略正确!
缺省情况下,策略组下未引用地址池,若引用的地址池不存在或无可用地址,分配失败,用户无法通过IP接入。若策略组未引用地址池,则SSL v*n网关将使用SSL v*n访问实例中引用的地址池为客户端分配IP地址。缺省情况下,SSL v*n网关禁止所有客户端访问IP接入资源,如果引用的ACL不存在,则SSL v*n网关拒绝所有IP接入方式的访问。