网络安全(5)_访问控制列表ACL
6. 访问控制列表ACL
6.1 标准访问控制列表
(1)标准ACL
①标准ACL是基于IP数据包的源IP地址作为转发或是拒绝的条件。即,所有的条件都是基于源IP地址的。
②基本不允许或拒绝整个协议组。它不区分IP流量类型。如Telnet、UDP等服务。
(2)实战:只允许部分计算机访问Internet
①目标: 在Router0上定义标准ACL,只允许市场部(PC7例外)和财务部的计算机能够访问Internet。而服务器组中的计算机拒绝访问Internet
②在Router0的S3/0接口的出站访问控制
Router>en Router#config t //进入全局配置模式 Router(config)#access-list ? <1-99> IP standard access list //标准ACL的编号范围是1-99 <100-199> IP extended access list //扩展ACL的编号范围是100-199 //1. 在Router0上创建标准ACL,列表编号为10(可以是1-99之间的任何值)。 // A.允许192.168.2.0/24、192.168.1.0/24两个网段的数据包通过,注意使用 // 的是反转掩码 // B.控制列表的any与反转掩码0.0.0.0等价 // C.路由器在应用访问控制列表的规则时顺序很重要,它会从上到下检查,如 // 果匹配就不再检查ACL后面的设置。其原则是更加具体的地址放最前面。因 // 此被拒绝的主机要放前面,允许的放后面。ACL的最后一条会默认为拒绝所有! // D.删除某个10号列表:Router(config)#no access-list 10 Router(config)#access-list 10 deny host 192.168.2.2 //第1条,要先写! Router(config)#access-list 10 permit 192.168.2.0 0.0.0.255 //第2条 Router(config)#access-list 10 permit 192.168.1.0 0.0.0.255 //第3条 Router(config)#exit Router#show access-list 10 //查看ACL的10号列表 Standard IP access list 10 deny host 192.168.2.2 //第1条 permit 192.168.2.0 0.0.0.255 //第2条 permit 192.168.1.0 0.0.0.255 //第3条 Router(config)#access-list 10 permit 192.168.2.0 0.0.0.255 Router(config)#access-list 10 permit 192.168.1.0 0.0.0.255 //2. 将ACL10绑定到Router0的S3/0出口 Router(config)#interface serial 3/0 Router(config-if)#ip access-group 10 ? in inbound packets //in 表示进入接口时检查 out outbound packets //out 表示出接口时检查 Router(config-if)#ip access-group 10 out //将列表绑定到S3/0出口 //取消绑定:no ip access-group 10 out Router(config-if)#
③测试,分别从PC3、PC4、PC7和服务器组的ftp主机去ping 10.0.0.2。会发现PC3、PC4是会通的,但PC7和ftp主机ping不通。可见ACL列表己经完全起作用了。
6.2 扩展访问控制列表
(1)扩展ACL
①基于IP数据包的源地址、目标地址、协议和端口这些条件来决定是否转发数据包。
②比标准ACL的控制粒度更细。
③扩展ACL的语法:
access-list 编号{permit | deny} {TCP | UDP} 源地址 目标地址 eq 目标端口
access-list 编号{permit | deny} {IP | ICMP} 源地址 目标地址 //没目标端口!
【说明】如果协议是IP或ICMP,则后面没有目标端口;如果允许IP协议,就等同于允了所有TCP、UDP以及ICMP协议的流量。
(2)实验环境:
①目标:在Router0定义扩展ACL,使得市场部能访问Internet,财务部只能访问Internet上的Web服务器。服务器组中的计算机能ping通Internet中任何计算机。
②路由器上设置ACL
//1. 在Router0上创建扩展ACL Router#conf t Router(config)#access-list 101 permit ip 192.168.2.0 0.0.0.255 any //市场部允许访问Internet Router(config)#access-list 101 permit tcp 192.168.1.0 0.0.0.255 10.0.0.0 0.255.255.255 eq ? <0-65535> Port number ftp File Transfer Protocol (21) pop3 Post Office Protocol v3 (110) smtp Simple Mail Transport Protocol (25) telnet Telnet (23) www World Wide Web (HTTP, 80) //eq后面可以是端口或应用层协议名称! //财务部计算机只允许访问10.0.0.0/8网段的Web服务器 Router(config)#access-list 101 permit tcp 192.168.1.0 0.0.0.255 10.0.0.0 0.255.255.255 eq 80 //服务器组的计算机只能ping internet的计算机 Router(config)#access-list 101 permit icmp 192.168.0.0 0.0.0.255 any //2. 将扩展ACL绑定到Router0的S3/0接口 Router(config)#interface serial 3/0 Router(config-if)#ip access-gr Router(config-if)#ip access-group 101 out Router(config-if)#exit
③验证扩展ACL。市场部的PC7能ping通Internet上的任何计算机(包括访问WebServer的网页)。财务部的PC2不能ping通Internet上的任何计算机,但能访问WebServer网站。服务器组的计算机能ping通Internet上任何计算机,但不能访问WebServer。
6.3 使用ACL保护路由
(1)保护路由器安全
①路由器一般都开启telnet功能,以便远程管理。
②路由器的任一接口都允许telnet,不可能为每个接口的入口都绑定ACL,可以使用标准ACL来控制访问VTY线路。
(2)实战:使用ACL保护路由器安全(要事先设置Router的telnet密码和enable密码)
①目标:只允许ITG部门的计算机能够telnet中路由器Router0。
②在Router0上创建标准ACL,并绑定到VTY线路。
Router#conf t Router(config)#access-list 12 permit 192.168.1.0 0.0.0.255 //定义ACL,只允许192.168.1.0/24网段 Router(config)#line vty 0 15 //进入VTY虚接口,0和15分别表示起始和结束的vty的0-15号接口。 Router(config-line)#access-class 12 in //将编号为12的ACL绑定到vty Router(config-line)#
③验证:在PC7上telnet 192.168.2.1会失败。但PC3上telnet 192.168.1.1会成功,只要输入正确的telnet密码和enable密码。
6.4 访问控制列表的位置
(1)标准ACL:尽可能靠近目的地址的位置。这是因为我们并不真正的要在自己的网络内使用表内的控制规则。不能将标准ACL放置在靠近源主机的位置,因为这样会过滤基于源地址的流量,而导致不能转发任何流量。
(2)扩展ACL:尽可能放置在靠近源地址的位置。它可以过滤每个特定的地址和协议,所以我们不希望流量穿过整个网络后再被拒绝,它可在使用有限的带宽之前过滤掉此流量。