×

一篇能解决90%以上SSL VPN问题的武林秘籍

hqy hqy 发表于2023-01-09 10:35:34 浏览617 评论0

抢沙发发表评论

https://cdn.modb.pro/db/412866


前面我们已经通过几篇文章把SSL VPN的3种接入方式和对应的工作机制了解了,IP接入方式请查看VSR白送的SSL VPN功能,你要不要?,Web接入方式请查看SSL VPN配置Web接入方式案例,TCP接入方式请查看SSL VPN配置TCP接入方式案例

现在我们回过头来补充一些和实际使用相关的细节问题。

首先看一下SSL VPN网关的部署方式,主要有两种:网关模式和旁路模式

先看我们在云上部署VSR时使用的旁路模式,又称单臂旁挂、单臂模式。此时SSL VPN网关和内网的业务网关不是同一台设备,SSL VPN相关的业务流量需要经业务网关绕转到SSL VPN网关。因为SSL VPN网关不处在业务流量转发的关键路径上,性能只需满足SSL VPN的业务性能即可,即使性能不足也不会影响其他内外网通信。甚至设备宕机也只是影响SSL VPN业务。

所以,前面介绍的云上部署VSR的场景,实际业务模型是上图这样的,GW设备是云主机的网关设备,PC和VSR直接建立SSL VPN隧道连接。VSR和服务器之间路由可达,PC和Server互访的流量均需要绕转VSR设备;而Server和公网其他主机通信的流量直接通过网关设备GW转发,无需绕转VSR。这样,即使VSR宕机,也只是影响SSL VPN用户的访问流量。

而网关模式是指设备作为内网网关串接在内外网之间,内外网互通的所有流量需要通过SSL VPN网关进行转发。优势是网关模式可以提供对内网的完全保护,但是由于SSL VPN网关处在内网与外网通信的关键路径上,其性能对内外网之间的数据传输有很大的影响。

还是前面介绍的云上部署VSR的场景,因为没有办法替换掉GW设备,所以只能是把VSR串在GW和Server中间。如果是物理设备场景,在SSL VPN网关能满足业务需求的情况下,可以将SSL VPN网关复用为业务网关,降低部署成本。但如果SSL VPN网关宕机,所有业务均受影响。

综上,在实际部署时,还是建议优先考虑采用旁路模式部署

然后就是SSL VPN网关的配置了。我们前面是把3种接入方式分开讲的,其实也是可以组合在一起进行使用的。

可以发现,3种接入方式中SSL服务器端的策略配置都是一样的。

首先配置PKI域,并导入CA证书和服务器证书,证书的生成方式请参考文章(Windows Server配置生成认证证书)。然后配置SSL服务器端策略,并绑定PKI域。

    #
    pki domain guotiejun
    public-key rsa general name guotiejun
    undo crl check enable
    pki import domain guotiejun pem ca filename certguo.cer
    pki import domain guotiejun p12 local filename serverguo.pfx
    #
    ssl server-policy guotiejun
    pki-domain guotiejun

    SSL VPN网关配置的IP地址和端口号可以合并为一个。

      #
      sslvpn gateway guotiejun
      ip address 172.30.1.19 port 10086
      ssl server-policy guotiejun
      service enable

      IP接入方式需要创建SSL VPN AC接口,以及为SSL VPN客户端分配地址的地址池,还要创建允许SSL VPN地址池访问资源的ACL。

        #
        interface SSLVPN-AC1
        ip address 10.1.1.1 255.255.255.0
        #
        sslvpn ip address-pool tiejun 10.1.1.100 10.1.1.200
        #
        acl advanced 3402
        rule 0 permit ip source 10.1.1.0 0.0.0.255 destination 172.30.1.0 0.0.0.255

        然后就是把3种接入方式的访问实例配置融合到一起。IP接入方式添加资源172.30.1.0/24,Web接入方式添加资源172.30.1.17的HTTP和HTTPS管理页面,TCP接入方式添加资源172.30.1.17的SSH、FTP、Telnet、HTTP和HTTPS端口。

          #
          sslvpn context guotiejun
          gateway guotiejun
          ip-tunnel interface SSLVPN-AC1
          ip-tunnel address-pool tiejun mask 255.255.255.0
          port-forward-item ftp17
           local-port 17021 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 21
          port-forward-item http17
           local-port 17080 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 80
          port-forward-item https17
           local-port 17443 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 443
          port-forward-item ssh17
           local-port 17022 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 22
          port-forward-item telent17
           local-port 17023 local-name 127.0.0.1 remote-server 172.30.1.17 remote-port 23
          port-forward tcp
           resources port-forward-item ftp17
           resources port-forward-item http17
           resources port-forward-item https17
           resources port-forward-item ssh17
           resources port-forward-item telent17
          ip-route-list guotiejun
           include 172.30.1.0 255.255.255.0
          url-item http17
           url http://172.30.1.17
          url-item https17
           url https://172.30.1.17
          url-list web
           heading WebManagement
           resources url-item http17
           resources url-item https17
          policy-group guotiejun
           resources port-forward tcp
           filter ip-tunnel acl 3402
           ip-tunnel access-route ip-route-list guotiejun
           resources url-list web
          default-policy-group guotiejun
          service enable

          最后就是创建授权有策略组的用户组,并创建本地SSL VPN用户。

            #
            user-group sslvpn
            authorization-attribute sslvpn-policy-group guotiejun
            #
            local-user guotiejun class network
            password simple guotiejun
            service-type sslvpn
            group sslvpn
            authorization-attribute user-role network-operator

            然后就可以登录到SSL VPN网关了。

              https://bj.h3cadmin.cn:10086/

              我们看到页面中还有一个启动IP客户端应用程序的地方,默认是没有客户端软件的。此时我们需要开启设备的轻量级Web服务器功能Lighttpd,并将定制好的iNode客户端重命名后上传到指定路径。

              简单解释一下,为什么要指定路径。因为目前暂时不支持修改下载链接,默认的下载链接如下:

                https://bj.h3cadmin.cn:10086/client/ip/SvpnClient.exe

                所以我们需要在Web服务器根目录下创建client/ip/路径,并且设备名称必须修改为SvpnClient.exe,所以根目录下必须有包含ip的文件夹client。配置好之后就能从页面直接下载SSL VPN客户端了。

                TCP客户端就不多说了,终端需要具有Java环境,并且要添加例外站点。

                再就是对用户访问资源的授权管理部分了,这部分之前发过一篇关于IP接入方式的访问控制SSL VPN访问控制

                其实主要就是通过高级ACL(3000段)或者URI ACL进行访问控制,IP接入方式可以使用上述两者,而Web接入方式和TCP接入方式主要是通过URI ACL。首先对流量进行URI ACL的规则检查,匹配URI ACL中permit规则放行;如果URI ACL匹配失败,再匹配高级ACL,匹配permit规则放行;如果都匹配失败,拒绝访问。但是不怎么实用,把资源列出来又不给用户访问,属实有点流氓的意思。

                其实用的比较多的还是sslvpn-policy-group和user-group,可以创建用户组匹配SSL VPN策略组,因为SSL VPN策略组中是添加了VPN资源的,所以相当于是在用户组内的用户都有访问权限,只要调整用户或者用户组就能进行区分了。也可以配置本地用户直接匹配SSL VPN策略组,看个人喜好。

                此时我们再创建一个SSL VPN策略组yancaipin,只添加TCP资源。

                  #
                  sslvpn context guotiejun
                  policy-group yancaipin
                   resources port-forward tcp

                  然后创建一个用户yancaipin,直接匹配SSL VPN策略组yancaipin。

                    #
                    local-user yancaipin class network
                    password simple yancaipin
                    service-type sslvpn
                    authorization-attribute user-role network-operator
                    authorization-attribute sslvpn-policy-group yancaipin

                    登录账号yancaipin试一下。

                    可以看到Web资源没有了,只剩下TCP资源了。

                    最后应该就是限制在线用户了,缺省情况下,同一用户的同时最大在线数为32,如果用到上面的分类用户了,那肯定是要区分用户的,所以我们一般将每个用户名的同时最大在线数限制为2-3个,按个人终端算。配置方式为在SSL VPN访问实例视图中配置,同时开启达到最大在线数再登录时强制下线功能。

                      #
                      sslvpn context guotiejun
                      max-onlines 3
                      force-logout max-onlines enable

                      与此相关的有一个SSL VPN访问实例的最大会话数,缺省最大会话数为1048575,这个就不用管了。还有每个会话的最大连接数缺省为64,也不用管。还有一个SSL VPN会话保持空闲状态的最长时间,缺省为30分钟,可以视情况进行调整。

                        #
                        sslvpn context guotiejun
                        timeout idle 60

                        再有可能就是限速了,如果用户比较多,限速还是很有必要的。IP接入方式的限速功能如下:

                          #
                          sslvpn context guotiejun
                          ip-tunnel rate-limit upstream kbps 2048
                          ip-tunnel rate-limit downstream kbps 2048

                          还可以基于会话进行限速,命令如下:

                            #
                            sslvpn context guotiejun
                            rate-limit upstream 1024
                            rate-limit downstream 1024

                            以我处理过几千个问题的经验,不夸张的讲,本篇介绍的内容基本上能覆盖90%以上的客户需求了,下课!


                            打赏

                            本文链接:https://www.kinber.cn/post/3475.html 转载需授权!

                            分享到:


                            推荐本站淘宝优惠价购买喜欢的宝贝:

                            image.png

                             您阅读本篇文章共花了: 

                            群贤毕至

                            访客