2014년 1월 8일 수요일

ACL(Access Control List)은 접근 제어 목록이다. 관리자가 세운 정책에 따라 데이터를 필터링 하게 된다. ACL이 설정될 수 있는 곳은 라우터의 인터페이스와 line vty에 설정될 수 있고 인터페이스는 Inbound와 Outbound로 나뉘어 설정될 수 있다.

Inbound는 특정 인터페이스로 데이터가 들어오는 방향을 말하고 Outbound는 특정 인터페이스로 데이터가 나가는 방향을 말한다.  따라서 인터페이스로 들어오고 나가는 데이터를 검사해서 필터링 하겠다 라는 의미이다.

정책을 세울때에는 네트워크 범위가 작은 것 부터 큰 것 순으로 세워야 한다.  설정하는 방법은 거부(Deny), 허용(permit)로 이루어 지는데 범위가 큰것부터 세우면 내가 원하지 않는 것 까지 필터링 하기 쉽다.

정책은 Standard 와 Extended 방식이 있다.  Standard는 출발지 주소만 가지고 데이터를 필터링한다 즉, 들어오고 나가는 데이터의 출발지 주소만을 보고 데이터를 걸러내겠다는 의미이다.  Extended는 출발지,도착지주소,포트번호,프로토콜 종류, 총 4가지의 기준을 가지고 데이터를 필터링을 하겠다는 의미이다.

이것들을 구분하는 방식은 번호로 구분이 되는데, 1~99까지는 Standard, 100~199번은 Extended로 구분이 된다. 특정 네트워크, 혹은 특정 호스트를 완전 차단 혹은 허용하려면 Standard가 효율적이고  특정 네트워크, 혹은 특정 호스트에서 발생하는 특정 트레픽을 필터링 하려면 Extended가 효율적이다.

정책을 입력하는 방식도 2가지로 나눠 지는데 Number ACL이 있고 Named ACL이 있다. Number ACL은 중간에 잘못입력하면 모든 리스트가 다 사라지는 반면에 Named ACL은 번호에 상관없이 추가 하면 라우터가 알아서 번호대로 적용을 하게 되는 특징이 있다.

ACL은 버스매치룰에 따라 적용된다. 배스매치룰은 최상위에 있는 정책부터 하나씩 비교하며 내려간다는 규칙이다. 이때 매치되는 정책이 있다면 데이터를 처리하게 되고 더이상 비교하지 않는다.

예를 들어 1.1.1.1이라는 출발지를 가진 데이터를 거부하고자 한다면 deny 1.1.1.1 permit all순서로 정책을 세워야 한다. 위의 내용을 다시 살펴보면 정책은 좁은 범위부터 넓은 범위 순으로 세워야 한다는 이야기가 나온다.

Standard ACL은 다음과 같은 명령어로 설정할 수 있다.



access-lint-number는 1~99 까지 설정하면되고 {permit|deny}는 해당 IP가 매치가 되면 허가 할 것인지 거부할 것인지를 정의하게 되고 mask는 Winldmask라고 해서 IPAddress필드의 어느 비트들을 매치 할 것인지를 정하는 값이다.


ACL를 적용할때에는 interface에서 설정해야한다. access-list-number는 어떤 정책을 인터페이스에 적용시킬것인지 설정하는 부분이고 [in|out]은 Inbound와 Outbound를 결정하는 부분이다. 기본적으로는 Outbound가 설정되어 있다. 제거 할때에는 이 명령어 앞에 no만 붙이면 된다.

Extended ACL은 다음과 같은 명령어로 설정할 수 있다.


여기서 주목할점은 access-list-number가 100~199번으로 설정해야한다것과 Destination IP 와 protocol종류 ,protocol 포트번호를 쓰는 것이 추가 되었다. 앞의 내용에서 본것과 같이 Extended ACL은 출발지,도착지주소,포트번호,프로토콜 종류으로 총 4가지의 정보를 가지고 필터링을 한다.

적용방법은 Standard와 동일하게 interface에서 적용 한다.



Standard와 Extended ACL은 정책을 입력하는 방식이 Number ACL이다. 그렇기때문에 잘못입력하면 처음 부터 다시해야하는 부담감이 있다. 그래서 이런 부담감을 조금이나마 줄이기 위해서 Named ACL에 대해서 알아보고자 한다.

Named ACL은 정책을 번호로 하지 않고 이름으로 리스트를 만들어서 인터페이스에 이름으로 적용한다. 그래서 여러개의 엑세스 리스트에 같은 이름을 사용 할수 없다.

Named ACL을 생성부터 조건입력, 적용까지 명령어들을 보자.




여기서 name은 관리자가 세운 정책의 이름을 말한다. 2번째 그림에 보면 no로 시작하는 명령어는 삭제하는 명령어다. Named 는 삭제해도 리스트 전체가 지워지지 않기 때문에 추가 삭제를 자유롭게 할 수 있다.

Extended 활용이 머리속에 잘 그려지지가 않을 경우를 대비해서 그림 하나를 준비해 봤다.


이 그림을 봤을때 위에 Extended 명령어 비교해 가면서 살펴보면 금방이해가 갈듯 싶다.

이제 우리는 Wildcard에 대해서 알아보고자 한다. Wildcard는 관리자가 ACL에서 설정한 IP가 맞는지 확인하기위한 값이다. 32비트로 이루어져 있으며 0이면 검사 할겠다. 1이면 검사하지 않겠다라는 의미이다. 만약에 1.1.1.1 에 Wildcard가 0.0.0.0 이면 32비트 전부를 검사하겠다는 의미이다. 

또한가지의 예를 들어보면 1.1.1.0 ~1.1.1.15까지 잡아내고자한다면 와일드 카드는 0.0.0.15이다. 이것을 계산하는 방법은 0.0.0.15를 뒤집은 255.255.255.240(255-15)와 255.255.255.255를 뺀 값이 와일드카드 값이 된다. 이 방법은 네트워크 주소가 0부터 시작이 아닐경우, 범위가 2의 제곱으로 확실하지 않을 경우에 사용하기도 하는  방법이다. 

1.1.1.1 0.0.0.0 과 같이 특정 하나의 IP만 잡아내고자 한다면 Wildcard를 생략하고  IP 앞에 host라고 적어주면 된다. 0.0.0.0 255.255.255.255. 처럼 모든 IP를 잡아내고자 한다면 IP와 host를 생략하고 permit any , deny any를 쓰면된다. 

여기서 주의 해아 할 점이 있다. ACL를 만들게 되면 보이지 않은 deny any가 마지막에 들어가 있다. 만약 1.1.1.1만 필터링을 하고 싶다면 deny 1.1.1.1을 해주고 그다음에 permit any를 해줘야 한다. 안보이는 deny any 때문에 1.1.1.1 뿐만아니라 모든 주소가 필터링이 된다. 


ACL은 standard와 Extended로 나뉘고 입력방식은 Numbered와 Named로 나뉜다. 설정방법을 살펴보면 Numbered 안에 Standard와 Extended가 있다. Extended는 출발지,도착지주소,포트번호,프로토콜 종류를 더 입력한다. 정책 적용은 interface에서 한다. ACL은 한번 지우면 모든 정책이 지워지기 때문에 조심해서 입력해야한다. Wildcard는 IP를 검열해서 정책들 중에 매치되는 주소가 있는지 검사하는 비트라고 생각하면 쉽다. 

0 개의 댓글:

댓글 쓰기

Subscribe to RSS Feed Follow me on Twitter!