什么是ACL?
ACL全称访问控制列表(Access Control List),主要通过配置一组规则进行过滤路由器或交换机接口进出的数据包,
是控制访问的一种网络技术手段, ACL适用于所有的被路由支持的协议,如IP、tcp、udp、ftp、www等。
什么是反掩码?
反掩码就是通配符掩码 , 通过标记0和1告诉设备应该匹配到哪位。 在反掩码中,相应位为1的地址在比较中忽略,
为0的必须被检查。IP地址与反掩码都是32位的数 由于跟子网掩码刚好相反,所以也叫反掩码 。
路由器使用的通配符掩码与源或目标地址一起来分辨匹配的地址范围,它与子网掩码不同。它不像子网掩码告诉
路由器IP地址是属于哪个子网(网段),通配符掩码告诉路由器为了判断出匹配,它需要检查IP地址中的多少位。
例如:
255.255.255.0 反掩码(wildcard-mask)就是0.0.0.255
255.255.255.248 反掩码(wildcard-mask)就是0.0.0.7
ACL工作原理:
ACL使用包过滤技术,在路由器上读取OSI七层模型的第3层和第4层包头中的信息。如源地址,目标地址,源端口,目标端口等,根据预先定义好的规则,对包进行过滤,从而达到访问控制的目的。
对于路由器接口而言,ACL是有两个方向:
注意:如果发现没有匹配的ACL规则,默认会丢弃该数据包,思科ACL规则默认会有一条隐藏的deny any any规则,而华三ACL规则默认是permit any any规则。
入站----如果是入站访问列表,则当路由器接收到数据包时,Cisco IOS 软件将检查访问列表中的条件语句,看是否有匹配。如果数据包被允许,则软件将继续处理该数据包。如果数据包被拒绝,则软件会丢弃该数据包。
出站----如果是出站访问列表,则当软件到接收数据包并将群其路由至出站接口后,软件将检查访问列表中的条件语句,看是否有匹配。如果数据包被允许,则软件会发送该数据包。如果数据包被拒绝,则软件会丢弃该数据包。
ACL两种类型:
标注:允许在标准ACL和扩展ACL中使用名称代替访问控制列表号。
1、 标准的ACL
根据数据包的源IP地址来控制允许转发或拒绝数据包,访问控制列表号1~99。
标准访问控制列表配置命令如下:
Router(config)#access-list access-list-number {permit|deny} source [souce-wildcard]
或者
Router(config)#ip access-list standard access-list-number
Router(config-std-nacl)#Sequence Number{permit|deny} source [souce-wildcard]
下面是命令参数的详细说明
access-list-number:访问控制列表号,标准ACL取值是1-99,可以使用名称替代列表号。
Sequence Number:每条ACL规则列表序列号,可使用范围1-2147483647。
permit | deny:如果满足规则,则允许/拒绝通过。
source:数据包的源地址,可以是主机地址,也可以是网络地址
2、 扩展的ACL
根据数据包的源IP地址、目的IP地址、指定协议,端口、标志和时间来控制允许转发或拒绝数据包,访问控制列表号100~199
扩展访问控制列表配置命令如下:
Router(config)#access-list access-list-number {permit|deny} protocol {source souce-wildcard destination destination-wildcard} [operator operan]
或者
Router(config)#ip access-list extended access-list-number
Router(config-std-nacl)#{permit|deny} protocol {source souce-wildcard destination destination-wildcard} [operator operan]
下面是命令参数的详细说明
access-list-number:访问控制列表号,扩展ACL取值100-199,可以使用名称替代列表号。
Sequence Number:每条ACL规则列表序列号,可使用范围1-2147483647。
permit|deny:如果满足规则,则允许/拒绝通过。
protocol:用来指定协议的类型,如IP,TCP,UDP,ICMP等。
source、destination:源和目的,分别用来标示源地址和目的地址。
souce-wildcard、destination-wildcard:子网反码,souce-wildcard是源反码,destination-wildcard是目标反码。
operator operan:lt(小于)、gt(大于)、eq(等于)、neq(不等于)、rand(范围端口号)等。
ACL应用分类:
Port ACL基于MAC的ACL
ACL应用在二层接口上,但二层接口只支持in方向,一个接口只能使用一条ACL规则,IP或MAC的ACL都可以应用到二层接口,但不能应用到端口聚合(EtherChannel)
VLAN ACL基于VLAN的ACL
使用VLAN与VLAN之间的ACL,相同的VLAN也是可以过滤,只要流量进入或离开指定的VLAN都会被过滤,可以同时控制二层与三层流量。
VLAN ACL只是VLAN调用了ACL规则,in或out的VLAN流量都会被检测,无论是通过二层转发还是三层转发。VLAN ACL是不能定义方向的,
虽然VLNA调用ACL规则会有in或out选项,但只针对VLAN源地址和目标地址而言。VLAN调用ACL是不能实现vlan 10 ping不通vlan 20,
但vlan 20 ping通vlan10类似的功能,除非交换机支持自反ACL规则。
Router ACL基于 IP 的ACL
ACL应用到三层接上,但只能是IP ACL,不能是MAC ACL,Router ACL是in和out方向都可以使用,每个接口每个方向只能使用一条ACL规则。
Time ACL基于时间的ACL
Time ACL是在原来的ACL规则上增加的功能,可以应用于二层或三层,在原来的ACL规则和时间相结合使用,控制起来将更加灵活多变。
实例(VLAN ACL)
注意:配置VLAN ACL需要注意以下问题:
1、VLAN ACL不能具体定义入站和出站规则,VLANACL的in和out是针对VLAN的本身而言,ACL源地址与应用的VLAN相同网段时,
就使用in方向,如果ACL目标地址与应用的VLAN相同网段时,就使用out方向。
2、当数据包匹配思科ACL规则发现没有匹配的规则,则会匹配思科ACL默认一条隐藏的deny any any规则,默认丢弃该数据包。
3、如果你删除access-list-number访问控制列表号,则access-list-number里的所有会被清除,建议进入每条access-list-number
后在根据需求删除相应的序列号。
4、ACL规则是按从上到下进行匹配,如果先匹配了后面就不会再进行匹配。
设计思路:
1、 一台核心思科3560交换机,三台汇聚思科2960交换机
2、 3560交换机配置VTP、VLAN、trunk
3、 VLAN 30服务器192.168.30.30开启www服务,服务器192.168.30.31开启ftp
实验拓扑图:
核心交换机3560SW
##配置VTP服务器
3650SW>enable
3650SW#vlan database
3650SW(vlan)#vtp domain CCTV
3650SW(vlan)#vtp server
##创建VLAN
3650SW(vlan)#vlan 10 name VLAN10
3650SW(vlan)#vlan 20 name VLAN20
3650SW(vlan)#vlan 30 name VLAN30
3650SW(vlan)#exit
##配置VLAN IP地址
3650SW#configure terminal
3650SW(config)#interface vlan 10
3650SW(config-if)#ip address 192.168.10.1 255.255.255.0
3650SW(config-if)#exit
3650SW(config)#interface vlan 20
3650SW(config-if)#ip address 192.168.20.1 255.255.255.0
3650SW(config-if)#exit
3650SW(config)#interface vlan 30
3650SW(config-if)#ip address 192.168.30.1 255.255.255.0
3650SW(config-if)#exit
##开启三层交换机默认路由
3560SW(config)#ip routing
#设置端口汇聚(trunk)
3650SW(config)#interface range fastEthernet 0/22-24
3650SW(config-if-range)#3650SWport trunk encapsulation dot1q
3650SW(config-if-range)#3650SWport mode trunk
3650SW(config-if-range)#no shutdown
3650SW(config-if-range)#exit
2960交换机SW01
##配置VTP客户端
SW01#vlan database
SW01(vlan)#vtp domain CCTV
SW01(vlan)#vtp client
SW01(vlan)#exit
##设置端口汇聚(trunk)
SW01#configure terminal
SW01(config)#interface fastEthernet 0/24
SW01(config-if)#switchport mode trunk
SW01(config-if)#no shutdown
SW01(config-if)#exit
##分配VLAN所属端口
SW01#configure terminal
SW01(config)#interface range fastEthernet 0/1-5
SW01(config-if-range)#switchport access vlan 10
SW01(config-if-range)#switchport mode access
SW01(config-if-range)#no shutdown
SW01(config-if-range)#exit
2960交换机SW02
##配置VTP客户端
SW01#vlan database
SW01(vlan)#vtp domain CCTV
SW01(vlan)#vtp client
SW01(vlan)#exit
##设置端口汇聚(trunk)
SW01#configure terminal
SW01(config)#interface fastEthernet 0/24
SW01(config-if)#switchport mode trunk
SW01(config-if)#no shutdown
SW01(config-if)#exit
##分配VLAN所属端口
SW01#configure terminal
SW01(config)#interface range fastEthernet 0/1-5
SW01(config-if-range)#switchport access vlan 20
SW01(config-if-range)#switchport mode access
SW01(config-if-range)#no shutdown
SW01(config-if-range)#exit
2960交换机SW03
##配置VTP客户端
SW01#vlan database
SW01(vlan)#vtp domain CCTV
SW01(vlan)#vtp client
SW01(vlan)#exit
##设置端口汇聚(trunk)
SW01#configure terminal
SW01(config)#interface fastEthernet 0/24
SW01(config-if)#switchport mode trunk
SW01(config-if)#no shutdown
SW01(config-if)#exit
##分配VLAN所属端口
SW01#configure terminal
SW01(config)#interface range fastEthernet 0/1-5
SW01(config-if-range)#switchport access vlan 30
SW01(config-if-range)#switchport mode access
SW01(config-if-range)#no shutdown
SW01(config-if-range)#exit
重要操作*******核心交换机3560SW配置ACL规则***********
黑名单和白名单
1、默认设置黑名单,再设置白名单。(如果ACL规则限制多推荐使用)
2、默认设置白名单,再设置黑名单。(如果ACL规则限制少推荐使用)
###查看ACL规则的相关命令
3650W#show ip access-lists
3650W#show ip access-lists 102
3650W#show running-config
###删除ACL规则的相关命令
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#no 20
***操作实验1:默认设置黑名单,再设置白名单***
标注:同网段的主机无法限制,扩展ACL是按顺序执行
###创建三条扩展ACL分别是禁止所有访问
3650W#configure terminal
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#1000 deny ip any any
3650W(config)#ip access-list extended 102
3650W(config-ext-nacl)#1000 deny ip any any
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#1000 deny ip any any
###创建的扩展ACL分别应用到不同的VLAN
3650W(config)#interface vlan 10
3650W(config-if)#ip access-group 101 in
3650W(config)#interface vlan 30
3650W(config-if)#ip access-group 103 in
3650W(config)#interface vlan 20
3650W(config-if)#ip access-group 102 in
1、配置192.168.10.10主机只允许与192.168.30.30主机相互访问
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#10 permit ip host 192.168.10.10 host 192.168.30.30
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#10 permit ip host 192.168.30.30 host 192.168.10.10
2、配置vlan 10与vlan 30所有主机相互访问
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#20 permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#20 permit ip 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.255
3、配置vlan 10 所有主机只允许与 vlan 30的192.168.30.30主机相互访问
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#30 permit ip 192.168.10.0 0.0.0.255 host 192.168.30.30
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#30 permit ip host 192.168.30.30 192.168.10.0 0.0.0.255
4、配置192.168.30.30主机80端口只允许vlan 10的所有主机访问(不能反向访问192.168.10.10的80和21端口)
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#40 permit tcp 192.168.10.0 0.0.0.255 host 192.168.30.30 eq www
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#40 permit tcp host 192.168.30.30 192.168.10.0 0.0.0.255
5、配置192.168.30.30 主机 80/21端口只允许192.168.10.10主机访问(不能反向访问192.168.10.10的80和21端口)
3650W(config)#ip access-list extended 101
3650W(config-ext-nacl)#50 permit tcp host 192.168.10.10 host 192.168.30.30 range 80 21
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#50 permit tcp host 192.168.30.30 host 192.168.10.10
***操作实验2:默认设置白名单,再设置黑名单***
###创建一条扩展ACL分别是允许所有访问
3650W#configure terminal
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#1000 permit ip any any
###创建的扩展ACL分别应用到不同的VLAN
3650W(config)#interface vlan 30
3650W(config-if)#ip access-group 103 out
1、禁止vlan 10 vlan 20所有主机不能访问192.168.30.30主机的80端口,但允许192.168.30.30.主机去访问任何主机的80端口
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#10 deny tcp any host 192.168.30.30 eq www
2、禁止192.168.30.30.主机去访问vlan 10和vlan 20任何主机的80端口
3650W(config)#ip access-list extended 103
3650W(config-ext-nacl)#20 deny tcp host 192.168.30.30 any eq www
3650W(config)#interface vlan 30
3650W(config-if)#ip access-group 103 in