您当前位置: 首页 » 网络安全 » IOS安全 » 网络安全 » 访问控制列表详解

访问控制列表详解

2014年11月22日 | 发表评论(0) 查看评论

Cisco IOS可以配置很多类型的ACL,下面是最常见也就是最常用的ACL类型;

  • 标准ACL
  • 扩展ACL
  • 命令的IP ACL
  • 锁和秘钥(动态ACL)
  • 自反ACL(Reflexive ACL)
  • Established ACL
  • 使用时间范围的时间 ACL (Time-Based ACL)
  • 分布式时 ACL
  • Turbo ACL
  • 限速ACL(rACL)
  • 设备保护ACL (I ACL)
  • 过境ACL (Transit ACL)
  • 分类ACL (Classification ACL)
  • 使用ACL调试流量

ACL可以应用于很多场合,其中最为常见是一下情形;

  • 过滤邻居设备间传递的路由信息;
  • 控制交互访问,一场阻止非法访问设备的行为—-例如对Console接口、Telnet 或者SSH访问实施控制;
  • 控制穿越设备的流量和网络访问;
  • 通过限制对路由器上某些服务的访问来保护路由器,比如HTTP(超文本传输协议)、SNMP(简单网络管理协议)及NTP(网络时间协议)等;
  • 为DDR(按需拨号)路由定义感兴趣流;
  • 为Ipsec VPN定义感兴趣流;
  • 能够以多种方式在IOS中实现QOS(服务质量)特性;
  • 在其他安全技术中扩展应用(比如TCP拦截和IOS防火墙);

ACL的方向:

  • 出:流量已经经过设备的处理,正在从路由器接口流出(也称出站流量),源是指流量的始发地(在路由器的另一侧),而目的则是指流量的去处(在路由器远端);
  • 入:已经达到路由器接口的流量(也称为入站流量),路由器正要对其进行处理,即根据目的地址进行转发,源是指流量从哪里发过来的(在达到路由器之前),而目的则是指流量的去处(在路由器的另外一侧);

 

1.标准ACL

标准ACL是最基本的ACL类型,它将配置在列表中的IP地址和数据包的源IP地址进行比较,以此来监控流量。标准ACL只能通过源IP地址指定需要放行和阻塞的流量。

用数字 的标准ACL语法格式如下。

access-list access-list-number {deny | permit } source {source-wildcard} [log]

注:命令语句中用大括号{}标识的部门是必选项,用中括号[]标识的部分是可选项;

当一个数据包与某个ACL条目发生匹配的时候,使用关键字log可以生成一个信息日志消息。设备会把所有和该ACL相匹配的数据包以日志的形式发送给Console接口、缓存或系统日志服务器。这个消息中包含了ACL编号、数据包处理结果的通告消息(被允许还是拒绝)、源地址、以及数据包的数量。

标准ACL编号的取值范围都在1~99之间,也可以取扩展范围1300~1999间的任意值;

 

用数字定义的标准ACL示例

Router(config)#access-list 1 permit 192.168.1.0 0.0.0.0

Router(config)#access-list 1 permit 139.65.0.0 0.0.255.255

(Note:implicit deny)

源/源的反掩码的设置如果为0.0.0.0/255.255.255.255,那么可以用关键字any来代替。全0位的反掩码也有省略写法,如10.1.1.1 0.0.0.0 也可写为host 10.1.1.1

在定义ACL以后,要把它应用到接口上(入方向或出方向)

Router(config)#interface <interface-name>

Router(config)#ip access-group {access-list-number | name } {in | out}

案例:

下面是使用标准 ACL的例子,该ACL过滤了所有源地址不是10.1.1.0/24的流量。这个例子除了一条permit语句之外,其后还有一个隐含的拒绝语句,这个隐含拒绝会阻塞其他所有流量。

1.定义一个标准的ACL

Router(config)#access-list 1 permit 10.1.1.0 0.0.0.255

2.将其应用到接口上面

Router(config)#interface Serial 0

Router(config)#ip access-group 1 in

2.扩展ACL

扩展ACL在过滤流量的时候可以更加具体的对流量进行定义,它可以基于源地址、目的地址、指定协议、端口和标记(flag)对流量实施过滤,针对各类协议定义,扩展访问列表的编号范围在100~199之间,也可以取扩展值2000~2699间的任意值。扩展ACL的语句格式如下所示:

  • 定义一个扩展的IP ACL

Access-list access-list-number[dynamic dynamic-name [timeout minutes ]] {deny | permit } protocol source source-wildcard destination destination-wildcard [precedence precedence ] [tos tos ] [log | log-input ] [time-range time-range-name] [fragments]

 

  • 定义一个扩展的TCP ACL

Access-list access-list-number[dynamic dynamic-name [timeout minutes ]] {deny | permit } tcp source source-wildcard [operator [port ]] destination destination-wildcard [operator [port] ] [established ] [precedence precedence ] [tos tos ] [log | log-input ] [time-range time-rage-name ] [fragments]

 

  • 定义一个扩展的 UDP ACL

Access-list access-list-number[dynamic dynamic-name [timeout minutes ]] {deny | permit } udp source source-wildcard [operator [port ]] destination destination-wildcard [operator [port] ] [established ] [precedence precedence ] [tos tos ] [log | log-input ] [time-range time-rage-name ] [fragments]

 

  • 定义一个扩展的ICMP(用户数据报协议)ACL

Access-list access-list-number[dynamic dynamic-name [timeout minutes ]] {deny | permit } icmp source source-wildcard destination destination-wildcard

[icmp-type ] [icmp-code] | icmp-message [precedence precedence ] [tos tos] [log |log-input ] [time-range time-range-name] [fragments]

 

  • 定义一个扩展的IGMP(internet组管理协议)ACL

Access-list access-list-number [dynamic dynamic-name [timeout minites ]] {deny | permit } igmp source source-wildcard destination destination-wildcard [igmp-type]

[precedence precedence ] [tos tos ] [log | log-input ] [time-range time-range-name] [fragments]

案例:

1.定义一个扩展ACL

Router(config)#access-list 101 permit tcp any host 172.16.1.1 eq smtp

Router(config)#access-list 101 permit tcp any any eq domain

Router(config)#access-list 101 permit udp any any eq domain

Router(config)#access-list 101 permit icmp any any echo

Router(config)#access-list 101 permit icmp any any echo-reply

2.将其应用在接口上面

Router(config)#interface Serial0

Router(config)#ip access-group 101 in

 

3.命名的IP ACL

Cisco IOS增加了可以使用名称来命名的ACL功能。这项功能可以应用在标准ACL和扩展ACL上面,也就是用一个名字代替数字来给ACL命名,所有其他参数都保存不变。这是在常规ACL基础上面添加的特性。定义命名的ACL可以使用下面的语法结构。

Router(confug)#ip access-list {standard | extended} access-list-name

下面例子中的ACL被命名为myacl,这个列表匹配所有来之网络192.16.1.10/24及来之主机172.65.1.1的流量。

1.命名的标准ACL

Ip access-list standard myacl

Permit 192.168.1.0 0.0.0.255

Permit host 172.65.1.1

(Note:implicit deny)

 

2.命名扩展的ACL

Ip access-list extended myacl

Permit tcp any host 172.16.1.1 eq smtp

Permit tcp any eq domain

Permit udp any eq domain

Permit icmp any any

(Note:implicit deny)

 

4.锁和秘要(动态ACL)

锁和密钥(也成为动态ACL)用于建立动态访问,这个动态访问使用了认证机制。可以为每个用户分别实施访问控制。是之可以达到不同的源/目的

锁和密钥特性需要使用这几种技术;Tennet协议,认证机制和扩展ACL;

建立锁和密钥访问的操作步骤如下:

  1. 配置一个扩展ACL来阻塞通过路由器的流量,但一定要放心所有主机去往这台路由器的telnet流量,这一步非常关键,因为用户必须要可以telnet路

路由器,这样才能打开访问条目,如果ACL 阻塞了所有的流量,整个过程就会因此而失败。

  1. 如果用户想让自己的流量能够穿越锁和密钥路由器,那么他必须持有效的证书。这样才能通过认证,然后设备才会相应地产生动态条目;

3.认证可以通过路由器本地实现,也可以通过TACACS+活Radius协议来远程实现(Cisco推荐使用TACACS+服务器实现认证功能)

4.在完成Telnet之后,路由器会断开telnet连接,在已经配置好的扩展ACL中会出现一个动态的条目,这个条目在特定时间内放行相对应得流量。

可以通过以下步骤配置锁和密钥访问,下列中的认证机制是利用本地路由器实现的;

配置一个用于认证的本地用户名。

username test password test123

在vty线下配置本地登录,这会出发认证处理;

line vty 0 4

login local

要自动启动access-enable命令,并设置超时时间参数,可以用以下方法之一来配置用户名;

1.配置access-enable 命令,并把超时时间和用户相关联,以此实现正对每个用户的访问控制;

username test autocommand access-enable host timeout 10

2.为所有Telnet上这台设备的用户配置一个全局超时时间值,这样做会使所有用户具有相同的超时时间。

line vty 0 4

login local

autocommand access-enable host timeout 10

注:上面例子中10 是ACL的空闲超时时间,动态ACL的绝对超时时间会覆盖这个值;

然后配置并应用一个扩展ACL,使用户登录到路由器时触发access-enable命令。这个动态开启的通道绝对时间最大可以设置为15分钟。15(分钟)

是最大超时时间,10(分钟)是最大空闲超时时间,15分钟后,这个动态条目就会移除, 不管当时这个条目是否正在使用或者是否有人还在通过它对端连接,可以通过配置源和目的地址、和/或协议/端口等细节来限制可以访问网络的用户,在下列中,当用户成功认证后。可以连接到192.168.1.1的SMTP服务器;

access-list 102 dynamic myacl timeout 15 permit tcp any host 192.168.1.1   eq smtp

分类:

IOS安全, 网络安全

| 标签:

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>