三. 路由器ACL列表
什么是访问列表
IP Access-list:IP访问列表或访问控制列表,简称IP ACL
telnet ip 端口号
IP ACL就是对经过网络设备的数据包根据一定的规则进行数据包的过滤。
设置访问列表的步骤
第一步,定义规则(哪些数据允许通过,哪些数据不允许通过)
第二步,将规则应用在路由器(或交换机)的接口上
访问控制列表的分类(区别在规则定义):
1、标准访问控制列表
2、扩展访问控制列表
标准访问列表
根据数据包源IP地址进行规则定义
扩展访问列表
根据数据包中源IP、目的IP、源端口、目的端口、协议进行规则定义
访问列表规则的应用
路由器应用访问列表对流经接口的数据包进行控制
1.入栈应用(in)
经某接口进入设备内部的数据包进行安全规则过滤
2.出栈应用(out)
设备从某接口向外发送数据时进行安全规则过滤
一个接口在一个方向只能应用一组访问控制列表
IP ACL的基本准则
一切未被允许的就是禁止的
定义访问控制列表规则时,最终的缺省规则是拒绝所有数据包通过
按规则链来进行匹配
使用源地址、目的地址、源端口、目的端口、协议、时间段进行匹配
规则匹配原则
从头到尾,至顶向下的匹配方式
匹配成功马上停止
立刻使用该规则的“允许/拒绝……”
访问列表规则的定义
访问控制列表 ACL 是控制网络访问的基本手段,它可以限制网络流量,提高网络性能。ACL 使用包过滤技术来达到访问控制目的。ACL 分为标准 ACL和扩展 ACL 两种,标准访问
控制列表的编号为1~99和1300---1999之间的数字,标准访问控制列表只使用数据包的源地址进行过滤,扩展的 ACL 的编号使用100~199以及 2000----2699 之间的数字。
每一个正确的访问列表都至少应该有一条permit语句, 具有严格限制条件的语句应放在访问列表所有语句的最上面, 在靠近源的网络接口上设置扩展 ACL,在靠近目的的网络接口上设置标准的 ACL。
ACL的基本用途是限制访问网络的用户,保护网络的安全。
ACL一般只在以下路由器上配置:
内部网和外部网的边界路由器
两个功能网络交界的路由器
限制的内容包括:
允许哪些用户访问网络(根据用户的IP地址进行限制)
允许用户访问的类型,如允许http和ftp的访问,但拒绝Telnet的访问。(根据用户使用的上层协议进行限制)
-----------------------------------------------------------------------------
定义规则:每条ACL语句的形式为:
Router(config)#access-list 表号  处理方式  条件
ACL表号用于区分各访问控制列表。
处理方式:取值有permit(允许)和deny(拒绝)两种。当数据包与该语句的条件相匹配时,用给定的处理方式进行处理。
条件:每条ACL语句只能定义一个条件。
例:
access-list 1 permit 10.0.0.0 0.255.255.255
access-list 1 deny 20.0.0.0 0.255.255.255
  第一句允许源地址为10.*.*.*的数据包通过
  第二句拒绝源地址为20.*.*.*的数据包通过
应用ACL
如果只是定义了ACL,它还不会起任何作用,必须把ACL应用到一个接口上才能起作用。
应用ACL:
    Router(config)#interface 接口号
    Router(config-if)#ip access-group 表号 [in|out]
in:表示数据包进入此接口时使用ACL进行过滤;
out:表示数据包在离开此接口时使用ACL进行过滤。
通配符掩码
在ACL语句中,当使用地址作为条件时,它的一般格式为:地址  通配符掩码
通配符掩码决定了地址中的哪些位需要精确匹配,哪些位不需要匹配。
通配符掩码是一个32位数,采用点分十进制方式书写。匹配时,“0”表示检查位,“1”表示不检查位。
如:192.168.1.1  0.0.255.255
表示检查前16位,忽略后16位,所以这个条件表示的地址是192.168.*.*
当条件为所有地址时,如果使用通配符掩码应写为:0.0.0.0 255.255.255.255这时可以用“any”这个条件。
Router(config)#access-list 1 permit 0.0.0.0 255.255.255.255
Router(config)#access-list 1 permit any
上面两句话是等价的
host关键字
当条件为单一IP地址时,如果使用通配符掩码应写为:IP地址 0.0.0.0,这时可以用“host”关键字
Router(config)#access-list 1 permit 200.1.1.5 0.0.0.0
Router(config)#access-list 1 permit host 200.1.1.5
ACL语句的增加与删除
ACL由一系列访问控制语句组成。
当创建一个ACL列表后,新增加的语句总是放到列表最后
无法删除某一条ACL语句,只能删除整个ACL列表
-------------------------------------------------------------------------
标准ACL
使用IP包中的IP地址进行过滤。
在思科的路由器上使用的ACL编号为1~99以及1300~1999
第一步,定义访问控制列表,命令如下:
  Router(config)# access-list access-list-number(通配符掩码) { permit | deny } source(源地址)  [source-wildcard(通配符掩码)] [log(生成日志文件)]
第二步,把标准 ACL应用到一个具体接口:
    Router(config)#  int interface
    Router(config-if)#  { protocol } access-group access-list-number {in | out}
例如
Router(config)# access-list 1 permit 10.0.0.0  0.255.255.255 
//允许源地址为10.0.0.0网段的数据通过
Router(config)#  int s1/1
Router(config-if)#  ip  access-group 1 out
-------------------------------------------------------------------------------
扩展ACL
可以控制IP,目的IP,源端口,目的端口等。
在思科路由器上,扩展ACL的编号为100~199以及2000~2699
第一步,定义访问控制列表,命令:
Router(config)#  access-list access-list-number { permit | deny } protocol(指定协议类型) source source-wildcard [operator operand] destination destination-wildcard [ operator operand]  [ established ] [log]
operator lt, gt, eq, neq(小于, 大于, 等于, 不等于)
operand:一个端口号或应用名称
established如果数据包使用一个已建立连接,则允许TCP信息通过
例:Router(config)# access-list 101 deny  tcp  172.16.4.0  0.0.0.255    172.16.3.0  0.0.0.255  eq  20
第二步,把扩展 ACL应用到一个具体接口:
Router(config)#  int  interface
Router(config-if)# { protocol } access-group access-list-number {in | out}
例如
Router(config)#  int f0/0
Router(config-if)# ip access-group 1 out
------------------------------------------------------------------------------
命名ACL的配置
命名ACL——在标准ACL和扩展ACL中,使用名字代替ACL编号。
命名ACL好处:
字母数字串直观表示特定ACL。
不受99条标准ACL和100条扩展ACL限制。
修改方便,无需删除后再重新配置。
第一步,创建一个ACL命名,要求名字字符串要唯一。
Router(config)#  ip access-list { standard | extended } name
第二步,定义访问控制列表,命令格式:
1)命名的标准ACL
Router(config-sta-nacl)# { permit | deny } source  [source-wildcard] [log]
2)命名的扩展ACL
Router(config-sta-nacl)# { permit | deny }  protocol source  [source-wildcard] [operator operand] destination destination-wildcard [ operator operand]  [ established ] [log]
第三步,把 ACL应用到一个具体接口上:
Router(config)#  int interface
Router(config-if)#  { protocol } access-group  name  {in | out}
命名ACL配置实例
Router(config)# access-list extend server-protect
Router(config-ext-nad)# permit tcp  10.1.0.0  0.0.255.255    host 10.1.2.20  eq  www