【简介】直接映射服务器到公网,没有验证不安全;通过Web浏览器访问远程内网服务器,有验证也安全,但是支持的协议太少。那有没有即安全,又能支持所有协议的访问方法呢?我们来看看SSL VPN的隧道模式。
实验要求与环境
OldMei集团深圳总部部署了域服务器和ERP服务器,用来对集团总部进行管理。新冠疫情期间,全员居家办公,除了管理员需要访问域服务器之外,其它同事也要访问ERP系统。
前期尝试将服务器映射到公网上,但是服务器非通用的web服务器,直接放公网上所有人都可以访问,安全系数太低。
后又尝试使用SSL VPN的Web模式,所有人通过Web浏览器访问公司内网服务器。因为要通过用户和密码认证才能登录,安全是有了保障,但是可用协议太少。管理员是可以通过RDP远程访问域服务器,但是其它员工就无法访问用ERP系统了。特别是有客户端软件的,都无法访问。
要解决这个问题,我们就要用到SSL VPN的隧道模式了。
配置前的准备
在配置SSL VPN隧道模式之前,我们需要准备一些后面要用到的参数。
① 首先我们需要创建SSL VPN的用户组。(创建方法见上一篇文章,这里不再复述。)
② 然后我们还需要创建远程访问用户,虽然一个用户可以给多人使用,但是还是建议为每个人创建一个用户,这样访问记录也有记可查。除了创建新的用户之外,还可以和域服务器连接,使用域服务器里的用户进行远程验证,这个我们后面再讲。
③ 然后我们要创建被远程访问服务器的地址对象。如果服务器数量很多,也可以用大段地址。
④ 同样,建议创建地址组,将被远程访问服务器的地址对象,加入到地址组中,在配置的过程中使用地址组。后期新增或删除地址对象,都不会影响配置。
⑤ 和Web模式不同,SSL VPN隧道模式要用到FortiClient客户端,通过FortiClient客户端拨号,生成一条安全隧道,来访问过程内网服务器。那么是通过什么IP地址来访问呢?电脑本身的内网IP?还是电脑接入的公网IP?都不是,FortiClient客户端拨号成功后,会自动生成一个不太可能引起冲突的内网IP。防火墙默认有一个这样的地址对象,叫SSLVPN_TUNNEL_ADDR1,内网是一个地址网段,一共有11个地址,如果不够用,可以修改IP范围。
【注意】
这个地址对象可以直接用,也可以用自定义的地址对象代替。很多人不喜欢这个地址段,将它改成自己常用的内网地址,甚至是内网已经存在的地址段,例如公司总部已经有10.10.10.0网段,将这个地址对象改为10.10.10.30-10.10.10.50,认为拨号后得到的IP和内网IP相同,就在一个内网了,可以无障碍的访问,其实这是错误的,适得其反。
这是因为违反了防火墙的一个规则,就是不同接口,必须是不同网段。SSL VPN拨号后,会生成一个虚拟接口,通常是ssl.root,如果ssl.root的IP是10.10.10.0段,而DMZ口也是10.10.10.0段,这就冲突了。所以,要么不要改动SSLVPN_TUNNEL_ADDR1地址段,要改也不能改成和内网相同的地址段。
配置SSL VPN门户
SSL VPN会用到的用户组、地址组,以及FortiClient客户端拨号后生成IP的地址对象准备好后,就可以开始配置SSL VPN了,同样,首先配置SSL VPN门户。
① 登录深圳总部防火墙,选择菜单【VPN】-【SSL-VPN门户】,默认有三个门户,我这选择full-access,点击【编辑】。full-access即包括隧道模式,又包括web模式,虽然我们是用隧道模式工作,但是我们也可以用web模式进行测试,后期确认不用再关闭web模式。
② 隧道分割,可以理解为什么流量进入隧道。要么全部进入隧道,要么指定IP进入隧道,或者指定IP之外的流量进入隧道。这里我们选择【基于策略目标启用】,隧道分离地址选择我们创建的内网服务器地址组。也就是说,只有访问这些服务器IP时候,才会走隧道。源IP池默认选择【SSLVPN_TUNNEL_ADDR1】,这也就是前面介绍的,FortiClient客户端拨号后,会根据这个地址对象,生成IP地址。
③ FortiClient客户端的某些访问选项,是由【隧道模式客户端选项】来控制的。只有这里启用了,在FortiClient客户端上才会显示。这里我们试着启用保存密码。
配置SSL VPN设置
SSL VPN门户配置内容很少,下面我们看看SSL VPN设置。
① 选择菜单【SSL-VPN设置】,接口选择允许登录的宽带接口,可以选择多个宽带接口,要求宽带IP能够被远程访问。象100.64.X.X之类的就无法远程访问。SSL VPN监听端口默认为443,和防火墙的默认管理接口相同,这样会引起冲突,而大部分宽带443端口都会被屏蔽,因此建议更改SSL VPN监听端口。服务器证书选择防火墙自带证书。
② 由于防火墙默认选择了SSL_TUNNEL_ADDR1地址对象,所以【自动分配地址】会显示这个地址对象的IP范围。
③ 也可以选择【指定自定义IP范围】。
④ 最后是认证/门户映射,这里将用户组【SSL_VPN_Users】与门户【tunnel-access】映射,全部其它用户/组默认是没有配置的,建议选择最简单的web-access。
配置SSL VPN策略
SSL VPN门户和SSL VPN设置都配置完后,还需要配置SSL VPN策略才能生效。
① SSL VPN设置配置完后,会生成一个虚拟接口,SSL VPN策略的流入接口,默认为这个虚拟接口。流出接口,就是拨入后要访问那个内网接口,这里是访问服务器的接口DMZ。
源地址需要选择两项,地址为SSL VPN门户里默认选择的SSLVPN_TUNNEL_ADDR1,地址对象为SSL VPN设置里最下面认证/门户映射里的地址组。
为了限制拨号进来访问其它IP,目标地址这里选择只能访问指定的服务器IP。
服务这项可以根据实际情况选择,服务器少,需要控制严格,就加上指定端口。服务器多,就选择ALL。
启用NAT只有在一种情况下需要开打,那就是服务器的实际IP地址网段,与防火墙接口IP不在同一网段,例如下面有三层交换机的情况。
配置FortiClient客户端
SSL VPN隧道模式需要用到FortiClient客户端。
① 可以在forticlient.com网站下载FortiClient客户端。
② FortiClient客户端支持常见的平台。
③ 这里我们下载FortiClient VPN Windows版本,安装步骤就略过,安装完成后,点击桌面【FortiClient VPN】图标。
④ 启动后点击最右边的图标,可以查看FortiClient VPN的版本信息。目前是7.0.8版本,建议FortiClient客户端与FortiGate防火墙固件版本相同或接近,不要版本相差太大。
⑤ 首次启动会显示免则信息,这是因为FortiClient VPN是免费提供的。钩选后点击【I accept】。
⑥ FortiClient VPN只有一个功能,那就是【配置VPN】。
⑦ 配置界面很简单,首先是输入一个自定义的连接名,然后是远程网关,也就是深圳总部防火墙Wan1接口的IP地址。如果大家还记得的话,我们在SSL VPN设置时将端口号由443改为了10443,所以在FortiClient VPN设置里,也要改成10443,重点来了,自定义端口一定要钩选,不要只填数字而不钩选,保存后端口又会回到默认的443。点击保存,FortiClient VPN客户端就配置完了。
验证效果
深圳总部防火墙SSL VPN配置完了,笔记本电脑上FortiClient VPN客户端也安装配置好了,下面我们就要看看有没有效果了。
① 管理员在家中上网,打开FortiClient VPN,默认选择新建的VPN连接,输入用户名和密码,注意,是输入总部防火墙创建的用户名和密码,而不是防火墙的登录帐号和密码。
② 当状态到40%的时候,会停下来,那是因为会弹出一个窗口。
③ 点击弹出窗口,会看到一个证书提示,点击【是(Y)】。
④ 运气好的话,你会看到VPN已连接的提示,电脑有分配到一个IP地址。运气不好的话,会出现各种报错信息。
⑤ 在命令窗口,用ipconfg查看接口信息,可以看到多出一个虚拟网卡,IP地址为防火墙分配的10.212.123.200,而网卡IP显示,笔记本电脑是直接接入互联网的。
⑥ 再用route print命令查看笔记本电脑的路由表,基中有一个条,访问10.10.10.254的时候,走虚拟接口,也就是走SSL VPN隧道出去。
⑦ 再用ping命令,可以看到能直接ping通远程防火墙内网服务器的IP地址。
⑧ 再用telnet连接服务器IP和端口,也是连接成功。
⑨ 笔记本电脑打开远程桌面连接,输入服务器的内网IP,注意,这个时候,笔记本电脑是在管理员家里。
⑩ 通过FortiClient VPN客户端连接的安全隧道,管理员在家里,用内网IP也能成功通的登录到服务器上了。