CCNA实验二十五 实战多种ACL访问控制
环境:Windows XP 、Pracket Tracert 5.3 、 GNS3.0.7.2
目的:了解ACL作用并熟练在不同环境中配置ACL
说明:
ACL是路由器和交换机接口的指令列表,用来控制端口进出的数据包并且可以保护网络,ACL适用于所有的被路由协议,如IP、IPX、AppleTalk等。ACL种类:标准ACL、扩展ACL、命名式ACL、基于时间ACL、自反ACL、动态ACL。
标准的ACL使用 1 ~ 99 以及1300~1999之间的数字作为表号,扩展的ACL使用 100 ~ 199以及2000~2699之间的数字作为表号。 标准ACL可以阻止来自某一网络的所有通信流量,或者允许来自某一特定网络的所有通信流量,或者拒绝某一协议簇(比如IP)的所有通信流量。 扩展ACL比标准ACL提供了更广泛的控制范围可以在路由器端口处决定哪种类型的通信流量被转发或被阻塞。
命名式ACL可以用来删除某一条特定的控制条目,这样可以让我们在使用过程中方便地进行修改。在使用命名访问控制列表时,要求路由器的IOS在11.2以上的版本,并且不能以同一名字命名多个ACL,不同类型的ACL也不能使用相同的名字。
基于时间ACL就是在原来的标准访问列表和扩展访问列表中加入有效的时间范围来更合理有效地控制网络。首先定义一个时间范围,然后在原来的各种访问列表的基础上应用它。基于时间的ACL最多应用在定时断网,例如学校。
动态ACL是Cisco IOS 的一种安全特性,它使用户能在防火墙中临时打开一个缺口,而不会破坏其它已配置了的安全限制。是能够自动创建动态访问表项的访问列表,动态访问表项是传统访问表项的一部分。它可以根据用户认证过程来创建特定的、临时的访问表项,一旦某个表项超时,就会自动从路由器中删除。在用户被认证之后,路由器会自动关闭telnet会话,并将一个动态访问表项置于某个访问表中,以允许源地址为认证用户工作站地址的报文通过。
自反ACL 允许从内部网络发起的会话的 IP 流量,同时拒绝外部网络发起的 IP 流量. 路由器检查出站流量,当发现新的连接时,便会在临时 ACL 中添加条目以允许应答流量进入。自反ACL永远是 permit 的;自反 ACL允许高层 Session 信息的IP 包过滤利用自反 ACL 可以只允许出去的流量,但是阻止从外部网络产生的向内部网络的流量,从而可以更好地保护内部网络;自反 ACL 是在有流量产生时(如出方向的流量)临时自动产生的,并且当 Session结束条目就删除;自反 ACL不是直接被应用到某个接口下的,而是嵌套在一个扩展命名访问列表下的。
ACL原则:
(1) ACL的列表号指出了是那种协议的ACL。
(2) 一个ACL的配置是每协议、每接口、每方向的。
(3) ACL的语句顺序决定了对数据包的控制顺序。
(4) 最有限制性的语句应该放在ACL语句的首行。
(5) 新的表项只能被添加到ACL的末尾,这意味着不可能改变已有访问控制列表的功能。如果 必须改变,只有先删除已存在的ACL,然后创建一个新ACL。
(6) ACL语句不能被逐条的删除,只能一次性删除整个ACL
(7) 标准的ACL应放在接近目标的位置,扩展的ACL应放在靠近源的位置。
(8) 应用在进方向的ACL:先处理再路由。应用在出方向的ACL先路由再处理.
(9) 注意通配符掩码。
实验A、(标准ACL与扩展ACL的应用)Packet Tracert搭建拓扑如下:
配置R1:
Router>en
Router#conf t
Router(config)#host R1
R1(config)#int fa0/1
R1(config-if)#ip add 192.168.1.254 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#int fa0/0
R1(config-if)#ip add 192.168.0.254 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#int e1/0
R1(config-if)#ip add 192.168.3.254 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#access-list 1 deny 192.168.0.0 0.0.0.255 //配置一条标准的ACL 1拒绝网络 192.168.0.0上的所有主机
R1(config)#access-list 1 permit any //配置标准ACL 1除拒绝的网段外其他都允许
R1(config)#access-list 2 permit host 192.168.0.1 //配置标准ACL 2只允许主机192.168.0.1
R1(config)#access-list 100 permit tcp 192.168.1.0 0.0.0.255 host 192.168.3.80 eq www //配置扩展的ACL 100 只允许192.168.1.0网络的TCP WEB服务流量通往192.168.3.80主机
R1(config)#int e1/0 //进入e1/0接口
R1(config-if)#ip access-group 1 out //把标准ACL 1应用在e1/0的出方向
R1(config-if)#exit
R1(config)#int fa0/1 //进入fa0/1接口
R1(config-if)#ip access-group 100 in //把扩展ACL应用在fa0/1的入方向
R1(config-if)#exit
R1(config)#line vty 0 4 //进入虚拟终端
R1(config-line)#access-class 2 in //把标准ACL 2应用在虚拟终端的入方向,即是登录时
R1(config-line)#password cisco //设置虚拟终端的登录密码
R1(config-line)#login //启用密码登录
R1(config-line)#exit
测试ACL效果:
1、PC0 telnet 到R1(成功)
2、PC0 浏览WWW服务器(失败)
3、PC1 浏览WWW服务器(成功)
实验B、(标准命名式ACL 和扩展命名式ACL)Packet Tracert搭建拓扑如下:
配置R1:
Router>en
Router#conf t
Router(config)#host R2
R2(config)#int e1/0
R2(config-if)#ip add 192.168.0.254 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#int e1/1
R2(config-if)#ip add 192.168.1.254 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#int e1/3
R2(config-if)#ip add 192.168.3.254 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#ip access-list standard denyftp //创建一条命名式标准ACL denyftp
R2(config-std-nacl)#deny 192.168.0.0 0.0.0.255 //拒绝所有来自192.168.0.0/24网络的流量
R2(config-std-nacl)#permit any //允许其他所有网络
R2(config-std-nacl)#exit //退出命名式ACL
R2(config)#ip access-list extended allowftp //创建一条命名式扩展ACL allowftp
R2(config-ext-nacl)#permit tcp 192.168.1.0 0.0.0.255 host 192.168.3.21 eq ftp //允许网络192.168.1.0/24向主机192.168.3.21发出的ftp流量
R2(config-ext-nacl)#deny ip any any //拒绝其他所有的流量
R2(config-ext-nacl)#exit //退出命名式ACL
R2(config)#int e1/1 //进入接口e1/1
R2(config-if)#ip access-group allowftp in //把命名式allowftp ACL应用到e1/1的入方向
R2(config-if)#exit //退出接口模式
R2(config)#int e1/3 //进入e1/3接口
R2(config-if)#ip access-group denyftp out //把命名式denyftp ACL应用到e1/3的出方向
R2(config-if)#exit //退出接口模式
测试ACL效果:
1、PC0访问FTP服务器(失败)
2、PC1访问FTP服务器(成功)
实验C、(基于时间的ACL)GNS创建拓扑如下:
配置R1:
Router>en
Router#conf t
Router(config)#host R1
R1(config)#enable pass cisco
R1(config)#int e0/0
R1(config-if)#ip add 192.168.12.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#line vty 0 4 //进入虚拟终端模式
R1(config-line)#password cisco //设置虚拟终端登录密码
R1(config-line)#login //启用密码登录
R1(config-line)#exit
R1(config)#time-range time_to_telnet //创建一个时间范围名为time_to_telnet
R1(config-time-range)#periodic weekdays 12:00 to 14:00 //设置工作日时间为每天12点到14点
R1(config-time-range)#periodic weekdays 18:00 to 19:00 //设置工作日时间为每天18点到19点
R1(config-time-range)#periodic weekend 00:00 to 23:59 //设置周末时间为全天
R1(config-time-range)#exit //退出时间设置模式
R1(config)#access-list 100 permit tcp host 192.168.12.2 host 192.168.12.1 eq telnet time-range time_to_telnet //创建扩展ACL 100 只允许主机 192.168.12.2 在范围时间内telnet到路由192.168.12.1
R1(config)#int e0/0 //进入接口e0/0
R1(config-if)#ip access-group 100 in //把扩展ACL应用到e0/0的入接口方向
R1(config-if)#exit //退出接口
配置PC
Router>en
Router#conf t
Router(config)#host PC
PC(config)#no ip routing //关闭路由功能,配置成PC
PC(config)#ip default-gateway 192.168.12.1 //设置网关为R1
PC(config)#int e0/0 //进入接口e0/0
PC(config-if)#ip add 192.168.12.2 255.255.255.0 //配置IP
PC(config-if)# no sh //开启端口
PC(config-if)#exit
测试ACL效果:
1、PC 尝试telnet到R1(当前时间不在允许范围内 失败)
2、在R1上修改系统时间:
R1#clock set 18:30:00 17 november 2010 //修改成允许范围内的时间
PC再尝试telnet R1:(成功)
实验D、(动态ACL)GNS创建如下拓扑:
配置R1:
Router>en
Router#conf t
Router(config)#host R1
R1(config)#username kkfloat password kkfloat
R1(config)#line vty 0 2
R1(config-line)#login local
R1(config-line)#autocommand access-enable timeout 30
R1(config-line)#exit
R1(config)#line vty 3 4
R1(config-line)#login local
R1(config-line)#rotary 1
R1(config-line)#exit
R1(config)#access-list 100 permit tcp host 192.168.12.1 host 192.168.12.254 eq telnet
R1(config)#access-list 100 permit icmp any host 192.168.12.254 echo-reply
R1(config)#access-list 100 dynamic allow timeout 60 permit ip any any log
R1(config)#exit
R1(config)#int e0/0
R1(config-if)#ip add 192.168.12.254 255.255.255.0
R1(config-if)#ip access-group 100 in
R1(config-if)#no sh
R1(config-if)#exit
配置PC1
Router>en
Router#conf t
Router(config)#host PC1
PC1(config)#no ip routing
PC1(config)#ip default-gateway 192.168.12.254
PC1(config)#int e0/0
PC1(config-if)#ip add 192.168.12.1 255.255.255.0
PC1(config-if)#no sh
PC1(config-if)#exit
PC1(config)#
配置PC2:
Router>
Router>en
Router#conf t
Router(config)#host PC2
PC2 (config)#no ip routing
PC2 (config)#ip default-gateway 192.168.12.254
PC2 (config)#int e0/0
PC2 (config-if)#ip add 192.168.12.2 255.255
PC2(config-if)#no sh
PC2 (config-if)#exit
测试ACL效果:
1、PC2尝试使用ping与telnet连接R1(失败)
2、PC1 telnet到R1(成功)
3、再用PC2 尝试Ping R1 (成功)
实验E、(自反ACL)GNS创建如下拓扑:
配置R1:
Router>en
Router#conf t
Router(config)#host R1
R1 (config)# enable password cisco
R1(config)#int loopback 0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#exit
R1(config)#int e0/1
R1(config-if)#ip add 172.16.12.1 255.255.255.0
R1(config-if)#no sh
R1(config-if)#exit
R1(config)#line vty 0 4
R1(config-line)#password cisco
R1(config-line)#login
R1(config)#ip route 0.0.0.0 0.0.0.0 172.16.12.2
配置R2:
Router>en
Router#conf t
Router(config)#host R2
R2(config)#int e0/1
R2(config-if)#ip add 172.16.12.2 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#int e0/3
R2(config-if)#ip add 192.168.23.1 255.255.255.0
R2(config-if)#no sh
R2(config-if)#exit
R2(config)#ip access-list extended outside
R2(config-ext-nacl)#permit tcp any any reflect ref
R2(config-ext-nacl)#permit udp any any reflect ref
R2(config-ext-nacl)#exit
R2(config)#ip access-list extended inside
R2(config-ext-nacl)#evaluate ref
R2(config-ext-nacl)#exit
R2(config)#int e0/3
R2(config-if)#ip access-group outside out
R2(config-if)#ip access-group inside in
R2(config-if)#exit
R2(config)#ip route 0.0.0.0 0.0.0.0 192.168.23.2
配置R3:
Router>en
Router#conf t
Router(config)#host R3
R3(config)#enable password cisco
R3(config)#int loopback 0
R3(config-if)#ip add 192.168.2.1 255.255.255.0
R3(config-if)#exit
R3(config)#int e0/3
R3(config-if)#ip add 192.168.23.2 255.255.255.0
R3(config-if)#no sh
R3(config-if)#exit
R3(config)#line vty 0 4
R3(config-line)#password cisco
R3(config-line)#login
R3(config-line)#exit
R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.23.1
测试ACL效果:
1、R3 使用ping与telnet连接R1(失败)
2、R1 使用telnet连接R3(成功)