이번 강의는 라우터에서 패킷을 필터링하는 기술인 ACL에서 가장 기본인 Standard ACL에 대해서 알아보겠습니다.
네트워크는 위와 같이 구성하겠습니다.
1. Standard ACL
Standard ACL은 ACL의 가장 기초적인 방식으로, 다음과 같은 특징을 가지고 있습니다.
- 1 ~ 99까지의 번호를 갖는다
- 출발지의 주소만을 참고한다
따라서 Access list를 만들 때 1 ~ 99까지의 번호를 입력하면 자동으로 Standard ACL로 만들어집니다.
2. 실습
이번 실습에서는 PC0의 IP인 1.1.1.1이 F1/0에서 나가는 것 만 거부해 보도록 하겠습니다.
Router에서 Access List를 만들 때 1 ~ 99 사이의 번호를 입력해야 합니다. 이번에는 임의로 10번을 넣도록 하겠습니다.
Access List 번호가 정해졌다면 어떤 것을 할지 정해야 합니다. 이번 실습의 목표인 1.1.1.1을 막기 위해서는 다음과 같은 방법이 있을 것입니다.
- 정확한 IP 주소 1.1.1.1을 거부한다.
- C Class인 1.1.1.0/24 대역을 거부한다.
- B Class인 1.1.0.0/16 대역을 거부한다.
- A Class인 1.0.0.0/8 대역을 거부한다.
- 모든 IP를 거부한다.
여기서 모든 IP를 거부한다면 PC1과 PC2의 통신도 불가능해질 것이므로 이 방법을 제외한 모든 방법을 시도해 보겠습니다.
우선 Access List에서 주소를 표현하는 방법은 다음과 같습니다.
IP주소/Network주소 + Wildcard Mask
Wildcard Mask는 OSPF와 똑같이 자신이 확인하고 싶은 bit만 1로 표현한 것입니다. 따라서
이제 허용할지(permit) 거부할지(deny)를 정한 뒤 뒤에 주소를 붙여주는 것으로 Access List가 완성됩니다.
이것을 위의 방법들에 적용하면 다음과 같습니다.
# 1.1.1.1 거부
Router(config)#access-list 10 deny 1.1.1.1 0.0.0.0
또는
Router(config)#access-list 10 deny host 1.1.1.1
# 1.1.1.0 대역 거부
Router(config)#access-list 10 deny 1.1.1.1 0.0.0.255
또는
Router(config)#access-list 10 deny 1.1.1.0 0.0.0.255
# 1.1.0.0 대역 거부
Router(config)#access-list 10 deny 1.1.1.1 0.0.255.255
또는
Router(config)#access-list 10 deny 1.1.0.0 0.0.255.255
# 1.0.0.0 대역 거부
Router(config)#access-list 10 deny 1.1.1.1 0.255.255.255
또는
Router(config)#access-list 10 deny 1.0.0.0 0.255.255.255
위의 명령어 중에서 특정 IP만 거부하는 방법과 대역대를 거부하는 방법이 다른 것을 볼 수 있습니다. 이를 자세히 들여다보겠습니다.
- 1.1.1.1 거부 => 1.1.1.1을 거부하는 방법은 두 가지입니다. 우선 Wildcard Mask를 사용하여 1.1.1.1 0.0.0.0을 입력하는 것으로 "1.1.1.1이라는 IP의 모든 bit가 일치하는 것"을 거부하는 방법과 host 명령어를 사용하여 "1.1.1.1이라는 IP를 가진 host"를 거부하는 방법이 있습니다.
- 대역대 거부 => IP 대역대를 거부할 때 IP대역대로 써도 되지만 일반적인 IP를 쓰더라도 Wildcard Mask에 의해 같은 효과를 지닙니다. 예를 들어 1.1.1.1 0.0.0.255는 "1.1.1.1이라는 IP에서 앞에서부터 24bit가 일치하는 IP들"을 거부하는 것이고 1.1.1.0 0.0.0.255는 "1.1.1.0이라는 IP에서 앞에서 부터 24bit가 일치하는 IP들"을 거부하는 것이니 사실상 같은 명령어입니다.
하지만 여기서 끝이 아닙니다. 이렇게만 끝나면 보안의 기본 원칙인 "내가 모르는 것은 모두 거부한다"에 의해 Access List에 없는 모든 IP는 거부될 것이고, 그에 따라 PC1의 IP 3.1.1.1도 거부될 것입니다. 따라서 마지막에 다음과 같은 명령어를 입력해 줍니다.
Router(config)#access-list 10 permit 0.0.0.0 255.255.255.255
또는
Router(config)#access-list 10 permit any
이때 0.0.0.0 255.255.255.255는 모든 IP라는 뜻이며 any 명령어 역시 같은 뜻을 지닙니다. 즉 Access List 10은 현재
- IP가 1.1.1.1이면 거부한다.
- IP의 앞 24bit가 1.1.1이면 거부한다.
- IP의 앞 16bit가 1.1이면 거부한다.
- IP의 앞 8bit가 1이면 거부한다.
- 모든 IP를 허용한다.
- [묵시적으로 모든 IP를 차단한다]
의 5개의 조건을 가지고 있습니다. 이때 Router는 Access List의 맨 위에서부터 해당 IP가 조건에 부합하는지 확인하게 됩니다.
(예 1) IP = 1.1.2.1
- IP가 1.1.1.1인가? => PASS
- IP의 앞 24bit가 1.1.1인가? => PASS
- IP의 앞 16bit가 1.1인가? => deny
(예 2) IP = 3.1.1.1
- IP가 1.1.1.1인가? => PASS
- IP의 앞 24bit가 1.1.1인가? => PASS
- IP의 앞 16bit가 1.1인가? => PASS
- IP의 앞 8bit가 1인가? => PASS
- 모든 IP를 허용한다 => permit
이제 Ping을 보내보겠습니다.
PC0의 Ping은 도달하지 못하지만 PC1의 Ping은 도달하는 것을 볼 수 있습니다.
3. 마치며
이번 강의에서는 ACL 중 하나인 Standard ACL에 대해서 알아보았습니다. 다음에는 Standard ACL에 이름을 붙인 Standard Named ACL에 대해서 알아보겠습니다.
'네트워크 > 라우터' 카테고리의 다른 글
라우터) ACL(Access Control List) - Extended ACL (0) | 2022.12.16 |
---|---|
라우터) ACL(Access Control List) - Standard Named ACL (0) | 2022.12.16 |
라우터) DHCP 예약 (0) | 2022.12.15 |
라우터) DHCP Relay (0) | 2022.12.15 |
라우터) DHCP (0) | 2022.12.15 |