访问控制列表(ACL)
一、ACL的基本概念
-
随着网络的飞速发展,网络安全和网络服务质量QoS(Quality of Service)问题日益突出。
- 企业重要服务器资源被随意访问,企业机密信息容易泄露,造成安全隐患。
- Internet病毒肆意侵略企业内网,内网环境的安全性堪忧。
- 网络带宽被各类业务随意挤占,服务质量要求最高的语音、视频业务的带宽得不到保障,造成用户体验差。
以上种种问题,都对正常的网络通信造成了很大的影响。因此,提高网络安全性服务质量迫在眉睫。ACL就在这种情况下应运而生了。
目的:
- 实现对网络中报文流的精确识别和控制,达到控制网络访问行为、防止网络攻击和提高网络带宽利用率的目的
- 保障网络环境的安全性和网络服务质量的可靠性。
1.什么是ACL
- 是一种基于包过滤的访问控制技术(拆网络层IP地址),广泛应用于路由器和三层交换机中,主要基于数据包的五元组进行过滤
- 什么是五元组?
- 源、目标IP
- 源、目标端口
- 协议
- 什么是五元组?
- 去读取三层(网络层源、目的IP)和四层(传输层源、目的端口)的流量
2.工作原理
- 数据的流量走向(确定路由器的入口或出口,建议是将ACL应用在入口,减少路由器路由的工作量)
- 现在入口处,就查看信息的三四层信息,看完过后允许进入,然后路由器再使用路由功能将其转发
- 工作过程
3.访问控制列表的分类(思科设备)
- 标准
- 基于源IP地址进行控制
- 表号:1~99
- 扩展
- 基于源IP、目的IP、指定协议、端口号、标志位类过滤
- 表号:100~199
- 命名
- 没有标号,使用名字作为表号
- 直接使用 standard标识标准ACL,extended标识扩展ACL
二、(标准)ACL
en
conf t
access-list ?
<1-99> IP standard access list #标准ACL
<100-199> IP extended access list #扩展ACL
access-list 1 ?
deny Specify packets to reject 拒绝
permit Specify packets to forward 允许
remark Access list entry comment 注意 进入列表访问注释
access-list 1 deny ?
A.B.C.D Address to match #IP地址
any Any source host #所有主机
host A single host address #单个主机
access-list 1 deny host ?
A.B.C.D Host address
access-list 1 deny host 192.168.10.10 0.0.0.0 拒绝单个主机 主机IP地址 子网掩码(反码)
#建立列表 采用标准ACL,表号1
或者拒绝某个网段
access-list 1 deny host 192.168.10.0 0.0.0.255
access-list 1 permit any #还需要加一条规则
因为ACL检查时,是从上到下,如果该主机不是被拒绝的主机,则刚才设置的第一个规则不符合,系统自动检查下一跳规则,下一条规则是允许,则该主机顺利进入
exit 将ACL应用到某个接口
int g0/0
ip access-group 1 in 在0/0接口的进入方向启用ACL “1”是组号,与刚才access-list后面的数字相同
#in代表此接口为入口,out代表此接口为出口
- 这里需要注意:
- 标识单个主机:
- 用 IP地址 + 255.255.255.255(取反码)就是:IP地址 + 0.0.0.0
- 或者用 只用IP地址
- 标识一个网段:
- 用 网络地址 + 255.255.255.0(取反码)就是:IP地址 + 0.0.0.255
- 规则设置:
- 必须先拒绝后允许
- 标识单个主机:
三、ACL的应用规则
- 在一个接口的一个方向上只能应用一个访问控制列表
- 配置在离主机近的路由器上,减少线路线路上无用的数据流量
- 尽量配置在一个ACL表中
四、(扩展)ACL
将ACL配置配置在路由器0上,可以避免路由器0到1之间出现无用的数据流量
en
conf t
access-list 100 deny icmp any host 192.168.30.30
#拒绝 协议 源 目的主机的IP ping是基于ICMP协议
设置第二条 (dns是基于传输层的UDP协议的)
拒绝 协议 源主机 IP 目的主机 IP
access-list 100 deny udp host 192.168.10.10 host 192.168.30.30 ?
dscp Match packets with given dscp value
eq Match only packets on a given port number #等于
gt Match only packets with a greater port number #大于
lt Match only packets with a lower port number #小于
neq Match only packets not on a given port number #不等于
precedence Match packets with given precedence value
range Match only packets in the range of port numbers #范围
access-list 100 deny udp host 192.168.10.10 host 192.168.30.30 eq ? #直接等于我们设置的端口号
系统提示:
<0-65535> Port number
bootpc Bootstrap Protocol (BOOTP) client (68)
bootps Bootstrap Protocol (BOOTP) server (67)
domain Domain Name Service (DNS, 53) #可以看到我们需要解决的dns服务在53端口上
isakmp Internet Security Association and Key Management Protocol (500)
non500-isakmp Internet Security Association and Key Management Protocol
(4500)
snmp Simple Network Management Protocol (161)
tftp Trivial File Transfer Protocol (69)
access-list 100 deny udp host 192.168.10.10 host 192.168.30.30 eq 53
access-list 100 deny tcp host 192.168.20.20 host 192.168.30.30 eq 80 #拒绝PC1的http服务
access-list 100 permit ip any any #允许任何网络协议,任何源,任何目的
int g0/2
ip access-group 100 out #将ACL应用于路由器0的g0/2接口的出方向
五、(命名)ACL
1.好处
- 可以在某一个表内删除或插入一条ACL,为每一条ACL命名(编号),想要删除哪一个就标注哪一个的编号,想要在哪个编号之前插入一个新的,就将这个新的ACL编号设置为一个中间值
2.配置
还是上面的那个案例
改为:pc0无法访问服务器,pc1无法访问服务器的http服务,且无法ping通
路由器0
en
conf t
ip access-list extended woniu #设置扩展类型,命名为woniu
系统提示
Router(config-std-nacl)# #可见已经进入了命名ACL:nacl
deny ip host 192.168.10.10 host 192.168.30.30 #pc0无法访问服务器
deny tcp host 192.168.20.20 host 192.168.30.30 eq 80 #pc1无法访问服务器的http服务
deny icmp host 192.168.20.20 host 192.168.30.30 #pc1无法ping通服务器
exit
int g0/2
ip access-list woniu out #注意这里写的是ACL的命名:woniu
end
show ip access-list
Extended IP access list woniu #可以看到ACL中的条目
10 deny ip host 192.168.10.10 host 192.168.30.30
20 deny tcp host 192.168.20.20 host 192.168.30.30 eq www
30 deny icmp host 192.168.20.20 host 192.168.30.30
40 permit ip any any
1.删除某一条
en
conf t
ip access-list extended woniu #进入该命名列表
no 10 #删除编号为10的条目
2.插入某一条
en
conf t
ip access-list extended woniu
1 deny icmp host 192.168.10.10 host 192.168.30.30 #序号设置为1 增加了一条拒绝pc0 ping通服务器的规则
end
show access-lists
系统提示
Extended IP access list woniu
1 deny icmp host 192.168.10.10 host 192.168.30.30 #可见增加到了第一条
20 deny tcp host 192.168.20.20 host 192.168.30.30 eq www (16 match(es))
30 deny icmp host 192.168.20.20 host 192.168.30.30 (4 match(es))
40 permit ip any any (23 match(es))
六、删除ACL
-
在删除ACL之前首先在对应接口上取消应用
en conf t int g0/2 no ip access-group 100 out #取消应用
-
在标准和扩展的ACL中如果执行删除命令,整个ACL表会被删除
no access-list 100 deny udp host 192.168.10.10 host 192.168.30.30 eq 53 看语句上删的是这一条规则,实际上整个ACL都被删除了
七、华为设备配置ACL
display acl all ——查看交换机的所有ACL配置列表
1.配置实例
[HuaWei-SWitch] acl ?
INTEGER<2000-2999> Basic access-list —— 基本访问列表
INTEGER<3000-3999> Advanced access-list —— 高级访问列表
INTEGER<4000-4999> L2 access-list —— 二层访问列表
INTEGER<5000-5999> User defined access-list —— 用户定议访问列表
INTEGER<6000-9999> UCL group access-list —— UCL组访问列表
[HuaWei-SWitch]acl 2000 —— 进入基本访问列表
[HuaWei-SWitch-acl-basic-2000] rule 5 deny source 192.168.1.0 0.0.0.255 —— 定义行号为 5 的规则,拒绝来源IP为 192.168.1.0至192.168.1.255地址访问
[HuaWei-SWitch] interface GigabitEthernet 1/0/1 ——进入需要设置ACL规则的端口
[HuaWei-SWitch-GigabitEthernet1/0/1]traffic-filter inbound acl 2000 ——设置在此端口的进方向遵循ACL 2000列表规则。
#限制端口
[Huawei]acl 3000
[Huawei-acl-adv-3000]rule 10 deny tcp destination-port eq 445
2.不同ACL编号的区别
基本ACL --范围为2000~2999 #可使用IPv4报文的源IP地址、分片标记和时间段信息来定义规则
高级ACL --范围为3000~3999 #既可使用IPv4报文的源IP地址,也可使用目的地址、IP优先级、ToS、DSCP、IP协议类型、ICMP类型、TCP源端口/目的端口、UDP源端口/目的端口号等来定义规则
二层ACL --范围为4000~4999 #可根据报文的以太网帧头信息来定义规则,如根据源MAC(Media Access Control)地址、目的MAC地址、以太帧协议类型等
自定义ACL --范围为5000~5999 #可根据偏移位置和偏移量从报文中提取出一段内容进行匹配
3.rule ID的注意事项
当配置多条acl时,需要注意ruleID不要是连续的数值,因为设备在匹配acl条目时,是根据ruleID的从小到大的顺序进行匹配的,为了方便后续可以插入一些新的规则,建议ruleID一般设置为5,10,15,20
4.配置高级访问控制列表
- 配置ACL,使得路由器R4(4.4.4.4)的telnet功能,只能由(1.1.1.1)进行访问
[R4-ui-vty0-4]acl 3000
[R4-acl-adv-3000]rule permit ip source 1.1.1.1 0 destination 4.4.4.4 0
[R4]user-interface vty 0 4
[R4-ui-vty0-4]acl 3000 inbound #在VTY界面应用该规则