Skip to Content
05. Security13. VLAN Access-List (VACL)

VLAN Access-List (VACL)

ACL 여정 3/5 — L3 경계(라우터) 필터링은 앞 두 편에서 완료. 이제 스위치 L2 레벨, 같은 VLAN 내부 트래픽까지 범위를 확장합니다.

VLAN access list(VACL) 는 VLAN 내의 트래픽을 필터링하는 데 매우 유용합니다. 예를 들어 보겠습니다.

09_VLAN Access-List (VACL)_img_p01_01

두 컴퓨터가 서버와 통신할 수 없도록 하고 싶다고 가정해 봅시다. port-security를 사용해 MAC 주소를 필터링할 수도 있지만, 그다지 안전한 방법은 아닙니다.

두 컴퓨터가 서버에 도달할 수 없도록 VACL을 구성하는 방법을 보여드리겠습니다. 먼저 access-list를 만들어야 합니다.


구성

SW1(config)# access-list 100 permit ip any host 192.168.1.100

첫 번째 단계는 확장 access-list를 만드는 것입니다. 어떤 소스에서든 목적지 IP 주소 192.168.1.100으로 가는 트래픽이 access-list와 일치해야 합니다. 본능적으로 이 문장에 “deny”를 사용하라고 말할 것 같아 혼란스러울 수 있습니다… 그러나 그렇게 하지 마세요. permit 문장을 사용하세요!

이제 VLAN access map을 만들 수 있습니다.

SW1(config)# vlan access-map NOT-TO-SERVER 10 SW1(config-access-map)# match ip address 100 SW1(config-access-map)# action drop SW1(config-access-map)# vlan access-map NOT-TO-SERVER 20 SW1(config-access-map)# action forward

제 VLAN access map은 “NOT-TO-SERVER”라고 부릅니다. 이것이 하는 일은:

  • 시퀀스 번호 10: access-list 100과 일치하는 트래픽을 찾습니다. access-list 100에서 허용되는 모든 트래픽은 여기서 매치됩니다. 액션은 이 트래픽을 드롭하는 것입니다.
  • 시퀀스 번호 20: match 문장이 없으므로 모든 것이 매치됩니다. 액션은 트래픽을 전달(forward) 하는 것입니다.

결과적으로, 어떤 호스트에서든 목적지 IP 주소 192.168.1.100으로 가는 모든 트래픽은 드롭되고, 그 외의 모든 것은 전달됩니다. 활성화해 봅시다.

SW1(config)# vlan filter NOT-TO-SERVER vlan-list 10

마지막 단계는 원하는 VLAN에 VACL을 적용하는 것입니다. 저는 VLAN 10에 적용합니다.


검증

VACL이 제대로 적용되어 있는지, 그리고 예상대로 트래픽을 드롭하는지 확인해 봅시다.

SW1# show vlan filter VLAN Map NOT-TO-SERVER is filtering VLANs: 10

show vlan filter로 어느 VLAN에 어떤 access-map이 적용되어 있는지 확인할 수 있습니다. 다음으로 access-map 자체의 내용을 보겠습니다.

SW1# show vlan access-map NOT-TO-SERVER Vlan access-map "NOT-TO-SERVER" 10 Match clauses: ip address: 100 Action: drop Vlan access-map "NOT-TO-SERVER" 20 Match clauses: Action: forward

구성한 두 개의 시퀀스(10: drop, 20: forward)가 그대로 보입니다. 이제 컴퓨터 중 하나에서 서버(192.168.1.100)로 핑을 보내면 실패하고, 서버가 아닌 다른 호스트로의 트래픽은 정상적으로 전달되는 것을 확인할 수 있습니다.

: 같은 로직을 MAC 주소 기반으로도 구성할 수 있습니다. mac access-list extended ...로 MAC access-list를 만들고 match mac address <이름>으로 참조하면 L2 단위로 VLAN 내부 필터링이 가능합니다. 다만 ARP 캐시가 살아 있는 동안에는 기존 통신이 그대로 유지될 수 있으므로, 규칙 변경 후 예상과 다르게 동작하면 ARP 테이블을 한번 비우고 재시험하는 것이 좋습니다.


VACL 편집과 주의점

VACL은 일반 access-list와 마찬가지로 언제든 수정할 수 있습니다. 예를 들어 새 서버 192.168.1.101을 보호 대상에 추가하려면 기존 access-list에 한 줄만 더하면 됩니다.

SW1(config)# access-list 100 permit ip any host 192.168.1.101

변경 사항은 즉시 반영되므로 VACL을 떼었다 다시 붙일 필요는 없습니다. 다만 실수로 match 문장을 잘못 고치면 서비스 전체가 끊길 수 있으므로, 운영 중에는 변경 전에 한 번 access-list를 백업하거나 사전 점검 윈도를 잡아두는 것이 안전합니다.

port-security와의 차이: port-security는 포트에 허용된 MAC 주소 개수 제한, 위반 시 포트 shutdown 같은 L2 수준 보호에 초점이 맞춰져 있습니다. “A는 B와 통신 가능하지만 C와는 불가”처럼 특정 목적지 기반 필터링은 port-security로 처리할 수 없고, 이럴 때가 바로 VACL(혹은 PACL/RACL)이 필요한 지점입니다.


결론

  • VACL은 VLAN 내부에서 같은 VLAN 안의 호스트들 사이 트래픽을 필터링할 수 있는 거의 유일한 수단입니다(라우터 ACL은 VLAN을 빠져나가는 트래픽에만 걸립니다).
  • 일반 ACL과 달리 VACL의 access-list에는 deny 대신 permit으로 매칭 대상을 지정하고, 실제 드롭/허용은 vlan access-mapaction drop / action forward로 결정합니다.
  • vlan filter <이름> vlan-list <VLAN>로 여러 VLAN에 한 번에 적용할 수 있으며, access-list만 수정해도 실시간으로 반영됩니다.
  • MAC access-list와 결합하면 L2 수준의 필터링도 가능하지만, ARP 캐시 영향으로 변경 직후 동작이 불분명할 수 있으니 검증 시 주의가 필요합니다.

출처: networklessons.com - VLAN Access-List (VACL)

태그: ACL, Security


→ 다음 편: 14_Infrastructure ACL — “지나가는” 트래픽 필터에서 “장비 자체 보호”로 관점을 전환합니다. (이 편에서 살짝 열어둔 L2 영역의 본격 심화는 02편 L2 보안 기본기에서.)