多厂商防火墙系列之五:ASA Security Context【虚拟防火墙】 | 网络之路博客(公众号同名)(其他平台网络之路Blog)
登录
  • 欢迎网络之路博客网站,分享有用的知识点,公众号:网络之路博客,B站:网络之路Blog
  • 如果您觉得本站对您有帮助,那么赶紧使用Ctrl+D 收藏吧,支持我们下
  • 远程技术支持的淘宝店铺已经开张了哦,传送门:需要的朋友可以点击查看

多厂商防火墙系列之五:ASA Security Context【虚拟防火墙】

【汇总】多厂商防火墙系列

文档帖子汇总学习视频Book与实验手册学习必备软件
    博主也只是业余时间写写技术文档,请大家见谅,大家觉得不错的话,可以推荐给朋友哦,博主会努力推出更好的系列文档的。如果大家有任何疑问或者文中有错误跟疏忽的地方,欢迎大家留言指出,博主看到后会第一时间修改,谢谢大家的支持,更多技术文章尽在网络之路博客,http://ccieh3c.com

简介

security Context技术就是把一个防火墙虚拟出多个防火墙,每个虚拟的防火墙有独立的配置、接口、而且互不影响,这对于ISP IDC机房或者一些大学、企业部分做不同的策略控制比较有用。
system config:其实就是物理防火墙本身,在这个模式下的防火墙只能划分不同的Context,对于这些Context做相对应的配置,它并不做实际的流量转发
admin config :它是当转换成multiple后自动会有的一个Context,它用于在system和其他虚拟Context之间进行切换管理,也可以作于流量转发使用。

对于虚拟防火墙的一些问题:对于多个虚拟防火墙其实都是通过物理防火墙转变的,它们可能使用同一接口(共享接口),如果某一个虚拟防火墙中的主机发送出去,返回的流量system到低交给哪个防火墙这是个问题,所以在这种情况下 有几种区分的办法。可以根据 源目IP | VLAN | MAC | 我们可以是不同IP 的相同VLAN,或者不同VLAN的相同IP 。 当然也可以通过MAC地址来区分。

在ASA上通过show mode:来查看当前处于什么模式 默认情况下处于single模式,也就是单一模式,通过一条命令mode multile来改变成多模式,这个过程是需要重启的。

这个是我以前上PIX的课程保留的拓扑。它是一个逻辑的拓扑,就是把一个firewall虚拟成多个以后的拓扑,这就是我说之前说这个是防firewall学习的难点之一,因为对于这个你思维要很清晰,知道怎么就构建这个拓扑,和区分。

 image001.png

这个呢,是实际的拓扑,先解释下这个拓扑怎么去理解,明白了这个其余的都很easy了。

 image002.jpg

在实际中,可能firewall的接口并没有GNS3提供的多,所以我也只有了两个接口来做出效果,先看逻辑的拓扑,可以发现总共虚拟了三个防火墙,一个为admin | Vir | FW , 在firewall中,它们都共享一个接口,而我们又需要多个接口来加入不同的Context中,那么就是子接口了,做过单臂路由的朋友可能知道,每一个子接口都需要对应一个VLAN,在firewall中也一样,在划分子接口后,就必须规定它属于哪个VLAN。 如果明白了这一点,那么可以看实际拓扑中,我用E0接口和交换机的f1/0连接,在交换机中把f1/0 起trunk和firewall的e0接口协商trunk,然后把交换机其余的接口划分进不同的VLAN,这个看逻辑拓扑的划分,比如Cisco-Inside属于VLAN4 ,它的流量出来会打上vlan4的tag,经过交换机后交给属于Context中VLAN4的接口,然后根据Context的策略来做转发。 而e1的接口属于VLAN3的共享接口,其实也就是outside接口,但是这个接口在FW中有点例外,因为我们在firewall中通常把连接internet的接口为outside,连接内部的为Inside,所以这个接口在FW的Context充当Inside接口。 如果这段话不是很理解的话,可以在后面的实验中理解。

首先做准备工作

把Cisco-SW的VLAN划分好,这里有VLAN 2 3 4 5 6,可以根据逻辑拓扑来对着看
Cisco-SW(config-vlan)#vlan 2
Cisco-SW(config-vlan)#name Cisco-Internet
Cisco-SW(config-vlan)#vlan 3
Cisco-SW(config-vlan)#name Outside
Cisco-SW(config-vlan)#vlan 4
Cisco-SW(config-vlan)#name admin.dmz
Cisco-SW(config-vlan)#vlan 5
Cisco-SW(config-vlan)#name admin.inside
Cisco-SW(config-vlan)#vlan 6
Cisco-SW(config-vlan)#name Cisco-Vir.Inside

把不同的接口划分进不同的VLAN。可以根据实际拓扑查看

interface FastEthernet1/0 这个是与firewall的E0接口起trunk
switchport mode trunk
!
interface FastEthernet1/1
switchport access vlan 3
!
interface FastEthernet1/2
switchport access vlan 2
!
interface FastEthernet1/3
switchport access vlan 4
!
interface FastEthernet1/4
switchport access vlan 5
!
interface FastEthernet1/5
switchport access vlan 3
!
interface FastEthernet1/6
switchport access vlan 6

 image003.png

关于Cisco-SW的操作就完了,剩下的把各个路由器配置下,最后配置firewall。

admin.DMZ
Cisco-DMZ(config)#int f0/0
Cisco-DMZ(config-if)#ip add 192.168.4.1 255.255.255.0
Cisco-DMZ(config-if)#no shut
Cisco-DMZ(config)#ip route 0.0.0.0 0.0.0.0 192.168.4.254
Cisco-DMZ(config)#line vty 0 4
Cisco-DMZ(config-line)#password cisco
这个路由是指向等下要做的conetext的接口路由。打开telnet服务,作为测试

OUTR3
OUTR3(config)#int f0/0
OUTR3(config-if)#ip add 218.18.100.254 255.255.255.0
OUTR3(config-if)#no shut
OUTR3(config)#line vty 0 4
OUTR3(config-line)#password cisco

internet
Cisco-Internet(config)#int f0/0
Cisco-Internet(config-if)#ip add 202.100.2.1 255.255.255.0
Cisco-Internet(config-if)#no shut
Cisco-Internet(config-if)#ip route 0.0.0.0 0.0.0.0 202.100.2.254
Cisco-Internet(config)#line vty 0 4
Cisco-Internet(config-line)#password cisco

admin.inside
Cisco-Inside(config-if)#int f0/0
Cisco-Inside(config-if)#ip add 192.168.5.1 255.255.255.0
Cisco-Inside(config-if)#no shut
Cisco-Inside(config-if)#ip route 0.0.0.0 0.0.0.0 192.168.5.254

vir.inside

Cisco-Vir.Inside(config-if)#int f0/0
Cisco-Vir.Inside(config-if)#ip add 192.168.6.1 255.255.255.0
Cisco-Vir.Inside(config-if)#no shut
Cisco-Vir.Inside(config-if)#ip route 0.0.0.0 0.0.0.0 192.168.6.254

基本配置都完毕了,主要是firewall的配置了。
我这已经把mode改为multiple了,如果刚启动肯定是signle,可以通过mode multiple然后重启改变。

 image004.jpg

默认情况下自动生成了一个admin的conetext。 如果没有的情况下,必须通过 admin-context admin 来创建,名字是自定义的

 image005.jpg

在转换mode的时候,它会自动备份当前的配置保存在flash中,当再次转换为signle的时候,可以通过这个配置来恢复。

 image006.jpg

第一部 划分接口,把e0和e1物理接口先开启,然后划分子接口到不同的VLAN中,其实就是对应之前在交换机上的VLAN 。因为我用的是是VM版本的,所以是g比特接口,对应之前的e0和e1。 不知道为什么GNS3只运行划入两个接口到Context中,以前做实验的时候都运行多个的,可能我版本没用对。
interface GigabitEthernet0
no shut
!
interface GigabitEthernet1
no shut

interface GigabitEthernet0.2
vlan 2
!
interface GigabitEthernet0.4
vlan 4
!
interface GigabitEthernet0.5
vlan 5
!
interface GigabitEthernet0.6
vlan 6

开始创建context。之前必须有管理context,因为系统默认创建了 所以开始定义。
ASA(config)# context admin
ASA(config-ctx)# allocate-interface g1
ASA(config-ctx)# allocate-interface g0.4-g0.5
ASA(config-ctx)# config-url flash:/admin.cfg

定义adminContext,把g1共享接口和对应拓扑的g0.4(admin.dmz) g0.5(admin.inside) 划入这个Context,并定义一个Context保存配置的名字。

创建Vir的Context
ASA(config)# context Vir
Creating context ‘Vir’… Done. (2)
ASA(config-ctx)# allocate-interface g0.6 对应VLAN Cisco-Vir.Inside
ASA(config-ctx)# allocate-interface g1
ASA(config-ctx)# config-url flash:/Vir.cfg
INFO: Converting flash:/Vir.cfg to disk0:/Vir.cfg
这里因为flash中没有,所以会自动创建一个配置文件,用于保存Vir context的配置

创建FW的Context
ASA(config)# context FW
Creating context ‘FW’… Done. (3)
ASA(config-ctx)# allocate-interface g0.2 对应VLAN internet
ASA(config-ctx)# allocate-interface g1
SA(config-ctx)# config-url flash:/FW.cfg
INFO: Converting flash:/FW.cfg to disk0:/FW.cfg

 image007.jpg

这样Context都创建好了,对应的接口也划分好了,开始对每个Context进行配置了。

admin
ASA(config)# changeto context admin 进入admin的Context,在这个里面只会看到关于属于这个Context的接口信息。

 image008.jpg

配置G1接口为outside接口,与VLAN3的属于同一网段,接口都是no shutdown的,只是我习惯性的敲上了、

ASA/admin(config)# int g1
ASA/admin(config-if)# namei
ASA/admin(config-if)# nameif outside
INFO: Security level for “outside” set to 0 by default.
ASA/admin(config-if)# ip add 218.18.100.1 255.255.255.0
ASA/admin(config-if)# no shut

配置g0.4 DMZ,默认安全级别为0,所以改为50
ASA/admin(config-if)# int g0.4
ASA/admin(config-if)# nameif DMZ
INFO: Security level for “DMZ” set to 0 by default.
ASA/admin(config-if)# security-level 50
ASA/admin(config-if)# ip add 192.168.4.254 255.255.255.0
ASA/admin(config-if)# no shut

g0.5为Inside,这个名字是系统默认的 所以自动识别为100
ASA/admin(config-if)# int g0.5
ASA/admin(config-if)# nameif inside
INFO: Security level for “inside” set to 100 by default.
ASA/admin(config-if)# ip add 192.168.5.254 255.255.255.0
ASA/admin(config-if)# no shut

 image009.jpg

测试与内部的通信情况,都正常。

Vir

 image010.jpg

ASA/admin(config-if)# changeto context Vir
ASA/Vir(config)# int g1
ASA/Vir(config-if)# nameif otuside
INFO: Security level for “otuside” set to 0 by default.
ASA/Vir(config-if)# ip add 218.18.100.2 255.255.255.0
ASA/Vir(config-if)# int g0.6
ASA/Vir(config-if)# nameif inside
INFO: Security level for “inside” set to 100 by default.
ASA/Vir(config-if)# ip address 192.168.6.254 255.255.255.0

 image011.jpg

通信正常,这次没有no shutdown了,证明了接口都是开启的。

FW
ASA/Vir(config)# changeto context FW

 image012.jpg

ASA/FW(config)# int g1
ASA/FW(config-if)# nameif inside
INFO: Security level for “inside” set to 100 by default.
ASA/FW(config-if)# ip add 218.18.100.3 255.255.255.0
ASA/FW(config-if)# int g0.2
ASA/FW(config-if)# nameif outside
INFO: Security level for “outside” set to 0 by default.
ASA/FW(config-if)# ip add 202.100.2.254 255.255.255.0
这里有点特别的是,g1的共享接口作为Inside,因为g0.2是连接internet的,所以作为outside接口存在。

 image013.jpg

这样整个Context的基本配置和划分就全部完成了,如果想保存配置的话,可以在每个Context中输入write来保存,也可以切换到system下 changeto system。 输入write memory all 全部保存。 其实把思路整理清晰了,配置起来挺简单的,主要是划分VLAN跟接口比较难点。

开始针对每个Context做些简单的实验,中间还涉及到一个共享接口的问题,主要是明白为什么会存在这个问题。

实验目的就是 admin里面的DMZ对外提供telnet服务,保证internet上的能够正常访问,其余的inside能够正常访问internet。

Admin
ASA/admin(config)# nat (inside,outside) 1 192.168.5.0 255.255.255.0
global (outside) 1 interface

 image014.jpg

转换正常。
static (dmz,outside) tcp interface 23 192.168.4.1 23
access-list 100 permit tcp any host 218.18.100.1 eq 23
access-group 100 in interface outside

 image015.jpg

AdminContext上做了nat的转换后,有转换槽位,所以转换很正常,那么看看Vir里面不做nat测试会出现一些问题。

 image016.png

发现竟然telnet 不成功。

 image017.png

抓包发现,192.168.6.1只有syn的数据包,没有收到任何的syn+ack和ACK的信息。而218.18.100.254 是回复了SYN+ACK的,并且还有tcp的keep-alive消息,最后的结果就是192.168.6.1并没有收到关于这些信息。

这就是共享接口下存在的问题:首先两端都有去往对方的路由,不存在任何的路由问题, 首先Cisco-Vir.Inside发送一个数据包IP :s 192.168.6.1 D:218.18.100.254 的telnet的包,防火墙收到以后发现是直连 所以直接发往OUTR3 ,这时候当OUTR3返回数据包的时候,它会以 s:218.18.100.254 d:192.168.6.1为源目返回,这时候system收到以后,它不知道该交给哪个Context,因为由于是共享接口,所以接口的MAC地址都是一样的,所以system不知道怎么转发了。

解决办法: 1、glbal ( outside ) 100 192.168.6.1 这样能让system知道Vir的接口对应192.168.6.1这个地址,回包就正确了。
2、static (inside,outside)
3、mac-address auto :就是自动修改MAC,系统自动完成。

 image018.jpg

这下成功了,最简单适用的办法就是mac-address auto,它会自动修改相同MAC为不同的MAC地址。

 image019.jpg

测试internet也成功了。

最后一个问题就是管理问题了,通常IDC会给用户提供SSH或者telnet的来管理自己的防火墙。

ASA/FW(config)# telnet 0 0 inside
ASA/admin(config)# telnet 0 0 inside

开启telnet服务,这里就用dmin和FW测试。

 image020.jpg
 image021.jpg

之前提过Admin这个是管理Context,它能切换各个Context进行配置。

OUTR3#telnet 218.18.100.3
Trying 218.18.100.3 … Open

User Access Verification
Password:
Type help or ‘?’ for a list of available commands.
ASA/FW>
 image022.jpg

下载地址

百度盘地址
如果下载地址失效,请联系博主或者在下面留言,谢谢。

关于博客资源下载说明

首先,感谢大家对网络之路博客的支持,本站所有资源都是开放下载,不做任何限制,资源都是上传在百度盘,分为两种类型:
(1)第一种是书籍PDF与视频类,全部放在博客分享,觉得对大家学习有帮助的博主会收集好、然后以博主的经验整理分类后排序好分享出来。
(2)第二种是技术性文章与视频,全部放在公众号(网络之路博客)/B站(网络之路Blog)发布,以博主原创为主,主要分享系列为主,由浅入深的带大家了解工作中常用到的一些网络技术,当然也会分享一些比较经典的案例。
(3)分享资源有涉及到您的利益以及版权问题,请联系博主,24小时候内删除。
想第一时间收到最新更新内容吗,点击获取~~~

点击查看详情

(广告)博主自主原创最新实战课程

点击查看详情


(广告)远程技术支持(设备调试),有搞不定的找我,价格实惠,为您解决实际工作上的问题

远程技术调试与技术支持,点击查看详情


原创与收集的内容,允许转载,转载时请务必以超链接形式标明文章原始出处,博客地址http://ccieh3c.com。

喜欢 (2)
[]
分享 (0)
公众号:网络之路博客(其他平台网络之路Blog)
分享一些自己懂的技术知识点,希望对大家有帮助。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址