科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网网络频道ACL学习:自反访问列表引入和配置

ACL学习:自反访问列表引入和配置

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

三台路由器串联,要求阻止R3对R1的远程访问(telnet),但只能在R2上做。当R1登陆R3时,R1先向R3发起TCP请求,当这个请求数据包从R2的S2/2接口出来时匹配了REFOUT 列表的permit ip any any reflect REF 的这条语句。

作者:中国IT实验室 2007年9月19日

关键字: 路由器 ACL 思科安全 访问控制

  • 评论
  • 分享微博
  • 分享邮件

三台路由器串联,要求阻止R3对R1的远程访问(telnet),但只能在R2上做。R1可以对R3进行telnet登陆。

 1 底层配置

  R1

  interface Serial2/1

  p address 12.0.0.1 255.255.255.0

  router eigrp 90

  network 12.0.0.0 0.0.0.255

  o auto-summary

  R2

  interface Serial2/1

  p address 12.0.0.2 255.255.255.0

  interface Serial2/2

  p address 23.0.0.2 255.255.255.0

  router eigrp 90

  network 0.0.0.0

  o auto-summary

  R3

  interface Serial2/1

  p address 23.0.0.3 255.255.255.0

  router eigrp 90

  network 23.0.0.0 0.0.0.255

  o auto-summary

  2 在R2上做ACL 拒绝R3对R1的所有TCP连接,但不能影响R1对R3的telnet

  在这里我们先用扩展访问列表做一下,看能不能实现。

  r2(config)#access-list 100 deny tcp host 23.0.0.3 host 12.0.0.1

  r2(config)#access-list 100 permit ip any any

  r2(config)#int s2/2

  r2(config-if)#ip access-group 100 in / 将ACL应用到接口

  为了验证将R1和R3的VTY线路配置成直接登陆,无需密码。

  r1(config)#line vty 0 4

  r1(config-line)#no login

  r3(config)#line vty 0 4

  r3(config-line)#no login

  现在进行验证。

  r3#telnet 12.0.0.1

  Trying 12.0.0.1 ...

   Destination unreachable; gateway or host down

  在R3上无法telnetR1,访问列表起了作用。我们再去R1做一下验证。

  r1#telnet 23.0.0.3

  Trying 23.0.0.3 ...

   Connection timed out; remote host not responding

  这时,R1也无法telnet R3 这可不是我们所希望的结果。那为什么会产生这种结果呢?这是因为R1向R3发起telnet请求时,是R1的一个随机端口与R3的23号端口通信。R3收到这个请求后,再用自己的23号端口向R1的随即端口回应。在这个例子中,R1向R3的请求,R3可以收到。但当R3向R1回应时,却被R2上的ACL阻止了。因为R2的ACL的作用是阻止R3向R1的所有TCP连接。这个TCP回应也就被阻止掉了,所以就间接的造成了R1无法telnet到R3.

  综上所述,在R2上用扩展访问列表可以阻止R3主动向R1发起的TCP连接。但也阻止了R3被动向R1发的TCP回应。这是不合题意的。因此就目前而言,扩展访问列表无法满足这个需求。于是就引出了一个新型的访问列表―――自反访问控制列表。

  3 用自反访问列表解决此问题。

  注意:因为自反列表只能建立在命名访问控制列表中,所以这里只能用命名控制列表

  r2#sh ip access-lists

  Reflexive IP access list REF

   触发的自反列表项,匹配自反列表后自动产生

  Extended IP access list REFIN

  deny tcp host 23.0.0.3 host 12.0.0.1

  permit ip any any

  evaluate REF

   根据上面的自反列表项执行

  Extended IP access list REFOUT

  permit ip any any reflect REF

   建立自反列表

  r2(config)#int s2/2

  r2(config-if)#ip access-group REFIN in

   在进方向调用列表REFIN

  r2(config-if)#ip access-group REFOUT out

  /在出方向调用列表REFOUT

  下面进行检验

  r3#telnet 12.0.0.1

  Trying 12.0.0.1 ...

   Destination unreachable; gateway or host down

  R3无法登陆R1,这一步成功。再到R1上验证

  r1#telnet 23.0.0.3

  Trying 23.0.0.3 ...

   Connection timed out; remote host not responding

  R1也无法登陆R3,这个需求失败了,我们到R2上查看一下ACL

  r2#sh ip access-lists

  Reflexive IP access list REF

  permit tcp host 23.0.0.3 eq telnet host 12.0.0.1 eq 11013 (5 matches) (time left 285)

  Extended IP access list REFIN

  deny tcp host 23.0.0.3 host 12.0.0.1 (18 matches)

  permit ip any any (150 matches)

  evaluate REF

  Extended IP access list REFOUT

  permit ip any any reflect REF (5 matches)

  让我们仔细的分析一下这个过程,当R3登陆R1时,R2 in 方向的REFIN 列表的第一条语句 deny tcp host 23.0.0.3 host 12.0.0.1 起了作用,因此登陆失败。

  当R1登陆R3时,R1先向R3发起TCP请求,当这个请求数据包从R2的S2/2接口出来时匹配了REFOUT 列表的permit ip any any reflect REF 的这条语句。并触发了一条自反项。

  我们可以看到permit tcp host 23.0.0.3 eq telnet host 12.0.0.1 eq 11013 (5 matches) (time left 285) 这个自反项是由于触发自动产生的。它的意思是允许R3用自己的23端口对R1向自己发出的telnet请求作出回应,这个回应向R1的随机端口11013发出。我开始看到产生了这个自反项,就觉得R1应该能成功登陆R3.但事实并不是如此。这是因为虽然产生了这条自反项,但要使数据包按照这个自反项来走,还需要匹配 evaluate REF 这条语句。而这条语句是建立在列表REFIN 中。当R3向R1的回应数据包到达R2时先要匹配列表REFIN .这时我们可以看到这个数据包直接匹配上了deny tcp host 23.0.0.3 host 12.0.0.1 这条语句,而不再匹配下面的语句了。所以它就被直接拒绝了。evaluate REF 这条语句在这里实际上被架空了因此 控制列表语句的顺序是至关重要的。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章