본문 바로가기

네트워크/네트워크이론

[라우터] ACL


ACL ( Aceess Control List ) 이란?
- 원하지 않는 트래픽이 네트워크를 경유하거나 접근 할 수 있는데 이 것을 차단하는데 사용
- 허가되지 않은 이용자가 라우터를 포함한 네트워크의 특정 자원을 접근하려는 것을 차단
- Routing Table Update시 Routing Table의 어느 부분을 전달하지 않게 하고자 할 때 이를 차단
- Access List는 라우터를 경유하는 모든 packet에 대한 제어를 적용할 수 있는 것
- Access List를 이용하여 방화벽 기능과 같은 보안 기능을 할 수도 있다.

< ACL의 사용 원칙 >
- 트래픽이 많이 발생되는 것을 가장 위에 배치한다.
- 범위가 적은 것을 먼저 구성한다.
- no accss-list 10 을 실행하면 모든 list가 삭제된다.

< ACL의 종류 >
- Standard Access list
- Extended Access list

Standard Access list는 IP Packet의 source address만을 검사하여 제어하는 것
Extended Access list는 IP Packet의 source 및 destination address 뿐만 아니라
  Application port 번호 등을 검사하여 제어한다

< Standard Access List >
- 패킷의 헤더에서 Source IP만을 검사한다
- Access list Number 는 1~99까지 사용
- 좁은범위의 것은 먼저 적용
- 해당되는 경우가 많은 조건을 먼저 선언
- 기본적으로 마지막을 deny any를 반드시 추가한다.
- 중간의 임의의 값을 수정할 수 없다 ( 조건을 지우거나 추가할 시 마지막에 추가한다. )

< Standard Access list의 형식 >
router # access-list  access-list-number { permit | deny } [ source address  wildmask  |  any ]
ex) 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 거부 (모든 리스트의 마지막룰에 기본적으로 추가)

< Standard Access List의 사용 예 >
R3(config)# access-list 10 permit 192.168.1.100 0.0.0.255      // access-list 10 : 10번 목록 사용
   즉, 192.168.1.100 만 패킷 전송을 허용하겠다고 선언한다. 만약 차단하겠다는 명령어는 Deny이다.
R3(config)# int s0/1
R3(config-if)# ip access-group 10 in                  // In_Traffic을 제어할 것인지 Out_Traffic을 제어할 것인지 결정
   Access list를 구성할 경우 Default는 deny이다. 만약 특정 IP만 Deny로 설정하고 나머지는 Permit을 할 경우
R3(config)# access-list 10 deny 192.168.1.100 0.0.0.255       // 192.168.1.100을 뺀 나머지 모든 ip를 허용한다는 의미이다.

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

< Extended Access List 적용 과정 >


Protocol Option은 생략 가능
Standard Access List의 적용 과정과 비교할 때 Destication Address, Protocol, Protocol Option을 추가적으로 점검한다.

< IP Extended Access List 명령 >
- 일반적인 형태
  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, igrp, eigrp, ospf, nos등이 있으며 0~255까지 이용
  ( ip는 다른 Protocol을 모두 포함하는 가장 큰 범위 )

- 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-type : ICMP Message Type에 의헤 Filtering된 Packet은 ICMP Message Code에 의해
   Filtering 될 수 있다.
  icmp-message : icmp-type과 icmp-code를 조합한 것을 알기 쉬운 Keyword로 정의하여 놓은 것으로 이것을 이용하면
   icmp-type과 icmp-code를 입력해야 하는 불편과 복잡함을 피할 수 있다.

- 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가 지원 
 ( TCP Segment 내의 ACK 혹은 RST bit이 1로 설정되어 있는 경우를 뜻하는 데, 이것은 데이터 요청에 대한 응답을
   가리키는 것이다.)
 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로 제어 가능
  established가 지원되지 않는 이유는 UDP Segment는 Call Connetion 과정이 없고 전달한 데이터에 대한 ack를 받지
   않기 때문이다.

< Extended Access List의 사용 예 >
- 외부에서 X로 메일만 보낼 수 있게 할 경우

Router A
access-list 100 permit tcp any 128.88.1.0 0.0.0.255 established
access-list 100 permit any host 128.88.1.2 eq stmp
interface ethernet 1
ip access-group 100 in

- 외부에서 X로 메일만 보내게 하고, 128.88.0.0/16으로 nslookup 및 ping을 허용하려고 할 경우


Router A
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
access-list 100 permit udp any any eq domain
access-list 100 permit tcp any any eq domail
access-list 100 permit icmp any any echo
access-list 100 permit tcmp any any echo-reply
interface serial 0
ip access-group 100 in

- 외부에서는 203.252.1.202로 nslookup, 인터넷 메일, 웹서비스만 접속 할 수 있게 하고 203.252.1.0/24에
  있는 모든 
시스템들은 외부의 서비스를 이용할 수 있도록 할 경우

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     
  // 내부 이용자가 udp segment로 데이터를 보내주는 외부의 서버에 접속하는 것을 허용해 주기 위하서이다.
intergace ethernet 0
ip access-group 101 out

access-list를 선언한 것을 확인하려면 다음과 같은 명령어를 이용한다.
Router# show access-lists
Router# show ip access-list [access-list-numner]

< 원본 : http://blog.naver.com/cafca23?Redirect=Log&logNo=90048750084 >

< 원본 : http://blog.naver.com/menkib?Redirect=Log&logNo=70014002622 >