Network 12. Access Control List

2024. 3. 17. 17:11Network

네트워크에선 접근통제를 할 수 있는데 세가지로 나뉜다.

 

 

강제적 접근통제 : MAC (Mandatory Access Control)

임의적 접근통제 : DAC (Discretionary Access Control)

비 임의적 접근통제 : Non-DAC (RBAC, Role Based Access Control)

 

 

 

우리가 실습할 ACL은 DAC에 속한다.

 

ACL은

출발지, 목적지 IP주소,

4계층의 포트 번호를 특정하고

위와 같은 라우터를 통과하는 패킷의 특성을 기반하여

트래픽을 식별하고 라우터는 ACL을 토대로 조치를 취하게 된다.

 

 

ACL은 L3 장비에 설정할 수 있는데

라우터에 ACL을 설정하는 순간 3,4 계층 방화벽 역할을 하게 되는 것이다.

 

그리고 ACL 안에서도 세가지로 나뉘게 되는데

 

1. Standard (1~99)

-. 표준 ACL

-. 출발지 IP 주소만 지정

-. 프로토콜 구분 없이 모두 접근통제

 

2. Extended (100~199)

-. 확장 ACL

-. 출발지 , 목적지 IP , 프로토콜, 포트등 여러가지를 지정해 접근통제

 

2. Named

-. 번호가 아닌 이름으로 지정된 ACL

 

 

 

 

ACL이 적용되지 않은 라우터는 모든 트래픽을 허용한다.

최근에는 보안용도 뿐만 아니라 트래픽 식별이 필요한 다른 소프트웨어의 정책에서도 활용된다.

(ex. 더 나은 QoS 서비스 제공, NAT의 내부 주소 지정 등)

 

ACL은 ACE로 구성된다.

ACL (Access Control List)

ACE (Access Control Entry)

 

아래와 같이 사용된다.

Router(config)#access-list 99 permit 10.10.30.0 0.0.0.255 
표준 ACL
Router(config)#access-list 100 deny tcp 10.10.30.0 0.0.0.255 gt 49151 10.0.20.1 0.0.0.0 eq 23
확장형 ACL

표준형 ACL은 출발지만 참조해 모두 차단한다.

확장형 ACL의 경우를 조금 더 알아보자

 

Router# access-list 100 deny tcp 10.10.30.0 0.0.0.255 gt 49151 10.0.20.1 0.0.0.0 eq 23

위의 확장형 ACL 명령어를 뜯어보자

 

100 : ACL 번호

deny : 차단, 허용 여부 (deny, permit)

tcp : 프로토콜의 종류 (udp, tcp, ospf.. 등)

10.10.30.0 0.0.0.255 : Source IP 주소 (출발지 정보)와 wildcard mask

gt : 비교 표현식 등 (lt 이하 , eq 같은, gt 이상..등)

49151 : 출발지 포트 번호 (앞의 비교 표현식에 적용)

10.0.20.1 0.0.0.0 :Destination IP 주소 (목적지 정보) 와 wildcard mask

eq : 비교 표현식

23 : 목적지 포트 번호

 

표준형 ACL(1~99)은 IP 주소가 0.0.0.0 와일드 카드 마스크를 가질때

기본이라 생략이 가능하다.

확장형 ACL (100~199)은 기본 와일드 카드 마스크가 없다.

 

 

Named ACL 사용법

Router(config)#ip access-list standard Doghj
Router(config-std-nacl)#deny 10.10.10.10 0.0.0.0
Router(config-std-nacl)#permit 10.10.10.0 0.0.0.255
Router(config-std-nacl)#deny any 
표준형 이름지정 ACL

Router(config)#ip access-list extended Doghj1
Router(config-ext-nacl)#deny ip 10.10.10.0 0.0.0.255 10.10.30.10 0.0.0.0
확장형 이름지정 ACL

위처럼 ACL의 이름을 먼저 지정한 뒤 제어목록을 설정한다.

 

 

 

 

위 명령어에서 프로토콜의 종류가 IP로 되있는 것을 볼 수 있을 것이다.

TCP, UDP를 사용하면 해당 프로토콜을 제어하고

IP를 사용하면 해당 주소의 모든 프로토콜을 제어하게 된다

 

또한 IP주소란에 any나 host를 입력하면

any : 모든 호스트

host : 단일 호스트 (이후 IP 주소 입력)

범위, 단일로 지정할 수 있다.

 

Router#show access-lists 

Standard IP access list Doghj
    10 deny host 10.10.10.10
    20 permit 10.10.10.0 0.0.0.255
Extended IP access list Doghj1
    10 deny ip 10.10.10.0 0.0.0.255 host 10.10.30.10

위의 명령어로 ACL 리스트들을 확인할 수 있다!

또한 Named ACL은 위와 같이 넘버링 되어서 입력되어 있는 것을 볼 수 있다.

입력시 10씩 증가하여 자동으로 입력되는데

 

이를 이용하여 11,12 등의 번호를 부여하여 규칙 사이에 새규칙을 추가할 수 있다.

Router(config)#ip access-list standard Doghj
Router(config-std-nacl)#15 deny 10.10.11.11 0.0.0.255
Router(config-std-nacl)#do show access-lists
Standard IP access list Doghj
    10 deny host 10.10.10.10
    15 deny 10.10.11.0 0.0.0.255   <<<<<<<추가된 ACE
    20 permit 10.10.10.0 0.0.0.255
Extended IP access list Doghj1
    10 deny ip 10.10.10.0 0.0.0.255 host 10.10.30.10

 

 

하지만 ACL의 허용 규칙을 적용하는데 반드시 기억해야할 두가지가 있다.

암묵적 deny any 와 ACL의 적용순서다.

잊어버렸다간 설계대로 차단, 허용이 이뤄지지 않는다.

 

 

ACL의 적용순서

ACL 1 deny host 10.10.10.10
ACL 1 permit 10.10.10.0 0.0.0.255

ACL 2 permit 10.10.10.0 0.0.0.255
ACL 2 deny 10.10.10.10

예시로 위의 ACL은 어떻게 적용될까?

ACL 1은

10.10.10.10을 제외한 10.10.10.0 /24 서브넷의 접근이 허용된다.

ACL 2는

모든 10.10.10.0 /24 서브넷의 접근이 허용된다.

위처럼 순서가 바뀌면 완전히 다른 내용의 ACL이 적용되기에 주의가 필요하다.

 

즉,

★ACL은 위에서 아래로 읽는 것이다!

 

이해가 잘 안될 수도 있다.

간단하게 비유하자면,, 3차원의 블럭으로 생각해보자!

 

먼저 ACL1이다.

deny가 첫번째로 입력되고

permit 문구가 두번째로 입력되었다.

 

이 블럭을 회전시켜 위에서 바라보자

 

10.10.10.0/24 서브넷에서 10.10.10.10 호스트만 제외된 것을 볼 수 있다!!

 

 

 

다음으로 ACL2 이다.

permit 문구가 첫번째

deny 문구가 두번째로 입력되었다.

 

다시 회전시켜 확인하자!

첫번째 permit에 가려져 deny 문구가 보이질 않는다!!

 

즉 세세한 사항일 수록 먼저 입력되고 포괄적인 부분일수록 나중에 입력되는 것이 좋다..

이해가 잘 안되는 부분이라면 이처럼 블럭단위로 생각해보자!

 

 

 

 

암묵적 deny any

Router(config)#access-list 1 permit 10.10.10.0 0.0.0.255

라우터에 해당 허용 ACE를 입력하면 어떻게 될까??

10.10.10.0 /24 의 서브넷을 제외한 모든 트래픽이 차단된다.

 

말그대로 암묵적 deny any가 ACL 최하단에  깔려있다고 생각하면 된다.

그것을 원치않는다면 permit any나 특정 서브넷을 허용하는 포괄적인 규칙을 추가해주어야 한다!!

 

 

 

 

 

 

 

마지막으로

ACL을 인터페이스에 적용시켜보자

Router(config)#int f0/1
Router(config-if)#ip access-group doghj in

특정 인터페이스에  in , out 명령어로

패킷의 인바운드, 아웃바운드를 제어할 수 있게 된다!!

위처럼 특정 인터페이스에 적용된 ACL은 라우터 자체에서 발생하는 트래픽에는 적용되지않는다!

 

Router(config-if)#line vty 0 15
Router(config-line)#access-class doghj in

또한 라우터로 접근하는 원격 접속도 ACL로 제어할 수 있다!

 

 

 

'Network' 카테고리의 다른 글

Network 14. OSPF 심화  (0) 2024.03.19
Network 13. Routing protocol  (0) 2024.03.18
Network 11. Etherchannel  (0) 2024.03.14
Network 10. Spanning-Tree Protocol  (0) 2024.02.25
Network 9. NAT, PAT  (0) 2024.02.13