Cisco Networks

본문 바로가기

Cisco Networks

Networks >> Cisco Networks
[목차]
제9장 Access List

(#1/17)

Notes:

  • Access List는 라우터를 경유하는 모든 packet에 대한 제어를 적용할 수 있는 것이다.
  • Access List를 적용하여 방화벽 기능과 같은 보안기능을 할 수도 있다.
  • IP Packet을 위한 Acces List에는 2가지가 있다.
    • Standard Access List
    • Extended Access List
  • Standard Access List는 IP Packet의 source address만을 검사하여 제어를 하는 것이다.
  • Extended Access List는IP Packet의 source 및 destination address 뿐만 아니라 Application port 번호등을 검사하여 제어를 한다.
(#2/17)

Notes:

  • access list는 global configuration mode에서 정의한다.
    • Router(config)# access-list 10 permit ..........
  • access list를 interface에 적용하는 방법은 특정 interface configuration mode에서 access-group이라는 명령어와 함께 해당 access list 번호를 선언하면 된다.
    • Router(config-if)# ip access-group 10 out
(#3/17)

Notes:

  • 위 flow chart는 특정 Interface를 통해 들어오는incoming packet을 점검하여 제어하는 과정을 보인 것이다. 특정 interface에 access list가 적용되어 있지 않으면 모든 packet을 해당 interface에서 받아 들인다.
  • 특정 interface에 access list가 적용되어 있으면 packet의 source address를 access list에 정의된 조건과 차례로 점검한다. 일치하는 경우 해당 packet을 deny 하든지 혹은 permit 하든지 한다. permit을 하는 경우는 해당 interface에서 받아 들인다.
  • 조건을 계속 점검했으나 일치하는 것이 없으면 기본적으로 packet은 차단된다. 여기에서 잊지말아야할 것은 access list가 적용되어 있을때 조건과 일치하는 것이 없으면 모든 packet은 차단된다는 사실이다.
(#4/17)

Notes:

  • 위 flow chart는 특정 Interface를 전달되려는 packet을 점검하여 제어하는 과정을 보인 것이다. 일단 해당 packet을 특정 interface로 전달하고 그 interface에 access list가 적용되어 있는지 확인한다. 적용되어 있지 않으면 해당 packet을 해당 interface에서 통과시킨다.
  • 해당 interface에 access-list가 정의되어 있으면 packet의 source address를 access list에 정의된 조건과 차례로 점검한다. 일치하는 경우 해당 packet을 deny 하든지 혹은 permit 하든지 한다. permit을 하는 경우는 해당 packet을 해당 interface에서 통과시킨다.
(#5/17)

Notes:

  • access-list command
    access-list-numbr
    • 해당 access-list를 구별하기 위한 번호. 1 ~ 99 까지 이용
    permit | deny
    • packet의 source-address가 access-list에 명시된 source-address와 일치할 경우 허용할 것인지 차단할 것인지 지정
    source-address-wildcard
    • source-address-wildcard의 bit가 0인 경우 packet의 source address와 access-list에 명시된 source-address가 일치해야 하는 것을 의미하고, bit가 1인 경우 무시되도 된다는 것을 의미한다. 따라서 source-address-wildcard가 0.0.0.0인 경우 packet의 source address와 access-list에 정의된 source-address가 완전히 일치해야 하는 것을 의미한다. source-address-wildcard가 255.255.255.255인 경우는 어떤 source-address든 상관없다는 뜻으로 any를 의미한다. 지정하지 않으면 0.0.0.0이 default이다.
  • access-group command
    in | out
    • 해당 access-list-number를 interface에서 incoming traffic에 적용할 것인지 outcoming traffic에 적용할 것인지 지정한다. 지정하지 않으면 out이 default 이다.
(#6/17)


Notes:


  • wildcard mask는 netmask을 역으로 해 놓은 것과 동일하다.
     
  • 다음의 문제들을 풀어보자
    address
    164.124.250.85
    164.124.110.0
    wildcard mask
    ?
    ?
    일치하는 것
    subnet 164.124.250.80/28
    net 164.124.0.0/19
(#7/17)

Notes:

  • 좀더 좁은 범위의 것을 먼저 선언
    access-list 10 permit 164.124.116.0 0.0.0.255
    access-list 10 deny 164.124.0.0 0.0.255.255
    access-list 10 permit any
  • 빈번히 조건을 만족시킬만한 것을 먼저 선언
    가령 164.124.116.0/24과 164.124.118.0/24로부터의 접근을 허용하고자 하는데
    164.124.116.0/24에 있는 시스템들이 보다 빈번히 접근할때
      access-list 10 permti 164.124.116.0 0.0.0.255
      access-list 10 permit 164.124.118.0 0.0.0.255
      access-list 10 deny 164.124.0.0 0.0.255.255
      access-list 10 permit any
  • default ‘deny any’
    가령 164.124.116.0/24만 허용하려고 할때 아래의 ‘access-list 10 deny any’는 불필요
      access-list 10 permit 164.124.116.0 0.0.0.255
      access-list 10 deny any
    가령 164.124.116.0/24만 차단하고 나머지는 허용하고자 할때 아래와 같이 선언했다면 결과는?
      access-list 10 deny 164.124.116.0 0.0.0.255
    -> 모든 packet이 차단됨. 이유는 default로 access-list 10 deny any가 선언되어 있기 때문.
    따라서 access-list 10 permit any를 선언해 주어야 한다.
      access-list 10 deny 164.124.116.0 0.0.0.255
      access-list 10 permit any

  • 다음에서 틀린 것이나 불필요한것은 ?
      access-list 10 permit 131108.5.17 0.0.0.0
      access-list 10 permit 0.0.0.0 255.255.255.255
      access-list 10 permit 131.108.0.0 0.0.255.255
      access-list 10 deny any
      access-list 10 deny 0.0.0.0 255.255.255.255
(#8/17)

. Notes:


    router(config)# access-list 10 permit    36.48.0.3
    router(config)# access-list 10 deny    36.48.0.0    0.0.255.255
    router(config)# access-list 10 permit    36.0.0.0    0.255.255.255
    router(config)# interface ethernet 0
    router(config-if)# ip access-group 10 in
(#9/17)

Notes:

    !routerD
    access-list 10 deny 130.120.0.0 0.0.255.255
    access-list 10 permit any
    interface ethernet e0
       ip access-group 10 in
(#10/17)

c Notes:

    !routerB
    access-list    10 permit    172.16.1.3    0.0.0.0
    access-list    10 deny    172.16.1.0    0.0.0.255
    access-list    10 deny    172.16.3.3    0.0.0.0
    access-list    10 permit    172.16.0.0    0.0.255.255
    interface    ethernet e2
    ip access-group 10 out
(#11/17)

Notes:

  • 다양한 정보를 가지고 조건을 검색하여 제어를 하므로 Standard Access List를 이용하는 것보다 보다 많은 기능을 구현할 수 있음
  • internet layer protocol
    • ip, icmp
  • transport layer protocol
    • tcp, udp
  • application layer protocol
    • ftp-data, ftp, telnet, smtp, dns, www, ....
  • routing protocol (application layer protocol에 속함)
    • rip, igrp, ospf,bgp
(#12/17)

Notes:

  • protocol option은 생략 가능하다.
  • standard access list의 적용과정과 비교할때 destination address, protocol, protocol option을 추가적으로 점검한다는 사실을 알 수 있다.
(#13/17)

Notes:

  • access-list-number는 100 ~ 199까지 이용
  • protocol keyword로는 ip, icmp, udp, tcp, igrp, eigrp, ospf, nos 등이 있으며, 0 ~ 255까지를 이용한다. ip는 다른 protocol을 모두 포함하는 가장 큰 범위의 것이다.
  • address에 대한 wildcard mask가 0.0.0.0인 경우 이것을 다음과 같이 다른 방법으로 표현할 수 있다.
    • 164.124.116.5 0.0.0.0 -> host 164.124.116.5
  • ICMP에 대한 access-list
    icmp-type
    • ICMP message type에 따라 제어가 가능하다. 0 ~ 255 까지가 있다. 생략 가능
    icmp-code
    • ICMP message type에 의해 filtering된 packet은 ICMP message code에 의해서 filtering될 수 있다. 0 ~ 255까지 있다. 생략 가능
    icmp-message
    • icmp-type과 icmp-code를 조합한 것을 알기 쉬운 keyword로 정의해 놓은 것으로 이것을 이용하면 icmp-type과 icmp-code를 입력해야 하는 불편과 복잡함을 피할 수 있다.
  • icmp-message keyword 
      administratively-prohibited
      information-reply
      port-unreachable
      alternate-address
      mask-reply
      reassembly-timeout
      conversinon-error
      mask-request
      redirect
      dod-host-prohibited
      mobile-redirect
      router-advertisement
      dod-net-prohibited
      net-redirect
      router-solicitation
      echo
      net-tos-redirect
      source-quench
      echo-reply
      net-tos-unreachable
      source-route-failed
      general-parameter-problem
      net-unreachable
      time-exceeded
      host-isolated
      network-unknown
      traceroute
      host-tos-redirect
      no-roon-for-option
      ttl-exceeded
      host-tos-unreachable
      option-missing
      unreachable
      host-unknown
      packet-too-big
       
      host-unreachable
      parameter-problem
       
(#14/17)

Notes:

  • operator
    lt, gt, eq, neq
  • source-port 및 destination port
    0 ~ 65535 까지 가능한데 잘 알려진 port번호에 대해서는 keyword로 지정 가능
  • established
    TCP segment내의 ACK 혹은 RST bit이 1로 설정되어 있는 경우를 말하는데
    이것은 데이타 요청에 대한 응답을 가리키는 것이다.
  • tcp port 번호에 대한 keyword
    bgp
    gopher
    sunrpc
    chargen
    hostname
    syslog
    daytime
    irc
    tacacs-ds
    discard
    klogin
    talk
    domain
    kshell
    telnet
    echo
    lpd
    time
    finger
    nntp
    uucp
    ftp
    pop2
    whois
    ftp-data
    pop3
    www
  • port에 대한 내용은 RFC1700 참고
(#15/17)

Notes:

  • established가 지원되지 않는 이유는 udp segment는 call connection 과정이 없고 전달한 데이타에 대한 ack 신호를 받지 않기 때문
  • udp port에 대한 keyword
    biff
    nameserver
    syslog
    bootpc
    netbios-dgm
    tacacs-ds
    bootps
    netbios-ns
    talk
    discard
    ntp
    tftp
    dns
    rip
    time
    dnsix
    snmp
    whois
    echo
    snmptrap
    xdmcp
    mobile-ip
    sunrpc
     
(#16/17)

Notes:

  • 외부에서 X로 메일만 보낼 수 있게 할때
      !routerA
      access-list 100 permit tcp any 128.88.1.0. 0.0.0.255 established
      access-list 100 permit tcp any host 128.88.1.2 eq smtp
      interface ethernet 1
        ip access-group 100 in
  • 외부에서 X로 메일만 보내게 하고, 128.88.0.0/16으로 nslookup 및 ping을 허용하려고 할때
  • !routerA
      access-list 100 permit tcp any 128.88.0.0 0.0.255.255 established
      access-list 100 permit tcp any host 128.88.1.2 eq smtp
      access-list 100 permit udp any any eq domain
      access-list 100 permit tcp any any eq domain
      access-list 100 permit icmp any any echo
      access-list 100 permit icmp any any echo-reply
      interface serial 0
         ip access-group 100 in
(#17/17)

Notes:

  • configuration 결과
      !router
      access-list 101 permit tcp any 203.252.1.0 0.0.0.255 established
      access-list 101 permit tcp any host 203.252.1.202 eq smtp
      access-list 101 permit tcp any host 203.252.1.202 eq www
      access-list 101 permit udp any host 203.252.1.202 eq domain
      access-list 101 permit tcp any host 203.252.1.202 eq domain
      access-list 101 permit udp any 203.252.1.0 0.0.0.255 gt 1023
      interface ethernet 0
         ip access-group 101 out
  • 위의 configuration에서”ip access-list 101 permit udp any 203.252.1.0 0.0.0.255 gt 1023”를 선언한 이유는 내부 이용자가 udp segment로 데이타를 보내주는 외부의 서버에 접속하는 것을 허용해 주기 위해서다.
  • access-list를 선언한 것을 확인하려면 다음과 같은 명령어를 이용하면 된다.
      router# show access-lists
      router# show ip access-list [access-list-number]
[목차]

Copyright © LEELAB.CO.KR. All rights reserved.