ACL(Access Control List)?

ACL?

ACL(Access Control List)은 개개의 사용자들이 디렉토리나 파일과 같은 특정 시스템 개체에 접근할 수 있는 권한을 컴퓨터의 운영체계에 알리기 위해 설정해 놓은 표라고 할 수 있다. (라우터 인터페이스에 적용된다)

각 개체는 접근 제어 목록을 식별수 있는 보안 속성을 가지며, 그 목록은 접근권한을 가진 각 시스템 사용자들을 위한 엔트리를 가진다(Read, Write, Execute).

쉽게 말해서, ACL은 권한관리 테이블이라고 이해하면 될 것이다. ACL의 주요 기능은 아래와 같다.

  • 자신의 표에 등록되지 않은 트래픽이 네트워크를 경유하거나 접근 하려고 하는 경우에 차단
  • 허가되지 않은 이용자가 라우터를 포함한 네트워크의 특정 자원을 접근하려는 것을 차단
  • Routing Table Update시 Routing Table의 어느 부분을 전달하지 않게 하고자 할 때 이를 차단
  • Access List를 이용하여 방화벽 기능과 같은 보안 기능을 할 수도 있음


ACL 사용원칙

  • 트래픽이 많이 발생되는 것을 가장 위에 배치
  • 범위가 적은 것을 먼저 구성
  • no access-list 10을 실행하면 모든 list가 삭제


ACL 종류

StandardExtended 라는 두가지의 타입이 존재한다. 나누는 기준은 필터링에 사용되는 옵션이다.

  • Standard Access List
    IP Packet의 source address만을 검사하여 제어
  • Extended Access List
    IP Packet의 source 및 destination address 뿐만 아니라, Application port번호 등을 검사하여 제어


Standard Access List

  • Packet의 헤더에서 Source IP만을 검사
  • Access List Number는 1~99까지 사용
  • 좁은 범위의 것을 먼저 적용
  • 해당되는 경우가 많은 조건을 먼저 선언
  • 기본적으로 마지막을 deny any를 반드시 추가(모든 아이피 거부)
  • 중간의 임의의 값을 수정할 수 없다(조건을 지우거나 추가할 시 마지막에 추가)
형식

router # access-list [access-list-number] {permit | deny} [source address wildmask | any]

1
2
3
4
5
router # access-list 10 permit 192.168.0.0 0.0.255.255		// 192.168.0.0 네트워크의 모든 호스트
router # access-list 55 deny 168.126.66.0 0.0.0.255		// 168.126.66.0 네트워크의 모든 호스트
router # access-list 25 permit any						// 모든 IP 허용
router # access-list 11 permit 122.58.5.203 0.0.0.0		// 122.58.5.203 단일 호스트 (0.0.0.0은 생략가능)
router # access-list 12 deny 255.255.255.255				// 모든 IP 거부(모든 리스트의 마지막룰에 기본적으로 추가)


Extended Access List

  • Source Address 및 Destination Address를 점검하여 제어
  • Internet Layer Protocol 및 Transport Layer Protocol 종류를 점검하여 제어 (icmp, igmp, tcp, udp인 경우 추가적인 정보 명시 필요)

Access List Exist > Source Address match > Destination Address match > Protocol match > Protocol option match > 제어적용 순으로 확인

형식

Router(config) # access-list [access-list-number] {permit | deny} {protocol | protocol-keyword} {source wildcard | any} {destination wildcard | any} {protocol-options}

  • Access-list-number는 100~199 까지 이용
  • Protocol Keyword로는 ip, icmp, udp, tcp, tgrp, eigrp, ospf, nos등이 있으며 0~255 까지 이용


ICMP Protocol에 대한 Extended Access List

Router(config) # access-list [access-list-number] {permit | deny} icmp {source wildcard | any} {destination wildcard | any} {icmp-type[icmp-code] | icmp message}

  • icmp-type : ICMP Message Type에 따라 제어가 가능
  • icmp-message : icmp-typeicmp-code를 조합한 것을 알기 쉬운 Keyword로 정의하여 놓은 것


TCP Protocol에 대한 Extended Access List

Router(config) # access-list [access-list-number] {permit | deny} tcp {source wildcard | any} {destination wildcard | any} {operator destination-port | destination-port} [established]

  • tcp port number 혹은 keyword로 제어 가능
  • Established가 지원
  • Operator : lt, gt, eq, neq


UDP Protocol에 대한 Extended Access List

Router(config) # access-list [access-list-number] {permit | deny} udp {source wildcard | any} {operator source-port | source-port} {destination wildcard | any} {operator destination-port | destination-port}

  • udp port혹은 keyword로 제어 가능
  • Udp segment는 Call connection 과정이 없고 전달한 데이터에 대한 ack를 받지 않기 때문에 Established가 지원되지 않음



ACL 설정의 특징

image

Inbound

패킷이 들어오면 가장 먼저 ACL List를 확인하여 허용이 된 패킷만 라우팅 테이블을 확인할 수 있도록 처리해주고 허용되지 않은 패킷은 버려진다. 따라서 불필요한 패킷까지 처리할 필요가 없도록 한다.

Outbound

라우터에서 처리하여 내보낼 패킷을 ACL에 매칭시키기 전에 라우팅 테이블을 먼저 확인한다. ACL은 각각 인터페이스에 설정이 되어있고 설정된 내용이 같지 않기 때문에, 라우팅 테이블을 확인하여 어떤 인터페이스로 나가는지를 확인하고 그 인터페이스에 설정된 ACL로 인해 필터링 되도록한다.


ACE

ACL은 사용자의 이름이나 사용자 그룹으로 이루어지는 하나 이상의 ACE(접근통제 엔트리)를 가진다. 사용자는 프로그래머, 테스터 등과 같이 그 역할을 지칭하는 이름이 될 수도 있다.


역할 Read Write Execute
프로그래머 O O O
테스터 O   O



참고 : http://isstory83.tistory.com/18