H3C防火墙SSLVPN配置示例。
使用防火墙作为SSLVPN服务器,在PC安装iNode作为客户端。防火墙连接公网,有公网IP。如果防火墙部署在内网,可在互联网边界设备做映射。
拓扑图
防火墙配置
配置示例
[H3C]dis current-configuration
#
version 7.1.064, ESS 1168L02
#
interface GigabitEthernet1/0
port link-mode route
ip address 10.55.55.51 255.255.255.0
nat outbound
#
interface GigabitEthernet2/0
port link-mode route
ip address 10.1.1.1 255.255.255.0
#
interface SSLVPN-AC1
ip address 10.1.2.1 255.255.255.0
新建一个SSLVPN-AC接口,编号为1,作为客户端连接成功后的网关
#
security-zone name Local
#
security-zone name Trust
import interface GigabitEthernet2/0
#
security-zone name DMZ
#
security-zone name Untrust
import interface GigabitEthernet1/0
#
security-zone name Management
#
security-zone name sslvpn
import interface SSLVPN-AC1
#
zone-pair security source Local destination Trust
packet-filter 3000
#
zone-pair security source Local destination Untrust
packet-filter 3000
#
zone-pair security source sslvpn destination Local
packet-filter 3000
#
zone-pair security source sslvpn destination Trust
packet-filter 3000
#
zone-pair security source Trust destination Local
packet-filter 3000
#
zone-pair security source Trust destination Untrust
packet-filter 3000
#
zone-pair security source Untrust destination Local
packet-filter 3000
这里为了测试方便,域间策略全部放通
#
ip route-static 0.0.0.0 0 10.55.55.1
#
acl advanced 3000
rule 0 permit ip
#
local-user sslvpn-user-1 class network
password cipher $c$3$pu/+zqep1SQlGwi4fAfLpp7gjXFjiif+CvqHncFL3IQ=
service-type sslvpn
authorization-attribute user-role network-operator
authorization-attribute sslvpn-policy-group policy-group-1
新建一个本地用户,作为SSLVPN的客户端的登录用户,iNode客户端填写的用户名和密码
class是network,这样才能配置service-type sslvpn
policy-group-1是策略组的名称,用户加入这个组就会使用这个组的策略
#
pki domain sslvpn-domain
public-key rsa general name sslvpn-keypair-1
定义一个pki domain,名称为sslvpn-domain
iNode客户端填写的域
#
ssl server-policy ssl-server-policy
pki-domain sslvpn-domain
ciphersuite rsa_aes_128_cbc_sha
加密相关配置
#
ip https enable
#
sslvpn ip address-pool sslvpn-pool-1 10.1.2.2 10.1.2.254
sslvpn地址池,客户端从这个地址池获取地址
地址池应与SSLVPN-AC接口同一网段,并排除SSLVPN-AC接口的IP
不同的context可以使用不同的地址池
#
sslvpn gateway sslgateway
ip address 10.55.55.51
service enable
定义sslvpn网关,这个网关指的是客户端建立sslvpn时需要连接的地址(隧道端点)
iNode客户端填写的网关IP
#
sslvpn context context1 #创建context,名称为context1
gateway sslgateway domain sslvpn-domain #关联sslvpn网关和域
ip-tunnel interface SSLVPN-AC1 #调用SSLVPN-AC接口
ip-tunnel address-pool sslvpn-pool-1 mask 255.255.255.0 #调用地址池,一个context只能调用一个地址池
ip-route-list route-list-1 #定义路由列表,这些路由会推送到客户端
include 10.1.1.0 255.255.255.0
policy-group policy-group-1 #创建策略组
filter ip-tunnel acl 3000 #通过ACL限制客户端的网络访问权限
ip-tunnel access-route ip-route-list route-list-1
service enable #启用这个context
#
连接成功后的等效拓扑
SSLVPN连接成功后,客户PC相当于直接连到了防火墙,即PC处于内网之中。PC的网关是防火墙的SSLVPN-AC接口。
客户端
这里使用H3C iNode客户端做示例
客户PC iNode网卡获取的IP
d:\work>ipconfig -all
以太网适配器 以太网:
连接特定的 DNS 后缀 . . . . . . . :
描述. . . . . . . . . . . . . . . : iNode VPN Virtual NIC
物理地址. . . . . . . . . . . . . : 02-50-F2-00-00-02
DHCP 已启用 . . . . . . . . . . . : 否
自动配置已启用. . . . . . . . . . : 是
本地链接 IPv6 地址. . . . . . . . : fe80::c063:28d0:bd59:9a21%18(首选)
IPv4 地址 . . . . . . . . . . . . : 10.1.2.2(首选)
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . :
10.1.2.2是从SSLVPN地址池获取的IP
客户PC的路由
d:\work>route print -4
活动路由:
网络目标 网络掩码 网关 接口 跃点数
0.0.0.0 0.0.0.0 10.55.55.1 10.55.55.102 35
10.1.1.0 255.255.255.0 在链路上 10.1.2.2 291
10.1.1.255 255.255.255.255 在链路上 10.1.2.2 291
10.1.2.0 255.255.255.0 在链路上 10.1.2.2 291
10.1.2.2 255.255.255.255 在链路上 10.1.2.2 291
10.1.2.255 255.255.255.255 在链路上 10.1.2.2 291
这些路由是SSLVPN服务器推送过来的
PC访问内网时,从10.1.2.2(即SSLVPN隧道)发送出去,访问互联网时,仍走默认网关10.55.55.1。
在PC ping内网服务器(Zabbix),然后在服务器上抓包,查看SSLVPN客户端访问服务器时的IP
[root@localhost ~]# tcpdump -i ens3
20:46:53.748531 IP 10.1.2.2 > localhost.localdomain: ICMP echo request, id 1, seq 13900, length 40
20:46:53.748610 IP localhost.localdomain > 10.1.2.2: ICMP echo reply, id 1, seq 13900, length 40
服务器看到的源地址是10.1.2.2
MTU、MSS
如果出现部分应用无法访问的问题,如http页面打开太慢、FTP上传下载文件超时等,可尝试调低sslvpn网关接口的MTU/MSS。
[H3C-GigabitEthernet1/0]mtu 1300
[H3C-GigabitEthernet1/0]tcp mss 1200