这里演示了如何在AWS上搭建思科的SSLV P N,用来解决员工远程办公的需求。文章需要你有一定的AWS和SSLV P N基础。
个人博客地址:https://liuqianglong.com
文章视频地址:https://space.bilibili.com/408773931
1、实验简介
最近一直在研究思科防火墙的SSL***,用来解决员工远程办公的问题。传统上一般使用ASA55XX系列的硬件防火墙做SSL***,使用ASAv与使用硬件防火墙功能特性几乎没有区别。ASAv在vSphere和AWS环境都可以部署。这里主要介绍一下在AWS上使用ASAv配置SSL***的步骤。后续会继续深入去聊SSL***上的高级特性。
如果你有配置ASA SSL***的经验,需要注意的是AWS上的特殊场景,下面是整个实验的注意事项:
在中国区如果AWS账号未经过ICP备案则无法使用TCP 80/443端口,所以需要SSL***修改默认的443端口号。
AWS上ASAv为客户端分配的IP地址需要进过NAT转换后才能访问,因为服务器没有回包路由。
AWS上的Windows2016无法安装ASDM,建议使用Windows2019安装ASDM软件。
如果ASAv未购买License会限速100k并且最大会话100个,用于做实验足够了但是无法用于生产环境。
2、环境介绍
本次实验在VPC内需要使用2个子网,一个公共子网用于连接跳板机,用户可以先连接Windows2016之后,在Windows2016通过SSH和ASDM连接ASAv。这里不会详细介绍AWS相关基础知识,例如如何创建VPC、如何创建公有子网、私有子网。
这是实验将会用到的公有子网,默认路由指向了IGW。
3、配置跳板机环境
在公有子网启用一台window2016,用于之后通过SSH和ASDM访问ASAv,注意实例要选择windows 2016,经过测试windows 2019 无法安装ASDM。通过AWS的快速启动一台windows 2016,可以通过输入“windows 2016”过滤查找。注意,window 2019环境无法安装Cisco ASDM。
Window2016放置在公有子网,并且开启分配公有IP功能。
4、创建ASAv实例
在AWS Marketplace搜索asav,选择ami启用即可。需要注意的是,ASAv默认eth0是ciscoasa的管理接口,管理接口只能走网管流量,不能传输数据流量,所以至少需要再添加一个eth1作为outside接口。如果需要添加更多接口,例如inside和dmz接口,可以添加「网络接口」然后附加到实例。其实在AWS环境中一个outside接口就可以运行AnyConnect环境了。
实例创建成功之后,在AWS环境下需要对实例参数进行一下配置。在AWS接口上默认会丢弃目的IP不是本接口IP的流量,所以想要ASA转发流量,必须关闭outside接口的
源/目标检查
。
如果客户端想要访问私有云内的服务器,那么不能直接使用ASAv分配的地址池去访问,否则服务器没有回包路由。解决方法是在ASAv做源NAT,将客户端的源IP地址转换成outside上的一个辅助IP地址(无法转换成outside接口地址)。如果是vSphere环境可以转换为outside接口地址。
防火墙outside需要公网能直接访问,所以需要一个公网地址。
公网地址关联上防火墙的outside接口。
启动之后,eth0是管理接口,首次连接时只能连接管理接口,如果想要连接其他接口可以连接之后配置。
5、ASAv基础配置
首先通过SSH连接到ASAv的管理口进行一些基础配置,这里我使用
MobaXterm
作为SSH客户端,下载地址会放在最后。在AWS上启动的ASAv默认用户名是admin
,使用对应的密钥登录即可。
首先需要设置enable密码
ciscoasa> enable The enable password is not set. Please set it now. Enter Password: **** Repeat Password: **** Note: Save your configuration so that the password persists across reboots ("write memory" or "copy running-config startup-config").
添加的eth1接口默认是down状态
ciscoasa# show interface ip brief Interface IP-Address OK? Method Status Protocol Internal-Data0/0 169.254.1.1 YES unset up up Management0/0 172.30.2.176 YES DHCP up up TenGigabitEthernet0/0 172.30.1.7 YES CONFIG administratively down up
开启eth1,配置名称为outside
interface TenGigabitEthernet0/0 no shutdown nameif outside
想要通过ASDM连接ASAv,需要开启http服务器,并且允许http流量从管理口进入,
0 0
表示不限制IP地址段,如果想要只允许192.168.1.0/24网段的http连接可以这么配置http 192.168.1.0 255.255.255.0。配置http的认证方式是本地认证,配置一个本地15级权限的用户名密码。
http server enable http 0 0 management aaa authentication http console LOCAL username cisco password ciscoasa privilege 15
通过网页访问ASAv的管理接口地址
先下载并且安装Java环境,然后下载安装ASDM软件。
下载安装ASDM环境。
使用本地15级账号密码登录。
ASAv未导入License的情况下,限速100Kbps,最大会话100个连接。
这里通过ASDM的文件管理功能导入AnyConnect文件。
导入本地的AnyConnect客户端文件。
查看磁盘确认有客户端文件。
ciscoasa# dir Directory of disk0:/ 86 -rwx 41077110 08:00:10 Jan 12 2021 anyconnect-win-4.6.00362-webdeploy-k9.pkg
6、ASAv配置SSL***
下面几乎是在AWS上ASAv的最小化配置了,这里对AnyConnect高级功能不做讨论。下面命令的含义:当客户端访问其他任何地址时,源地址转换为172.30.1.5。
object network asa_outside_address host 172.30.1.5 object network anyconnect_pool_object subnet 192.168.1.0 255.255.255.0 nat (outside,outside) source dynamic anyconnect_pool_object pat-pool asa_outside_address
默认情况下ASAv相同安全级别不能访问,流量不能从相同接口进出,这里需要开启这2个特性。
same-security-traffic permit inter-interface same-security-traffic permit intra-interface
创建客户端的地址池
ip local pool anyconnect_client_pool 192.168.1.1-192.168.1.254 mask 255.255.255.255
定义隧道分隔地址段,只有当用户访问172.30.1.0/24时,流量才会通过SSL隧道到达ASAv,去往其他网段的流量客户端依然从本地网络出去。
access-list anyconnect_split standard permit 172.30.1.0 255.255.255.0
开启web***功能,修改端口为8443(AWS中国区未经过ICP备案无法使用TCP80/443),激活anyconnect拨号功能。
web*** port 8443 enable outside anyconnect enable anyconnect image disk0:/anyconnect-win-4.6.00362-webdeploy-k9.pkg
配置group-policy,允许通过网页和客户端拨入,定义流量为隧道分隔模式。
group-policy anyconnect internal group-policy anyconnect attributes ***-tunnel-protocol ssl-client ssl-clientless split-tunnel-policy tunnelspecified split-tunnel-network-list value anyconnect_split address-pools value anyconnect_client_pool
创建一个本地账号,用于拨号测试。
username anyuser password ciscoasa username anyuser attributes ***-group-policy anyconnect
目前防火墙的默认路由是通过管理接口DHCP获取到的,需要将默认路由修改为outside出去。修改步骤如下:
开启outside ssh管理
将管理接口配置为静态IP,获取的默认路由会自动消失
重新通过outside接口连接ciscoasa
指定默认路由出口为outside
查看现有默认路由通过mgmt接口出去
ciscoasa# show route S* 0.0.0.0 0.0.0.0 [1/0] via 172.30.2.1, management C 172.30.1.0 255.255.255.0 is directly connected, outside L 172.30.1.7 255.255.255.255 is directly connected, outside C 172.30.2.0 255.255.255.0 is directly connected, management L 172.30.2.176 255.255.255.255 is directly connected, management
允许ssh连接outside接口
ssh 0 0 outside
将管理接口配置为静态地址,获取的默认路由会自动消失。
interface management 0/0 ip address 172.30.2.176 255.255.255.0
重新通过SSH连接上outside接口之后,添加默认路由从outside接口出去。
route outside 0 0 172.30.1.1
默认情况下AnyConnect不允许通过远程桌面拨号,需要创建一个AnyConnect Client Profile文件,编辑里面的参数。
允许通过远程桌面拨号。
如果未修改这个参数,通过远程桌面拨号后会有如下报错。
7、测试AnyConnect拨号
拨号成功后,通过SSL通道能访问到Windows2016的内网地址即可证明访问成功。Windows2016需要关闭防火墙才能ping通。
安全组也需要放行ICMP协议。
在公网上拨号成功。
去往172.30.1.0/24网段的流量会通过加密隧道访问。
测试访问内网Windows2016
C:\Users\Administrator>ping 172.30.1.131 正在 Ping 172.30.1.131 具有 32 字节的数据: 来自 172.30.1.131 的回复: 字节=32 时间=1ms TTL=128 来自 172.30.1.131 的回复: 字节=32 时间=1ms TTL=128 来自 172.30.1.131 的回复: 字节=32 时间=1ms TTL=128 来自 172.30.1.131 的回复: 字节=32 时间=1ms TTL=128
这里协议默认是TLS,也就是TCP建立的连接,如果网络环境不太稳定,需要走语音和视频流量,建议使用DTLS通道,也就是UDP连接。
修改DTLS端口为8443
web*** dtls port 8443
在group-policy下开启DTLS
group-policy anyconnect attributes web*** anyconnect ssl dtls enable
重新拨号查看协议。
ASAv上查看客户端信息
ciscoasa(config)# show ***-sessiondb anyconnect Session Type: AnyConnect Username : anyuser Index : 3 Assigned IP : 192.168.1.1 Public IP : 52.83.196.213 Protocol : AnyConnect-Parent SSL-Tunnel License : AnyConnect Premium Encryption : AnyConnect-Parent: (1)none SSL-Tunnel: (1)AES-GCM-256 Hashing : AnyConnect-Parent: (1)none SSL-Tunnel: (1)SHA384 Bytes Tx : 18613 Bytes Rx : 7928 Group Policy : anyconnect Tunnel Group : DefaultWEB***Group Login Time : 09:46:43 UTC Tue Jan 12 2021 Duration : 0h:01m:51s Inactivity : 0h:00m:00s VLAN Mapping : N/A VLAN : none Audt Sess ID : ac1e02b0000030005ffd7003 Security Grp : none
1、mobaxterm下载地址
2、Java环境下载地址