ACL (Access Control List) 이란?

- 라우터를 중심으로 IN, OUT 패킷의 헤더를 검사하여 IP 주소, 패킷 종류에 따라 트래픽을 제어한다.

- 단, 라우터에서 자체 생성하는 트래픽에 대한 접근 제어는 불가능하다.

- 패킷 접근 제어 항목에 따라 크게 Standard ACL Extended ACL 로 분류된다.

- ACL 을 사용할 때 별도의 접근 제어 항목 언급이 없다면, 기본적으로 Implicit deny (암묵적 접근 거부) 로 설정된다.

 

1) Standard ACL (표준 ACL) : 1 ~ 99 번까지의 number 를 사용하며, 출발지 IP 주소만을 참고하여 필터링을 수행한다.

 

Router(config)# access-list access-list-number {permit | deny} 출발지 IP 주소 [wildmask]

 

2) Extended ACL (확장 ACL) : 100 ~ 199 번까지의 number 를 사용하며, 출발지 및 도착지 IP 주소 + 포트 번호 + 프로토콜을 조합하여 필터링을 수행한다.

 

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

 

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

 

- log 옵션 : 패킷 필터링 규칙에 부합하여 Console 로 보내는 Logging 기록을 저장하라는 의미이다.

- established 옵션 : tcp 패킷을 필터링하는 경우에만 사용되며, 필터링에 부합하는 경우 회선을 단방향으로 연결하라는 의미이다.

 

 

ACL 작성 유의 사항

- access-list 는 순차적으로 적용되므로, 작성 순서에 유의해야 한다.

- deny 규칙을 먼저 설정한 후, 마무리에 permit 규칙을 설정한다.

- 패킷 필터링 규칙에 일치되는 경우, 더 이상의 엔트리 비교 없이 해당 규칙을 즉시 실행한다.

- ACL 작성 후, 인터페이스에 해당 규칙의 IN / OUT 을 적용해주어야 한다. 기본 값은 OUT 이다.

- 부분 수정이 불가능하므로, 수정이 필요한 경우 처음부터 순차적으로 재작성 해야한다.

- 만약, ACL 의 맨 마지막 엔트리로 permit any 를 작성하지 않는다면 ACL 항목에 없는 패킷들은 모두 deny 된다.

 

 

Standard ACL 설정

다음과 같이 토폴로지를 구성하여, 대구에서 서울로 향하는 ping 만을 막고자 한다. (IP 설정 과정은 생략한다.)

 

Router(config)# access-list 1 deny 30.30.30.0 0.0.0.255
Router(config)# access-list 1 permit any
Router(config)# int f0/0
Router(config-if)# ip access-group 1 out
Router# show ip access-lists -> ACL 정책 확인

 

다음과 같이 ACL 을 작성하여, 30.30.30.0/24 네트워크 대역의 대구 트래픽을 서울로 향하지 못하게 하며 그 외 네트워크 대역은 모두 접근을 허용하도록 한다.

 

그 결과, 대구에서 서울로 향하는 ping 통신은 필터링되어 목적지로 도달하지 못하는 것을 확인할 수 있다.

 

하지만, 다른 네트워크 대역의 트래픽은 정상적으로 서울로 향하고 있음을 확인할 수 있다.

 

*주의*

왜 int f0/1 인터페이스에 ACL 정책을 설정하면 정상 동작하지 않을까?

 

Router(config)# access-list 1 deny 30.30.30.0 0.0.0.255
Router(config)# access-list 1 permit any
Router(config)# int f0/1
Router(config-if)# ip access-group 1 in
Router# show ip access-lists -> ACL 정책 확인

 

다음과 같이 설정하게 되는 경우, int f0/1 인터페이스로 들어가는 30.30.30.0/24 대역의 패킷들이 모든 곳으로의 트래픽 이동이 제한되기 때문이다.

 

결과적으로, 대구에서 모든 곳으로의 ping 통신이 불가능한 것을 확인할 수 있다.

 

 

Extended ACL 설정

다음과 같은 토폴로지를 작성하여, 192.168.1.20 의 IP 주소를 사용하는 PC 에서 DNS 서비스를 이용할 수 없도록 설정하고자 한다. (IP 설정 및 Routing 설정 과정은 생략한다.)

 

현재, DNS 서버의 설정 사항은 다음과 같다.

 

또한, WEB 서버 기본 웹 페이지의 설정 사항은 다음과 같다.

 

아직 ACL 구문이 작성되지 않은 상태이므로, 192.168.1.20 주소의 PC 1 에서 도메인으로 웹 페이지 접속이 가능한 것을 확인할 수 있다.

 

마찬가지로, 도메인을 활용한 ping 통신도 가능하다.

 

결과적으로 ACL 구문이 작성되지 않은 현재, PC1 에서는 DNS 서비스를 정상적으로 사용할 수 있음을 확인할 수 있다.

 

Router(config)# access-list 100 deny udp host 192.168.1.20 any eq 53
Router(config)# access-list 100 permit ip any any
Router(config)# int f0/0
Router(config-if)# ip access-group 100 in

 

이제, 다음과 같이 ACL 구문을 작성하여 PC1 의 도메인 서비스 이용을 제한하고자 한다. 53 / UDP 포트를 사용하는 출발지가 192.168.1.20 인 DNS 패킷을 도착지에 상관없이 모두 차단하며, 나머지 주소들은 모든 서비스 통신이 가능하도록 설정한다.

 

ACL 작성 후에도, 도메인이 아닌 IP 주소로의 웹 페이지 접속 및 ping 통신은 여전히 가능한 것을 확인할 수 있다.

 

단, PC1 에서 DNS 서버를 통해 도메인을 이용하는 통신이 불가능해진 것을 확인할 수 있다.

 

PC0 의 DNS 서비스 이용
PC2 의 DNS 서비스 이용
PC3 의 DNS 서비스 이용

또한, PC1 을 제외한 다른 PC 들에서는 DNS 서버를 거치는 통신이 정상적으로 이루어지는 것을 확인할 수 있다.

 

 

 

공부하면서 정리한 내용을 글로 작성하였습니다.

혹시나 잘못된 내용이 있다면 댓글로 알려주시면 감사하겠습니다 :)

COMMENT