一.文章概述
本文主要就CISCO ASA 防火墙的高可用和扩张性进行阐述和部署。再cisco 防火墙系列中主要有3种技术来实现高可用和扩张性。分别是Failover ,multiple security context 和cluster 。
第一个Failover应该是大家最为熟悉的一项技术也是最常用的,它就是Cisco ASA的 HA 技术,有Active/Standby 和 Active/Active 2种模式。这个技术Cisco ASA 绝大部分系列都支持,而且license 也都是base license 即不需要额外去采购许可,实现这一HA技术的门槛也是最低的。AS模式下一台工作另一台备份随时等待接管,AA模式下2台都工作都进行数据转发。
第二个即 multiple security context ,就是翻译过来就是多安全上下文环境,和飞塔 checkpoint 的 domain是一个概念,就是根据需要将一台物理防火墙虚拟成若干台虚拟墙,墙之间相互独立,但他们公用物理墙的硬件配置资源。在某些时候用户业务的多样性和复杂性,一台或者两台物理墙很难满足需求,新采购又会代理额外的成本,这时候使用multiple security context就会带来不错的性价比收益,这一技术license要求也不是很高,ASA的硬件设备也大都支持,不过ASAv 虚拟平台不支持。这个技术通常和上面的Failover一起组合使用才会相辅相成相得益彰,failover保证物理层面的HA,multiple security context 又满足了物理设备的扩展性,堪称完美组合。
第三个就是cluster,就是我们所说的集群,这个技术是把2台以上的设备组成一个集群提供高可用,跟我们的服务器集群差不多是一个概念,这个技术相对接触的比较少,应用场景也不是很多,只有在SLA非常非常非常高的场景下才会投入不菲的成本去组建物理层面集群。正常大多数情况下Failover+multiple context 就已经可以保障业务的良性运转了。
所以这里只说failover和multiple context 2种技术的结合使用。
二.部署实验
因为ASAv虚拟平台不支持多上下文模式部署,所以在EVE-NG种选用ASA8.42的物理机版本,platform是 ASA5512。
本文目的为说明2种技术从零配置开机的部署过程。
部署拓扑图如下:
本文主要相关的为拓扑中的2台ASA和其上/下联交换机。
1.部署前选取的2台ASA所以配置必须一致,包括cpu/内存/版本/接口数等一系列配置,最好就是2台完全一样的设备,避免一些兼容问题。
2.空配置开机进行配置,这里我们要考虑一下配置哪一个在先,按照技术来讲都可以,2种技术的配置都没有多复杂,最终都可以实现。但是从经验来说,建议先配置Failover再开启多上下文环境,因为在先配置了failover后再去配置多上下文环境的时候,防火墙模式发生变化会重启,这时候2台墙就不会再重新组成failover的状态,需要重新手动刷新下failover的进程才行(no failover &failover)这个也没什么复杂的,单后面的多上下文环境配置只需要配置再主墙,备份墙会自动同步,个人经验只谈,全凭个人喜好。
3.在2台ASA开启multiple context
在经过2次的回车确认后设备将会重启,
上面提示内容中有很重要的信息显示,即原来设备种的旧运行配置文件被保存在本机的flash,还有默认生产的 admin context 配置文件也保存在flash中,最后新的运行配置文件也是保存在了flash中。
启动完成后和之前是没什么区别的,
通过相应命令可以查看,
在刚开启context的时候我们能用的就是 context admin ,然后system 和null 这2个都是系统自带而且不能修改,所以我们暂时先忽略它们。
4.配置Failover(AS模式)
ASA1配置:
failover lan unit primary
//设置当前设备为主墙
failover lan interface folink Ethernet5
//指定接口5为lan failover 链路接口 命名为folink这个名字可以随意,好识别就行
failover interface ip folink 169.254.1.1 255.255.255.252 standby 169.254.1.2
//配置folink的本地和对端IP地址,这个一般使用不可通信的地址,我们使用Windows保留的地址
failover link stlink Ethernet6
//可选,单独指定状态链路接口为6口,命名stlink名字同样随意,这个我们也可以不用单独指定,默认适合failover 接口共享
failover interface ip stlink 169.254.2.1 255.255.255.252 standby 169.254.2.2
//对于指定了单独指定了状态链路的接口配置IP,取决于上面是否指定,不指定的话就不需要配置这个。
failover key xxx
//配置双方通信的密钥
failover
//开启failover功能。
PS:记的开启配置了failover接口,默认情况下接口时关闭的。
ASA2配置:
配置除了
failover lan unit primary 这一条不同外,其他配置完全一致。
在配置完failover后我们检查2台设备的failover状态
ASA1:
ASA2
可以看出ASA1当前为active,对端为standby ,配置同步已经完成。ASA2当前状态为Standby,配置也已经同步完成,这就说明failover建立成功。
这里可以看到当failover建立以后ASA2会自动同步ASA1的所以配置,所以此时ASA2内部的hostname也显示ASA1,为了便于识别我们可以在ASA2中修改hostname。但是在备机中修改的配置不会同步到ASA1,而主机中后续的配置还是会同步给备机,说明这种同步应该时增量更新同步,而非全同步。
failover 的配置就结束了,对于failover参数的调优不在这里进行说明,官方文档有详细解释,后续会对failover官方指导文档进行翻译笔记。下面进行多上下文环境的具体配置。
5.multiple context 具体配置
这里模拟的场景为,将物理墙虚拟出2个墙,一个用户正常用户访问我们命名为USERS,另一个用于DMZ管理。
ASA1配置:
在开启了multiple context后接下来要做的时定义物理管理资源分配class,这就就是对物理管理资源使用的一个分配限制,不同的context(虚拟墙)根据业务需要将其管理资源使用限制在一个class中。这里同样不进行自定义我们先使用default class ,在开启multiple context后system configuration 中会自动生成,详细定义后续会对官方文档做翻译笔记。
限制的资源类型有以下类型,
默认的default class 配置为:
接下来就进入正题了,开机配置security context,也就是新建虚拟墙了。
对于security context ,admin context 时必须要有的,这个admin context 和其他一般context没有什么区别也同样可以作为一个虚拟墙来使用,在开启多上下文环境的时候,系统就自动生产了,在我们不对其修改的前提下我们是不需要进行调整或者新建的。但是这个admin context 拥有除system之外的最高权限。
在定义一个虚拟墙的过程中有一下几个步骤:
1/命名
2/分配这个虚拟墙需要使用的物理接口,可以和其他虚拟墙共享物理接口。
3/指定该虚拟墙的配置文件存放路径,可以指定本地也可以网络存储
4/可选,自定义分配class,默认会选择default class
5/可选,分配虚拟IPS传感器
6/可选,如果failover是AA模式,则需要将该context 加入到failover group中
7/可选,选择是否需要开启cisco cloud web 安全功能。
具体配置:
创建context 名称为USERS
对USERS的虚拟墙分配物理接口:
指定该虚拟墙配置文件存放位置:
到这里USERS 虚拟墙就配置完成了。
但对于这个墙中映射的接口只有在配置nameif 的时候,接口mac地址才会离开生成,下面的命令可以让映射的接口自动生成mac地址:
当前我们配置完毕以后所处在界面还是物理墙界面,想要切换到我们新建了的USERS 虚拟墙,可以使用如下命令:
这样就进入到了我们新建的虚拟墙USERS中了,可以看到当前位置为ASA1/USERS,到这里以后我们就可以USERS这个虚拟墙看作是一个普通的墙来操作。
同样对ASA1的context USERS新建操作也会通过failover同步到ASA2中,
虚拟墙USERS到这里就建立完毕了,可以开始表演了。
接下来我们再用同样的方式新建另一个墙DMZ,
再切回到system模式中,
新建DMZ虚拟墙
DMZ墙也建立完成了。
查看当前物理墙建立虚拟墙的基本分配情况:
挡墙物理墙有3个虚拟墙,admin我们没有分配接口,所以可用的虚拟墙有2个class都为default ,分配的物理接口情况也可以看出来。
虚拟墙DMZ中的初始running-config配置,这里可以看出唯一的区别就是接口名称是我们在新建的时候和实际的物理接口映射的名称。
我们怎么知道挡墙虚拟机中映射的接口对应的是那个实际的物理接口呢,可以通过查看接口得知,
PS:在新建完虚拟墙或者新建前要把映射的物理接口开启了,否则在即使在虚拟墙对应的接口下no shutdown ,也是不会生效的。
到这里我们在failover模式下2个虚拟墙的建立就全部完成了。
三.配置验证
1.对USERS虚拟墙进行配置演示
配置
ASA1/USERS(config)# show running-config
: Saved
:
ASA Version 8.4(2)
!
hostname USERS
enable password 8Ry2YjIyt7RRXU24 encrypted
passwd 2KFQnbNIdI.2KYOU encrypted
names
!
interface int1
nameif outside1
security-level 0
ip address 100.100.100.1 255.255.255.252
!
interface int2
nameif outside2
security-level 0
ip address 200.200.200.1 255.255.255.252
!
interface int3
nameif inside1
security-level 100
ip address 10.10.10.1 255.255.255.0
!
interface int4
nameif inside2
security-level 100
ip address 10.10.20.1 255.255.255.0
!
interface mgmt0
nameif Mgmt
security-level 100
ip address 192.168.70.200 255.255.255.0
!
object network USERS
subnet 10.0.0.0 255.0.0.0
access-list inside1_in extended permit icmp any any
access-list inside1_in extended permit ip object USERS any
access-list outside1_in extended permit icmp any any
pager lines 24
mtu outside1 1500
mtu outside2 1500
mtu inside1 1500
mtu inside2 1500
mtu Mgmt 1500
icmp unreachable rate-limit 1 burst-size 1
no asdm history enable
arp timeout 14400
nat (inside1,outside1) source dynamic USERS interface
route outside1 0.0.0.0 0.0.0.0 100.100.100.2 1
route outside2 0.0.0.0 0.0.0.0 200.200.200.2 10
route inside1 10.0.0.0 255.0.0.0 10.10.10.2 1
route inside2 10.0.0.0 255.0.0.0 10.10.20.2 10
timeout xlate 3:00:00
timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 icmp 0:00:02
timeout sunrpc 0:10:00 h323 0:05:00 h225 1:00:00 mgcp 0:05:00 mgcp-pat 0:05:00
timeout sip 0:30:00 sip_media 0:02:00 sip-invite 0:03:00 sip-disconnect 0:02:00
timeout sip-provisional-media 0:02:00 uauth 0:05:00 absolute
timeout tcp-proxy-reassembly 0:01:00
timeout floating-conn 0:00:00
user-identity default-domain LOCAL
http server enable
http 192.168.70.0 255.255.255.0 Mgmt
no snmp-server location
no snmp-server contact
telnet timeout 5
ssh timeout 5
no threat-detection statistics tcp-intercept
!
class-map inspection_default
match default-inspection-traffic
!
!
policy-map type inspect dns migrated_dns_map_1
parameters
message-length maximum client auto
message-length maximum 512
policy-map global_policy
class inspection_default
inspect dns migrated_dns_map_1
inspect ftp
inspect h323 h225
inspect h323 ras
inspect ip-options
inspect netbios
inspect rsh
inspect rtsp
inspect skinny
inspect esmtp
inspect sqlnet
inspect sunrpc
inspect tftp
inspect sip
inspect xdmcp
!
service-policy global_policy global
Cryptochecksum:49e80afb8d52b8a3602b055e84a72730
: end
ASA1/USERS(config)#
上述配置补充说明,本来计划根据拓扑的结构对于USERS虚拟墙要实现双出口切换,下联口自动切换的模拟演练,但在操作过程中无奈发现这个8.4版本具体没有track和sla指令(官网文档却有...),所以就只是把基础配置先放在这里,同样也可以看出来,除了接口名称外,其他和实际的物理墙配置没有区别。