ACL이란
Access List => 접근하는 것을 허용 또는 거부하는 접근제어 리스트
ACL을 통해 필터링 이라는 기능을 수행할 수 있는데 특정 주소를 가진 호스트의 접근을 막거나 특정 서비스를 차단하는 등의 여러 목적으로 사용될 수 있다.
쉽게 설명해서 파티 초대장 리스트 같은 것이라 생각할 수 있다.
예를 들어 파티를 할때 초대장을 지인들에게 나누어 주는데 초대장을 받은 사람은 파티에 들어올 수 있고, 받지 못한 사람은 들어올 수 없도록 하는 것이다. 초대 받은사람인지 아닌지를 확인하기 위해 만들어진 초청자 목록이 있는데 이 목록이 바로 ACL이라고 할 수 있다.
ACL의 TYPE
Standard 와 Extended 라는 두가지의 타입이 있고, 둘의 차이는 필터링에 사용될 기준이 되는 옵션이다.
Standard는 오직 출발지 주소만 보고 패킷의 출력을 허용 또는 거부한다.
Extended는 출발지 주소 뿐만 아니라 도착지의 주소, 프로토콜, 포트번호 등 다른 옵션들도 함께 사용하여 좀 더 상세한 필터링이 가능하다.
ACL에서 정책에 부합되는지 확인하는 기준이 오로지 출발지 주소뿐인 것이 Standard ACL이다.
Extended ACL은 출발지 주소 뿐만 아니라 다른 여러 요소들도 필터링의 기준으로 둔다.
지정한 여러 옵션들을 모두 만족하는 패킷만이 ACL 정책에 매칭되는 AND 연산을 한다. 들어온 패킷에 하나라도 다른 정보가 있으면 ACL정책에 의한 필터링이 되지 않는다.
ACL은 하나의 리스트이니 그 리스트에 이름을 붙여 구분하게 된다.
이름을 붙이는 방법은 두 가지, 숫자를 붙이는 것과 단어를 붙이는 것으로 나뉜다.
Numbered는 숫자의 범위가 지정되어 있어 Standard와 Extanded를 구분할 수 있지만, Named는 그렇지 않아서 설정할 때 따로 지정해주는 옵션이 필요하다.
또한, Numbered ACL은 리스트 내의 여러 정책들 중 몇몇을 골라 수정하거나 삭제할 수 없으나 Named ACL은 각각의 정책들을 따로 수정 및 삭제가 가능하다.
ACL 설정의 특징
Inbound
패킷이 들어오면 가장 먼저 ACL List를 확인하여 허용이 된 패킷만 라우팅 테이블을 확인할 수 있도록 처리해주고 허용되지 않은 패킷은 버려진다. 그래서 불필요한 패킷까지 처리할 필요 없도록 한다.
Outbound
라우터에서 처리하여 내보낼 패킷을 ACL에 매칭시키기 전에 라우팅 테이블을 먼저 확인한다.
ACL은 각각 인터페이스에 설정이 되어있고 설정된 내용이 같지 않기 때문에, 라우팅 테이블을 확인하여 어떤 인터페이스로 나가는지를 확인하고 그 인터페이스에 설정된 ACL로 인해 필터링 되도록 한다.
First-match Rule
하나의 라우터에는 여러 개의 ACL 리스트를 만들 수 있고, 하나의 ACL에는 여러 필터링 정책을 저장할 수 있다. 라우터에 만들어진 ACL은 해당 정책이 필요한 네트워크가 연결된 인터페이스에 설정이되고, ACL이 설정된 인터페이스로 들어온 패킷은 ACL과 순차적으로 매칭시켜 처리하는 방식을 사용한다.
여러 정책중에 가장 먼저 기준이 매칭되는 정책에 따라 패킷이 처리되는데 이를 First-match Rule 이라고 한다.
그래서 정책을 세울때에는 기준의 범위가 좁은 것부터 해야 한다.
만약 ACL에 있는 정책의 기준에 맞는 내용이 없는 패킷이 들어온다면 해당 패킷은 Deny 되어 버려진다.
허용되지 않은 트래픽을 모두 통과시켜준다면 그것은 보안이라고 할 수도 없고 ACL을 설정하는 의미가 없어진다. 그래서 ACL은 라우터에 설정하는 보안설정이기 때문에 따로 허용이 되지 않은 트래픽은 모두 다 Drop 되도록 하는 것이다.
따라서 이 내용을 염두해두고 통신이 되어야 하는 내용에 대해서는 반드시 permit 설정을 해두어야만 한다.
출처: https://bignet.tistory.com/36 [BigNetwork]