Cisco-ACL详解(一)

关于通配符掩码(wildcard masking)

它是由0 和255 的4 个8 位位组组成的。0 代表必须精确匹配,255 代表随意,比如:172.16.30.0 0.0.0.255,这个告诉router 前3 个8 位位组必须精确匹配,后1 个8 位位组的值可以为任意值;如果你想指定172.16.8.0 到172.16.15.0,则通配符掩码为0.0.7.255(15-8=7)

要点:

1、按顺序执行,一旦某条语句匹配,后续语句不再处理.

2、隐含拒绝,如果所有语句执行完毕没有匹配条目,则默认丢弃数据包.

3、一个ACL应该至少有一条permit语句;否则所有流量都会丢弃,因为每个ACL末尾都有隐含的拒绝语句.

4、不要忘记把ACL应用到端口上.

5、每个接口、每个协议或每个方向只可以分派一个ACL(这意味着每个接口只能有一个 acl in 和一个 acl out).

6、不能从访问列表中删除一行。如果试着这样做,将删除整个列表;只有使用命名访问列表时例外.

7、访问列表设计为过滤通过router的流量,但不过滤router本身产生的流量.

需要把ACL应用到接口上,而且还要定义过滤的方向,比如是想过滤从Internet到公司的数据包,还是想过滤从公司传出到Internet的数据包;方法分为下面两种:

1.inbound ACL:先路由,再处理
当访问列表被应用到从接口输入的包时,那些包在被路由到输出接口之前要经过访问列表的处理。不能路由任何被拒绝的包,因为在路由之前这些包就会被丢弃掉。

2.outbound ACL:先处理,再路由
当访问列表被应用到从接口输出的包时,那些包首先被路由到输出接口,然后在进入该接口的输出队列之前经过访问列表的处理。

Cisco ACL有两种类型:

1.标准ACL

2.扩展ACL

按照使用方式习惯不同也有两种方式:

一种是编号方式,另一种是命名方式

一、标准ACL

标准访问控制列表只检测数据包中的源IP地址进行过滤 ;使用 1 ~ 99 以及1300~1999之间的数字作为表号。

命令:

针对网段:access-list {1-99、1300-1999} {permit/deny} source-ip source-wildcard [log]

针对某主机: access-list {1-99、1300-1999} {permit/deny} host source-ip

//wildcard为反掩码 ( 也叫:通配符掩码,值为:255.255.255.255减去 子网掩码 );//log表示有匹配时生成日志信息;

对于标准访问控制列表来说,默认的命令是host,也就是说access-list 10 deny 192.168.1.1表示的是拒绝192.168.1.1这台主机数据包通讯,我们可以省去输入host命令。

标准ACL尽可能用在靠近目的地址的地方

【这是因为我们并不真的要在自己的网络内使用标准的访问列表。不能将标准的访问列表放置在靠近源主机或源网络的位置,因为这样会只过滤基于源地址的流量,而造成不能转发任何流量】

允许172.17.31.222通过,其他主机禁止

access-list 1 permit host 172.17.31.222   //可以省去输入host命令

禁止172.17.31.222通过,其他主机允许

access-list 1 deny host 172.17.31.222   //可以省去输入host命令

access-list 1 permit any

允许172.17.31.0/24通过,其他主机禁止

access-list 1 permit 172.17.31.0 0.0.0.255

禁止172.17.31.0/24通过,其他主机允许

access-list 1 deny 172.17.31.0 0.0.0.255

access-list 1 permit any

示例一:

Router有3个内部连接,1一个Internet连接;现在销售部不允许访问金融部,但允许他们访问市场部和Internet连接,配置如下:

(config)#access-list 10 deny 172.16.40.0 0.0.0.255

(config)#access-list 10 permit any

因为尽量把标准ACL放在离目标近的地方,所以应用在E1口,方向为out.

(config)#interface E1

(config-if)#ip access-group 10 out

示例二:

采用如图所示的网络结构。路由器连接了两个网段,分别为172.16.4.0/24,172.16.3.0/24。在172.16.4.0/24网段中有一台服务器提供WWW服务,IP地址为172.16.4.13.

  实例1:禁止172.16.4.0/24网段中除172.16.4.13这台服务器访问172.16.3.0/24的计算机。

(config)#access-list 1 permit host 172.16.4.13//允许172.16.4.13的数据包通过

  (config)#int e 0 //进入E0端口(因为标准ACL尽量放在离目标地址近的地方)

  (config-if)#ip access-group 1 out //应用到接口E0的出方向

小提示:由于CISCO默认添加了DENY ANY的语句在每个ACL末尾,所以不需要再写access-list 1 deny any这句命令。另外在路由器连接网络不多的情况下也可以在E1端口使用ip access-group 1 in命令来宣告,宣告结果和上面效果一样。

 实例2:禁止172.16.4.13对172.16.3.0/24网段的访问,而172.16.4.0/24中的其他计算机可以正常访问。

(config)#access-list 1 deny host 172.16.4.13//禁止172.16.4.13的数据包通过

  (config)#access-list 1 permit any //允许其他所有计算机数据包通过

  (config)#int e 0//进入E0端口

  (config-if)#ip access-group 1 out//将ACL1宣告,同理可以进入E1端口后使用ip access-group 1 in来完成宣告

 总结:标准ACL占用路由器资源很少,是一种最基本最简单的访问控制列表格式。应用比较广泛,经常在要求控制级别较低的情况下使用。如果要更加复杂的控制数据包的传输就需要使用扩展访问控制列表,他可以满足到端口级的要求。

二、扩展ACL

扩展访问列表可以检测数据包的源IP地址和目的IP地址,传输层或应用层协议(例如WWW,FTP等)和端口号进行过滤,使用 100 ~ 199以及2000~2699之间的数字作为表号.

命令:

access-list {100-199、2000-2699} {permit/deny}  protocol [source-ip source-wildcard destination-ip destination-wildcard] [operator port] [established] [log]

//中文: access-list ACL号 [permit|deny] [协议] [定义过滤源主机范围 定义过滤目的主机范围] [定义过滤目的端口]

[operator port]

扩展ACL尽可能用在靠近源地址的地方

【既然扩展的访问列表可以过滤每个特定的地址和协议,那么你不希望你的流量穿过整个网络后再被拒绝。通过将这样的列表放置在尽量靠近源地址的位置,可以在它使用宝贵的带宽之前过滤掉此流量】

示例一:

采用如图所示的网络结构。路由器连接了两个网段,分别为172.16.4.0/24,172.16.3.0/24。在172.16.4.0/24网段中有一台服务器提供WWW服务,IP地址为172.16.4.13.

实例1:禁止172.16.3.0的计算机访问172.16.4.0的计算机,惟独可以访问172.16.4.13上的WEB服务

(config)#access-list 101 permit tcp any host 172.16.4.13 eq www   //设置ACL101,容许源地址为任意IP,目的地址为主机172.16.4.13的80端口即web服务

(config)#int e 0//进入E0端口(因为扩展ACL尽量放在离源地址近的地方)

(config-if)#ip access-group 101 in//应用到接口E0的入方向

  设置完毕后172.16.3.0/24网段的计算机就只能访问172.16.4.0/24网段的172.16.4.13的WWW服务了,就算172.16.4.13开启了FTP服务也无法访问。所以扩展ACL有一个最大的好处就是可以保护服务器,外界仅可以访问ACL允许的端口(服务)

实例2 : 拒绝来自172.16.3.0去往172.16.4.0的FTP流量,允许其他所有流量

(config)#access-list 101 deny tcp 172.16.3.0  0.0.0.255 172.16.4.0 0.0.0.255 eq 21

(config)#access-list 101 permit ip any any

(config)#int e 0

(config-if)#ip access-group 101 in

实例3 : 拒绝来自172.16.3.5去往172.16.4.13的所有流量,允许其他所有流量

(config)#access-list 101 deny ip host 172.16.3.5 host 172.16.4.13

(config)#access-list 101 permit ip any any

(config)#int e 0

(config-if)#ip access-group 101 in

示例二:

(config)#access-list 101 permit tcp host 192.168.33.3 host 172.22.242.23 eq www
(config)#access-list 101 deny tcp any host 172.22.242.23 eq www
(config)#access-list 101 permit ip any any

(config)#interface FastEthernet0/0
(config-if)ip access-group 101 in

总结:扩展ACL功能很强大,他可以控制源IP,目的IP,源端口,目的端口等,能实现相当精准的控制,扩展ACL不仅读取IP包头的源地址/目的地址,还要读取第四层包头中的源端口和目的端口的IP。不过他存在一个缺点,那就是在没有硬件ACL加速的情况下,扩展ACL会消耗大量的路由器CPU资源。所以当使用中低档路由器时应尽量减少扩展ACL的条目数,将其简化为标准ACL或将多条扩展ACL合一是最有效的方法。

三、命名ACL

不管是标准访问控制列表还是扩展访问控制列表都有一个弊端,那就是当设置好ACL的规则后发现其中的某条有问题,希望进行修改或删除的话只能将全部ACL信息都删除。也就是说修改一条或删除一条都会影响到整个ACL列表。这一个缺点影响了我们的工作,为我们带来了繁重的负担。不过我们可以用基于名称的访问控制列表来解决这个问题。

命名标准ACL命令: 

(config)#ip access-list standard name

(config-std-nacl)#{permit /deny} source-ip source-wildcard [log]

例:

建立标准ACL命名为test:允许10.1.1.103通过,其他主机禁止

(config)#ip access-list standard test

(config-std-nacl)#permit host 10.1.1.103

建立标准ACL命名为test2:禁止10.1.1.103通过,允许其他所有主机。

(config)#ip access-list standard test2

(config-std-nacl)#deny host 10.1.1.103

(config-std-nacl)#permit any

接口应用(靠近目标,出方向)

(config)#int fa0/0

(config-if)#ip access-group test out

当需要将第二条命令的deny host 10.1.1.103单独删除,如果使用非命名ACL的话,整个ACL信息都会被删除掉正是因为使用了基于名称的访问控制列表,我们进入ip access-list standard test2后,可使用no deny host 10.1.1.103单独删除.

命名扩展ACL命令: 

(config)#ip access-list extended name

(config-ext-nacl)#{permit /deny} protocol [source-ip source-wildcard destination-ip destination-wildcard] [operator port] [established] [log]

例:

仅允许10.1.1.0网段的主机访问主机209.165.202.196的web服务

(config)#ip access-list extended web_only

(config-ext-nacl)#permit tcp 10.1.1.0 0.0.0.255 host 209.165.202.196 eq www

仅允许10.1.1.101访问所有主机80端口,其他所有主机禁止

(config)#ip access-list extended test01

(config-ext-nacl)#permit tcp host 10.1.1.101 any eq www

禁止所有主机访问209.165.202.197主机的23、26口,但允许访问其他端口

(config)#ip access-list extended test02

(config-ext-nacl)#deny tcp any host 209.165.202.197 eq 23

(config-ext-nacl)#deny tcp any host 209.165.202.197 eq 26

(config-ext-nacl)#permit tcp any any

接口应用(靠近源,入方向)

(config)#int fa1/0

(config-if)#ip access-group web_only in

命名ACL还有一个优点就是可以调整语句的顺序:

每新增一条语句,顺序号默认加10

例:

Router#show ip access-lists //显示ACL
Extended IP access list test
10 deny tcp any host 209.165.202.197 eq telnet
20 permit tcp any any

如果要在前面插入:

Router#conf terminal

Router(config)#ip access-list extended test

Router(config-ext-nacl)#5 deny tcp any host 209.165.202.197 eq 8080

结果:

Router#show ip access-lists

Extended IP access list test
5 deny tcp any host 209.165.202.197 eq 8080
10 deny tcp any host 209.165.202.197 eq telnet
20 permit tcp any any

如果要在中间插入:

Router#conf terminal

Router(config)#ip access-list extended test

Router(config-ext-nacl)#15 deny tcp any host 209.165.202.197 eq 7070

结果:

Router#show ip access-lists
Extended IP access list test
5 deny tcp any host 209.165.202.197 eq 8080
10 deny tcp any host 209.165.202.197 eq telnet
15 deny tcp any host 209.165.202.197 eq 7070
20 permit tcp any any

补充:

使用IP 标准ACL 来控制VTY 线路的访问.步骤如下:

1.创建个IP 标准ACL 来允许某些主机可以telnet

2.使用access-class 命令来应用ACL 到VTY 线路上

实例如下:

Router(config)#access-list 50 permit 172.16.10.3

Router(config)#line vty 0 4

Router(config-line)#access-class 50 in

如上,进入VTY 线路模式,应用ACL,方向为进来,即in.因为默认隐含的deny any,所以上面的例子,只允许IP 地址为172.16.10.3 的主机telnet 到router 上

一些验证ACL 的命令,如下:

1.show access-list:显示router 上配置了的所有的ACL 信息,但是不显示哪个接口应用了哪个

ACL 的信息

2.show access-list [number]:显示具体第几号ACL 信息,也不显示哪个接口应用了这个ACL

3.show ip access-list:只显示IP 访问列表信息

4.show ip interface:显示所有接口的信息和配置的ACL 信息

5.show ip interface [接口号]:显示具体某个接口的信息和配置的ACL 信息

6.show running-config:显示DRAM 信息和ACL 信息,以及接口对ACL 的应用信息

时间: 2024-08-09 19:52:27

Cisco-ACL详解(一)的相关文章

ASA nat转换详解与扩展ACL详解

AR1区 telnet AR2 经过ASA1 转换流量配置如下:ASA配置:ASA Version 8.4(2)!hostname ciscoasaenable password 8Ry2YjIyt7RRXU24 encryptedpasswd 2KFQnbNIdI.2KYOU encryptednames!interface GigabitEthernet0nameif insidesecurity-level 100ip address 192.168.10.254 255.255.255.

cisco vlan详解

Vlan 详解 一.作用 将同一网段的物理网络分隔为多个逻辑网络,限制广播泛洪范围 二.实现机制 1.交换机端口类型 访问链接(Access link)接口 只属于一个vlan,且仅向该vlan转发数据帧的端口. 接收数据:接收到报文时,如果有带有vlan tag,判断该tag与接收端口的pvid是否相同,相同则进入 vlan.不相同则直接丢弃.不tag的报文直接打上tag,进入交换机. 发送数据:带有vlan tag的报文,去掉报文vlan tag信息发送.不带vlan tag的情况不可能出现

用户和用户组权限,特殊权限,acl详解

目录与文件的权限意义: 权限对文件的意义: 文件是实际含有数据的地方,包含一般文本文件,数据库内容文件,二进制可执行文件 r:可读取此文件的实际内容,如可读取文本文件的文字内容等 w:可以编辑.新增.或者修改该文件的内容(但不含删除该文件),这里的修改等                     是对文件内容而言,是否可以删除文件要看该目录的权限 x:该文件具有可以被系统执行的权限,linux中文件是否可被执行,不是看其文件                       名,而是看权限 权限对目录的

Cisco 三层交换详解

当公司网络规模较小.划分的VLAN比较少时,可能单臂路由就可以满足各VLAN间的通信,但是当VLAN较多.网络规模比较大时.那么使用单臂路由技术就显得有点力不从心了,这是我们就要引入三层交换机了. 现在大多数新型的catalyst交换机都支持CEF(Cisco快速转发)多层交换,CEF是一种基于拓扑的转发模型,可预先将所有的路由选择信息加入到FIB( forWord information base,转发信息库)中,这样,交换机就能够快速查找路由选择信息. CEF--主要包括如下两个转发用的信息

高可用高性能负载均衡软件HAproxy详解指南-第二章(配置文件、关键字、ACL)

第二章:HAproxy配置文件详解以及HAproxy的ACL详解 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 上一篇:第一章:HAproxy简介及安装配置 目录 haproxy 配置文件详解 haproxy 配置文件中的关键字参考 haproxy的ACL 附:一份完整的HAproxy的配置文件 由于字体过多分开写的,全系列文章链接 第一章:HAproxy简介及安装配置 http://zhang789.

高可用高性能负载均衡软件HAproxy详解指南-第一章(简介、安装)

第一章:HAproxy简介及安装配置 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 目录 HAproxy简介 为什么要使用HAproxy haproxy 性能特点 负载均衡器的性能评估因素 安装HAproxy haproxy案例4:实现web负载 由于字体过多分开写的,全系列文章链接 第一章:HAproxy简介及安装配置 http://zhang789.blog.51cto.com/11045979/1

高可用高性能负载均衡软件HAproxy详解指南-第三章:HAproxy实例

第三章:HAproxy实例 对Linux有兴趣的朋友加入QQ群:476794643 在线交流 本文防盗链:http://zhang789.blog.51cto.com 上一篇:第二章:HAproxy配置文件详解以及HAproxy的ACL详解 目录 haproxy案例1:定义独立日志文件 haproxy案例2:haproxy统计页面的输出机制 haproxy案例3:动静分离示例: haproxy案例4:实现web负载 haproxy案例5:负载均衡MySQL服务 由于字体过多分开写的,全系列文章链

CISCO设备之端口聚合详解

最近发现MDT推出去的系统的有不同问题,其问题就不说了,主要是策略权限被域继承了.比如我们手动安装的很多东东都是未配置壮态,推的就默认为安全壮态了,今天细找了一下,原来把这个关了就可以了. CISCO设备之端口聚合详解

Oracle ACL (Access Control List)详解

在Oracle11g中,Oracle在安全方面有了很多的改进,而在网络权限控制方面,也有一个新的概念提出来,叫做ACL(Access Control List), 这是一种细粒度的权限控制.在ACL之前,我们对于有一些程序包,例如UTL_MAIL, UTL_SMTP等这些包,你可以利用这些包连接到外部的主机,而默认情况下,这些包都是都是赋予了public角色,所以可能会导致利用这些PL/SQL程序包的恶意工具,所以Oracle提出了一个新的概念来解决这个问题,那就是ACL. 在开始展开ACL之前

Cisco路由交换-NAT详解二

概述 上篇最后说了在cisco IOS配置NAT的时候我们会发现inside.outside.source.destination这样的参数,我们常用的就是inside和source参数,今天就让我们来看一下之其中的玄奥之处.在此之前我们需要先了解一些基本的概念 基本概念 内部本地地址 内部局域网中的IP地址,常见的A.B.C类中的私网地址,转换前的源地址 内部全局地址 NAT设备外部地址,转化后的源地址 外部本地地址 常规配置方式下此地址为访问的公网地址.反向思考此地址和内部本地地址相同 外部