目录
访问控制列表
ACL概念
访问控制列表简称为ACL,访问控制列表使用包过滤技术,在路由器上读取第三层及第四层包头中的信息如源地址,目的地址,源端口,目的端口等,根据预先定 义好的规则对包进行过滤,从而达到访问控制的目的。该技术初期仅在路由器上支持,近些年来已经扩展到三层交换机,部分最新的二层交换机也开始提供ACL的 支持了。
访问控制列表的原理:
1、对路由器接口来说有两个方向:
入:已经到达路由器接口的数据包,但是还没有被路由器处理。
出:已经 经过路由器的处理,正要离开路由器接口的数据包
2、匹配顺序为:"自上而下,依次匹配"。默认为拒绝
3、访问控制列表的类型:
- 标准访问控制列表:一般应用在out出站接口。建议配置在离目标端最近的路由上
- 扩展访问控制列表:配置在离源端最近的路由上,一般应用在入站in方向
- 命名访问控制列表:允许在标准和扩展访问列表中使用名称代替表号
4、访问控制列表使用原则
(1)、最小特权原则
只给受控对象完成任务所必须的最小的权限。也就是说被控制的总规则是各个规则的交集,只满足部分条件的是不容许通过规则的。
(2)、默认丢弃原则
在CISCO路由交换设备中默认最后一句为ACL中加入了DENY ANY ANY,也就是丢弃所有不符合条件的数据包。这一点要特别注意,虽然我们可以修改这个默认,但未改前一定要引起重视。
(3)、最靠近受控对象原则
所有的网络层访问权限控制。也就是说在检查规则时是采用自上而下在ACL中一条条检测的,只要发现符合条件了就立刻转发,而不继续检测下面的ACL语句。
由于ACL是使用包过滤技术来实现的,过滤的依据又仅仅只是第三层和第四层包头中的部分信息,这种技术具有一些固有的局限性,如无法识别到具体的人,无法 识别到应用内部的权限级别等。因此,要达到端到端的权限控制目的,需要和系统级及应用级的访问权限控制结合使用。
配置ACL需要注意的规则
IP 访问控制列表是一个连续的列表,至少由一个“permit(允许)”语句和一个或多个“deny(拒绝)”语句组成。
IP 访问控制列表用名字(name)或表号(number)标识和引用;
在配置 IP 访问控制列表的首要任务就是使用“access-list”或“ip access-lint”命令,定义一个访问控制列表;
access-list 命令要求只能使用表号标识列表,而 ip access-list 命令可以使用表号或者名字标识列表;
⚫ 在配置过滤规则时,ACL 语句顺序很重要;
⚫ 路由器执行 ACL 是按照配置的访问控制列表中条件语句来决定的;
⚫ 数据包只有在跟第一个判断条件不匹配时,才能被交给 ACL 中下一个条件语句进行比较;
⚫ 若要允许“202.204.4.2”以外的所有源地址通过路由器,这时就需要先配置“deny 202.204.4.2”在配置
“permit any any”
⚫ 在通配符掩码位中,0 表示“检查数据包的 IP 地址相对应的比特位”,1 表示“不检查(忽略)数据包中的
IP 地址相对应的比特位”。
⚫ 通配符“any”:代替 0.0.0.0 255.255.255.255,代表所有主机。
⚫ 通配符 host:与整个 IP 主机地址的所有位相匹配,可以使用缩写字“host”
例如:
Router(config)# access-list 1 deny 172.33.160.29 0.0.0.0
等于:
Router(config)# access-list 1 deny host 172.33.160.29
配置标准ACL
标准acl的表号范围是1-99,因此在配置标准acl时,表号的范围不能超出1-99.
为提高网络性能,将标准acl应用在out出站接口。建议配置在离目标端最近的路由上
accees-list
具体格式为
access-list access-list-number(1-99) [permit | deny ] [sourceaddress][wildcard-mask]
wildcard-mask:网络掩码的反码,例:255.255.0.0的反码是0.0.255.255
例1:允许网段192.168.22.0的ip通过
access-list 10 permit 192.168.22.0 0.0.0.255
例2:拒绝网段172.16.0.0的ip通过
access-list 10 deny 172.16.0.0 0.0.255.255
例3 拒绝主机192.168.1.1通过
access-list 10 deny host 192.168.1.1
ip access-list standard
具体格式为:
ip access-list standard 表名/表号
(num) permit | deny 协议+源地址+源反码
ip access-list 有extended(扩展)和standard(标准)可选,在此介绍standard的配置,extended将在后文介绍。
ip access-list 配置默认以10开始,步长为10,需要注意acl语句的执行顺序。
例1:需求介绍:创建一个acl表名为acl1,我不想让网段192.168.1.0的人通过网络,但我希望192.168.1.1和192.168.1.2这两个主机可以通过
Router(config)#ip access-list standard acl1
Router(config-std-nacl)#permit host 192.168.1.2
Router(config-std-nacl)#permit host 192.168.1.1
Router(config-std-nacl)#deny 192.168.1.0 0.0.0.255
Router(config-std-nacl)#exit
Router(config)#int g0/0/0
Router(config-if)#ip access-group acl1 in
Router(config-std-nacl)#end
Router#show access-lists #检查配置
Standard IP access list acl1
10 permit host 192.168.1.2 (4 match(es))
20 permit host 192.168.1.1
30 deny 192.168.1.0 0.0.0.255 (3 match(es))
注意执行顺序
可以使用反码简化语句,以上语句同等于下面这些语句:
Router(config-std-nacl)#permit 192.168.1.0 0.0.0.2
Router(config-std-nacl)#deny 192.168.1.0 0.0.0.255
--------------------------------------------------------------------------------------
可以使用在语句最前面增加一个数字来配置语句的顺序
例:
Router(config)#ip access-list standard acl2
Router(config-std-nacl)#1 permit host 192.168.1.1
Router(config-std-nacl)#2 permit host 192.168.1.2
Router(config-std-nacl)#7 deny any#拒绝所有主机
Router(config-std-nacl)#end
Router#show access-lists
20 deny 192.168.1.0 0.0.0.255
Standard IP access list acl2
1 permit host 192.168.1.1
2 permit host 192.168.1.2
7 deny any
---------------------------------------------------------------------------
应用标准ACL至接口
Router(config-if)#ip access-group 10 in|out
Router(config-if)#ip access-group acl1 in|out
#in为入口,out为出口,在通信过后源ip与目的ip会发生翻转,因此少数情况下需要注意in|out的配置,可以将一个acl表同时配置在出口与入口
配置扩展ACL
标准acl的表号范围是100-199.
为提高网络性能,建议将扩展acl配置在离源端最近的路由上,一般应用在入站in方向
access-list
access-list {100-199} {permit/deny} protocol source-ip source-wildcard [operator port] destination-ip destination-wildcard [operator port] [established] [log]
access-list 表号{permit | deny}协议+源地址+源反码+目的地址+目的反码+操作+端口号
其中,operator(操作)有 lt(小于)、gt(大于)、eq(等于)、neq(不等于)几种;port指的是端口号。
看着好长,不用担心,我将以多个例句使读者理解此配置方法
例1:拒绝所有icmp包:
Router(config)#access-list 100 deny icmp any any
#any any 第一个any表示的是源的所有主机,第二个any表示的是目的的所有主机
例2:拒绝端口为134的所有udp包:
Router(config)#access-list 100 deny udp any any eq 134
#any any表示源与目的的所有主机
例3:不允许源为172.16.0.0的主机与192.168.1.0通信
Router(config)#access-list 100 deny ip 172.16.0.0 0.0.255.255 192.168.1.0 0.0.0.255
在网络协议中,几乎所有网络协议都需要ip协议的参与,因此禁用了ip协议,就几乎断绝了所有通信方式。
其中172.16.0.0 0.0.255.255是源地址,后面为反码。
192.168.1.0 0.0.0.255表示目的网段
此命令禁止了源为172.16.0.0网段与网段192.168.1.0通信
ip access-list extended
extended表示此acl表为拓展acl表
ip access-list 配置默认以10开始,步长为10,需要注意acl语句的执行顺序。
具体格式为:
ip access-list extended 表名/表号
(num) permit | deny 协议+源地址+源反码+目的地址+目的反码+操作+端口号
例1:创建acl1,拒绝tcp包
Router(config)#ip access-list extended acl1
Router(config-ext-nacl)#deny tcp any any
Router(config-ext-nacl)#permit ip any any
Router(config-ext-nacl)#do show access-list
Extended IP access list acl1
10 deny tcp any any
20 permit ip any any
例2:拒绝端口号为8080的http包通过(http采用了tcp传输)
Router(config)#ip access-list extended acl1
Router(config-ext-nacl)#deny tcp any any eq 8080
--------------------------------------------------------------------------------------
可以使用在语句最前面增加一个数字来配置语句的顺序
例:
Router(config)#ip access-list extended test
Router(config-ext-nacl)#2 permit ip host 192.168.1.1 host 192.168.1.2
Router(config-ext-nacl)#3 permit ip host 192.168.13.13 host 192.168.13.2
Router(config-ext-nacl)#1 permit ip host 192.168.8.9 host 192.168.13.2
Router(config-ext-nacl)#do show ac
Router(config-ext-nacl)#do show access-list
Extended IP access list test
1 permit ip host 192.168.8.9 host 192.168.13.2
2 permit ip host 192.168.1.1 host 192.168.1.2
3 permit ip host 192.168.13.13 host 192.168.13.2
--------------------------------------------------
应用扩展acl至接口
Router(config-if)#ip access-group 100 in|out
Router(config-if)#ip access-group acl1 in|out
#in为入口,out为出口,在通信过后源ip与目的ip会发生翻转,因此少数情况下需要注意in|out的配置,可以将一个acl表同时配置在出口与入口
删除acl语句
无论使使用access-list配置的语句还是使用ip access-list standard|extended配置的语句,都需要进入ip access-list standard|extended 表名|表号
例1:acl表如下,现在公司又允许主机192.168.1.2 通过了,请做更改
Standard IP access list 10
20 deny host 192.168.1.1
30 deny host 192.168.1.2
40 deny host 192.168.1.3
50 permit any
#根据关键字Standard和表号10可以看出此acl表为标准acl表
更改命令如下:
Router(config)#ip access-list standard 10#进入acl表10
Router(config-std-nacl)#no 30
Router(config-std-nacl)#do show ac
Standard IP access list 10
20 deny host 192.168.1.1
40 deny host 192.168.1.3
50 permit any
可以发现语句 30 deny host 192.168.1.2 被删除了,扩展acl同理,不过扩展acl需要注意将ip access-list standard更改为ip access-list extended。