Case Study:Fundamental
Reflexive ACL
Cisco IOS Release 11.3 引入 , 且只支持扩展的命名 IP ACL.
Reflexive ACL
用于在 router 上基于 IP 上层协议- "session" 进行网络流量过滤。
它是普通的带 established 后缀的 ACL 的一种扩展。
extablished 参数只能实现对 TCP 会话的过滤。它只是简单的匹配 TCP header 内的 ACK/RST bits 来查看会话是否结束 (ACK/RST bits 指示此包不是一个初始化包 ) 。且它不能对相应的源 / 目的地址进行匹配检测。

What Is a Reflexive Access List:
1>reflexive acl
与其它的 acl 相似。
2>reflexive acl
只包括临时的 ACEs, 这些临时的 ACEs 在一个 IP 会话初始时动态的建立,并且在会话结束时被移除。
3>reflexive acl
不是自己直接应用到相应的接口,而是嵌入到一个 extended named IP acl 中,由它直接应用到接口。
4>reflexive acl
没有一般 acl 中最后的隐含 deny any 语句,因为它是嵌入到其它 acl 中的。

About Reflexive Access Lists:
1>reflexive acl
提供基于上层 session 信息过滤 IP 数据包的功能。
它允许 permit 内网产生的初始 IP 流会话,但 deny 外网产生的初始 IP 流会话。
2>reflexive acl
只能用 extended named acl 来定义。
3>
可以将 relfexive acl 与其它 standard extended acl 共同使用。

Benefits of Reflexive Access Lists:
reflexive acl
提供了一种预防 spoofing certain denial-of-service ***的安全措施。


Where to Configure Reflexive Access Lists:
一般在网络边缘 router(firewall routers) 上配置 reflexive acl


Case Study:How Reflexive Access Lists Work
1>
当内网的一个设备初始化一个 IP 上层会话( UDP/TCP )到外网时, reflexive acl 被触发。
2>
reflexive acl 被触发时,它会产生一个新的,临时的 ACE 。这个条目会 permit 那些回到你网络的同一会话的流量。
临时的 ACEs 的特征:
(1)
所有的这些条目都是 permit 操作
(2)IP
上层协议与外出流量使用的相同
(3)
/ 目的地址与外出流量使用的相反
(4)
/ 目的 port 与外出流量使用的 port 相反。
(5)
当接口接收到会话的最后一个包时,这个临时的 ACE 就会被过期移除。
(6)
在一定时间内 (timeout) ,没 有检测到任何属于这个会话的流量,则这个临时的 ACE 被过期移除。
2>
目的地的数据流返回时, router 将响应数据流与临时的 ACE 比较,匹配则允许进入内网,否则丢弃。

When the Session Ends:
For TCP:
1>
在会话结束时移除临时的 ACE
TCP 会话在检测到 FIN bits 5 , 就移除该临时 ACE
2>
在一定时间内 (timeout) 没有检测到任何该 ACE 指定的会话,则该临时 ACE 就被移除。
For UDP:
由于 UDP 这些协议是无连接的,所以 packets 内没有会话 tracking 信息,所以只能根据 timeout 来移除相应的临时 ACE

Restrictions on Using Reflexive Access Lists:
Reflexive Access Lists
不支持那些在同一会话中变更 port number 的应用 . 如: FTP
所以在使用 FTP 时只能使用 Passive FTP 模式 .


Case Study:Command Syntax
!
interface  
 ip access-group {name} {in|out}
!
ip access-list extended name
 permit protocol any any reflect {name} [timeoutseconds]
ip access-list extended name
 evaluate name
!
ip reflexive-list timeout {seconds}
!

show access-list


Case Study:Prework-Before You Configure Reflexive Access Lists
Choosing an Interface: Internal or External:

Reflexive acl
经常应用于两种拓扑结构:
1> simple topology<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />


一般将 reflexive acl 配置于 external interface
即:所有内网都限制访问
2>DMZ topology


一般将 reflxeive acl 配置于 internal interface
即:允许部分内网被外网访问



Case Study:Outbound & Inbound
配置中和概念中的这些 inbound outbound 可能有些迷惑,其实这些都是以不同的参考点来说的:
配置 reflexive acl internal interface 上:
outbound
为流量进入到配置了 reflect acl 的接口 ,ip access-group {name} in
inboud
为返回的流量到达配置了 reflect acl 的接口 ,ip access-group {name} out
配置 reflexive acl external interface 上:
outbound
为流量进入到配置了 reflect acl 的接口 ,ip access-group {name} out
inboud
为返回的流量到达配置了 reflect acl 的接口 ,ip access-group {name} in



Case Study:Configuration Example


RTA:
interface Serial1/1
 ip address 192.168.1.5 255.255.255.252
 ip access-group s<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />1 in
 ip access-group s2 out
!
ip access-list extended s1
 permit ip 192.168.1.4 0.0.0.3 192.168.1.0 0.0.0.3 reflect ss
 permit ip any any
ip access-list extended s2
 evaluate ss
!
----------------------------------------------------------------------------
rtc#ping 192.168.1.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 44/77/140 ms
-----------------------------------------------------------------------------
rtb#ping 192.168.1.6

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.6, timeout is 2 seconds:
U.U.U
Success rate is 0 percent (0/5)
rtb#ping 192.168.1.5

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.5, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 32/45/80 ms
------------------------------------------------------------------------------
rta#sh access-lists
Extended IP access list s1
    10 permit ip 192.168.1.4 0.0.0.3 192.168.1.0 0.0.0.3 reflect ss (51 matches)
    20 permit ip any any (35 matches)
Extended IP access list s2
    10 evaluate ss
Reflexive IP access list ss
     permit icmp host 192.168.1.2 host 192.168.1.6  (59 matches) (time left 297)

注:
reflexive acl
是动态触发建立的,如果没有相应的流量经过, show access-list 是不显示这个空的 reflexive acl 的。


Case Study: 反向访问列表 的实际应用 ( 转自泰克 )

5 VLAN, 分别为 管理 (63) 、办公 (48) 、业务 (49) 、财务 (50) 、家庭 (51)
要求 : 管理可以访问其它 , 而其它不能访问管理 , 并且其它 VLAN 之间不能互相访问!
其它的应用不受影响,例如通过上连进行 INTERNET 的访问

方法一 : 只在管理 VLAN 的接口上配置 , 其它 VLAN 接口不用配置。
在入方向放置 reflect
ip access-list extended infilter
permit ip any any reflect cciepass
!
在出方向放置 evaluate
ip access-list extended outfilter
evaluate cciepass
deny ip 10.54.48.0 0.0.0.255 any
deny ip 10.54.49.0.0.0.0.255 any
deny ip 10.54.50.0 0.0.0.255 any
deny ip 10.54.51.0 0.0.0.255 any
permit ip any any
!应用到管理接口
int vlan 63
ip access-group infilter in
ip access-group outfilter out

方法二:在管理 VLAN 接口上不放置任何访问列表,而是在其它 VLAN 接口都放。
以办公 VLAN 为例:
在出方向放置 reflect
ip access-list extended outfilter
permit ip any any reflect cciepass
!
在入方向放置 evaluate
ip access-list extended infilter
deny ip 10.54.48.0 0.0.0.255 10.54.49.0 0.0.0.255
deny ip 10.54.48.0 0.0.0.255 10.54.50.0 0.0.0.255
deny ip 10.54.48.0 0.0.0.255 10.54.51.0 0.0.0.255
deny ip 10.54.48.0 0.0.0.255 10.54.63.0 0.0.0.255
evaluate cciepass
permit ip any any
!
应用到办公 VLAN 接口:
int vlan 48
ip access-group infilter in
ip access-group outfilter out
总结:
1
Reflect 放置在允许的方向上(可进可出)
2
放在管理 VLAN 上配置简单,但是不如放在所有其它 VLAN 上直接。
3)
如果在内网口上放置 : 在入上设置 Reflect
如果在外网口上放置 : 在出口上放置 Reflect

LAN WAN
-
inbound outbound


4)reflect
不对本地路由器上的数据包跟踪 , 所以对待进入的数据包时注意 , 要允许一些数据流进入