路由器访问控制列表详解

网络安全保障的第一道关卡

  对于许多网管员来说,配置路由器的访问控制列表是一件经常性的工作,可以说,路由器的访问控制列表是网络安全保障的第一道关卡。访问列表提供了一种机制,它可以控制和过滤通过路由器的不同接口去往不同方向的信息流。这种机制允许用户使用访问表来管理信息流,以制定公司内部网络的相关策略。这些策略可以描述安全功能,并且反映流量的优先级别。例如,某个组织可能希望允许或拒绝Internet对内部Web服务器的访问,或者允许内部局域网上一个或多个工作站能够将数据流发到广域网上。这些情形,以及其他的一些功能 都可以通过访问表来达到目的。
  
  
访问列表的种类划分

  目前的路由器一般都支持两种类型的访问表:基本访问表和扩展访问表。
  基本访问表控制基于网络地址的信息流,且只允许过滤源地址。
  扩展访问表通过网络地址和传输中的数据类型进行信息流控制,允许过滤源地址、目的地址和上层应用数据。
  表1列出了路由器所支持的不同访问表的号码范围。
  
标准IP访问表

  标准IP访问表的基本格式为:
  access-list [list number][permit|deny][host/any][sourceaddress][wildcard-mask][log]
  下面对标准IP访问表基本格式中的各项参数进行解释:
  1.list number---表号范围
  标准IP访问表的表号标识是从1到99。
  2.permit/deny----允许或拒绝
  关键字permit和deny用来表示满足访问表项的报文是允许通过接口,还是要过滤掉。permit表示允许报文通过接口,而deny表示匹配标准IP访问表源地址的报文要被丢弃掉。
  3.source address----源地址
  对于标准的IP访问表,源地址是主机或一组主机的点分十进制表示,如:198.78.46.8。
  4.host/any----主机匹配
  host和any分别用于指定单个主机和所有主机。host表示一种精确的匹配,其屏蔽码为0.0.0.0。例如,假定我们希望允许从198.78.46.8来的报文,则使用标准的访问控制列表语句如下:
  access-list 1 permit 198.78.46.8 0.0.0.0
  如果采用关键字host,则也可以用下面的语句来代替:
  access-list 1 permit host 198.78.46.8
  也就是说,host是0.0.0.O通配符屏蔽码的简写。
  与此相对照,any是源地证/目标地址0.O.O.O/255.255.255.255的简写。假定我们要拒绝从源地址198.78.46.8来的报文,并且要允许从其他源地址来的报文,标准的IP访问表可以使用下面的语句达到这个目的:
  access-list 1 deny host 198.78.46.8
  access-list 1 permit any
  注意,这两条语句的顺序;访问表语句的处理顺序是由上到下的。如果我们将两个语句顺序颠倒,将permit语句放在deny语句的前面,则我们将不能过滤来自主机地址198.78.46.8的报文,因为permit语句将允许所有的报文通过。所以说访问表中的语句顺序是很重要的,因为不合理语句顺序将会在网络中产生安全漏洞,或者使得用户不能很好地利用公司的网络策略。
  5.wi1dcardmask------通配符屏蔽码
  Cisco访问表功能所支持的通配符屏蔽码与子网屏蔽码的方式是刚好相反的,也就是说,二进制的O表示一个"匹配"条件,二进制的1表示一个"不关心"条件。假设组织机构拥有一个C类网络198.78.46.0,若不使用子网,则当配置网络中的每一个工作站时,使用于网屏蔽码255.255.255.O。在这种情况下,1表示一个 "匹配",而0表示一个"不关心"的条件。因为Cisco通配符屏蔽码与子网屏蔽码是相反的,所以匹配源网络地址198.78.46.0中的所有报文的通配符屏蔽码为:0.0.O.255。
  6.Log----日志记录
  log关键字只在IOS版本11.3中存在。如果该关键字用于访问表中,则对那些能够匹配访问表中的permit和deny语句的报文进行日志记录。日志信息包含访问表号、报文的允许或拒绝、源IP地址以及在显示了第一个匹配以来每5分钟间隔内的报文数目。使用log关键字,会使控制台日志提供测试和报警两种功能。系统管理员可以使用日志来观察不同活动下的报文匹配情况,从而可以测试不同访问表的设计情况。当其用于报警时,管理员可以察看显示结果,以定位那些多次尝试活动被拒绝的访问表语句。执行一个访问表语句的多次尝试活动被拒绝,很可能表明有潜在的黑客攻击活动。
  
  
扩展的IP访问控制列表

  顾名思义,扩展的IP访问表用于扩展报文过滤能力。一个扩展的IP访问表允许用户根据如下内容过滤报文:源和目的地址、协议、源和目的端口以及在特定报文字段中允许进行特殊位比较等等。一个扩展的IP访问表的一般语法格或   下面简要介绍各个关键字的功能:
  1.list number----表号范围
  扩展IP访问表的表号标识从l00到199。
  2.protocol-----协议
  协议项定义了需要被过滤的协议,例如IP、TCP、UDP、1CMP等等。协议选项是很重要的,因为在TCP/IP协议栈中的各种协议之间有很密切的关系,如果管理员希望根据特殊协议进行报文过滤,就要指定该协议。

  另外,管理员应该注意将相对重要的过滤项放在靠前的位置。如果管理员设置的命令中,允许IP地址的语句放在拒绝TCP地址的语句前面,则后一个语句根本不起作用。但是如果将这两条语句换一下位置,则在允许该地址上的其他协议的同时,拒绝了TCP协议。
  3.源端口号和目的端口号
  源端口号可以用几种不同的方法来指定。它可以显式地指定,使用一个数字或者使用一个可识别的助记符。例如,我们可以使用80或者http来指定Web的超文本传输协议。对于TCP和UDP,读者可以使用操作符 ""(大于)"="(等于)以及""(不等于)来进行设置。
  目的端口号的指定方法与源端口号的指定方法相同。读者可以使用数字、助记符或者使用操作符与数字或助记符相结合的格式来指定一个端口范围。
  下面的实例说明了扩展IP访问表中部分关键字使用方法:
  access-list 101 permit tcp any host 198.78.46.8 eq smtp
  access-list 101 permit tcp any host 198.78.46.3 eq www
  第一个语句允许来自任何主机的TCP报文到达特定主机198.78.46.8的smtp服务端口(25);第二个语句允许任何来自任何主机的TCP报文到达指定的主机198.78.46.3的www或http服务端口(80)。
  4.选项
  扩展的IP访问表支持很多选项。其中一个常用的选项有log,它已在前面讨论标准访问表时介绍过了。另一个常用的选项是fistahlishfid,该选项只用于TCP协议并且只在TCP通信流的一个方向上来响应由另一端发起的会话。为了实现该功能,使用estab1ished选项的访问表语句检查每个 TCP报文,以确定报文的ACK或RST位是否已设置。
  例如,考虑如下扩展的IP访问表语句:
  access-list 101 permit tcp any host 198.78.46.8 established
  该语句的作用是:只要报文的ACK和RST位被设置,该访问表语句就允许来自任何源地址的TCP报文流到指定的主机198.78.46.8。这意味着主机198.78.46.8此前必须发起TCP会话。
  5.其他关键字
  deny/permit、源地址和通配符屏蔽码、目的地址和通配符屏蔽码以及host/any的使用均与标准IP访问表中的相同。
   
管理和使用访问表

  在一个接口上配置访问表需要三个步骤:
  (1)定义访问表;
  (2)指定访问表所应用的接口;
  (3)定义访问表作用于接口上的方向。
  我们已经讨论了如何定义标准的和扩展的IP访问表,下面将讨论如何指定访问表所用的接口以及接口应用的方向。
  一般地,采用interface命令指定一个接口。例如,为了将访问表应用于串口0,应使用如下命令指定此端口:
  interface serial0
  类似地,为将访问表应用于路由器的以太网端口上时,假定端口为Ethernet0,则应使用如下命令来指定此端口:
  interface ethernet0
  在上述三个步骤中的第三步是定义访问表所应用的接口方向,通常使用ip access-group命令来指定。其中,列表号标识访问表,而关键字in或out则指明访问表所使用的方向。方向用于指出是在报文进入或离开路由器接口时对其进行过滤。如下的实例将这三个步骤综合在一起:
  
  intface serial0
  ip access-group 107 in
  access-list 107 remark allow traffic to tom's pc
  access-list 107 ip any host 198.78.46.8
  access-list 107 remark allow only web traffic to webserver
  access-list 107 tcp any host 198.78.46.12 eq 80
  access-list 107 remark block everything else
  access-list 107 deny any any
  
  在本例中,先使用interface命令指定串行端口0,并使用ipaccess-group命令来将访问表l07中的语句应用于串行接口的向内方向上。最后,输入6个访问表语句,其中三条访问表语句使用关键字remark,以提供关于列表中后继语句的注解说明。注意访问表中的最后一条语句,它表示了每个访问表相关的隐含denyall设置,并且如果不显式地列出是不会看到该语句的。如果读者希望从路由器的控制台端口相连的终端上直接输入这些命令和语句,则应该先使用EXEC特权命令。这个终端会话过程的实例如下图所示:
  
  此外,当读者配置访问表后使用IOS的show命令查看列表时,有时很容易被显示出来的内容所迷惑,这是由于当通配符屏蔽码位被置为1(无关)时,1OS将该访问表表项的IP地址部分的该位设置为二进制0。
  例如,输入如下的配置命令,用于创建一个扩展的IP访问表,并将其列表内容显示出来:
  
  在本例中,由于C类地址的通配符屏蔽码的主机子段被设置为全1(255),所以网络198.78.46.0上的主机地址198.78.46.20被自动转换为网段地址。

文章录入:csh    责任编辑:csh

(0)

相关推荐

  • 路由器访问控制列表详解

    网络安全保障的第一道关卡 对于许多网管员来说,配置路由器的访问控制列表是一件经常性的工作,可以说,路由器的访问控制列表是网络安全保障的第一道关卡.访问列表提供了一种机制,它可以控制和过滤通过路由器的不同接口去往不同方向的信息流.这种机制允许用户使用访问表来管理信息流,以制定公司内部网络的相关策略.这些策略可以描述安全功能,并且反映流量的优先级别.例如,某个组织可能希望允许或拒绝Internet对内部Web服务器的访问,或者允许内部局域网上一个或多个工作站能够将数据流发到广域网上.这些情形,以及其

  • Java可变参数列表详解

    Java可变参数列表详解 1.接受的传入参数情况: 如public void test(String ...args){...} 1)不使用参数,如test() 2)使用一个或多个参数,如test("1"); test("1","2"); 3)使用数组 test(new String[]{"1","2"}); 2.方法内部访问参数: 在test方法内部,我们可以像使用数组的访问方式一样来访问参数args.如

  • Android获取分享应用列表详解及实例

    Android获取分享应用列表详解及实例 如果在应用的AndroidManifest.xml中含有 ACTION_SEND 属性,那就证明该应用可以供第三方应用进行调用分享,那怎么获取函数该属性的分享列表了,这对我们做应用的非常有用:最近在做该功能,自己也做了下自定义的分享列表,用PopupWindow的方式弹出. 1.布局: popup_share.xml <?xml version="1.0" encoding="utf-8"?> <Linea

  • Android MVVM架构实现RecyclerView列表详解流程

    目录 效果图 导入引用 导入Recyclerview依赖 导入dataBinding引用 代码解析 建立实体类 建立RecyclerView子项 适配器 建立适配器 设置子项点击事件 adapter全部代码 建立VM层 子项点击事件的使用 VM层代码 数据与视图交互 效果图 导入引用 导入Recyclerview依赖 implementation 'androidx.recyclerview:recyclerview:1.1.0' 导入dataBinding引用 dataBinding { en

  • Java数据结构之散列表详解

    目录 介绍 1 散列表概述 1.1 散列表概述 1.2 散列冲突(hash collision) 2 散列函数的选择 2.1 散列函数的要求 2.2 散列函数构造方法 3 散列冲突的解决 3.1 分离链接法 3.2 开放定址法 3.3 再散列法 4 散列表的简单实现 4.1 测试 介绍 本文详细介绍了散列表的概念.散列函数的选择.散列冲突的解决办法,并且最后提供了一种散列表的Java代码实现. 数组的特点是寻址容易,插入和删除困难:而链表的特点是寻址困难,插入和删除容易.而对于tree结构,它们

  • C++类与对象深入之运算符重载与const及初始化列表详解

    目录 一:运算符重载 相等运算符重载 赋值运算符重载 小于运算符重载 二:const成员 const修饰类的成员函数 三:cin.cout重载 四:初始化列表 构造函数赋初值 初始化列表 explicit关键字 一:运算符重载 C++为了增强代码的可读性引入了运算符的重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型以及参数列表,其返回值类型与参数列表与普通函数类似. 函数名字为:关键字operator后面接需要重载的运算符符号 函数原型:返回值类型 operator操作符(参数列表)

  • SQL的常用数据类型列表详解

    数据类型 描述 CHARACTER(n) 字符/字符串.固定长度 n. VARCHAR(n) 或 CHARACTER VARYING(n) 字符/字符串.可变长度.最大长度 n. BINARY(n) 二进制串.固定长度 n. BOOLEAN 存储 TRUE 或 FALSE 值 VARBINARY(n) 或 BINARY VARYING(n) 二进制串.可变长度.最大长度 n. INTEGER(p) 整数值(没有小数点).精度 p. SMALLINT 整数值(没有小数点).精度 5. 存储数据的范

  • 数据库服务器构建和部署检查列表详解

    前言 我们可能经常安装和部署数据库服务器,但是可能突然忘记了某个设置,为后来的运维造成隐患.下面是国外大牛整理的的检查列表. 其实也包含了很多我们平时数据库配置的最佳实践.比如TEMPDB 文件的个数,比如数据库文件,日志文件如何存放,最大内存的设置等等.如果有补充的欢迎留言 正文 1. 机架和电缆服务器 确保每个电源插入不同的电源电路 果可能,请确保网络电缆已插入不同的网络交换机 2.SQL Server服务和SQL Server代理服务的使用域帐户. 在SQL Server 2012安装期间

  • Swift语言中的一些访问控制设置详解

    限制访问代码块,模块和抽象通过访问控制来完成.类,结构和枚举可以根据自己的属性,方法,初始化函数和下标来通过访问控制机制进行访问.常量,变量和函数的协议限制,并允许通过访问控制来访问全局和局部变量.应用于属性,类型及函数的访问控制可以被称为"实体". 访问控制模型是基于模块和源文件的. 模块定义为代码分配一个单独的单元,并且可以使用import 关键字导入.源文件被定义为一个单一的源代码文件,模块可访问多种类型和函数. 三种不同的访问级别是由 Swift 语言提供.它们分别是 Publ

  • Zend Framework路由器用法实例详解

    本文实例讲述了Zend Framework路由器用法.分享给大家供大家参考,具体如下: 路由是一个过程,在这个过程中它去除URI的端点(跟着基本URL的URI部分),并将其分解成参数来决定哪个模块.哪个控制器和哪个动作应该接受请求. 模块.控制器.动作.及其参数被打包到Zend_Controller_Request_Http对象. 使用路由器 为了正确使用路由器,必须对其进行初始化操作. 创建路由器可以通过前端控制器实例的getRouter()方法来实现.该方法不需要任何参数,执行该方法可以返回

随机推荐