在很多人的观念中,路由器是路由器,防火墙是防火墙。路由器和防火墙都是可以作出口网关使用的,路由器作网关安全性差,防火墙安全性强。其实对于路由器和防火墙来说,他们可以算是一家人;同样作为网关,防火墙拥有路由功能,为何路由器不能有安全功能呢?对于路由器和防火墙来说,它们都是全才,只不过各自精通的领域不一样。路由器精通路由辅以防护,防火墙精通防护辅以路由。就跟我们网络工程师的一样,不能只懂网络不懂系统,而是要精通网络辅以系统,这才是最佳的选择。下面就介绍一下如何把一个普通的路由器变成防火墙来运行吧。
懂点IOS安全的都知道,有一种传统的路由器防火墙叫做CBAC(context-based access control),也就是以ip inspect开头的那些命令,它提供了基于接口的流量保护。CBAC在流量过滤、流量检查、警告和审计蛛丝马迹、入侵检测等方面表现卓越。例如CBAC使用超时值和阈值确定会话的状态及其持续的时间.可清除不完全会话和闲置会话,用以对Dos进行检测和防护。但是CBAC的缺点就是会对所有穿过接口的流量进行相同的审查策略,无法精确控制防火墙策略,部署起来相对困难。
针对这种问题,一种新的IOS防火墙应运而生,那就是ZFW(Zone-base Firewall)。这种防火墙改变了老式CBAC基于接口的配置模式,而是以区域为单位进行配置。就拿大家熟悉的防火墙来说,我们都知道分内部和外部区域,还有一个DMZ区域;ZFW跟硬件防火墙同理,也是按照这么分的,只是你可以自己决定哪个接口需要加进什么区域,以及每个区域的功能。自由程度很高,使用起来也很方便。下面就用一个实验来验证一下(本实验需要用到7200安全IOS或者L3IOU模拟器)。
某公司有一台服务器,需要映射到外网让别人去访问。
其中具体需求如下:
1、只允许外网用户ping通服务器以及通过SSH登录服务器;
2、只允许内网用户ping通服务器以及通过telnet登录服务器;
3、内网用户可以自由访问外网;
4、服务器不能访问外网。
第一步:
首先保证服务器和PC能够ping通网关GW,然后在GW上做NAT,并保证内网PC可以ping通外网。这里网关的NAT地址池为100.1.1.2—100.1.1.5,另外服务器做静态映射,映射的公网IP为100.1.1.6。内网PC接口为F0/1,外网接口为S1/0。
GW:
access-list 1 permit any ip nat pool cisco 100.1.1.2 100.1.1.5 netmask 255.255.255.0 ip nat inside source list 1 pool cisco overload ip nat inside source static 172.16.1.2 100.1.1.6 ip route 0.0.0.0 0.0.0.0 Serial1/0 int f0/1 ip nat inside int s1/0 ip nat outside 服务器开启SSH和telnet登录 Server: ip domain name hujw.com crypto key generate rsa line vty 0 4 password cisco login transport input ssh telnet
第二步:
划分区域,并将相应接口加入区域。
这里我们划分三个区域,分别是private、internet和dmz。private对应内部主机,dmz对应服务器,internet对应外网。然后把相应接口加入这三个区域,其中服务器接口为F0/2。
GW:
zone security internet zone security dmz zone security private int f0/1 zone-member security private int f0/2 zone-member security dmz int s1/0 zone-member security internet
第三步:
#创建class-map,加入各区域需要用到的协议 #首先是从内网访问外网的class-map。在ZFW中,默认是拒绝所有流量的。因为内网PC可以自由,所以可以用ACL匹配所有流量予以放行。这里使用之前创建的access-list 1。 class-map type inspect match-any pri-to-int match access-group 1 #其次是创建内网PC访问DMZ的策略。根据要求,只能ping以及telnet服务器,所以应该匹配icmp和telnet协议。 class-map type inspect match-any pri-to-dmz match protocol icmp match protocol telnet #最后是外网访问DMZ服务器的策略。根据要求,只能ping以及ssh服务器,所以应该匹配icmp和ssh协议。 class-map type inspect match-any int-to-dmz match protocol ssh match protocol icmp
第四步:
创建policy-map,应用刚才所创建的策略。
ZFW策略包括三种:pass、drop、inspect。Drop是默认行为,inspect是对流量进行审查,返回流量通过查看路由器的session表来决定是否允许进入。PASS行为不会跟踪连接或者流量的session,但是只允许单方向通过。也就是说,如果要配置PASS的话,就要在两个方向同时配上PASS。
分别创建private-to-dmz、private-to-internet、internet-to-dmz这三个策略去调用相应的class-map。
policy-map type inspect private-to-dmz class type inspect pri-to-dmz inspect class class-default drop policy-map type inspect private-to-internet class type inspect pri-to-int inspect class class-default droppolicy-map type inspect internet-to-dmz class type inspect int-to-dmz inspect class class-default drop
第五步:
将策略关联在接口上。
ZFW用的可不是普通的物理接口,它有着自己专用的接口,那就是zone-pair。在这里,物理接口的地位不再重要,它才是路由器真正的守卫!这里需要填写zone的源和目的区域名称,并且将policy-map应用在zone-pair里。
zone-pair security private-internet source private destination internet service-policy type inspect private-to-internet zone-pair security internet-dmz source internet destination dmz service-policy type inspect internet-to-dmz zone-pair security private-dmz source private destination dmz service-policy type inspect private-to-dmz
第六步:
测试各个区域的功能。
测试内网PC对DMZ服务器的访问
发现服务器可以正常ping通和telnet访问。
测试外网PC对DMZ服务器的访问
发现可以ping和ssh登录服务器,但是不能telnet服务器。
内网PC可以任意访问外网。